VC++ 之MFC内部机制四

 

添加一个CButton的例子

调用CButton::Create()来构造一个CButton对象

//Creates the Windows button control and attaches it to the CButton object: virtual BOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, //Specifies the button control's parent window, usually a CDialog. It must not be NULL. UINT nID ); 

 

 

演示在CMainFrame类和CTestView类添加CButton的例子

 

1.在CMainFrame类中添加Button

添加到 nt CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 中

 

代码:

//MainFrm.h

//添加成员变量m_btn,用于保存窗口按钮句柄 class CMainFrame : public CFrameWnd { //...... virtual BOOL PreCreateWindow(CREATESTRUCT& cs); //...... // 生成的消息映射函数 protected: afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); DECLARE_MESSAGE_MAP() private: CButton m_btn; //添加全局变量CButton m_btn , 用来保存窗口按键句柄 }; 

 

//MainFrm.cpp

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; //...... m_btn.Create("聚元", WS_CHILD | BS_PUSHBUTTON ,CRect(0,0,100,100),this,123); //Create()返回的窗口按钮句柄保存到了m_btn中, //Create()中的参数this指针指示了添加的button放置的位置,在当前的CMainFrame窗体中. m_btn.ShowWindow(SW_SHOWNORMAL); //m_btn.UpdateWindow(); return 0; } 

 

2.在CTestView类中添加CButton

//TestView.h 

//添加成员变量m_btn,用于保存窗口按钮句柄 class CTestView : public CView { //...... // 生成的消息映射函数 protected: DECLARE_MESSAGE_MAP() private: CButton m_btn; //添加全局变量CButton m_btn , 用来保存窗口按键句柄 };  

//TestView.cpp

//添加int CTestView::OnCreate(LPCREATESTRUCT lpCreateStruct)函数,用于消息处理 int CTestView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; m_btn.Create("聚元", WS_CHILD | BS_PUSHBUTTON ,CRect(0,0,100,100),this,123); //Create()返回的窗口按钮句柄保存到了m_btn中, //Create()中的参数this指针指示了添加的button放置的位置,在当前的CMainFrame窗体中. m_btn.ShowWindow(SW_SHOWNORMAL); //m_btn.UpdateWindow(); return 0; } 

 

3.添加了控件,让它立即显示:

修改TestView.cpp中Create()中的DWORD dwStyle参数,添加WS_VISIBLE

代码:

... m_btn.Create("聚元", WS_CHILD | WS_VISIBLE |BS_PUSHBUTTON ,CRect(0,0,100,100),this,123); //Create()返回的窗口按钮句柄保存到了m_btn中, //Create()中的参数this指针指示了添加的button放置的位置,在当前的CMainFrame窗体中. //m_btn.ShowWindow(SW_SHOWNORMAL); //m_btn.UpdateWindow(); ... 

4.关于CButton::Create()函数中的CWnd* pParentWnd代表了添加的控件放置的窗口指针

pParentWnd指向哪一个窗口,那么这个控件就添加到哪一个窗口,无论它是CMainFrame,还是CTestView

 

如果在 CTestView中(在文件TestView.cpp中)添加CButton:

this代表CTestView本身;

HWND GetParent( )代表CTestView的父窗口CMainFrame.

 

代码片断:

... m_btn.Create("聚元", WS_CHILD | WS_VISIBLE |BS_PUSHBUTTON ,CRect(0,0,100,100),GetParent(),123); ... 

 

你可能感兴趣的:(windows,object,Class,mfc,vc++,button)