转自:http://hi.baidu.com/%D4%C2%BD%FC%D0%C7%D4%B6/blog/item/3ae9d912dc3121c9c2fd78aa.html
如何给单文档创建个Button呢!其实这个很容易!
首先我们应该了解的是MFC中所有的Button都来自一个类,就是CButton,只是各个Button的style不同而已,所以显示出来了不同的风格与特性!我们还应该了解的是,我们的单文档可视部分分为2个部分,一个是客户区,一个是视图区,其中客户区包含视图区,客户区比视图区多了一个toolbar.当我们添加按钮时,既可以添加在客户区,也可以添加在视图区。
比如我们添加在客户区。
当然,我们首先应该是创建号一个单文档应用程序的。然后在类视图里找到MainFram类,双击进入OnCreate函数,这里我们看到了toolbar就是在这里定义的,也可以在这里删除,我们对单文档添加一个Button,就可以在这个函数中添加了。
添加Button之前,我们首先应该来认识一下我们的CButton类。MSDN中对CButton是这样解释的Constructs a CButton object.意思就是创建一个CButton对象。 通过什么创建呢,就是通过CButton封装好的Create函数创建出来的。Create的作用是Creates the Windows button control and attaches it to the CButton object.意思就是创建一个窗口控制按钮并且将它和一个CButton的对象关联起来。来,我们看看create函数。
BOOL Create //如果创建成功,则返回非0值,否则为0
( LPCTSTR lpszCaption,//这是一个Button上显示的信息,长的字符串指针
DWORD dwStyle, // 这里是Button类型,这个可以在MSDN参看 button styles
const RECT& rect,//这里传递的是一个CRect指针,就是按钮的长宽大小
CWnd* pParentWnd, //Button也算是一个窗口,这个是指向这个Button父类的窗口指针
UINT nID );//这里是Button的ID,自己随便写个整数,自己定义一个宏也可以
利用这个函数就可以为单文档创建一个按钮了。很简单的,跟我来吧!
- 首先我们进入CMainFrame类,在CMainFrame类中定义一个CButton的对象m_btn,注意必须是全局对象才可以,然后找到OnCreate函数,我们就可以利用m_btn调用create函数了。
m_btn.Create("测试",BS_PUSHBUTTON|WS_VISIBLE,CRect(0,0,100,100),this,10000);
添加上边短短的一行代码,按钮就创建成功了,最后一个参数是按钮的ID,我们要对按钮进行什么相应,就可以对它的ID进行相应了。
- 细心的读者会发现,按照上述方法我们设置那个按钮遮挡住了toolbar,怎么才能不遮挡住toolbar呢,当然修改参数CRect对象的值是一种比较简便的方法,另外一种方法就是我们直接把按钮创建在视图类中,因为视图类窗口本身就不包含toolbar,所以就不用担心上述问题了。
因为视图类窗口没有OnCreate函数,我们可以手动的添加。
我们可以在类视图中右击视图类->Add Windows Message Handler…对WM_CREATE添加消息相应函数OnCreate。
然后再在OnCreate函数中添加代码:
m_btn.Create("测试",BS_PUSHBUTTON|WS_VISIBLE,CRect(0,0,100,100),this,10000);
这样创建的按钮就是在视类中了。