MFC单文档如何给activex控件添加消息

MFC单文档如何给activex控件添加消息,第1张

只能手动添加。

假设控件类为CMyControl、视图类为CMyView。

1)MyView.h中:

class CMyView

{

protected:

CMyControl m_myControl //定义控件变量

public:

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct)//重写View的OnCreate()函数

afx_msg void OnMyControlClick()// 控件的消息响应函数

DECLARE_EVENTSINK_MAP() //声明对控件消息映射的支持

}

2) MyView.cpp中:

#define IDC_MYCONTROL 100

//控件的ID,只要为正整数即可

BEGIN_EVENTSINK_MAP(CMyView, CView)

ON_EVENT(CMyView, IDC_MYCONTROL , -600 /* Click */, OnMyControlClick, VTS_NONE) //控件消息映射

END_EVENTSINK_MAP()

int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

if (CView::OnCreate(lpCreateStruct) == -1)

return -1

//创建控件

m_myControl.Create(NULL, WS_VISIBLE, CRect(0,0,100,100), this, IDC_MYCONTROL) // CRect为控件大小,根据需要设定。

return 0

}

//控件消息响应

void CMyView::OnMyControlClick()

{

AfxMessageBox("You clicked my control.")

}

有个偷懒的办法:

你把OnCreate函数写好后,其他的消息映射函数全都可以通过对话框来得到。所以你可以把控件放到一个对话框中,然后生成控件的消息映射函数,然后拷贝到View中。

在菜单File-->Save 命令的响应函数OnFileSave里,可以在CView 的派生类CXXView类,CDocument的派生类CXXDocument类,主窗体类CMainFrame类,以及CWinApp的派生类CXXApp里//id_file_save

Save 命令的响应函数定义一个的CFileDialog 对象

大概思路如下:

void CMFCView::OnFileSave()

{

CFileDialog dlg(FALSE)//文件对话框, TRUE=Open,FALSE=Save

int nID=dlg.DoModal () //对话框d出

if(nID!==IDOK)return //OK表示用户打算保存,其他不保存

CString filePath=dlg.GetPathName ()//文件全名

CFile file(filepath,CFile::typeBinary|CFile::modeWrite|CFile::modeCreate)//

二进制,写,创建,方式,打开文件。

if(!file)return//没有打开什么也不做!

struct Info{

int x,y

char[100]

}buffer[100]//数据具体自己实现,或者已经实现了!

//---------获取数据

// GetInfo(buffer,100)//

file.Write(buffer,sizeof(buffer))//数据写入文件。

file.Close() //关闭文件。

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11964376.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存