Explorer Context(右クリック)メニューをクリックすると起動するMFCアプリケーションを作成しています。
ただし、アプリケーションのインスタンスを1つだけ起動する必要があります。そのためには、FindWindowとAfxRegisterClassを使用する必要があります
以下のように、MFCアプリにクラスを登録しようとしました。
BOOL CNDSClientDlg::InitInstance()
{
//Register Window Updated on 16th Nov 2010, @Subhen
// Register our unique class name that we wish to use
WNDCLASS wndcls;
memset(&wndcls, 0, sizeof(WNDCLASS));
//Class name for using FindWindow later
wndcls.lpszClassName = _T("NDSApp");
// Register new class and exit if it fails
if(!AfxRegisterClass(&wndcls)) // [C]
{
return FALSE;
}
}
MFCクラスのコンストラクターでメソッドを呼び出しました。アプリケーションの起動中に、クラスが登録されていることを確認しました。
現在、シェル拡張機能で、MFCに登録されているクラスを次のように検索しようとしています。
CWnd *pWndPrev = NULL;
pWndPrev = CWnd::FindWindow(_T("NDSApp"),NULL);
if(pWndPrev != NULL)
pWndPrev->BringWindowToTop();
しかし、CWndをWindowに取得できません。それを理解することができません。何かが足りない、または何か間違ったことをしている場合はお知らせください。