设置对话框 window class 名称
Set dialog box window class name
子class 对话框的正确方法是什么,以便其 class 名称将更改为指定的名称,以便稍后使用 FindWindow(来自另一个进程)找到它?
class CMyDialog : public CDialogImpl<CMyDialog, CWindow> {
public:
enum { IDD = IDD_MAIN };
// error: CDialogImpl doesn't support GetWndClassInfo
DECLARE_WND_CLASS(L"unique class name")
};
经过一些额外的搜索,我找到了 How to provide your own Window class name for an MFC dialog box。虽然没有什么特定于 MFC。
总结:
将 CLASS "your class name"
字段添加到对话资源。可以在 GUI 中完成:在资源文件属性中禁用 MFC 模式,然后 Class 名称 属性 出现在对话框属性中。
子class WC_DIALOG class 如下:
WNDCLASSEXW wc;
wc.cbSize = sizeof(WNDCLASSEX);
::GetClassInfoExW(0, WC_DIALOG, &wc);
wc.lpszClassName = "your window class";
wc.style &= ~CS_GLOBALCLASS;
::RegisterClassExW(&wc);
补充阅读:https://blogs.msdn.microsoft.com/oldnewthing/20100215-00/?p=14943/
子class 对话框的正确方法是什么,以便其 class 名称将更改为指定的名称,以便稍后使用 FindWindow(来自另一个进程)找到它?
class CMyDialog : public CDialogImpl<CMyDialog, CWindow> {
public:
enum { IDD = IDD_MAIN };
// error: CDialogImpl doesn't support GetWndClassInfo
DECLARE_WND_CLASS(L"unique class name")
};
经过一些额外的搜索,我找到了 How to provide your own Window class name for an MFC dialog box。虽然没有什么特定于 MFC。
总结:
将
CLASS "your class name"
字段添加到对话资源。可以在 GUI 中完成:在资源文件属性中禁用 MFC 模式,然后 Class 名称 属性 出现在对话框属性中。子class WC_DIALOG class 如下:
WNDCLASSEXW wc; wc.cbSize = sizeof(WNDCLASSEX); ::GetClassInfoExW(0, WC_DIALOG, &wc); wc.lpszClassName = "your window class"; wc.style &= ~CS_GLOBALCLASS; ::RegisterClassExW(&wc);
补充阅读:https://blogs.msdn.microsoft.com/oldnewthing/20100215-00/?p=14943/