【MFC】Windows样式
00. 目錄
文章目錄
- 00. 目錄
- 01. 概述
- 02. Windows常用樣式
- 03. Windows樣式示例
- 04. Windows位置
- 05. Windows大小
- 06. Windows尺寸
- 07. Windows父窗口
- 08. 附錄
01. 概述
Windows樣式是控制窗口外觀,邊框,最小化或最大化狀態或其他調整大小等功能的特征。
02. Windows常用樣式
常見樣式
WS_BORDER 創建一個帶邊框的窗口.WS_CAPTION 創建一個具有標題的窗口bar(暗示WS_BORDER樣式).不能與WS_DLGFRAME樣式一起使用.WS_CHILD 創建子窗口.不能與WS_POPUP樣式一起使用.WS_CHILDWINDOW 與WS_CHILD風格相同.WS_CLIPCHILDREN 在父窗口中繪制時,排除子窗口占用的區域.在創建父窗口時使用.WS_CLIPSIBLINGS 相對于彼此剪輯子窗口;也就是說,當特定子窗口接收到繪制消息時,WS_CLIPSIBLINGS樣式會剪切要更新的子窗口區域之外的所有其他重疊子窗口. (如果未給出WS_CLIPSIBLINGS且子窗口重疊,則在子窗口的客戶區域內繪制時,可以在相鄰子窗口的客戶區域內繪制.)僅用于WS_CHILD樣式.WS_DISABLED 創建一個最初禁用的窗口.WS_DLGFRAME 創建一個帶雙邊框的窗口但沒有標題.WS_GROUP 指定一組控件的第一個控件,用戶可以使用箭頭鍵從一個控件移動到另一個控件.在第一個控件之后使用WS_GROUP樣式定義的所有控件都屬于同一個組.具有WS_GROUP樣式的下一個控件將啟動下一個組(即,一個組在下一個組開始的地方結束).WS_HSCROLL 創建一個水平的窗口滾動條.WS_ICONIC 創建一個最初最小化的窗口.與WS_MINIMIZE樣式相同.WS_MAXIMIZE 創建一個最大尺寸的窗口.WS_MAXIMIZEBOX 創建一個具有最大化按鈕的窗口.WS_MINIMIZE 創建一個最初最小化的窗口.僅用于WS_OVERLAPPED樣式.WS_MINIMIZEBOX 創建一個具有最小化按鈕的窗口.WS_OVERLAPPED 創建重疊窗口.重疊窗口通常有標題和邊框.WS_OVERLAPPED窗口 使用WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU,WS_THICKFRAME,WS_MINIMIZEBOX和WS_MAXIMIZEBOX樣式創建重疊窗口.WS_POPUP 創建一個彈出窗口.不能與WS_CHILD樣式一起使用.WS_POPUPWINDOW 創建一個包含WS_BORDER,WS_POPUP和WS_SYSMENU樣式的彈出窗口. WS_CAPTION樣式必須與WS_POPUPWINDOW樣式組合才能使Control菜單可見.WS_SIZEBOX 創建一個具有大小調整邊框的窗口.與WS_THICKFRAME樣式相同.WS_SYSMENU 創建一個窗口,其標題欄中有一個控制菜單框.僅用于帶標題欄的窗口.WS_TABSTOP 指定用戶可以使用TAB鍵移動的任意數量的控件之一. TAB鍵將用戶移動到WS_TABSTOP樣式指定的下一個控件.WS_THICKFRAME 創建一個帶有粗框的窗口,可用于調整窗口大小.WS_TILED 創建重疊窗口.重疊窗口具有標題欄和邊框.與WS_OVERLAPPED樣式相同.WS_TILEDWINDOW 使用WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU,WS_THICKFRAME,WS_MINIMIZEBOX和WS_MAXIMIZEBOX樣式創建重疊窗口.與WS_OVERLAPPEDWINDOW樣式相同.WS_VISIBLE 創建一個最初可見的窗口.WS_VSCROLL 創建一個具有垂直滾動條的窗口.溫馨提示
更多Windows樣式請參考MSDN相關文檔
03. Windows樣式示例
程序示例一:
#include "afxwin.h"class MyFrame:public CFrameWnd {public:MyFrame(){//WS_VISIBLE 創建一個最初可見的窗口//WS_OVERLAPPED 創建重疊窗口.重疊窗口通常有標題和邊框Create(NULL, TEXT("MFC TEST"), WS_VISIBLE | WS_OVERLAPPED);} };class Test:public CWinApp {BOOL InitInstance(){MyFrame *frame = new MyFrame();m_pMainWnd = frame;frame->ShowWindow(SW_NORMAL);frame->UpdateWindow();return TRUE;} };Test test;執行結果
04. Windows位置
查找顯示在監視器,計算機使用類似于笛卡兒的坐標系,但原點位于屏幕的左上角.使用此坐標系,任何點都可以通過它與水平和垂直軸屏幕左上角的距離來定位.
Win32庫提供了一個名為POINT的結構,定義如下 :
typedef struct tagPOINT {LONG x;LONG y; } POINT;CPoint(); CPoint(int X, int Y);- 'x’成員變量是從屏幕左邊框開始的距離點.
- 'y’變量表示從屏幕頂部邊框到該點的距離.
- 除了Win32的POINT結構外,Microsoft基礎類(MFC)庫還提供了CPoint類.
- 這提供了相同的功能作為POINT結構.作為C ++類,它添加了定位點所需的更多功能.它提供了兩個構造函數.
05. Windows大小
當一個點用于在屏幕上定位一個對象時,每個窗口都有一個大小.大小提供了與對象相關的兩個度量.
- 對象的寬度.
- 對象的高度.
Win32庫使用SIZE結構定義如下 :
typedef struct tagSIZE {int cx;int cy; } SIZE;除了Win32的SIZE結構外,MFC還提供了CSize類.此類具有與SIZE相同的功能,但添加了C ++類的功能.它提供了五個構造函數,允許您以您選擇的任何方式創建一個大小變量.
CSize(); CSize(int initCX, int initCY); CSize(SIZE initSize); CSize(POINT initPt); CSize(DWORD dwSize);06. Windows尺寸
當窗口顯示時,可以通過其屏幕上顯示器邊框的位置來識別屏幕。窗口也可以通過其寬度和高度來識別。這些特性由**Create()**方法的rect參數指定或控制。此參數是可以通過Win32 RECT結構創建的矩形。
typedef struct _RECT {LONG left;LONG top;LONG right;LONG bottom; } RECT, *PRECT;除了Win32的RECT結構之外,MFC還提供了具有以下構造函數的CRect類:
CRect(); CRect(int l, int t, int r, int b); CRect(const RECT& srcRect); CRect(LPCRECT lpSrcRect); CRect(POINT point, SIZE size); CRect(POINT topLeft, POINT bottomRight);程序示例
class MyFrame:public CFrameWnd {public:MyFrame(){Create(NULL, TEXT("MFC TEST"), WS_SYSMENU, CRect(90, 90, 480, 480));} };將在前兩個參數中的CRect構造函數中指定的屏幕左上角創建以下窗口。最后兩個參數是Window的大小。
07. Windows父窗口
在現實世界中,許多應用程序都是由不同的Windows組成的.當應用程序使用各種Windows時,大多數對象都依賴于特定的對象.它可能是您創建的第一個窗口或您指定的另一個窗口.這樣的窗口被稱為父窗口.所有其他窗口都直接或間接依賴它.
- 如果您創建的窗口依賴于另一個窗口,則可以指定它有父級.
- 這是通過CFrameWnd :: Create()方法的pParentWnd參數完成的.
- 如果Window沒有父項,則傳遞帶有NULL值的參數.
讓我們看一個只有一個Window的例子,并且沒有可用的父窗口,所以我們將傳遞帶有NULL值的參數,如下面的代碼所示 :
程序示例
class MyFrame:public CFrameWnd {public:MyFrame(){//父窗口為NULLCreate(NULL, TEXT("MFC TEST"), WS_SYSMENU, CRect(90, 90, 480, 480), NULL);} };08. 附錄
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的【MFC】Windows样式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C++】Visual Studio 2
- 下一篇: 【MFC】CWinApp类详解