这是我从使用 PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam)给主框架发送消息来让主框架调用自身函数修改对话框上控件文本的小经验。因为出现的错误在网上找了很久没有找到解决办法,后来我自己解决了。所以很想在此分享下。
首先这个错误是这样的:主框架Cmainframe里有个响应消息函数,用来动态改变控件IDC_STATETEXT的文本的
LRESULT CMainFrame::SetStateText(WPARAM wParam, LPARAM lParam)
{
int ctrID=(int)wParam;
GetDlgItem(ctrID)->SetWindowText("why");//这里ctrID=IDC_STATETEXT
return 0;
}
在另外的类函数里调用PostMessage(AfxGetMainWnd()->GetSafeHwnd(),WM_STATE_TEXT,IDC_STATETEXT,0)给主框架发送消息来调用上面的函数修改控件文本
void CSRImageCtrl::GetImgFeatures(int et1,int dt2)
{
//给主框架传递消息更新状态
state_text="状态:正在转换为二值图像...";
//::AfxGetMainWnd()->SendMessage(WM_STATE_TEXT,IDC_STATETEXT,0);
PostMessage(AfxGetMainWnd()->GetSafeHwnd(),WM_STATE_TEXT,IDC_STATETEXT,0);
}
<