アプリ版:「スタンプのみでお礼する」機能のリリースについて

C言語でWindowApiのプログラムを行っています。
コンパイラはBorland C++です。

ウィンドウから、右クリックでファイルを開くダイアグラムを開き、
ある文字だけをファイルから読み込み、結果をウィンドウ上に
表示させると言う感じのプログラムを作っています。

そこでですが、
WndProc関数の中の、
GetOpenFileName(&ofn);
SetWindowText(hWnd , strFile);
と言う部分でファイルダイアログを開き、
ファイル読み込みをしているわけなのですが、
このstrFileを別の関数に渡したいわけです。
そういう時どうすればいいでしょう?

また、char型をchar_w型に変換する際に、
WideCharToMultiByte
MultiByteToWideChar
関数を用いればいいことがわかりました。
しかし、char_w型は検索しても見つかりません。
この事も何かヒントを教えていただけたらと思います。

宜しくお願い致します。

A 回答 (16件中11~16件)

>char_w


すみません、こちらにも書きましたが誤りです。。。
http://oshiete.nikkeibp.co.jp/qa3364459.html

>別の関数に渡したいわけです
この関数はどこから呼び出されるのですか??
差し支えなければ、ソースを載せてみてはいかがでしょうか?
    • good
    • 0
この回答へのお礼

ちょっとソースは長くなるので無理だと思います・・・

一つは、WINAPI関数に渡したいのですが・・・。

回答ありがとうございます。

お礼日時:2007/09/25 17:06

> WINAPI(LPCTSTR str);


> としたいのですが、うまく行かないみたいです・・・

WINAPIがマクロだからでしょう。
どうしてもWINAPIという名前の関数を作りたいのであれば、

#undef WINAPI

としておけば、WINAPI関数を作れるようになると思いますが、決してお勧めはしません。
    • good
    • 0
この回答へのお礼

マクロだと無理でしょうねぇ・・・

お礼日時:2007/09/25 17:09

>GetOpenFileName(&ofn);


>SetWindowText(hWnd , strFile);
>と言う部分でファイルダイアログを開き、
>ファイル読み込みをしているわけなのですが、
この2行だとファイル名を文字列として得て、それをウィンドタイトルに表示しているだけです。strFileは、GetOpenFileNameの戻り値ですよね?これだけだとファイルの中身を読み込んではいませんよ。
言葉が混乱されているようですが、ファイル名=文字列、ファイルの中身=テキスト(文字列)データなどがごっちゃになっていませんか?

>このstrFileを別の関数に渡したいわけです。
>そういう時どうすればいいでしょう?
文字列ですので、普通に関数パラメータとして受け渡してください。
それとも、ファイルを読み込んでファイルの中身を渡したいのでしょうか?
    • good
    • 0
この回答へのお礼

File名を取得して、
"file.txt"の部分を置き換えたいのです。
ファイルから読み込むプログラムはできあがっております。

お礼日時:2007/09/25 16:50

★この質問を立てる前に前の質問を解決する努力をして下さい。


・前の質問にまた回答を書き込みましたので補足して下さい。
 http://oshiete1.goo.ne.jp/qa3364459.html→『ファイルを開く。(API・C言語)』
>ある文字だけをファイルから読み込み…
 ↑
 これは C 標準関数の fopen、fclose を使っているようですね。
 だから char型、wchar_t型の変換を行いたいのですよね?
 もしかしたら前々回の質問も同じ理由でしたか?
 http://oshiete1.goo.ne.jp/qa3342727.html→『char型の文字列をウィンドウに表示させる。』
 この3つの質問は全部同じ意味合いですよね。
 重要なのは TCHAR、LPTSTR型の意味を理解することです。

解決策1:
・コンパイルのオプションより UNICODE を定義しない設定にします。
 総合環境を使っているのか、コマンドラインからオプションを指定しているのかは
 こちらでは分かりませんが、UNICODE を定義しない設定でコンパイルして下さい。
・こうすると TCHAR、LPTSTR型は char 型に置き換えられますので C 標準関数との
 やりとりで char型 と wchar_t型 の相互変換をしなくてもすみます。
 この方法をお勧めします。

解決策2:
・コンパイルのオプションより UNICODE が定義されていたらば
 wchar_t 型から char 型に変換する仕組みをとります。
 変換方法は MultiByteToWideChar() 関数で行えます。
 あと検索時は『wchar_t』型です。
 既に回答がありますが、前回の質問の aris-wiz さんのはちょっとした記述ミスです。
 正しくは『wchar_t』型になります。

以上。UNICODE 定数についての理解度を補足して下さい。先に進みませんから。

参考URL:http://msdn.microsoft.com/library/ja/default.asp …
    • good
    • 0

> 引数として渡す方法がちょっとわかりませんね・・・



どう分からないのでしょうか?

void func(LPCTSTR str);

に対して

func(strFle);

とするだけだと思いますが...
    • good
    • 0
この回答へのお礼

ありがとうございます。
WINAPI(LPCTSTR str);
としたいのですが、うまく行かないみたいです・・・

お礼日時:2007/09/25 16:13

> このstrFileを別の関数に渡したいわけです。


> そういう時どうすればいいでしょう?

引数として渡せばよいだけでは?

> しかし、char_w型は検索しても見つかりません。

char_w型ではなく、wchar_t型ではないでしょうか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
引数として渡す方法がちょっとわかりませんね・・・

お礼日時:2007/09/25 15:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています