• ベストアンサー

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;

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

コマンドラインはGetCommandLineで取得することが出来ます。 参考までに、ウィンドウを持つアプリでグローバル変数を使わない正当な方法を書いておきますね。 1.RegisterClassで、cbWndExtraの値を0以外(4バイトがいいでしょう)にして拡張領域を確保してウィンドウクラスを登録する。 2.CreateWindowのlpvParamにlpszCPを渡し、WM_CREATEで受け取ったときにSetWindowLongでlpszCPのアドレスを拡張領域にセットする。 3.各メッセージをうけてウィンドウプロシージャが呼ばれたときは、GetWindowLongでアドレスを取得して使用する。 とすれば、グローバル変数は不要です。

nubou
質問者

お礼

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

その他の回答 (1)

  • nitscape
  • ベストアンサー率30% (275/909)
回答No.1

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

nubou
質問者

お礼

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

関連するQ&A