动态创建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事件得到执行, 请各位高手支招!
------解决方案--------------------
//在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;
}
动态创建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事件得到执行, 请各位高手支招!
------解决方案--------------------
//在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;
}