MFC获取当前对话框指针

MFC获取当前对话框指针,第1张

CWnd GetDlgItem ( int nID ) const; 

void CWnd::GetDlgItem( int nID, HWND phWnd ) const;

ialog

对话框内部那就是

(CWnd)this ;

如果定义的

CXXXDialog dlg ;

就是 (CWnd)&dlg ;

如果是对话框的控件如IDC_EDIT1

CWnd pEdit = GetDlgItem( IDC_EDIT1 ) ;

CWinApp

CWinApp为应用程序类

MFC 中的主应用程序类封装用于 Windows *** 作系统的应用程序的初始化、运行和终止。基于框架生成的应用程序必须有且仅有一个从 CWinApp 派生的类的对象。在创建窗口之前先构造该对象。

CWinApp 是从 CWinThread 派生的,后者表示可能具有一个或多个线程的应用程序的主执行线程。在最新版本的 MFC 中,InitInstance、Run、ExitInstance 和 OnIdle 成员函数实际位于 CWinThread 类中。此处将这些函数作为 CWinApp 成员来探讨,因为探讨所关心的是对象作为应用程序对象而不是主线程的角色。

通过调用pwnd->create(null,

null,

(ws_child

|

ws_visible),

>crect(0,0,0,0),

this,

nid,

pcontext));

来建立一个窗口,在这个调用中

1)如果你的窗口是一个控件(子窗口),系统将会用这个id发送给它的父窗口

2)每个窗口能有许多的子窗口,典型的例子是对话框,里面每个控件都不同的id与其它的控

件相互区分开,如果你想加入一个子窗口,你几乎可以使用大部分的id,注意工具条,状态条

等也都是子窗口我通常为每个子视建立一个idr_whatever,加在idr_mainframe后面

我的建立代码是这样的:

if

(mlinesetview

==

null)

{

ccreatecontext

context;

contextm_pnewviewclass

=

runtime_class

(clinesetview);

contextm_pcurrentdoc

=

mactiveview->getdocument

();

contextm_pcurrentframe

=

this;

mlinesetview

=

static_downcast

(clinesetview,

createview

(&context,

idr_lineset_view));

1、在对话框类中加入成员变量CRect

m_rect;用于保存对话框大小变化前的大小;

2、在对话框的OnInitDialog()函数中获取对话框创建时的大小:

GetClientRect(&m_rect);

3、在WM_SIZE的响应函数OnSize()中加入以下代码:

CWnd

pWnd;

pWnd

=

GetDlgItem(IDC_LIST);

//获取控件句柄

if(pWnd)//判断是否为空,因为对话框创建时会调用此函数,而当时控件还未创建

{

CRect

rect;

//获取控件变化前大小

pWnd->GetWindowRect(&rect);

ScreenToClient(&rect);//将控件大小转换为在对话框中的区域坐标

//

cx/m_rectWidth()为对话框在横向的变化比例

rectleft=rectleftcx/m_rectWidth();/////调整控件大小

rectright=rectrightcx/m_rectWidth();

recttop=recttopcy/m_rectHeight();

rectbottom=rectbottomcy/m_rectHeight();

pWnd->MoveWindow(rect);//设置控件大小

}

GetClientRect(&m_rect);//将变化后的对话框大小设为旧大小

以上就是关于MFC获取当前对话框指针全部的内容,包括:MFC获取当前对话框指针、一个MFC基于对话框的程序,在程序中自己定义了一个派生于CWnd类的窗口类,为什么不能响应mousewheel消息、CWnd::Create的使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/9830826.html

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

发表评论

登录后才能评论

评论列表(0条)

保存