lols8皮城执法官天赋:VC怎么在日历控件上响应右键消息

来源:百度文库 编辑:高校问答 时间:2024/05/05 01:49:29
我写了个最简单的基于dialog程序,放了一个日历控件,在对话框上可以找到WM_RBUTTONDOWN,在在日历控件上找不到相关的消息,谁能告诉我怎么自定义消息吗?
不懂哦,能稍微详细点吗?如何让子窗体响应WM_CONTEXTMENU呢?
我今天用了下面的代码可以实现,但是感觉不爽,继续求好方法!
MSG msg; //定义消息名
while (GetMessage (&msg, this->m_hWnd, 0, 0))
{
if(msg.message==WM_RBUTTONDOWN)
{

CString tmp;
RECT tr;
//m_month.GetClientRect(&tr);
m_month.GetWindowRect(&tr);
if(msg.pt.x>tr.left&&msg.pt.x<tr.right&&msg.pt.y<tr.bottom&&msg.pt.y>tr.top)
{tmp.Format(_T("鼠标x=%d \n\r 鼠标y=%d"),msg.pt.x,msg.pt.y);
MessageBox(tmp);}
}

TranslateMessage (&msg) ; //翻译消息
DispatchMessage (&msg) ; //撤去消息
}

1)先用类向导定义一个从CMonthCalCtrl中派生的子类CNewMonth。
2)然后向对话框中画一个日历控件,先将其和一个变量捆绑成CMonthCalCtrl型。
3)修改该变量为CNewMonth的对象(改dlg的头文件)
4)利用类向导给CNewMonth的消息WM_RBUTTONDOWN定义函数弹出你的菜单就可以。

试一试这样:
用鼠标右键点击父窗口时父窗口会接受一个WM_CONTEXTMENU消息,子窗口不要处理这个消息,仅仅是把子窗口的句柄传给父窗口,然后你在WM_CONTEXTMENU消息中处理。