1.通过HWND获得CWnd指针
//获得当前窗口的句柄
HWND hWnd = GetSafeHwnd();
//通过HWND获得CWnd指针
CWnd *pWnd = CWnd::FromHandle(hWnd);
CString strText = _T("");
strText.Format("pWnd = 0x%X\nthis = 0x%X\n", pWnd, this);
AfxMessageBox(strText);
2.想要在::PreTranslateMessage(MSG* pMsg)这个函数中记录鼠标的操作,就会用到HWND到CWnd指针的转换,转换代码如下:
CWnd* hControlWnd = CWnd::FromHandle(pMsg->hwnd);
if(hControlWnd != NULL)
{
CString tempstr;
// 获取ID为hControlWnd->GetDlgCtrlID()按钮的文本内容
GetDlgItem(hControlWnd->GetDlgCtrlID())->GetWindowText(tempstr);
__SaveOperation(tempstr);//保存鼠标操作文本信息
}