precreatewindow里面做了什么?知道的一定要来帮忙哦

来源:百度知道 编辑:UC知道 时间:2024/06/04 02:59:25

在现有应用程序中更改样式
如果是正在现有应用程序中更改窗口属性,则遵循本文其余部分的说明。

若要更改框架应用程序(用应用程序向导创建的)所使用的默认窗口属性,请重写窗口的 PreCreateWindow 虚拟成员函数。PreCreateWindow 允许应用程序访问通常由 CDocTemplate 类内部管理的创建进程。框架在即将创建窗口前调用 PreCreateWindow。通过修改传递给 PreCreateWindow 的结构 CREATESTRUCT,应用程序可以更改用于创建窗口的属性。例如,为了确保窗口不使用标题,使用以下按位操作。

// cs has been declared as CREATESTRUCT& cs;
cs.style &= ~WS_CAPTION;
CTRLBARS 示例应用程序论证了这项更改窗口属性的技术。根据应用程序在 PreCreateWindow 中的更改,可能有必要调用此函数的基类实现。

以下讨论适用于 SDI 情况和 MDI 情况。

SDI 情况
在单文档界面 (SDI) 应用程序中,框架中的默认窗口样式是 WS_OVERLAPPEDWINDOW 和 FWS_ADDTOTITLE 样式的组合。FWS_ADDTOTITLE 是 MFC 特定的样式,指示框架将文档标题添加到窗口标题。若要在 SDI 应用程序中更改窗口属性,请在从 CFrameWnd(应用程序向导给 CMainFrame 起的名称)派生的类中重写 PreCreateWindow 函数。例如:

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
// Create a window without min/max buttons or sizable border
cs.style = WS_OVERLAPPED | WS_SYSMENU | WS_BORDER;

// Size the window to 1/3 screen size and center it