我有一个对话框,CFormView,它包含一些按钮和一个包含Tabcontrol,radiobuttons,文本输入字段等的面板。
所以,在我的面板上,CWnd,我创建了这样的输入字段:
pEdit = new CEdit();
pEdit->CreateEx(WS_EX_CLIENTEDGE, _T("EDIT"), NULL, WS_CHILD | WS_VISIBLE | WS_TABSTOP | nAttrMultiline | m_clRect, pclPanel, iID)
其中m_clRect是CRect,pclPanel是我的CWnd,而iID只是控制器ID。
我想在单击按钮时用CEdit
填充文本,但不知何故我无法获得具有焦点的控制器。
我的第一次尝试是致电GetFocus()
,将其投放到CEdit
并添加文字,但这只会更改我按钮上的文字。
第二次尝试是使用WM_SETFOCUS
检查ON_WM_SETFOCUS()
并保留前一个wnd并将其投射并添加文字,但这只会更改对话框中的文字。
第三次尝试将此移至我的CWnd,但据我所知,WM_SETFOCUS
永远不会被调用。
编辑:
在我的CWnd中尝试ON_WM_ACTIVATE
::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
。
但那也没有被召唤。
任何人都知道下一步该尝试什么?
答案 0 :(得分:0)
你刚刚回答了自己。正确的方法是:在处理
的函数上ON_COMMAND(...)
每次按键调用
pEdit->SetWindowText(_T("text"));.
GetFocus()
是错误的,因为它会返回按钮,就像你点击它一样,你刚刚完成将焦点放在它上面。您可以使用
CEdit* pEdit= ( CEdit*) GetDlgItem(ID_OF_EDIT);
其中ID_OF_EDIT
是您作为CreateEx
参数传递给iId
的值。