MFC自定义消息

5 篇文章 0 订阅

(1)在stdafx.h中,定义如下消息:

#define LOGINMSG  WM_USER+200

(2)比如你要将消息传到login界面,则在login.cpp中定义窗口句柄全局变量

HWND login_hwnd;

然后在login.cpp的初始化方法中给窗口句柄全赋值:

BOOL Login::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// TODO:  在此添加额外的初始化
	login_hwnd = m_hWnd;

	return TRUE;  // return TRUE unless you set the focus to a control
				  // 异常: OCX 属性页应返回 FALSE
}

(3)在你要发起消息的界面,比如clientSock.cpp中:

    导入句柄

extern HWND login_hwnd;

    若要发送消息:

::PostMessage(login_hwnd, LOGINMSG, 0, (LPARAM)recvData);//自定义消息,用于将内容传到对话框

(4)再回到login.cpp中,实现LOGINMSG消息收到后对应的处理函数:

BEGIN_MESSAGE_MAP(Login, CDialogEx)
	ON_BN_CLICKED(IDOK, &Login::OnBnClickedOk)
	ON_BN_CLICKED(IDCREGISTER, &Login::OnBnClickedCregister)
	ON_MESSAGE(LOGINMSG, loginFun)
END_MESSAGE_MAP()

如上,绑定loginFun方法,并在这段代码下实现loginFun函数:

// Login 消息处理程序
LRESULT Login::loginFun(WPARAM parm1, LPARAM parm2)
{
	char *recvData = (char*)parm2;

	LOGIN_RESULT loginMsg;
	memset(&loginMsg, 0, sizeof(LOGIN_RESULT));
	memcpy(&loginMsg, recvData, sizeof(loginMsg));//注意sizeof中要是转换的结构体大小
	//AfxMessageBox(loginMsg.result);

	CStudentDlg studlg(m_sock,this->userId);
	INT_PTR nResponse = studlg.DoModal();

	return 0;
}

(5)最后,记得在login.h类中添加loginFun的声明:

LRESULT Login::loginFun(WPARAM parm1, LPARAM parm2);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值