背景:
笔者做软件的时候,经常遇到的情况是查找另外一个进程,给它发消息。
但是往往FindWindow根据“窗口标题”去查找,比较慢并且有时候还会失败
改成用窗口类名查找,可能比较好。
1、MFC更改对话框类名办法
2、MFC更改单文档框架类名的办法
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWndEx::PreCreateWindow(cs) )
return FALSE;
// TODO: 在此处通过修改
// CREATESTRUCT cs 来修改窗口类或样式
WNDCLASS wndclass;
::GetClassInfo(AfxGetInstanceHandle(),cs.lpszClass, &wndclass);
wndclass.lpszClassName = _T("MyClassName");
VERIFY(AfxRegisterClass(&wndclass));
cs.lpszClass = wndclass.lpszClassName;
return TRUE;
}
3、 一个实例办法
InitIntance函数中加入
CString strClassName = "MyClassName";
if(pWndPrev = CWnd::FindWindow(strClassName, NULL)) {
if(pWndPrev->IsIconic()) {
pWndPrev->ShowWindow(SW_RESTORE);
pWndPrev->SetForegroundWindow();
} else {
pWndChild = pWndPrev->GetLastActivePopup();
pWndChild->SetForegroundWindow();
}
return FALSE;
}