VC++ 两种动态调整控件位置的方法(CButton设置为Radio形式会出现错误)
2015-10-26 14:06
651 查看
((CButton*)GetDlgItem(IDC_CHECK1))->MoveWindow(182, cy - 232, 30, 20); ((CButton*)GetDlgItem(IDC_CHECK2))->MoveWindow(182, cy - 207, 30, 20); ((CButton*)GetDlgItem(IDC_CHECK3))->MoveWindow(182, cy - 182, 30, 20); ((CButton*)GetDlgItem(IDC_CHECK4))->MoveWindow(182, cy - 157, 30, 20); ((CButton*)GetDlgItem(IDC_CHECK5))->MoveWindow(182, cy - 132, 30, 20); ((CButton*)GetDlgItem(IDC_CHECK6))->MoveWindow(182, cy - 107, 30, 20); ((CStatic*)GetDlgItem(IDC_STATIC1))->SetWindowPos(NULL, 220, cy - 230, cx - 240, 22, SWP_NOZORDER); ((CStatic*)GetDlgItem(IDC_STATIC2))->SetWindowPos(NULL, 220, cy - 205, cx - 240, 22, SWP_NOZORDER); ((CStatic*)GetDlgItem(IDC_STATIC3))->SetWindowPos(NULL, 220, cy - 180, cx - 240, 22, SWP_NOZORDER); ((CStatic*)GetDlgItem(IDC_STATIC4))->SetWindowPos(NULL, 220, cy - 155, cx - 240, 22, SWP_NOZORDER); ((CStatic*)GetDlgItem(IDC_STATIC5))->SetWindowPos(NULL, 220, cy - 130, cx - 240, 22, SWP_NOZORDER); ((CStatic*)GetDlgItem(IDC_STATIC6))->SetWindowPos(NULL, 220, cy - 105, cx - 240, 22, SWP_NOZORDER);
最近发现,使用第二种访求,也就是 SetWindowPos 方法时,会出现一个奇怪的问题 CButton如果转换成 Radio类型的控件时,会出现Group组的设置会出现一些错误。导致设置成Group为True的控件与其它的不成一组。
另附:
将CButton控件设置为Radio形式的方法是:
((CButton*)GetDlgItem(IDC_CHECK1))->ModifyStyle(BS_AUTOCHECKBOX, BS_AUTORADIOBUTTON | WS_GROUP, 0); ((CButton*)GetDlgItem(IDC_CHECK1))->Invalidate(); ((CButton*)GetDlgItem(IDC_CHECK2))->ModifyStyle(BS_AUTOCHECKBOX, BS_AUTORADIOBUTTON, 0); ((CButton*)GetDlgItem(IDC_CHECK2))->Invalidate(); ((CButton*)GetDlgItem(IDC_CHECK3))->ModifyStyle(BS_AUTOCHECKBOX, BS_AUTORADIOBUTTON, 0); ((CButton*)GetDlgItem(IDC_CHECK3))->Invalidate(); ((CButton*)GetDlgItem(IDC_CHECK4))->ModifyStyle(BS_AUTOCHECKBOX, BS_AUTORADIOBUTTON, 0); ((CButton*)GetDlgItem(IDC_CHECK4))->Invalidate(); ((CButton*)GetDlgItem(IDC_CHECK5))->ModifyStyle(BS_AUTOCHECKBOX, BS_AUTORADIOBUTTON, 0); ((CButton*)GetDlgItem(IDC_CHECK5))->Invalidate(); ((CButton*)GetDlgItem(IDC_CHECK6))->ModifyStyle(BS_AUTOCHECKBOX, BS_AUTORADIOBUTTON, 0); ((CButton*)GetDlgItem(IDC_CHECK6))->Invalidate();
注意上面的 WS_GROUP 控件样式!
相关文章推荐
- c++11 单例模式可变参数实现完美转发
- C/C++ 使用rand()组合形式生成大于15位的随机数时存在的问题
- 如何安装Microsoft Visual C++6.0
- c++学习笔记(十一):函数重载VS函数重写
- 详谈C++中数组作为函数参数
- [C++]关于数组的引用和引用的数组
- C++面试常见题目问与答(汇总一)
- 返回指向局部变量的指针或引用的问题
- C语言itoa()函数和atoi()函数详解
- C++设计模式之抽象工厂模式(改编自C++设计模式)
- C++顺序容器vector,deque,list
- C语言简介
- C语言strcat()
- C语言 常见错误
- C++ static_cast和dynamic_cast的区别
- c++学习(一)
- 【Android】ADT中使用NDK编译已有的C++实现的库文件
- effective c++成对使用new 和 delete时要采取相同形式
- C++单例模式实例
- C语言gets()函数:从流中读取字符串