对对话框进行子类化以便其类名更改为指定的类名,以便稍后可以使用 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“您的类名称”
字段添加到对话框资源中。可以在 GUI 中完成:在资源文件属性上禁用 MFC 模式,然后类名属性将出现在对话框属性中。对 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/
关于c++ - 设置对话框窗口类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34502097/