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

Winアプリにファイルをドラッグしてファイル名を取るために下記のような記述をして一応取り出せたのですが
str_argにような外部変数を利用するよりも正当なやり方はないのですか?
例えばメッセージのメンバに格納されている場合にはそれを使うとか・・・
よろしくお願いします



stringstr_arg;
LONG WINAPI WinProcedure(HWND hW,UINT wM,UINT wP,LONG lP);
WINAPI WinMain(HINSTANCE hI,HINSTANCE hPI,LPSTR lpszCP,int nCS)
{
WNDCLASSwc;
HWNDhW;
MSGms;

str_arg=lpszCP;

A 回答 (2件)

コマンドラインはGetCommandLineで取得することが出来ます。



参考までに、ウィンドウを持つアプリでグローバル変数を使わない正当な方法を書いておきますね。
1.RegisterClassで、cbWndExtraの値を0以外(4バイトがいいでしょう)にして拡張領域を確保してウィンドウクラスを登録する。

2.CreateWindowのlpvParamにlpszCPを渡し、WM_CREATEで受け取ったときにSetWindowLongでlpszCPのアドレスを拡張領域にセットする。

3.各メッセージをうけてウィンドウプロシージャが呼ばれたときは、GetWindowLongでアドレスを取得して使用する。

とすれば、グローバル変数は不要です。
    • good
    • 0
この回答へのお礼

GetCommandLineで問題は完全に解決しました
どうもありがとうございました

お礼日時:2003/01/22 19:12

この場合のlpszCPはコマンドプロンプトですよね。

これを取得したいのであればやはりこの方法しかないと思います。
ウインドウに対してドラッグ・アンド・ドロップされたファイル名の取得は...googleなどで「ドラッグ vc」のような語で検索をすればたくさんヒットします。それらを参考にしてはどうでしょうか。
    • good
    • 0
この回答へのお礼

やはりWinProcedureに渡すためにはこの方法しかないのですね?
ありがとうございました

お礼日時:2003/01/21 17:00

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