vc 子对话框的位置问题 10
是这样子的,我拿vc写了个主对话框,有个按钮,按钮设置了个消息响应函数,会弹出一个子对话框。但是每次子对话框的位置都在主对话框的中间,想请问一下有什么函数能调整子对话框的...
是这样子的,我拿vc写了个主对话框,有个按钮,按钮设置了个消息响应函数,会弹出一个子对话框。但是每次子对话框的位置都在主对话框的中间,想请问一下有什么函数能调整子对话框的位置?谢谢
展开
1个回答
展开全部
在子对话框中使用SetWindowPos
SetWindowPos(const CWnd* pWndInsertAfter, int x, int y, int cx, int cy,UINT nFlags);
x指定了窗口左边的新位置。
y指定了窗口顶部的新位置。
cx指定了窗口的新宽度。
cy指定了窗口的新高度。
或者使用
MoveWindow( int x, int y, int nWidth, int nHeight, BOOL bRepaint = TRUE );
MoveWindow只能设置窗口的大小和位置;SetWindowPos拥有MoveWindow的全部功能之外,还可以设置窗口的层叠关系(如,把指定的窗口放在所有窗口的最上层--always on top就可以用这个函数、或者把指定的窗口放在另一个窗口的下层,等等)。 没有什么优缺点可言,只是功能上的大小有别。你完全可以不用MoveWindow,而只用SetWindowPos;但是,在只要设置窗口大小或位置的情况下,你也完全可以使用MoveWindow.
例子
CWnd *pWnd;
pWnd = GetDlgItem( IDC_EDIT1 ); //获取控件指针,IDC_EDIT1为控件ID号
pWnd->MoveWindow( CRect(0,0,100,100) ); //在窗口左上角显示一个宽100、高100的编辑控件
CWnd *pWnd;
pWnd = GetDlgItem( IDC_BUTTON1 ); //获取控件指针,IDC_BUTTON1为控件ID号
pWnd->SetWindowPos( NULL,50,80,0,0,SWP_NOZORDER | SWP_NOSIZE ); //把按钮移到窗口的(50,80)处
SetWindowPos(const CWnd* pWndInsertAfter, int x, int y, int cx, int cy,UINT nFlags);
x指定了窗口左边的新位置。
y指定了窗口顶部的新位置。
cx指定了窗口的新宽度。
cy指定了窗口的新高度。
或者使用
MoveWindow( int x, int y, int nWidth, int nHeight, BOOL bRepaint = TRUE );
MoveWindow只能设置窗口的大小和位置;SetWindowPos拥有MoveWindow的全部功能之外,还可以设置窗口的层叠关系(如,把指定的窗口放在所有窗口的最上层--always on top就可以用这个函数、或者把指定的窗口放在另一个窗口的下层,等等)。 没有什么优缺点可言,只是功能上的大小有别。你完全可以不用MoveWindow,而只用SetWindowPos;但是,在只要设置窗口大小或位置的情况下,你也完全可以使用MoveWindow.
例子
CWnd *pWnd;
pWnd = GetDlgItem( IDC_EDIT1 ); //获取控件指针,IDC_EDIT1为控件ID号
pWnd->MoveWindow( CRect(0,0,100,100) ); //在窗口左上角显示一个宽100、高100的编辑控件
CWnd *pWnd;
pWnd = GetDlgItem( IDC_BUTTON1 ); //获取控件指针,IDC_BUTTON1为控件ID号
pWnd->SetWindowPos( NULL,50,80,0,0,SWP_NOZORDER | SWP_NOSIZE ); //把按钮移到窗口的(50,80)处
追问
问题是,我是要知道一个对话框的位置(子对话框),我怎么获取子对话框指针啊?
还有一个小问题,就是我是用domodal 弹出子对话框的,我想设计成点多一下子对话框就可以没了那种效果,应该怎么办
追答
在子对话框类里的初始化函数oninitialdlg()中直接使用MoveWindow( )
后面那句话 点多一下子对话框就可以没了那种效果 不知道什么意思
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询