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的使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)