mfc对话框中(Button)控件的显示与隐藏

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liunan199481/article/details/82426952

控件的基本认识

  • 控件分为静态控件和动态控件
  • 静态控件:一般我们从右边的工具栏上拖到对话框上的控件就是静态控件
  • 动态控件:一般我们创建控件类继承于mfc的类,比如CButton,那么new出来的对象,就是动态创建的控件

控件的隐藏与显示

  • 静态控件的隐藏与显示与动态控件一样,所以我就以静态控件为例子

控件ID与句柄

  • 一个项目中对于一个控件对象的唯一标识是控件ID,而一个对象对于资源管理器的唯一标识就是句柄
  • 从本质上来说,他们都是一个独一无二的数

以一个静态Button控件为例

  • ID:IDC_BUTTON1
  • 我希望在对话框显示的时候,不显示这个button,等到想显示的时候,再调用函数显示
  • 在对话框的OnInitDialog函数中添加如下语句:
GetDlgItem(IDC_BUTTON1)->ShowWindow(SW_HIDE);
  • 分析:
//这里的GetDlgItem函数原型是:
CWnd* GetDlgItem(int nID ) const;
//还有一个重载函数:
void GetDlgItem(
   int nID,
   HWND* phWnd
) const;
//还是有一个同名的系统函数
HWND GetDlgItem(HWND hDlg, int nIDDlgItem);
//注意使用的区别,若编程时使用::调用的是第三个

//GetDlgItem返回的是句柄,再用句柄去调用ShowWindow函数hide控件
//所以,显示控件可以这么写:
GetDlgItem(IDC_BUTTON1)->ShowWindow(SW_SHOW);
  • 动态控件对象,自带m_hwnd属性
class CMyButton:public CButton
{
...
};
CMyButton* pBtn = new CMyButton();
pBtn->m_hwnd->ShowWindow(...);

注: msdn是个好东西,自己要多查多看多学。

猜你喜欢

转载自blog.csdn.net/liunan199481/article/details/82426952