CREATESTRUCT cs 結構體


PreCreateWindow(CREATESTRUCT& cs)

typedef struct tagCREATESTRUCT {

LPVOID lpCreateParams; // 創建窗口的基本參數
HANDLE hInstance; // 擁有將創建的窗口的模塊實例句柄
HMENU hMenu; // 新窗口的菜單句柄
HWND hwndParent; // 新窗口的父窗口句柄
int cy; // 新窗口的高度
int cx; // 新窗口的寬度
int y; // 新窗口的左上角Y坐標
int x; // 新窗口的左上角X坐標
LONG style; // 新窗口的風格
LPCSTR lpszName; // 新窗口的名稱
LPCSTR lpszClass; // 新窗口的窗口類名
DWORD dwExStyle; // 新窗口的擴展參數
} CREATESTRUCT;


CREATESTRUCT結構的style域定義了窗口的風格。

比如,缺省的MDI主窗口的風格中就包括FWS_ADDTOTITLE(在標題條中顯示當前的工作文檔名)、

FWS_PREFIXTITLE(把文檔名放在程序標題的前面)、

WS_THICKFRAME(窗口具有可縮放的邊框)

WS_MAXIMIZEBOX(Creates a window that has a maximize button)

WS_SIZEBOX(Creates a window that has a sizing border)等風格。

由於多種風格參數由邏輯或(“|”)組合在一起的,因此添加某種風格,就只需用“|”把對應的參數加到CREATESTRUCT結構的style域中;

刪除已有的風格,則需用“&”連接CREATESTRUCT結構的style域與該風格的邏輯非值。


CREATESTRUCT結構的x、y、cx、cy域分別定義了窗口的初始位置和大小,因此,在CWnd::PreCreateWindow函數中給它們賦值,將能定義窗口的初始顯示位置和大小。


下例中的代碼將主框窗口的大小將固定為1/4屏幕,標題條中僅顯示窗口名,不顯示文檔名。
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT&cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs

// 修改主窗風格
cs.style &= ~FWS_ADDTOTITLE; //去除標題條中的文檔名
cs.style &= ~WS_THICKFRAME; //去除可改變大小的邊框
cs.style |= WS_DLGFRAME; //增加不能改變大小的邊框

// 確定主窗的大小和初始位置
int cxScreen = ::GetSystemMetrics(SM_CXSCREEN);//獲得屏幕寬
int cyScreen = ::GetSystemMetrics(SM_CYSCREEN); //獲得屏幕高
cs.x = 0; // 主窗位於左上角
cs.y = 0;
cs.cx = cxScreen/2; // 主窗寬為1/2屏幕寬
cs.cy = cxScreen/2; // 主窗高為1/2屏幕高
return CMDIFrameWnd::PreCreateWindow(cs);
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM