设置对话框窗口类名

时间:2015-12-28 23:07:02

标签: c++ windows winapi atl wtl

对对话框进行子类化以使其类名更改为指定对象的正确方法是什么,以后可以使用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") 
};

1 个答案:

答案 0 :(得分:1)

经过一些额外的搜索,我找到了How to provide your own Window class name for an MFC dialog box。但是MFC没有特定的东西。

总结:

  • CLASS "your class name"字段添加到对话框资源中。可以在GUI中完成:在资源文件属性上禁用MFC模式,然后在对话框属性中显示Class Name属性。

  • 将WC_DIALOG类子类化如下:

    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/