gpt4 book ai didi

c++ - 获取 CWnd 内具有焦点的 Controller

转载 作者:行者123 更新时间:2023-11-30 17:01:44 26 4
gpt4 key购买 nike

我有一个对话框,CFormView,其中包含一些按钮和一个面板,其中包含 Tabcontrol、单选按钮、文本输入字段等。

因此,在我的面板 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 只是 Controller ID。

我想在单击按钮时用文本填充我的CEdit,但不知何故我无法获得具有焦点的 Controller 。

我的第一次尝试是调用 GetFocus(),将其转换为 CEdit 并添加文本,但这当然只是更改了按钮上的文本。

第二次尝试是使用 ON_WM_SETFOCUS() 检查 WM_SETFOCUS 并保留之前的 wnd 并将其转换并添加文本,但这只会更改我的对话框上的文本。

第三次尝试是将其移至我的 CWnd,但据我所知,WM_SETFOCUS 从未被调用。

编辑:

在我的 CWnd 内尝试使用 ::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized) 进行 ON_WM_ACTIVATE 。但这也没有被调用。

有人知道接下来要尝试什么吗?

最佳答案

你刚刚回答了自己。正确的做法是:在处理

的函数上
ON_COMMAND(...) 

每个按钮的调用

pEdit->SetWindowText(_T("text"));. 

GetFocus() 是错误的,因为它将返回按钮,因为当您单击它时,您刚刚完成将焦点放在它上面。您可以使用

进行编辑
CEdit* pEdit= ( CEdit*) GetDlgItem(ID_OF_EDIT); 

其中 ID_OF_EDIT 是您作为 iId 参数传递给 CreateEx 的值。

关于c++ - 获取 CWnd 内具有焦点的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36861445/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com