gpt4 book ai didi

c++ - MFC 编辑控件消息句柄访问文档对象

转载 作者:行者123 更新时间:2023-11-30 04:50:07 25 4
gpt4 key购买 nike

我创建了一个新类扩展 CEdit 来覆盖一些消息句柄。

我的最终目标是当编辑控件获得焦点时,一些工具栏按钮变得可用。

我在文档中创建了一个 bool 变量。然后将 pCmdUI->enable() 设置为此 bool 值。 onfocus 在新的编辑控件类中被覆盖。我无法从 onfocus 消息句柄更新此 bool vairbale。

void CMFCDoc::OnUpdateTextColor(CCmdUI *pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable(shape_onfocus_);
}

class CMFCDoc : public COleServerDoc
{
...
bool shape_onfocus_;
}

//edit control
#include <afxwin.h>
class CEditControl :
public CEdit
{
public:
CEditControl();
~CEditControl();
DECLARE_MESSAGE_MAP()
afx_msg void OnEnSetfocus();
};


void CEditControl::OnEnSetfocus()
{
//----- I want to update shape_onfocus_ here. -----

this->SetWindowTextA(_T("Hello world"));
}

最佳答案

假设您的 CEditControl 实例是某种 CView 的子实例,您可以这样做:

void CEditControl::OnEnSetfocus()
{
CView *view = static_cast<CView *>(GetParent());
CMFCDoc *doc = static_cast<CMFCDoc *>(view->GetDocument());
doc->shape_onfocus_ = true;
...
}

关于c++ - MFC 编辑控件消息句柄访问文档对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55109713/

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