想在CColorDialog这对话框上添加新的按钮该怎么做

qinhualuo 2010-03-18 10:14:25
rt,如果能把这个类用到的资源难过来把其对话框拖大点,再加上按钮等控件就好了.
...全文
171 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
qinhualuo 2010-05-06
  • 打赏
  • 举报
回复
结论,是个陷阱,不能派生.只能自己全部重绘.
aoyihuashao 2010-03-18
  • 打赏
  • 举报
回复
遍历子控件:
CWnd* pwndChild = GetWindow(GW_CHILD);
while (pwndChild)
{
//....to do sth.
pwndChild = pwndChild->GetNextWindow();
}

qinhualuo 2010-03-18
  • 打赏
  • 举报
回复
尝试了很多.
哎呀,总是想的简单做起来难,估计那些方块不是CWnd,是画的,估计各位大侠也没有自己做过.期待做过的大侠更详细的指点.
其实我就是随便建了个dialog工程,在一个按钮上弹出CMyColorDialog,想在其OnInitDialog里左边添加一块空间出来.咋就这么难呢.
Eleven 2010-03-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 qinhualuo 的回复:]
貌似我 获取不到他的那些控件哦,那对话框上的文本和那些按钮之类的要怎么获取才对啊?
[/Quote]
lz可以参考MFC中的源代码,获取他的控件ID
qinhualuo 2010-03-18
  • 打赏
  • 举报
回复
貌似我 获取不到他的那些控件哦,那对话框上的文本和那些按钮之类的要怎么获取才对啊?
qinhualuo 2010-03-18
  • 打赏
  • 举报
回复
CWnd *pWnd = this->GetWindow( GW_HWNDFIRST );//GW_OWNER
CWnd *pFirst = pWnd;
while( pWnd )
{
if( pWnd->IsKindOf( RUNTIME_CLASS(CWnd) ) )//CEdit
{
pWnd->ShowWindow(SW_SHOW);
CRect rc;
pWnd->GetWindowRect(rc);
pWnd->SetWindowPos(NULL,rc.left+50,rc.top,rc.right+50,rc.bottom,SWP_NOSIZE);
}
pWnd = pWnd->GetWindow( GW_HWNDNEXT );
if (pWnd == pFirst)
{
break;
}
}

移不动哦,错在哪里啊?
aoyihuashao 2010-03-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qinhualuo 的回复:]

太需要技巧了,我增加它的宽度还不行,需要把原来所有的控件往右移啊,怎么移啊?
[/Quote]

遍历子控件,一个个移呗。
tanwei1002 2010-03-18
  • 打赏
  • 举报
回复
重载CColorDialog类
qinhualuo 2010-03-18
  • 打赏
  • 举报
回复
太需要技巧了,我增加它的宽度还不行,需要把原来所有的控件往右移啊,怎么移啊?
Eleven 2010-03-18
  • 打赏
  • 举报
回复
重载CColorDialog类,在指定的位置加个按钮就可了
VC_ZSY 2010-03-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sullensun 的回复:]

从ccolordialog 派生一个类,再重绘。。
[/Quote]
可以解决问题,重绘太麻烦,先继承colordialog类,然后你可以在初始化对话框时候来改变对话框大小并添加几个控件进去。动态添加按钮的话按钮控件最好自绘,消息你要自己去写;
SullenSun 2010-03-18
  • 打赏
  • 举报
回复
从ccolordialog 派生一个类,再重绘。。
qinhualuo 2010-03-18
  • 打赏
  • 举报
回复
ls的用了也是需要加判定才能退出循环,修改后位置还是没有移动,上面的基本色块也没有办法选择.
colordialog是块神奇的对话框,你们都没有针对他,期待做个试验的高手指点

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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