对于单个控件我可以实现,但就是面对界面上好几个控件,就有点抓虾了
比如,文本框需要放大而topleft不动;按钮之类的只需要改变位置,同时还要考虑按钮和文本框的间距请问各位高手有什么好的办法没
比如,文本框需要放大而topleft不动;按钮之类的只需要改变位置,同时还要考虑按钮和文本框的间距请问各位高手有什么好的办法没
解决方案 »
- vs2010添加ATL类的时候为什么分ATL 简单对象、ATL控件、ATLXXX
- 问一个ModifyStyleEx的用法
- 贴段6句的代码,大家看看对不
- 一个难题,如何根据句柄获取窗体的额外字节cbWndExtra???
- 画正余玄函数问题很经典的???
- 问一个关于从USB设备中读取信息的源代码USBPort的问题
- 请教关于控件焦点问题
- 请教一段代码中的几个问题?
- 请问:我用socket原始调用进行sock编程时,为什么每次调用socket()函数返回的总是-1?
- 怎么用VC++6.0调用Excel
- 单文档工具条问题?
- 现在需要做个工具,工具可对 Cable modem通过网口写 MAC地址,请教大家
各个控件根据情况重新设置大小和位置
例如: CRect rect;
GetWindowRect(&rect);
int wd = rect.Width();
int ht = rect.Height(); //时钟位置
CWnd *pStaticTime = GetDlgItem(IDC_STATIC_TIME);//只有一个顶层子窗口
if(pStaticTime != NULL)
{
pStaticTime->ScreenToClient(&rect);
pStaticTime->SetWindowPos(NULL, 0, 0, 148,50,//200, 60,
SWP_NOZORDER | SWP_NOACTIVATE);
} //log list pos
CWnd *pLoglist = GetDlgItem(IDC_LIST_LOG);
if(pLoglist != NULL)
{
pLoglist->ScreenToClient(&rect);
pLoglist->SetWindowPos(NULL,0,400,148,ht-406,
SWP_NOZORDER | SWP_NOACTIVATE);
}
//tab控件位置
CWnd *pTab = GetDlgItem(IDC_TAB_ROOM_GROUP);//只有一个顶层子窗口
if(pTab != NULL)
{
pTab->ScreenToClient(&rect);
pTab->SetWindowPos(NULL, 150, 0, wd-150, 22,//高22
SWP_NOZORDER | SWP_NOACTIVATE);
}
//房间列表位置
CWnd *pRoomList = GetDlgItem(IDC_LIST_ROOM);
if(pRoomList != NULL)
{
pRoomList->ScreenToClient(&rect);
pRoomList->SetWindowPos(NULL, 150, 22, wd-150, ht-280,
SWP_NOZORDER | SWP_NOACTIVATE);
} //三个按扭
CWnd *pFilter = GetDlgItem(IDC_BT_FILTER);
if(pFilter != NULL)
{
pFilter->ScreenToClient(&rect);
pFilter->SetWindowPos(NULL, 210, ht-255 , 75, 22,
SWP_NOZORDER | SWP_NOACTIVATE);
}
CWnd *pIconMode = GetDlgItem(IDC_BT_ICONMODE);
if(pIconMode != NULL)
{
pIconMode->ScreenToClient(&rect);
pIconMode->SetWindowPos(NULL, 310, ht-255 , 75, 22,
SWP_NOZORDER | SWP_NOACTIVATE);
}
CWnd *pRefresh = GetDlgItem(IDC_BT_REFRESH);
if(pRefresh != NULL)
{
pRefresh->ScreenToClient(&rect);
pRefresh->SetWindowPos(NULL, 410, ht-255 , 75, 22,
SWP_NOZORDER | SWP_NOACTIVATE);
} CWnd *pAutoRefresh = GetDlgItem(IDC_CHECK_AUTOREFRESH);
if(pAutoRefresh != NULL)
{
pAutoRefresh->ScreenToClient(&rect);
pAutoRefresh->SetWindowPos(NULL, 510, ht-255 , 75, 22,
SWP_NOZORDER | SWP_NOACTIVATE);
}
//消费列表
CWnd *pCusumeList = GetDlgItem(IDC_LIST_CUSUME);
if(pCusumeList != NULL)
{
pCusumeList->ScreenToClient(&rect);
pCusumeList->SetWindowPos(NULL, 150, ht-230, wd - 150, 228,
SWP_NOZORDER | SWP_NOACTIVATE);
}
wd-150, ht-280
void CFirstPage::OnSize(UINT nType, int cx, int cy)
{
CXTPPropertyPage::OnSize(nType, cx, cy);
UPDATE_EASYSIZE;
// TODO: 在此处添加消息处理程序代码
}加一句UPDATE_EASYSIZE;
并把 要调整的控件 添加映射BEGIN_EASYSIZE_MAP(CFirstPage)
EASYSIZE(ID_BUTTON1,ES_BORDER,ES_BORDER,ES_BORDER,ES_BORDER,0)
EASYSIZE(IDC_LIST1,ES_BORDER,ES_BORDER,ES_BORDER,ES_BORDER,0)
END_EASYSIZE_MAP就万事OK了
http://blog.csdn.net/xianglitian/archive/2007/08/02/1722448.aspx