MFC----定制程序外观

窗口创建前修改

Win32 创建窗口用到的函数

HWND CreateWindow(
  __in  LPCTSTR lpClassName,
  __in  LPCTSTR lpWindowName,
  __in  DWORD dwStyle,
  __in  int x,
  __in  int y,
  __in  int nWidth,
  __in  int nHeight,
  __in  HWND hWndParent,
  __in  HMENU hMenu,
  __in  HINSTANCE hInstance,
  __in  LPVOID lpParam
);

MFC中不需要去手动调用 CreateWindow( ),而是通过PreCreateWindow(CREATESTRUCT& cs)定制参数,这个函数是一个虚函数。

typedef struct tagCREATESTRUCTW {
    LPVOID      lpCreateParams;
    HINSTANCE   hInstance;
    HMENU       hMenu;
    HWND        hwndParent;
    int         cy;
    int         cx;
    int         y;
    int         x;
    LONG        style;
    LPCWSTR     lpszName;
    LPCWSTR     lpszClass;
    DWORD       dwExStyle;
} CREATESTRUCTW, *LPCREATESTRUCTW;

程序创建向导已经确定了lpszClass ,所以一般情况下不要去修改窗口类名称,否则你需要重新创建一个新的窗口类然后注册。
这个地方能修改窗口的起点,窗口高度,宽度,使用哪个窗口类,窗口类型。
最常用的窗口类型:

WS_OVERLAPPED 重叠窗口,一般具备标题和边框;

WS_OVERLAPPEDWINDOW ==WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME |WS_MINIMIZEBOX | WS_MAXIMIZEBOX

如果去掉WS_THICKFRAME,窗口大小将不可更改。

In a single document interface (SDI) application, the default window style in the framework is a combination of the WS_OVERLAPPEDWINDOW and FWS_ADDTOTITLE styles.

窗口创建之后修改

窗口在创建完成以后发送WM_CREATE消息,因此可以在OnCreate()当中响应;
使用CWindow::SetWindowLong 设置新的窗口风格
获取当前样式 CWindow::GetWindowLong

LONG SetWindowLong(
   int nIndex,
   LONG dwNewLong 
) throw();

nIndex可以取以下值,其他请参看MSDN
GWL_EXSTYLE

设置扩展窗口样式,For more information, see CreateWindowEx.

GWL_STYLE

设置新的窗口样式,对应CREATESTRUCT &cs ;

GWL_WNDPROC

设置新的消息处理函数,

You cannot change this attribute if the window does not belong to the same process as the calling thread.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值