MFC_改变窗口大小,随着鼠标的拖动改变
今天在做一個視頻播放器的時候,需要用到不同電腦之間分辨率的不同,讓其根據當前電腦的分辨率顯示其大小
首先假設這個對話框類為CMyDialog。
這篇文章轉載了:https://blog.csdn.net/renyongwang1988/article/details/16840735
第一步:在CMyDialog中添加一個成員變量CRect m_rect;
第二步:在CmyDialog的初始化函數OnInitDialog()中添加GetClientRect(&m_rect);
第三步:自定義一個函數,根據控件ID進行處理
void CMyDialog::ChangeSize(UINT nID,int cx,int cy)
{
CWnd &pWnd;
pWnd =GetDlgItem(nID); //獲取控件句柄
if(pWnd) //判斷是否為空,因為對話框創建時會調用此函數,而當時控件還未創建
{
CRect rect; //獲取控件變化前大小
pWnd->GetWindowRect(&rect);
ScreenToClient(&rect); //將控件大小轉換為在對話框中的區域坐標
rect.left = rect.left * cX/ m_rect.Width(); // 調整控件大小
rect.right = rect.right * cX / m_rect.Width();
rect.top = rect.top * cY/ m_rect.Heigth(); // 調整控件大小
rect.bottom = rect.bottom * cY / m_rect.Heigth();
pWnd->MoveWindow(rect);
}
}
第四步:調用CmyDialog的WM_SIZE消息,響應其函數:
voidCMyDialog::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if(NType != SIZE_MINIMIZED)
{
ChangeSize(IDC_BUTTON1, cx, cy);
ChangeSize(IDC_BUTTON2, cx, cy);
ChangeSize(IDC_BUTTON3, cx, cy);
ChangeSize(IDC_BUTTON4, cx, cy); //其中這些IDC是對話框上的控件的id
GetClientRect(&m_rect); // 將變化后的對話框大小設為舊大小,否則無法還原控件原始位置
}
}
總結
以上是生活随笔為你收集整理的MFC_改变窗口大小,随着鼠标的拖动改变的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NetSpot Pro一款非常强大的可视
- 下一篇: 游戏角色