首先我们把题目所示的要求分为两个问题:
问题一:如何给基于MFC的单文档视图类里面添加 控件。就是那种类似工具箱里面的控件。
问题二:如何给已经添加的控件 定义一些消息的响应函数。
××××××××××××××××××××××××××××××××××××××××××××××
前言: 如果是给对话框添加一个控件 ,然后给这个控件添加消息响应函数是非常简单。IDE有一整套向导可以帮助我们干这个事情。
但是如果是直接给视图类添加控件 似乎就比较困难了。
但是很多牛X的人看到框架类可以像一个箩筐丝的把 菜单栏,状态栏,工具栏,还有视图类的实例化对象等等装入到自己的框架里面。
为啥就不可以让视图类的实例化对象也变成一个箩筐,往里面塞一些东西? 答案是可以的。理论上讲可以往视图类里面塞任何窗口。
此处举一个例子说明下,这个例子是往视图类里面塞进去一个按钮窗口。
参考的资料是:
http://blog.csdn.net/chao360559040/article/details/5886219
http://blog.sina.com.cn/s/blog_93491c750101b6qa.html
http://www.cnitblog.com/buf/archive/2008/12/16/42270.html
具体步骤是:
A:在视图类的头文件里面添加一个按钮类的实例化对象,这个对象作为视图类的成员变量。
B:重写视图类的OnCreate函数
int CTestGszView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; // TODO: 在此添加您专用的创建代码 m_TestButton.Create( "一个按钮",//按钮的标题 相当于属性里面的Caption WS_VISIBLE|WS_CHILD|WS_BORDER,//按钮的风格 CRect(40,10,200,60),//按钮所在的位置和大小 this,//父窗口指针 0x1001//控件的ID ); m_TestButton.ShowWindow(SW_SHOWNORMAL);//显示出来 return 0; }
运行效果: