c++ - 设置对话框窗口类名

标签 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") 
};

最佳答案

经过一些额外的搜索,我发现 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/

相关文章:

winapi - 使大量分配在第一次接触时自动提交

c# - 如何为 C# 包装具有多种类型的 C++ 结构?

windows - 有没有办法在 Windows 热点上实现强制门户?

windows - 适用于 Windows 的视频编码库

c++ - ListView项目背景

C++获取程序文件目录,附加额外路径并执行

c++ - 如何不运行vcvars32.bat直接运行cl.exe?

c++ - 抽象类虚基类的初始化

c++ - 向着色器添加线不会画任何东西

c++ - 修改编译后的可执行内存分配