热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

动态创建GroupBox控件时,设置其风格为SS_BLACKFRAME,运行后发现GroupBox覆盖了对话框上原有的Button,怎样处理?

动态创建GroupBox控件时,设置风格为SS_BLACKFRAME,程序运行后发现创建出的GroupBox控件覆盖住了对话框上原有的Button按扭,必须鼠标点击后按扭才会显示出来,请问怎样处理
动态创建GroupBox控件时,设置风格为SS_BLACKFRAME, 程序运行后发现创建出的GroupBox控件覆盖住了对话框上原有的Button按扭, 必须鼠标点击后按扭才会显示出来,请问怎样处理?按扭为先前在对话框上静态添加的.


在OnInitDialog()函数里,创建GroupBox的代码如下:

BOOL CSpeedTool::OnInitDialog() 
{
CDialog::OnInitDialog();
    
CStatic *pCTGopBox=new CStatic;
pCTGopBox->Create(_T("my static"),   WS_CHILD|SS_BLACKRECT|WS_VISIBLE, CRect(10,10,100,100),  this, IDC_STATIC);
    pCTGopBox->MoveWindow(0, 0, 832, 172);  

return TRUE;  
              }

如果将对话框上原有的Button按扭都SetParent(pCTGopBox),是可以显示出对话框上的button按扭来,可是SetParent(pCTGopBox)之后, 会导致DIALOG上的按扭事件不响应, 怎样既能正常显示出BUTTON, 又能使DIALOG其BUTTON事件得到执行, 请各位高手支招!


4 个解决方案

#1


sorry 刚才试验了一下,我告诉你SetParent的方法确实会导致按钮不响应,因为按钮的父窗口变成了pCTGopBox,截获了按钮消息,所以这不是根本解决问题的办法

或者你可以派生一个CStatic,让CYourStatic负责处理按钮消息,然后通知给父窗口

如果你放置pCTGopBox的目的仅仅是为了改变窗口的颜色,那就用OnCtlColor或OnPaint里画好了,这样简便一些

#2


谢谢高手, 请问OnCtlColor怎么用啊,新手,实在不好意思.

#3


//在YourDlg.h里添加一个全局刷子
HBRUSH m_mybrush;

//在CYourDlg构造函数里创建刷子
CYourDlg::YourDlgg(CWnd* pParent /*=NULL*/)
: CDialog(CYourDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CYourDlg)
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_mybrush =CreateSolidBrush(RGB(0,0,0));  //创建黑色刷子
}

//在CYourDlg的OnCtlColor里返回刷子
HBRUSH CYourDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here


// TODO: Return a different brush if the default is not desired

if(!pWnd->GetDlgCtrlID())
  return m_mybrush;   //返回自定义的黑色刷子
else
return hbr;
}

#4


谢谢高手!

推荐阅读
author-avatar
mobiledu2502885243
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有