写了一个"自定义"的按钮MyButton类,通过改按钮的class name实现
virtual void registerClass() {
WNDCLASSEX cls;
ZeroMemory(&cls, sizeof(WNDCLASSEX));
cls.cbSize = sizeof(WNDCLASSEX); GetClassInfoEx(NULL, "BUTTON", &cls); // 拿到BUTTON的class cls.lpfnWndProc = AJ_InitThunkProc; // 替换掉窗口回调函数
cls.lpszClassName = "MY_BUTTON"; // 新建一个叫 MY_BUTTON 的class
cls.cbWndExtra = DLGWINDOWEXTRA;
cls.cbClsExtra = 0; ATOM d = RegisterClassEx(&cls);
}
以上的MY_BUTTON 能RegisterClassEx成功,但如果把MY_BUTTON 替换成BUTTON呢,试了一样能注册成功,为什么不会冲突呢?是MyButton把windows默认的button给覆盖了吗?
virtual void registerClass() {
WNDCLASSEX cls;
ZeroMemory(&cls, sizeof(WNDCLASSEX));
cls.cbSize = sizeof(WNDCLASSEX); GetClassInfoEx(NULL, "BUTTON", &cls); // 拿到BUTTON的class cls.lpfnWndProc = AJ_InitThunkProc; // 替换掉窗口回调函数
cls.lpszClassName = "MY_BUTTON"; // 新建一个叫 MY_BUTTON 的class
cls.cbWndExtra = DLGWINDOWEXTRA;
cls.cbClsExtra = 0; ATOM d = RegisterClassEx(&cls);
}
以上的MY_BUTTON 能RegisterClassEx成功,但如果把MY_BUTTON 替换成BUTTON呢,试了一样能注册成功,为什么不会冲突呢?是MyButton把windows默认的button给覆盖了吗?
解决方案 »
- GetDlgItem返回是个句柄,怎么可以->调用函数呢?GetDlgItem(IDOK)->EnableWindow(FALSE);
- 这样是不是很无耻???
- FINDWINDOW怎么用?
- 还是gdi+双缓冲问题,可实现双缓冲,但缓冲后输出的图像总是比原图模糊(附代码)请教高手!
- 升星星了,:D 散分ing~
- 我想问一下,如果我加入了别人的.rc文件,我想改里面的资源,如改一个icon的ID,但是编译,它会出错?怎么办
- 再问:如何为文件创建快捷方式??
- 请问ddk\src\usb\usbview\目录下的源码怎样编译 ?
- 编译出现的怪事,让人不知所措啊,怎么会这样呢?
- 软件可以打开 有个功能会出0X00000001 内存不能为read 错误
- 如何为malloc在没有MFC的情况下有memory leak的提示
- 【求助】文件传输断电续传的问题 100 不够再加
virtual void registerClass() {
WNDCLASSEX cls;
ZeroMemory(&cls, sizeof(WNDCLASSEX));
cls.cbSize = sizeof(WNDCLASSEX); GetClassInfoEx(NULL, WC_TABCONTROL, &cls); //拿tab控件的class cls.lpfnWndProc = AJ_InitThunkProc;
cls.lpszClassName = WC_TABCONTROL; //再次以WC_TABCONTROL注册,这次失败
cls.cbWndExtra = DLGWINDOWEXTRA;
cls.cbClsExtra = 0; int d = ::RegisterClassEx(&cls); // 这里d===0,注册失败
int x = GetLastError(); // lastError 1410,表示class已存在
}为什么button可以tab不行。。
Button BUTTON WC_BUTTON 结果一样,都可以注册成功,registerClassEx返回值0x17
为什么可以成功。
1. 子类化,不新注册窗口类别,只是修改现有的窗口过程lpfnWndProc
2. 超类化,新注册窗口类别,但是窗口类名必须和原先的不一样我的做法注册了新类别,貌似叫超类化,但是超类化一般不能用和原来一样的className,为什么Buton可以