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