使用vs2010在MFC对话框的Button Click处理事件中获取外部窗口程序,无法设置外部对话框的Edit文本值
CWnd*testwnd=FindWindowW(NULL,_T("DlgTest"));if(!testwnd){testwnd->SetDlgItemText(100...
CWnd* testwnd=FindWindowW(NULL,_T("DlgTest"));
if(!testwnd){testwnd->SetDlgItemText(1000,_T("HelloWorld");MessageBox(_T("OK"));}执行后弹出了OK对话框,但外部对话框程序的Edit文本还是空,通过SPY++查看EIDT的控件ID号为000003E8,转换成十进制后的确为1000 展开
if(!testwnd){testwnd->SetDlgItemText(1000,_T("HelloWorld");MessageBox(_T("OK"));}执行后弹出了OK对话框,但外部对话框程序的Edit文本还是空,通过SPY++查看EIDT的控件ID号为000003E8,转换成十进制后的确为1000 展开
2011-03-30
展开全部
你再用SPY++察看一下其实是有值,只是没有显示
你可以换一个方法,获取这个控件的句柄给他发送一个WM_PASTE消息,这样实现起来比较简单~
你可以换一个方法,获取这个控件的句柄给他发送一个WM_PASTE消息,这样实现起来比较简单~
追问
谢谢!我使用::SendMessage(testwnd->GetDlgItem(1000)->m_hWnd,WM_SETTEXT,0,(LPARAM)"HelloWorld"));可以给编辑框赋值的功能,只是不明白SetDlgItemText的本质也是发送一个WM_SETTEXT消息,为什么发送消息可以实现,而SetDlgItemText赋值后不能显示?
追答
MSDN上有一句话:To set the text of a control in another process, send the WM_SETTEXT message directly instead of calling SetDlgItemText
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询