关于VC中自定义消息

来源:百度知道 编辑:UC知道 时间:2024/09/21 01:44:54
假设一个基于对话框的程序,实现主对话框和从对话框用自定义消息进行通信。我自己做的自定义消息一直不成功。

举个简单的例子就是从对话框上有一个按钮,点击按钮会发送这个自定义消息,主对话框要捕获这个消息,并在其文本框里显示“响应成功!”就可以了,希望那位高手能帮我写出这段小程序的源码。
不成功的现象是编译没问题,但是从对话框发送的消息主对话框并没有响应,或者说从对话框根本就没发送成功,从对话框确实是模态对话框

主窗口
重载PreTranslateMessage函数

BOOL CTunnelsDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == BN_CLICKED)
{
m_strEdit = "响应成功!";
this->UpdateData(FALSE);
}

return CDialog::PreTranslateMessage(pMsg);
}

从窗口
.h文件中加入
protected:
afx_msg void OnButton(UINT nID);

.cpp文件中加入
BEGIN_MESSAGE_MAP(CVNSLView, CView)
//{{AFX_MSG_MAP(CVNSLView)
ON_WM_DESTROY()
ON_WM_CREATE()
//}}AFX_MSG_MAP
ON_COMMAND(IDC_BUTTON1, OnButton)
END_MESSAGE_MAP()

// IDC_BUTTON1就是从窗口上你要单击的那个按钮的ID

void CVNSLView::OnButton(UINT nID)
{
// 向父窗口发送按钮单击消息
::PostMessage( this->GetParent()->GetSafeHwnd(), BN_CLICKED, nID, 0 );
}

不成功的现象是什么? 如果从对话框是模式的,确实是不可以的

另外,你如果要发送到别一个对话框,要用::SendMessage()而不是SendMessage(),不知道你有没有注意到
----------------------------------------