重载CDialogBar
中的OnUpdateCmdUI函数,将bDisableIfNoHndler设置为False
void OnUpdateCmdUI( CFrameWnd*pTarget, BOOLbDisableIfNoHndler );
void CMyToolBar::OnUpdateCmdUI(CFrameWnd* pTarget,BOOL bDisableIfNoHndler)
CDialogBar::OnUpdateCmdUI(pTarget,FALSE);
解决方案重载CDialogBar中的OnUpdateCmdUI函数,将bDisableIfNoHndler设置为Falsevoid OnUpdateCmdUI( CFrameWnd*pTarget, BOOLbDisableIfNoHndler );void CMyToolBar::OnUpdateCmdUI(CFrameWnd* pTarget,BOOL bDisableIfNoHnd
不可否认,CButtonST是一个十分强大的类,在应用时,十分方便,但是我最近遇到了一个很大的问题,就是设置按钮不可用时,按钮就变为一个灰框,怎么办呢,有人的解决办法是:
参考网址:http://dev.csdn.net/htmls/66/66766.html
1、在资源编辑的时候选中按钮的Owner draw即可,不需要选择Bitmap属性!
2、在程序中定义一个CBitmapBut
加载bitmap (打开按钮属性的bitmap)
CButton::SetBitmap(bitmap); //bitmap: 位图类 对象
//改变按钮大小来适应位图大小
CButton::Mov...
接着,有两种方法可以让Dialog Bar上按钮可用
重载CMainFrame的OnCmdMsg接口
BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
if(m_wndDlgBar.OnCmdM
MFC C++ 中 按钮属性中disabled 的属性设为True可用将按钮设置为不可用,那么程序中如何设置呢?
easy喽~~
添加按钮ID_BTN_EDIT 的成员变量 m_btnedit,
按钮不可用(变灰) m_btnedit. EnableWindow (0);
按钮可用 m_btnedit. EnableWindow (1
在MFC界面程序中,如果一个程序界面上有多个Button之类的按钮,有时候错按或者是多按会造成程序意想不到的结果。在合适的时候使相应的按钮“失效”是个不错的做法。
1、定义CWnd类指针,获取按钮的ID。
2、利用CWnd类的成员函数EnableWindow函数使按钮失效。
//将“Button1”按钮失效
CWnd *cSeBkBtnMy = GetDlgItem(IDC_BUT
调用CButton类的EnableWindow来实现,代码如下:
CButton *pBtn= (CButton *)GetDlgItem(IDC_BUTTON2); //IDC_BUTTON2这个按钮
if(pBtn!=NULL)
pBtn->EnableWindow(FALSE); // True or False
}如果要继续使按钮可用,则将pBtn->EnableWi
如果您想要删除CDialogBar中所有的控件并重新生成,可以按照以下步骤进行操作:
1. 打开您的CDialogBar的头文件,找到该类的成员变量和函数。将成员变量中的控件指针设置为NULL,并将函数中的控件对象销毁。
2. 在您的CDialogBar的 .cpp 文件中,编写一个函数来删除所有的控件。您可以使用CWnd::GetDlgItem函数来获取每个控件的指针,并将其销毁。
3. 创建一个新的函数来根据输入生成新的控件。您可以使用CWnd::Create函数来创建控件,并将其添加到您的CDialogBar中。
以下是一个示例函数,用于从CDialogBar中删除所有控件并重新生成:
void CMyDialogBar::ResetControls()
// 删除所有控件
CWnd* pWndChild = GetWindow(GW_CHILD);
while (pWndChild)
CWnd* pWndNext = pWndChild->GetNextWindow(GW_HWNDNEXT);
if (pWndChild->IsKindOf(RUNTIME_CLASS(CButton)) ||
pWndChild->IsKindOf(RUNTIME_CLASS(CEdit)) ||
pWndChild->IsKindOf(RUNTIME_CLASS(CComboBox)) ||
pWndChild->IsKindOf(RUNTIME_CLASS(CListBox)))
delete pWndChild;
pWndChild = pWndNext;
// 重新生成控件
// TODO: 根据输入生成控件
【数据库-MySql】2013 - Lost connection to MySQL server at reading initial communication packet
37865