怎么使对话框中的控件跟随对话框的大小改变位置

zzxm2005 2005-07-28 06:51:00
同题
...全文
106 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
handsomerun 2005-07-28
什么叫确定控件的相对位置??

用Movewindow
或者SetWindowPos来确定啊,或者说是设置控件的位置啊

这个位置是相对于父窗口的,就是你说的那个对话框

CWnd::SetWindowPos
BOOL SetWindowPos( const CWnd* pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags );

Return Value

Nonzero if the function is successful; otherwise 0.

Parameters

pWndInsertAfter

Identifies the CWnd object that will precede this CWnd object in the Z-order. This parameter can be a pointer to a CWnd or a Pointer to one of the following values:

wndBottom Places the window at the bottom of the Z-order. If this CWnd is a topmost window, the window loses its topmost status; the system places the window at the bottom of all other windows.


wndTop Places the window at the top of the Z-order.


wndTopMost Places the window above all nontopmost windows. The window maintains its topmost position even when it is deactivated.


wndNoTopMost Repositions the window to the top of all nontopmost windows (that is, behind all topmost windows). This flag has no effect if the window is already a nontopmost window.
See the “Remarks” section for this function for rules about how this parameter is used.

x

Specifies the new position of the left side of the window.

y

Specifies the new position of the top of the window.

cx

Specifies the new width of the window.

cy

Specifies the new height of the window.

nFlags

Specifies sizing and positioning options. This parameter can be a combination of the following:

SWP_DRAWFRAME Draws a frame (defined when the window was created) around the window.


SWP_FRAMECHANGED Sends a WM_NCCALCSIZE message to the window, even if the window's size is not being changed. If this flag is not specified, WM_NCCALCSIZE is sent only when the window's size is being changed.


SWP_HIDEWINDOW Hides the window.


SWP_NOACTIVATE Does not activate the window. If this flag is not set, the window is activated and moved to the top of either the topmost or the nontopmost group (depending on the setting of the pWndInsertAfter parameter).


SWP_NOCOPYBITS Discards the entire contents of the client area. If this flag is not specified, the valid contents of the client area are saved and copied back into the client area after the window is sized or repositioned.


SWP_NOMOVE Retains current position (ignores the x and y parameters).


SWP_NOOWNERZORDER Does not change the owner window’s position in the Z-order.


SWP_NOREDRAW Does not redraw changes. If this flag is set, no repainting of any kind occurs. This applies to the client area, the nonclient area (including the title and scroll bars), and any part of the parent window uncovered as a result of the moved window. When this flag is set, the application must explicitly invalidate or redraw any parts of the window and parent window that must be redrawn.


SWP_NOREPOSITION Same as SWP_NOOWNERZORDER.


SWP_NOSENDCHANGING Prevents the window from receiving the WM_WINDOWPOSCHANGING message.


SWP_NOSIZE Retains current size (ignores the cx and cy parameters).


SWP_NOZORDER Retains current ordering (ignores pWndInsertAfter).


SWP_SHOWWINDOW Displays the window.

不知道楼主是不是这个意思,呵呵
回复
zzxm2005 2005-07-28
我的具体操作是:
在工具条的一个按钮中用create启动一个对话框,对话框的初始函数中根据CView的大小确定对话框的大小.
我的问题是,如果改变程序最大化,怎么确定对话框中控件的相对位置.
谢谢
回复
handsomerun 2005-07-28
设置你控件的大小用
Movewindow
或者SetWindowPos
记得在设置控件大小的时候
用GetSafeHwnd判断一下你的控件窗口是不是有效
不然第一次显示的时候会有麻烦
回复
handsomerun 2005-07-28
响应对话框的wm_size消息
他的响应函数是OnSize
然后再里面设置你控件的大小
回复
发帖
界面
创建于2007-09-28

1.5w+

社区成员

VC/MFC 界面
申请成为版主
帖子事件
创建了帖子
2005-07-28 06:51
社区公告
暂无公告