MFC开发实用教程2:发送自定义消息

消息映射是MFC的机制,分为框架本身消息(譬如WM_LBUTTONDOWN等)和用户自定义消息;由于处理框架本身消息比较简单。本文只针对用户自定义消息进行讲解。

本文实现的效果图如下:实现的功能为左边的CListCtrl控件在被拖拽结束后通过发送消息给右边的CListCtrl控件以拖拽的文本值插入一行


处理步骤:

1、添加自定义消息宏

#define UM_DRAG_TYPE WM_USER + 0x0001

2、消息发送方声明一个HWND成员变量用于保存消息接收方的句柄

HWND m_hAccpetHwnd;

3、消息发送方的某一个动作开启发送消息

::SendMessage(m_hAccpetHwndUM_DRAG_TYPE, (WPARAM)m_nSelItem, (LPARAM)str.AllocSysString());

4、消息接收方头文件添加接收消息处理函数声明

afx_msg HRESULT OnUmDragType(WPARAM wParamLPARAM lParam);

5、消息接收方在消息宏中添加对该自定义消息的路由

BEGIN_MESSAGE_MAP(CContextListCtrlCListCtrl)

ON_MESSAGE(UM_DRAG_TYPE, &CContextListCtrl::OnUmDragType)

END_MESSAGE_MAP()

6、对自定义消息函数进行处理

HRESULT CContextListCtrl::OnUmDragType(WPARAM wParam, LPARAM lParam)
{
    int index = (int)wParam;
    BSTR bStr = (BSTR)lParam;
    CString str = bStr;
    SysFreeString(bStr);
    int count = GetItemCount();
    std::vector<CString> &vecType = ((CUserMessageDemoDlg *)GetParent())->GetDargType();
    InsertItem(count, vecType[index]);
    SetItemText(count, 1, str);
 
    return 0;
}

值得注意的是:本文同时给出了对自定义消息发送字符串的处理,处理代码为:

1、发送方:

str.AllocSysString(); //作为WPARAM或者LPARAM参数

2、接收方:

BSTR bStr = (BSTR)lParam; //转为BSTR类型

CString str = bStr; //BSTR类型转CString

SysFreeString(bStr); //调用SysFreeString函数释放


源码下载链接:http://download.csdn.net/detail/d704791892/7138487

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值