子窗口中设置控件的位置

CWnd *pWnd;
pWnd = GetDlgItem( IDC_EDIT1 );    //获取控件指针,IDC_EDIT1为控件ID号
pWnd-> SetWindowPos ( NULL,X,Y,CX,CY,TRUE);    //在窗口左上角显示一个宽100、高100的编辑控件 
BOOL SetWindowPos ( 
const CWnd* pWndInsertAfter, 
int x, 
int y, 
int cx, 
int cy, 
UINT nFlags ); 

 对于xy顶点坐标,对于顶层的CWnd对象,xy参数是相对于屏幕的左上角的。对于子对象,它们是相对于父窗口客户区的左上角的。  也就是说这两个值都是相对值。

x、y控件位置;cx、cy控件宽度和高度;

子窗口的所有坐标都是客户坐标(相对于父窗口客户区的左上角)。

有时SetWindowPos函数会无效,比如我在使用SetWindowPlacement将窗口设置为全屏后,再使用SetWindowPos根本没有作用,这时使用this->GetDlgItem(IDC_PROGRESS)->MoveWindow(rect.left,rect.bottom-50,rect.Width(),30,true);却能够实现,所以大家在SetWindowPos无效时,不要自认为的以为MoveWindow也会无效,试一下或许有用哦。

////////////////////////////////////////////////以下代码实现了子窗口中控件的定位////////////////////////////////////

CRect rect(45,117,195,141);

CWnd *pwnd=GetDlgItem(IDC_DATETIMEPICKER3);

pwnd->SetWindowPos(NULL,rect.left,rect.top,rect.Width(),rect.Height(),SWP_SHOWWINDOW); 

{rect.top=134;rect.bottom=149;rect.left=378;rect.right=398;}

GetDlgItem(IDC_STATICSCORE)->SetWindowPos(NULL,rect.left,rect.top,rect.Width(),rect.Height(),SWP_SHOWWINDOW);

你可能感兴趣的:(null)