如果你要使用函数FindWindow(lpClassName, lpWindowName);查找某个对话框,而该程序刚好是基于对话框时,这该怎么办呢?默认的窗口的ClassName都是"#32770”,(可以在程序中调用以下函数得到):
int GetClassName(
HWND hWnd, // handle to window
LPTSTR lpClassName, // class name
int nMaxCount // size of class name buffer
);
在我的例子中,假设我要设定ClassName为SeedServer,具体如下:
(1)首先在程序中 CSeed::InitInstance()中添加以下代码:
WNDCLASS wcx;
memset(&wcx, 0, sizeof(wcx));
//if (!GetClassInfoEx(NULL, MAKEINTATOM(0X8002), &wcx))
if (!GetClassInfo(NULL, WC_DIALOG, &wcx))
{
TRACE("Failed to register class step1/n");
return FALSE;
}
wcx.lpszClassName = _T("SeedServer ");//修改为自己定义的ClassName
if (!RegisterClass(&wcx))
{
TRACE("FAILED to register class step2/n");
DWORD dw = GetLastError();
CHAR szBuf[80];
sprintf(szBuf, "failed: GetLastError returned %u/n", dw);
AfxMessageBox(szBuf);
return FALSE;
}
(2)修改资源文件 *.rc ,
IDD_SEED_DIALOG DIALOGEX 0, 0, 327, 231
STYLE DS_MODALFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "Seed"
CLASS "SeedServer" //添加这一行(中间有空格)
FONT 9, "宋体"
BEGIN
PUSHBUTTON "Start",IDC_BTN_START,14,36,69,24
PUSHBUTTON "Button2",IDC_BUTTON2,236,191,84,33