解决方案 »
- ===请教通过SetSockOpt设置SOCKET======
- 跪求解决方法!socks5代理服务器域名问题?
- 一个Socket执行shudown后为什么对他delete会出错?
- 很简单很简单的问题!在线等!
- 一个错误提示,不知道什么解决,请指点
- 求助:圆点识别方案
- 新手求教各位
- 我在win2000server下用VC6.0写的一个 ADO调用远程数据库程序在Prefession上不能运行为什么?
- 关于D3DxMatrixRotationAxis用向量表示轴的问题
- 如何用<a href="login.asp?dd=denglu">登录</a>同时把Form内容传给Login.asp?
- 关于operation valid only when the port is open
- 核心编程有段话没看懂,关于DLL的
你这个SetButton是谁的函数呢?
应该是CWatch发送给主窗口,因为CWatch不是个窗口类吧,不具备消息循环,只能向外发送消息,所以需要主对话框响应
{m_pWnd = pWnd;}
你的Create是谁调用的,假设是窗口A(可能就是主窗口),这里就是把主窗口的窗口指针传给了m_pWnd,
::SendMessage(m_pWnd->GetSafeHwnd(),WM_SENDDATA,mID,0);
第一个参数就是你消息要发送给的窗口,即你在Create中传进来的窗口A
CWatch也是一个窗口类,在CWatch类里发送消息,消息的指针是指向CWatch类的,所以,我觉得消息处理也应该在CWatch类里完成,但是程序对该消息的响应是写在主对话框类,所以就不知道是怎么回事了
{m_pWnd = pWnd;}
从这可以看出,m_pWnd指向的是主窗口
============
函数SendButton()
{
::SendMessage(m_pWnd->GetSafeHwnd(),WM_SENDDATA,mID,0);
}
从这行数可以看出,消息是发送给m_pWnd,即主窗口的,当然是主窗口响应了。这还有什么问题吗?真是搞不明白。
BOOL CWatch::Create(CWnd *pWnd, WORD nData1 , WORD nData12, WORD nData13)
{m_pWnd = pWnd;}
这个Create不是CWatch的窗口创建函数吗?所以pWnd不应该指向CWatch?为什么是指向主窗口呢
哎,就是纠结这个问题,没弄明白啊
我不是说了CWatch的Create是窗口创建函数,是虚函数,创建的方法是:给CWatch类重写虚函数Create
好,那么CWnd的虚的Create函数的参数有哪些? 是你的这个吗?
BOOL CWatch::Create(CWnd *pWnd, WORD nData1 , WORD nData12, WORD nData13)
我怎么不相信呢?CWnd类还会做这种函数?这必然是自己封装的吧。
virtual BOOL Create( LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);和你的这个所谓的Create函数没半毛钱关系