在編寫一些軟件時,我們會比較偏向于比較簡潔、清新的用戶界面,同時為了避免其它程序或者桌面等影響使用者的注意力等,我們通常習慣將軟件界面全屏,布滿整個顯示屏幕,與此同時,我們也將對界面中的控件位置進行相應的調整,讓它們按屏幕的大小和其在對話框中的相對位置,居中顯示。
下面結合實例說明(完整實例可在我的CSDN資源中下載:[http://download.csdn.net/detail/margin1988/8337049](http://download.csdn.net/detail/margin1988/8337049)):
在對話框的初始化函數OnInitDialog()中分三步作如下的操作:
(1)獲取屏幕的分辨率
~~~
int nFullWidth=GetSystemMetrics(SM_CXSCREEN);
int nFullHeight=GetSystemMetrics(SM_CYSCREEN);
~~~
(2)控件居中顯示
~~~
CRect c1,c2;
GetClientRect(c1); //獲取窗口客戶區的坐標
for (int i=IDC_BUTTON1;i<=IDC_BUTTON5;i++)
{
GetDlgItem(i)->GetWindowRect(c2); //獲取窗口的邊框矩形的尺寸
ScreenToClient(c2); //把屏幕上指定點的屏幕坐標轉換成用戶坐標
GetDlgItem(i)->SetWindowPos(NULL,(nFullWidth-c1.right)/2+c2.left, (nFullHeight-c1.bottom)/2+c2.top,0,0,SWP_NOZORDER|SWP_NOSIZE);
}
~~~
(3)對話框全屏顯示(去掉了標題欄)
~~~
CRect m_FullScreenRect;
CRect WindowRect;
GetWindowRect(&WindowRect);
CRect ClientRect;
RepositionBars(0, 0xFFFF, AFX_IDW_PANE_FIRST, CWnd::reposQuery, &ClientRect);
ClientToScreen(&ClientRect);
m_FullScreenRect.left=WindowRect.left-ClientRect.left;
m_FullScreenRect.top=WindowRect.top-ClientRect.top;
m_FullScreenRect.right=WindowRect.right-ClientRect.right+nFullWidth;
m_FullScreenRect.bottom=WindowRect.bottom-ClientRect.bottom+nFullHeight;
WINDOWPLACEMENT wndpl;
wndpl.length=sizeof(WINDOWPLACEMENT);
wndpl.flags=0;
wndpl.showCmd=SW_SHOWNORMAL;
wndpl.rcNormalPosition=m_FullScreenRect;
SetWindowPlacement(&wndpl);
~~~
- 前言
- VC++中自定義熱鍵及響應
- CFileDialog文件對話框
- VC++中客戶區保存為BMP圖片
- VC++讀、寫注冊表
- VC++播放音頻文件和音頻數據的方法
- VC++調用Matlab編寫的DLL(混合編程)
- VC++中文件讀、寫和其他相關操作匯總
- VC++獲取系統當前時間
- VC++按鈕控件字體設置
- VC++軟件界面風格簡單美化
- VC++中一些常用的數據類型之間的相互轉化
- VC++中截取字符串的方法
- VC++中vector矢量的使用方法及隨機相關
- VC++中結構體的定義及使用
- VC++中List Control控件的使用方法介紹
- VC++中窗口過程函數及其消息發送、響應機制介紹
- VC++中Ribbon編程架構及SDI架構多視圖切換介紹
- 串口通信基礎知識及VC++實現
- VC++中單個鍵盤按鍵的響應
- VC++中的計時器及多媒體高精度計時器
- VC++編寫DLL導出函數及其調用方法
- VC++對話框(CDialog)的全屏顯示及控件居中顯示
- VC++對話框(CDialog)添加背景圖片
- VC++圖片控件(Picture Control)顯示資源位圖(BMP)、文件位圖(BMP)、其它格式文件圖片(JPG\PNG\BMP)的方法
- VC++對Access數據庫的操作(查詢、插入、更新、刪除等)