方法1:窗口创建前,在CMainFrame的函数PreCreateWindow(CREATESTRUCT& cs)中,修改相应的CREATESTRUCT结构体的变量值。例如:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
{
return FALSE;
}
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
cs.cx=300; //修改窗口的宽
cs.cy=200; //修改窗口的高
cs.style &= ~FWS_ADDTOTITLE; //移除固定标题, 或者直接赋值 cs.style = WS_OVERLAPPEDWINDOW;
return TRUE;
}
cs.style &= ~FWS_ADDTOTITLE; //取反、并进行“与”操作
或者 cs.style = WS_OVERLAPPEDWINDOW;
或者直接赋值 cs.lpszName = "固定的标题";
方法2:窗口创建之后,在CMainFrame的函数OnCreate(LPCREATESTRUCT lpCreateStruct)中,利用函数
LONG SetWindowLong(
HWND hWnd, //handle of window
int nIndex, //offset of value to set
LONG dwNewLong //new value
);
hwnd:标识窗口,并且间接标只出该窗口的属的窗口类。
这个函数根据nIndex的取值不同,可以实现不同的功能。
其中nInde可以取:
GWL_EXSTYLE: 设置窗口扩展风格,即CreateWindowEx的DWORD wExStyle 参数
GWL_STYLE: 设置窗口风格,即CreateWindow的DWORD dwStyle参数
GWL_WNDPROC: 设置窗口的处理函数,即RegisterClass的WNDCLASSEX的WNDPROC lpfnWndProc成员
GWL_HINSTANCE: 设置窗口所属的应用程序句柄,即RegisterClass的WNDCLASSEX的HINSTANCE hInstance成员
GWL_ID 设置窗口的ID(对于控件,就是控件ID)
GWL_USERDATA: 设置窗口的用户自定义数据
DWL_DLGPROC: 设置对话框处理函数
DWL_MSGRESULT: 设置对话框消息处理的结果值
DWL_USER: 设置扩展区域数据
lNewLong:要设定的值。(函数LONG GetWindowLongHWND hWnd,int nlndex)取得窗口的原属性值, 在此基础上进行修改。)
下面对函数SetWindowLong()的调用实现窗口最大化按钮的无效:
SetWindowLong(m_hWnd,GWL_STYLE,GetWindowLong(m_hWnd,GWL_STYLE)& ~WS_MAXIMIZEBOX);