日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MFC_改变窗口大小,随着鼠标的拖动改变

發布時間:2023/12/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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_改变窗口大小,随着鼠标的拖动改变的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。