我用DialogBox函数产生的对话框,怎样更改窗口的ClassName?

wachel 2006-04-18 02:50:03
我用SDK方式写的程序,主窗口使用的DialogBox方法产生的。我想修改他的ClassName,怎样才能做到?
...全文
207 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wachel 2006-04-19
  • 打赏
  • 举报
回复
已经解决了,谢谢大家,在rc文件中加入CLASS "MYCLASSNAME"
然后下面这样就可以,wc.lpfnWndProc = DefDlgProc;这一行如果不是这样也会发生错误,谢谢楼上各位的提示
WNDCLASS wc;
wc.style = CS_DBLCLKS | CS_SAVEBITS | CS_BYTEALIGNWINDOW;
wc.lpfnWndProc = DefDlgProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = DLGWINDOWEXTRA;
wc.hInstance = _hInstance;
wc.hIcon = LoadIcon(_hInstance, "DialogIcon");
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground =(HBRUSH) COLOR_WINDOW + 1;
wc.lpszMenuName = NULL;
wc.lpszClassName = "MYCLASSNAME";
RegisterClass(&wc);

if(-1==DialogBox(_hInstance,"DLGMAIN",NULL,DlgMainProc))
{
MessageBox(NULL,"生成窗体失败",appName,MB_DEFBUTTON1);
return FALSE;
}
wachel 2006-04-19
  • 打赏
  • 举报
回复
如果把rc文件中的 CLASS "name" 这一行去掉,就没有问题
wachel 2006-04-19
  • 打赏
  • 举报
回复
wltg2001(红猪) ( ) 信誉:100 2006-4-18 18:28:27 得分: 0

你真的要改的话可以有一个办法:像在创建窗口一样去定义一个窗口类,在注册主窗口类时将cbWndExtra属性设为DLGWINDOWEXTRA, 然后和正常程序一样,不同的是不用CreateWindowEx,而用CreateDialogParam来创建窗口,后面和正常的主窗口一样,也要有消息循环之类。这种方法中对话框资源模板中要加一行CLASS "name"


======================
我这样做了,程序可以编译通过,但是CreateDialogParam的时候生成不了窗口,返回值为0,但是用GetLastError得到的0。
wltg2001 2006-04-18
  • 打赏
  • 举报
回复
你真的要改的话可以有一个办法:像在创建窗口一样去定义一个窗口类,在注册主窗口类时将cbWndExtra属性设为DLGWINDOWEXTRA, 然后和正常程序一样,不同的是不用CreateWindowEx,而用CreateDialogParam来创建窗口,后面和正常的主窗口一样,也要有消息循环之类。这种方法中对话框资源模板中要加一行CLASS "name"
wachel 2006-04-18
  • 打赏
  • 举报
回复
水平有限,都没看懂
=======================
Stefine(浮躁,易紧张,虚荣心强,表达能力差,沟通能力差、、) ( ) 信誉:100 2006-04-18 15:47:00 得分: 0
就像在写创建窗口的SDK程序一样啊

在Create或CreateEx
===我知道在创建窗口之前可以用RegisterClassEx,指定classname,但是DialogBox的时候没有机会RegisterClassEx。


=========================================
Mackz(在相互) ( ) 信誉:117 2006-04-18 15:53:00 得分: 0

用DialogBox产生的是模式窗口,可以尝试在响应WM_INITDIALOG消息的时候用SubclassWindow()来子类化。
====可不可以说的稍微具体点?是指子类化后处理WM_CREATE消息?那样的话我还能使用资源中的对话框吗?


菜牛 2006-04-18
  • 打赏
  • 举报
回复
用DialogBox产生的是模式窗口,可以尝试在响应WM_INITDIALOG消息的时候用SubclassWindow()来子类化。
Stefine 2006-04-18
  • 打赏
  • 举报
回复
就像在写创建窗口的SDK程序一样啊

在Create或CreateEx
ripyu 2006-04-18
  • 打赏
  • 举报
回复
create的时候

16,471

社区成员

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

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

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