java 自定义消息_Vc中自定义消息及其触发使用

本文详细介绍了如何在VC++环境下,通过VS2008创建一个对话框应用,并添加自定义消息。步骤包括:1) 在头文件中定义消息,如WM_USER+100;2) 添加消息响应函数并遵循特定格式;3) 在消息映射块中加入消息响应宏;4) 实现消息响应函数,如显示消息框;5) 为按钮添加单击事件,触发自定义消息。通过这种方式,可以实现自定义消息的发送和处理。
摘要由CSDN通过智能技术生成

Vc中自定义消息及其触发使用

如何在VC++中加入自定义消息,我的做法:

这里我以一个对话框为例子,环境:VS 2008,新建一个工程,选择对话框:以编译器给出的对话框为蓝本,自己新建一个按钮如图:

clip_image002.jpg

把名字改成如图的,其他比如ID什么的都不改了,默认。

1首先在ownermessageDlg.h中定义消息:例如

define WM_MYMESSAGE (WM_USER+100)

2在.H文件中,加入消息响应函数,如:

afx_msg LRESULT OnMyMessage(WPARAM w,LPARAM l);

该函数有规定的格式:

afx_msg LRESULT Function_Name(WPARAM w,LPARAM l);

3在ownermessageDlg.cpp中加入消息响应宏

在响应该消息的类中,在消息响应块中,

BEGIN_MESSAGE_MAP(CownermessageDlg, CDialog)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

加入以下语句:

ON_MESSAGE(WM_MYMESSAGE, OnMyMessage)

成为如下样式:

BEGIN_MESSAGE_MAP(CownermessageDlg, CDialog)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_MESSAGE(WM_MYMESSAGE,OnMyMessage)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

4在.CPP文件中,编辑消息响应函数,如下:

LRESULT CownermessageDlg::OnMyMessage(WPARAM wParam, LPARAM lParam) {

MessageBox(_T("My Message!"));

return 1;

}

5.在对话框中为新增的按钮添加单击响应,ownermessageDlg.cpp中的MESSAGE_MAP变成:

BEGIN_MESSAGE_MAP(CownermessageDlg, CDialog)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_MESSAGE(WM_MYMESSAGE,OnMyMessage)

//}}AFX_MSG_MAP

ON_BN_CLICKED(IDC_BUTTON1, &CownermessageDlg::OnBnClickedButton1)

END_MESSAGE_MAP()

voidCownermessageDlg::OnBnClickedButton1()

{

// TODO: Add your control notification handler code here

//::PostMessage(

PostMessage(WM_MYMESSAGE, IDC_BUTTON1);

}

PostMessage(……)这个就是响应WM_MYMESSAGE消息的,其实这样写也是可以的:

PostMessage(WM_MYMESSAGE);

我们来看看这个消息的函数原型:

在CWnd::PostMessage中定义

BOOLPostMessage(

UINTmessage,

WPARAMwParam= 0,

LPARAMlParam= 0

);

Parameters:

message

Specifies the message to be posted.

wParam

Specifies additional message information. The content of this parameter depends on the message being posted.

lParam

Specifies additional message information. The content of this parameter depends on the message being posted.

Return Value

Nonzero if the message is posted; otherwise 0.

所以一般的当点击时,消息触发就会发送一个WM_MYMESSAGE消息,故而调用CownermessageDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)这个函数。

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2008-01-22 10:57

浏览 564

评论

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值