VisualStudio2010のMFCでアプリケーションを作成しているものです。アプリはMDIです。
ある拡張子(*.aaaとします)のファイルをこのアプリに関連付けして、このファイルがダブルクリックされたらこのアプリが起動してファイルを表示するようにしました。
これはアプリのCWinApp::InitInstance()で引数でわたってきたファイルパスを表示するようにしてやればOKでした。
しかしすでにこのアプリが起動した状態で、ファイルをダブルクリックするとうまくいきません。アプリが前面に表示されるだけでダブルクリックしたファイルは表示されないのです。
ブレークポイントをしかけて挙動を見てみようとしましたが、この場合、CWinApp::InitInstance()には入ってこないようです。
アプリが起動した状態で関連付けされたファイルがダブルクリックされたら、起動中のアプリで表示したいのですがどうやれば良いのでしょうか?
MFC 関連付けされたファイルを起動中のアプリで開く方法
Re: MFC 関連付けされたファイルを起動中のアプリで開く方法
すみません、CWinApp::InitInstance()には入ってこないというのは私の勘違いでした。InitInstanceの中ですでに起動中のアプリを探して存在すればそのアプリに対してファイルパスを渡してやればOKでした。
ただ、渡してやる方法が良い方法が分からず、ファイルパスを適当なレジストリに保存して、起動中のアプリに対してアプリケーション定義のメッセージをSendMessageしてやるという方法をとりましたが、もっと良い方法があれば教えてください。
ただ、渡してやる方法が良い方法が分からず、ファイルパスを適当なレジストリに保存して、起動中のアプリに対してアプリケーション定義のメッセージをSendMessageしてやるという方法をとりましたが、もっと良い方法があれば教えてください。
Re: MFC 関連付けされたファイルを起動中のアプリで開く方法
WM_COPYDATAメッセージを使うと、他プロセスのウインドウに任意のデータを送ることができます。
参考:他のウィンドウにデータを渡す
http://www.crimson-systems.com/tips/t018a.htm
参考:他のウィンドウにデータを渡す
http://www.crimson-systems.com/tips/t018a.htm
Re: MFC 関連付けされたファイルを起動中のアプリで開く方法
WM_COPYDATAでうまくいきました。
良い方法を教えていただきありがとうございました。
良い方法を教えていただきありがとうございました。
Re: MFC 関連付けされたファイルを起動中のアプリで開く方法
DDEのopenコマンドを発行するように関連付けすれば
プログラムはそのままでご希望通りの動作をするようになるという話を見かけました。
本当かどうかは分かりませんが。
プログラムはそのままでご希望通りの動作をするようになるという話を見かけました。
本当かどうかは分かりませんが。