MDI中发送自定义消息和命令消息

1 在cpp里面添加自定义消息定义 

#define WM_ACQUIRE_DATA_MSG (WM_USER + 101)

 2 在头文件中添加消息处理函数

afx_msg LRESULT OnAcquireData(WPARAM wparam, LPARAM lparam);

3  在cpp里面添加消息映射

ON_MESSAGE(WM_ACQUIRE_DATA_MSG, &CNanoViewView::OnAcquireData)

4  实现消息处理函数,在这里调用了菜单命令处理函数

LRESULT CNanoViewView::OnAcquireData(WPARAM wparam, LPARAM lparam)
{
	OnVideoAcquiredata();
	return NULL;
}

5 在MDI中获得CView指针 

CView* GetView()
{
	CWinApp* winApp = AfxGetApp();
	if (winApp == NULL)
	{
		return NULL;
	}
	CDocManager* pDocManager = winApp->m_pDocManager;
	if (pDocManager == NULL)
	{
		return NULL;
	}
	POSITION posDocTemp = pDocManager->GetFirstDocTemplatePosition();
	while (posDocTemp)
	{
		CDocTemplate* pDocTemplate = pDocManager->GetNextDocTemplate(posDocTemp);
		if (pDocTemplate == NULL) continue;
		POSITION posDoc = pDocTemplate->GetFirstDocPosition();
		CDocument* pDoc = pDocTemplate->GetNextDoc(posDoc);
		if (pDoc == NULL) continue;
		POSITION posView = pDoc->GetFirstViewPosition();
		if (posView==NULL)
		{
			continue;
		}
		return pDoc->GetNextView(posView);
	}
	return NULL;
}

6 下面包括两种消息处理,一种是通过自定义消息调用菜单命令, 一种是直接发送菜单命令消息(推荐,省事不少)

void CNanoViewView::OnToolEfem()
{
	
	CView* pView = GetView();
	//发送自定义消息
	//::SendMessage(pView->m_hWnd, WM_ACQUIRE_DATA_MSG, NULL, NULL);
    //直接发送菜单命令消息
	::SendMessage(pView->m_hWnd,WM_COMMAND, ID_VIDEO_ACQUIREDATA, NULL);
	
	typedef void (WINAPI* TESTDLL)();
	HINSTANCE hmod;
	hmod = ::LoadLibrary(_T("ZASCtrlLib.dll"));
	if (hmod == NULL) { AfxMessageBox(_T("Fail")); }
	TESTDLL lpproc;
	lpproc = (TESTDLL)GetProcAddress(hmod, "ShowEFEM");
	if (lpproc != (TESTDLL)NULL)
		(*lpproc)();
	FreeLibrary(hmod);
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值