请按如下步骤生成该控件:
1.在文件菜单中选择新建
2.在工程选项卡中选择MFC ActiveX Control Wizard
3.工程命名为Plot,然后确定进入下一步。
4.在“Step 1 of 2 ”对话框中接受默认选择,进入下一步。
5.在“Step 2of 2 ”对话框中的Which window class, if any, should this control subclass?下拉框中选择STATIC,用途使用它来显示数 据。
6.选择“Advanced”按钮,在“Flicker free activation (无闪烁)”前面打钩。
7.点击“Finish”按钮后,AppWizard会建立以下类:
CPlotApp类:派生于COleControlModule的程序类。COleControlModule是派生一个OLE模块对象的基类,此类为控件的初始化 (InitInstance) 与销毁(ExitInstance)提供成员函数。
CPlotCtrl类:派生于COleControl的类。为控件提供的功能函数最多,故大部分代码添加与此。
CPlotPropPage类:派生于COlePropertyPage的类。此类用与管理控件的属性页,同时也有相应的对话框资源来为控件提供属性页。
2。添加“固有的”属性。
单文档不能像对话框一样用鼠标拖控件来添加控件要在单文档中添加控件要用代码实现,函数用Create.
举个例子:添加一个按钮控件
1.在View类的头文件中定义个ID号:
#define
IDC_DYNAMICBUTTON
1001
2.加入成员变量
public:
CButton
m_button
3.在OnCreate函数加创建按钮和列表框
int
CStyleView::OnCreate(LPCREATESTRUCT
lpCreateStruct)
{
....
//
TODO:
Add
your
specialized
creation
code
here
//创建按钮
m_button.Create(
//按钮标题
"i
am
a
dynimic
button",
//按钮风格
WS_CHILD|WS_VISIBLE|WS_BORDER,
//按钮大小
CRect(300,40,500,80),
//按钮父指针
this,
//该按钮对应的ID号
IDC_DYNAMICBUTTON)
....
}
4.添加处理函数
//{{AFX_MSG(..)
afx_msg
void
OnClickButton()
//按钮消息处理函数
//}}AFX_MSG
BEGIN_MESSAGE_MAP(...)
ON_BN_CLICKED(IDC_DYNAMICBUTTON,OnClickButton)
//按钮ON_BN_CLICKED消息的处理函数OnClickButton
//}}AFX_MSG_MAP
//现在就可以给这个按钮添加你要实现功能的代码了
void
CStyleView::OnClickButton()
{
AfxMessageBox("按钮被点到了!")
}
第一种方法:定义一个CButton类的对象btn。在MainFrm.h里定义一个private:类型的CButton btn
在int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)函数的return 0;前边加上btn.Create("按钮显示的名称",WS_CHILD|WS_VISIBLE,CRect(0,0,100,40),this,123)
注意:(1)btn不能放在OnCreate里,否则OnCreate的生命期结束了,就析构了btn了。(2)btn.Create里的第二个参数或上了一个WS_VISIBLE就不用调用btn.ShowWindow(SW_SHOWNORMAL)了。否则需要显示调用ShowWindow。(3)第四个参数之所以可以是this指针,因为它是指向对象,是从CWnd派生出来的,所以匹配。第五个参数随便制定,为int就好。
第二种方法:
在CLesson3View类上右键Add Member Viarable。也可以在Lesson3View.h里添加private:类型的 CButton btn注意不是在MainFrm.h
在CLesson3View类上右键选择Add Windows Message Handlers,在New Windows Message/events:里选择WM_CREATE,选择Add Handler,点Edit Existing,看到多了一个Oncreate,在return 0前加代码btn.Create("按钮显示的名称",WS_CHILD|WS_VISIBLE,CRect(0,0,100,40),this,123)即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)