MFC中更改窗口样式

来源:互联网 发布:mac 移动硬盘绝对路径 编辑:程序博客网 时间:2024/06/06 20:04

        使用MFC生成多文档应用程序时,会自动生成CMainFrame类和CChildFrame类,要修改窗口的样式,可以在CChildFrame的PreCreateWindow方法中进行修改,如下:

BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
{
 // TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或样式
 if( !CMDIChildWndEx::PreCreateWindow(cs) )
  return FALSE;
 cs.style = WS_CHILD | WS_VISIBLE | WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU
  | FWS_ADDTOTITLE | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_MAXIMIZE;

 return TRUE;
}

        是通过指定CREATESTRUCT结构体中的style属性来修改的。

        msdn中CREATESTRUCT结构体的定义如下:

 

        CREATESTRUCT结构体定义了传递给应用程序窗口过程的一些初始化参数,这些参数与 CreateWindowEx 函数的参数是一样的。

typedef struct tagCREATESTRUCT
 { LPVOID lpCreateParams;
 HINSTANCE hInstance; 
HMENU hMenu; 
HWND hwndParent;
 int cy; int cx; int y; int x; 
LONG style; 
LPCTSTR lpszName; 
LPCTSTR lpszClass; 
DWORD dwExStyle; 
} CREATESTRUCT, *LPCREATESTRUCT;

参数说明:

    lpCreateParams

    包含可能用于创建窗口的一些额外的数据。如果这个窗口是通过CreateWindow函数或者CreateWindowEx函数调用创建的,这个参数包含特定函数调用中的 lpParam 属性值。

    如果正在创建的这个窗口是一个多文档(MDI,mulitple-document interface)客户窗口,这个参数包含一个指向 CLIENTCREATESTRUCT结构体的指针。如果正在创建的这个窗口是一个多文档子窗口,这个参数包含一个指向MDICREATESTRUCT结构体的指针。

     hInstance
     拥有这个新窗的实例句柄。
     hMenu
     新窗口的菜单句柄。
     hwndParent
     如果这个窗口是一个子窗口,则这个参数表示父窗口的句柄。如果这个窗口是被拥有的,则这个参数表示拥有者的句柄。如果这个窗口既不是一个子窗口也不是被拥有的窗口,则这个参数为NULL。
     cy
      指定新窗口的高度,单位是像素。
     cx
      指定新窗口的宽度,单位是像素。
     y
     指定新窗口的左上角的y坐标。如果这个新窗口是子窗口,坐标值是相对于父窗口的。否则,这个坐标值相对于屏幕的原点。
     x
     指定新窗口的左上角的x坐标。如果这个新窗口是子窗口,坐标值是相对于父窗口的。否则,这个坐标值相对于屏幕的原点。

     style

     指定新窗口的样式,这些窗口样式是微软已经定义好了的。window中的窗口样式这里列举了msdn中所有的窗体样式。

     lpszName

     指向一个表示新窗口名称的非结束符的字符串

     lpszClass

     一个非结束符的字符串或者表示新窗口类名的字符串

     dwExStyle

     指定新窗口的一些扩展样式

备注:

如果要获得窗口的类的名字,不要使用lpszClass,使用GetClassName这个函数。