控件的基本认识
- 控件分为静态控件和动态控件
- 静态控件:一般我们从右边的工具栏上拖到对话框上的控件就是静态控件
- 动态控件:一般我们创建控件类继承于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是个好东西,自己要多查多看多学。