请问怎样修改MFC 对话框的窗口类名

MapleInHG 2005-04-05 05:23:01
通常默认的为“#32770”,想改它的名字。
由于MFC对话框创建过程的特殊性,不能在PreCreateWindow中注册自己的窗口类,这个虚函数根本没有调用。
...全文
634 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
annyrun01 2010-06-10
  • 打赏
  • 举报
回复
能不能说的再具体点呀?为什么我在工作区的资源标签上右键点击后没有弹出的对话框?也没有“去掉“Enable MFC feature”复选项”
MapleInHG 2005-04-05
  • 打赏
  • 举报
回复
嗯,这招可以。
也用了几年VC了,还不知道有这样一个选项,惭愧,也佩服上面这位老大。
Kudeet 2005-04-05
  • 打赏
  • 举报
回复
(转载)

修改对话框程序的类名:

1 修改对话框资源
   在工作区的资源标签上右键点击最上边的那个“xx resources”
  在弹出的对话框中,去掉“Enable MFC feature”复选项
   再打开对话框资源的属性对话框,在右下角的class name输入你要修改的类名。比如”xxx”

   再加上“Enable MFC feature”复选项

2 在你的InstInstatce()虚函数中:
  WNDCLASS wc = {0};
::GetClassInfo(AfxGetInstanceHandle(),"#32770",&wc);
wc.lpszClassName="xxx";
AfxRegisterClass(&wc);

3 ReBuild All
MapleInHG 2005-04-05
  • 打赏
  • 举报
回复
好像不行啊,窗口类名没有改变。
我没有指定你代码中的wndClass.lpfnWndProc、wndClass.hbrBackground,应该没有问题吧?
DentistryDoctor 2005-04-05
  • 打赏
  • 举报
回复
BOOL CTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

WNDCLASS wndClass; // structure pointer
ZeroMemory( &wndClass, sizeof(WNDCLASS) );
wndClass.style = CS_OWNDC | CS_DBLCLKS;
wndClass.lpfnWndProc = ::TestWndProc;
wndClass.hInstance = AfxGetInstanceHandle();
wndClass.hIcon = NULL;
wndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
m_obj = GetStockObject(WHITE_BRUSH);

wndClass.hbrBackground = (HBRUSH)m_obj;///*(HBRUSH)COLOR_WINDOW; //*/CreateSolidBrush(RGB(255, 0, 255));//GetStockObject(WHITE_BRUSH);
wndClass.lpszMenuName = NULL;
wndClass.lpszClassName = (LPSTR) "TestClassName";

// Returns result of registering the window
RegisterClass( &wndClass );
MapleInHG 2005-04-05
  • 打赏
  • 举报
回复
我跟踪了代码,都不知道CDialog在哪里注册的这个窗口类,只在它的窗口创建的钩子中发现了#327这个名字。

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧