VC++ 之MFC内部机制四
2009-03-02 23:33
211 查看
四
添加一个CButton的例子
调用CButton::Create()来构造一个CButton对象
演示在CMainFrame类和CTestView类添加CButton的例子
1.在CMainFrame类中添加Button
添加到 nt CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 中
代码:
//MainFrm.h
//MainFrm.cpp
2.在CTestView类中添加CButton
//TestView.h
//TestView.cpp
3.添加了控件,让它立即显示:
修改TestView.cpp中Create()中的DWORD dwStyle参数,添加WS_VISIBLE
代码:
4.关于CButton::Create()函数中的CWnd* pParentWnd代表了添加的控件放置的窗口指针
pParentWnd指向哪一个窗口,那么这个控件就添加到哪一个窗口,无论它是CMainFrame,还是CTestView
如果在 CTestView中(在文件TestView.cpp中)添加CButton:
this代表CTestView本身;
HWND GetParent( )代表CTestView的父窗口CMainFrame.
代码片断:
添加一个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); ...
相关文章推荐
- VC++ 之MFC内部机制一
- VC++ 之MFC内部机制二
- VC++ 之MFC内部机制三
- MFC内部运行机制
- RTTI 与消息机制(VC_MFC)
- 孙鑫VC++讲座笔记-(4)MFC消息映射机制的剖析
- 孙鑫VC++讲座笔记-(1)Windows程序内部运行机制
- 关于《VC++权威剖析:MFC的原理、机制与开发实例》中的函数重载
- [C++ VC MFC] MFC消息响应机制
- VC++ MFC属性表对话框的运行机制
- 孙鑫VC++讲座笔记-(1)Windows程序内部运行机制
- 孙鑫VC++讲座笔记-(1)Windows程序内部运行机制
- vc++窗口的创建过程(MFC消息机制的经典文章)
- 孙鑫VC++讲座笔记-(1)Windows程序内部运行机制
- 【VC编程】笔记3---使用Win32SDK编程,模仿MFC的消息映射处理机制
- vc++窗口的创建过程(MFC消息机制的经典文章)
- 引用 MFC类库复习1(2)--CArray内部机制
- 深入浅出话VC++(1)——Windows程序内部运行机制
- VC/MFC DDX和DDV机制介绍
- [转]关于VC++ MFC中的空闲Idle处理机制!