FindWindow可利用title name或是windows class二種方式來找到指定的視窗。為避免命名上的衝突或是多語系的支援,通常我們會重新註冊我們的dialog類別為特殊的名稱。註冊的方式分為2部份。
Step 1:首先找到你的RC檔,在dialog的rc區加入以下的程式碼
IDD_MYCLASSDLG_DIALOG DIALOGEX 0, 0, 200, 200
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
EXSTYLE WS_EX_APPWINDOW
CAPTION "MyClass Dialog"
CLASS "MyClassDlg"
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
...
也可透過Visual Studio的GUI來修改,先將RC設定為非MFC Mode
如此一來,Dialog的屬性Class Name變為可修改狀態,再輸入指定的Class Name即可
Step 2:設定好RC屬性後,在App的InitInstance中呼叫main dialog之前註冊MyClassDlg即可完成註冊
WNDCLASS wndcls = { 0 };
::GetClassInfo(AfxGetInstanceHandle(),MAKEINTRESOURCE(32770),&wndcls);
wndcls.lpszClassName = _T("MyClassDlg");
AfxRegisterClass(&wndcls);
CMyClassDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
...