CEDIT添加CButton控件 我想在文本框中添加一个命令按钮,求助大家了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 创建一个CButton,然后MoveWindow等移动CEdit的位置 用1楼的方法,放是可以放上去,但是你怎么用呀?Edit会自动获得你的输入焦点,你的Button根本单击不了,除非你将Edit->EnableWindow(FALSE). cedit旁边放一个小button 点击button处理edit事件 把Button的Tab顺序设置的比Edit低,那样就可以按Button了 呵呵。好像你说的不太明确,给不了你正确的代码。呵呵。你是想输入之后在buuton里显示输入的值吗? 可以参考CMFCEditBrowseCtrl,微软的这个类好像就是这样实现的 关注一下,我也想知道。之前做一个登录界面,想模仿QQ密码框那样带个软键盘按钮没有做成,不知道是否和LZ的情况类似 创建按钮的时候,以CEdit控件作为它的父窗口 按钮加在 edit 的 前部,还是 后部? 2种方式:1种:一个有边框的CStatic里面左边是无边框edit右边是按钮2种:一个有边框的CEdit加一个popup样式的按钮 第1种不错;第2种前面提到了,当CEdit获得焦点后,CButton点不到,如果作为子窗口,虽然可以点到,CEdit也会覆盖CButton的显示 注意我说的是popup样式,child样式当然会被覆盖。 建议:1.在WM_NCCALCSIZE等消息重新计算CEdit的非客户区/边框,留出足够的位置放按钮2.在WM_NCPAINT等消息里,绘制一个按钮上去(只是视觉上的,不是真的去创建控件)3.绘制按钮时,贴图或者使用系统自带的API DrawThemeBackground4.在WM_NCHITTEST、WM_NCLBUTTONDOWN等消息处理"按钮"的不同状态以及点击事件 使用系统自带API绘制按钮可参考:http://blog.csdn.net/cometnet/article/details/7293913//画出整个控件背景HBRUSH hbr=CreateSolidBrush(GetSysColor(COLOR_BTNFACE));FillRect(hDC,&rc,hbr);DeleteObject(hbr);//画出前景HTHEME hTheme=OpenThemeData(m_hWnd,L"Button");if(hTheme){//画出XP风格的按钮 if(m_bDisable){//禁止状态 DrawThemeBackground (hTheme,hDC, BP_PUSHBUTTON, PBS_DISABLED,&rc,NULL); }else if(m_bDown){//按下状态 DrawThemeBackground (hTheme,hDC, BP_PUSHBUTTON, PBS_PRESSED,&rc,NULL); }else if(m_bOver){//热点状态 DrawThemeBackground (hTheme,hDC, BP_PUSHBUTTON, PBS_HOT,&rc,NULL); }else{//普通状态 DrawThemeBackground (hTheme,hDC, BP_PUSHBUTTON, PBS_NORMAL,&rc,NULL); } CloseThemeData (hTheme);}else{//画出Win9x风格的控件 if(m_bDisable){ DrawFrameControl (hDC,rc,DFC_BUTTON, DFCS_BUTTONPUSH|DFCS_INACTIVE); }else if(m_bDown){ DrawFrameControl (hDC,rc,DFC_BUTTON, DFCS_BUTTONPUSH|DFCS_PUSHED); }else if(m_bOver){ DrawFrameControl (hDC,rc,DFC_BUTTON, DFCS_BUTTONPUSH|DFCS_HOT); }else{ DrawFrameControl (hDC,rc,DFC_BUTTON, DFCS_BUTTONPUSH); }} 我想,大概的思路是重写个CEdit类,在CEDit创建完后,动态创建一个按钮进去,不知道CEdit创建完后是用那个消息。 参考一下bcg中的 cbcgpbutton的实现 远程数据同步的问题,使用SQLSERVER2000 XML解析过程中出现<和>怎么办 VC 求通过USB向手机写文件的例子 两个recordset结果集,怎么比较其内容是否完全一直? 新手求教:CView::OnActivateView为什么还要第3个参数呢? 请教学习方向 MFC中的编辑框问题 MFC 如何编写实现对某个进程的注册表操作行为的监控 怎么在注册表中写入数字啊,谢谢,最好有原代码啊 这样的问题都没人回答,CSDN真是完了 VC中可以用别人的事.exe应用程序吗 向前辈诚恳请教自绘控件绘制顺序问题
之前做一个登录界面,想模仿QQ密码框那样带个软键盘按钮没有做成,不知道是否和LZ的情况类似
1种:一个有边框的CStatic里面左边是无边框edit右边是按钮
2种:一个有边框的CEdit加一个popup样式的按钮
1.在WM_NCCALCSIZE等消息重新计算CEdit的非客户区/边框,留出足够的位置放按钮
2.在WM_NCPAINT等消息里,绘制一个按钮上去(只是视觉上的,不是真的去创建控件)
3.绘制按钮时,贴图或者使用系统自带的API DrawThemeBackground
4.在WM_NCHITTEST、WM_NCLBUTTONDOWN等消息处理"按钮"的不同状态以及点击事件
http://blog.csdn.net/cometnet/article/details/7293913
//画出整个控件背景
HBRUSH hbr=CreateSolidBrush(GetSysColor(COLOR_BTNFACE));
FillRect(hDC,&rc,hbr);
DeleteObject(hbr);
//画出前景
HTHEME hTheme=OpenThemeData(m_hWnd,L"Button");
if(hTheme){//画出XP风格的按钮
if(m_bDisable){//禁止状态
DrawThemeBackground (hTheme,hDC, BP_PUSHBUTTON, PBS_DISABLED,&rc,NULL);
}else if(m_bDown){//按下状态
DrawThemeBackground (hTheme,hDC, BP_PUSHBUTTON, PBS_PRESSED,&rc,NULL);
}else if(m_bOver){//热点状态
DrawThemeBackground (hTheme,hDC, BP_PUSHBUTTON, PBS_HOT,&rc,NULL);
}else{//普通状态
DrawThemeBackground (hTheme,hDC, BP_PUSHBUTTON, PBS_NORMAL,&rc,NULL);
}
CloseThemeData (hTheme);
}else{//画出Win9x风格的控件
if(m_bDisable){
DrawFrameControl (hDC,rc,DFC_BUTTON, DFCS_BUTTONPUSH|DFCS_INACTIVE);
}else if(m_bDown){
DrawFrameControl (hDC,rc,DFC_BUTTON, DFCS_BUTTONPUSH|DFCS_PUSHED);
}else if(m_bOver){
DrawFrameControl (hDC,rc,DFC_BUTTON, DFCS_BUTTONPUSH|DFCS_HOT);
}else{
DrawFrameControl (hDC,rc,DFC_BUTTON, DFCS_BUTTONPUSH);
}
}