自定义了一个按钮m_Btn,想通过调用Hide()函数,使m_Btn隐藏起来,但运行后就是隐藏不了,哪位高手能不能帮我看下是为什么,下面是部分代码class Menu : public CWnd{
public:
Btn2 m_Btn;;//Btn2是从CButton派生出来的类
}BOOL Menu::CreateGroupMenu(CWnd *pParent, CRect rcClient, UINT nID) {
if (!RegisterWindowClass())//RegisterWindowClass()为注册窗口的函数
return FALSE;
if (!CWnd::Create(MENU_CLASSNAME, NULL, WS_CHILD|WS_VISIBLE, rcClient, pParent, nID))
return FALSE;
rect2.left=0;
rect2.top=30;
rect2.right=150;
rect2.bottom=60;
m_Btn.Create("子窗口",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, rect2, this, IDC_BTNID);
m_Btn.Loadicon();
return TRUE;
}
void Menu::Hide()
{
m_Btn.ShowWindow(SW_HIDE);
this->Invalidate(TRUE);
}
public:
Btn2 m_Btn;;//Btn2是从CButton派生出来的类
}BOOL Menu::CreateGroupMenu(CWnd *pParent, CRect rcClient, UINT nID) {
if (!RegisterWindowClass())//RegisterWindowClass()为注册窗口的函数
return FALSE;
if (!CWnd::Create(MENU_CLASSNAME, NULL, WS_CHILD|WS_VISIBLE, rcClient, pParent, nID))
return FALSE;
rect2.left=0;
rect2.top=30;
rect2.right=150;
rect2.bottom=60;
m_Btn.Create("子窗口",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, rect2, this, IDC_BTNID);
m_Btn.Loadicon();
return TRUE;
}
void Menu::Hide()
{
m_Btn.ShowWindow(SW_HIDE);
this->Invalidate(TRUE);
}
将WS_VISIBLE风格去掉看看会不会显示.
WS_VISIBLE去掉了,但结果还是一样
void Menu::Show()
{
m_Btn.ShowWindow(SW_SHOW);
this->Invalidate(TRUE);
}
我想,是不是调用Hide()的时候,按钮已经实现了隐藏的功能,不过按钮的父窗体是一个基于CWnd的Menu,Menu想对与我们来说是一个透明的,按钮虽然隐藏于Menu后面,但Menu是透明的,所以,我们也可以看见按钮.不知道我想的对不对?请有兴趣的朋友一起来讨论下
CWnd::UpdateWindow();
刷新Menu再看下.