- ベストアンサー
lpszCPを取り出したい
Winアプリにファイルをドラッグしてファイル名を取るために下記のような記述をして一応取り出せたのですが str_argにような外部変数を利用するよりも正当なやり方はないのですか? 例えばメッセージのメンバに格納されている場合にはそれを使うとか・・・ よろしくお願いします string str_arg; LONG WINAPI WinProcedure(HWND hW,UINT wM,UINT wP,LONG lP); WINAPI WinMain(HINSTANCE hI,HINSTANCE hPI,LPSTR lpszCP,int nCS) { WNDCLASS wc; HWND hW; MSG ms; str_arg=lpszCP;
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
コマンドラインはGetCommandLineで取得することが出来ます。 参考までに、ウィンドウを持つアプリでグローバル変数を使わない正当な方法を書いておきますね。 1.RegisterClassで、cbWndExtraの値を0以外(4バイトがいいでしょう)にして拡張領域を確保してウィンドウクラスを登録する。 2.CreateWindowのlpvParamにlpszCPを渡し、WM_CREATEで受け取ったときにSetWindowLongでlpszCPのアドレスを拡張領域にセットする。 3.各メッセージをうけてウィンドウプロシージャが呼ばれたときは、GetWindowLongでアドレスを取得して使用する。 とすれば、グローバル変数は不要です。
その他の回答 (1)
- nitscape
- ベストアンサー率30% (275/909)
この場合のlpszCPはコマンドプロンプトですよね。これを取得したいのであればやはりこの方法しかないと思います。 ウインドウに対してドラッグ・アンド・ドロップされたファイル名の取得は...googleなどで「ドラッグ vc」のような語で検索をすればたくさんヒットします。それらを参考にしてはどうでしょうか。
お礼
やはりWinProcedureに渡すためにはこの方法しかないのですね? ありがとうございました
お礼
GetCommandLineで問題は完全に解決しました どうもありがとうございました