MFC AfxGetApp是如何获得全局对象的指针的

MFC AfxGetApp是如何获得全局对象的指针的,第1张

基类CWinApp的构造里有进行设置,构造theApp全局对象时会先调用基类构造,把指针保存下来

pModuleState->m_pCurrentWinApp = this;

然后AfxGetApp可以获得这个结构,从里面拿出m_pCurrentWinApp

#define afxCurrentWinApp AfxGetModuleState()->m_pCurrentWinApp

_AFXWIN_INLINE CWinApp AFXAPI AfxGetApp()

{ return afxCurrentWinApp; }

在你的对话类中响应wm_size消息,系统将自动生成一个onsize()函数,在该函数里面添加下面代码就可以得到:

void

cdatafileimportdlg::onsize(uint

ntype,

int

cx,

int

cy)

{

cdialog::onsize(ntype,

cx,

cy);

crect

rect;

getclientrect(&rect);

}

rect

中就有你想要宽度,大小等信息。

我觉得应该是这样的:你的对话框一直存在,但是状态可能是隐藏的,那么在创建这个对话框的时候,你会保存这个对话框的指针。至于保存在哪里,是由你决定的。然后要在其他类中获取到这个指针的话,那么你就可以将这个类和保存对话框指针的类或者地方建立一个关系,然后就可以获取到了。

GetParent得到的是CWnd,是父窗口的指针;

GetParent()->GetSafeHWnd(),可以得到父窗口的句柄

如果只是调用窗口的类似函数,CWnd ch = GetParent()就可以了,如果是要调用CHomeView里面的接口,CHomeView ch = (CHomeView ) GetParent();

getparent得到的是cwnd,是父窗口的指针;

getparent()->getsafehwnd(),可以得到父窗口的句柄

如果只是调用窗口的类似函数,cwnd

ch

=

getparent()就可以了,如果是要调用chomeview里面的接口,chomeview

ch

=

(chomeview

)

getparent();

获取Ribbon控件指针MFC100

COLORREF CRibbonAppDoc::GetColor(void)

{

CMFCRibbonBar pRibbon = ((CMDIFrameWndEx) AfxGetMainWnd())->GetRibbonBar();

ASSERT_VALID(pRibbon);

CMFCRibbonColorButton pColor = DYNAMIC_DOWNCAST(

CMFCRibbonColorButton, pRibbon->FindByID(ID_FONT_COLOR));

// Get the selected color

return pColor->GetColor();

}

以上就是关于MFC AfxGetApp是如何获得全局对象的指针的全部的内容,包括:MFC AfxGetApp是如何获得全局对象的指针的、MFC中如何获取Dialog的指针、mfc如何在其他类中获取和传递指定对话框的指针或句柄等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9308849.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存