我正在创建一个 MFC 应用程序,它将在单击资源管理器上下文(右键单击)菜单时启动。
但我只需要启动应用程序的单个实例。为此,我必须使用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 类的构造函数中调用该方法。我在启动应用程序时验证了该类正在注册。
现在在我的 shell 扩展中,我试图找到在我的 MFC 中注册的类,如下所示:
CWnd *pWndPrev = NULL;
pWndPrev = CWnd::FindWindow(_T("NDSApp"),NULL);
if(pWndPrev != NULL)
pWndPrev->BringWindowToTop();
但我无法让 CWnd 到 Window。无法弄清楚。如果我遗漏了什么或做错了什么,请告诉我。