VC++6.0禁止改变单文档窗口大小,修改标题的实现

刚才又有人在我QQ里问到如何禁止用户该表自己单文档窗体的大小,修改标题等等问题,其实这些问题不难,那么我现在来讲一下这个东西的实现。

首先找到单文档程序中的PreCreateWindow(CREATESTRUCT& cs)这个函数,这个函数是用来设置我们窗体的一些特征的,现在,我们来仔细看一下这个函数,如下:

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
   return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs

return TRUE;
}

首先来看这个参数CREATESTRUCT& cs,是一个CREATESTRUCT结构的引用,那好,我们再来查询下MSDN,看一下这个结构,如下:

typedef struct tagCREATESTRUCT { // cs
    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;

我们来一个一个的看这些参数:

LPVOID    lpCreateParams:这个参数用来指向将被用于创建窗口的数据的指针。

HINSTANCE hInstance: 这个参数标识了拥有新窗口的模块的模块实例的句柄。

HMENU     hMenu:这个参数标识了要被用于新窗口的菜单。如果是子窗口,则包含整数ID。

HWND      hwndParent:这个参数标识了拥有新窗口的窗口。如果新窗口是一个顶层窗口,这个参数可以为NULL。

int       cy:这个参数指定了新窗口的高。

int       cx:这个参数指定了新窗口的宽。

int       y:这个参数这个参数指定了新窗口的左上角的Y轴坐标。如果新窗口是一个子窗口,则坐标是相对于父窗口的;否则坐标是相对于屏幕原点的。

int       x:这个参数定了新窗口的左上角的X轴坐标。如果新窗口是一个子窗口,则坐标是相对于父窗口的;否则坐标是相对于屏幕原点的。

LONG      style:这个参数指定了新窗口的风格。

LPCTSTR   lpszName:这个参数指向一个以null结尾的字符串,指定了新窗口的名字。

LPCTSTR   lpszClass:这个参数指向一个以null结尾的字符串,指定了新窗口的Windows类名(一个WNDCLASS结构;更多的信息参见Win32 SDK文档)。

DWORD     dwExStyle:这个参数指定了新窗口的扩展风格。

在这些参数里面我们一般经常用到的是cy、cx、y、x、style、lpszName这几个,需要特别注意。

好了,现在开始在PreCreateWindow(CREATESTRUCT& cs)
加上代码,实现禁止改变单文档窗口大小:

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.hMenu = NULL;//去掉菜单
cs.style&=~WS_MAXIMIZEBOX; //禁用按动最大化按钮
cs.style&=~WS_THICKFRAME;//禁止用户改变窗口大小
cs.cx = 700;//窗口宽度
cs.cy = 500;//窗口高度

cs.style&=~FWS_ADDTOTITLE;//将FWS_ADDTOTITLE去掉

cs. lpszName = "标题"//改变标题,替换自己的标题
return TRUE;
}

这里我们要注意,给这些参数赋值的时候我们需要用&符号还有一个~符号,我来解释一个:

cs.style&=~WS_MAXIMIZEBOX; //禁用按动最大化按钮

这句的意思是将WS_MAXIMIZEBOX从style里去掉,是个反与的操作,其他的类同。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Visual C++窗口标题改变的几种方法 在论坛中,经常有人会问到这个问题,所以今天整理了几种方法用来改变窗口标题,希望对这些朋友有所帮助。    一•文档接口(SDI)类型窗口标题改变    首先,我们来看Windows SDI类型窗口标题栏的结构形式。结合具体例子说明:用VC的AppWizard创建一个名为“SDITitle”的文档类型的工程,创建完工程后,编译运行该工程,程序主窗口标题形式如下:    文档标题 主窗口标题    1•文档标题改变    文档标题在是由工程中相应的文档类所控制的,因此我们可以利用SetTitle ()函数来改变文档标题。 例:改变CSDITitleDoc::OnNewDocument() 函数为: BOOL CSDITitleDoc::OnNewDocument()    { if (!CDocument::OnNewDocument()) return FALSE; SetTitle (" 文档标题 " );    return TRUE;    }    运行程序,则每次选择选中的“文件”的“新建”选项时,文档标题就变成 “文档标题- SDITitle”。    2•主窗口标题改变    主窗口的标题默认是工程的文件名,正如前面AppWazied生成的SDITitle工程执行后,标题栏的形式总为“(文档名)- SDITitle”。    改变主窗口的标题有两种:    第一种方法:利用ResourceView打开工程的资源,修改String Table中的IDR_MAINFRAME的值。将原来的“SDITitle\n\nTitle\n\n\nTitle.Document\nTitle Document”改为“标题改变示例\n\nTitle\n\n \nTitle. Document\nTitle Document”。这样改变后,主窗口标题栏的形式就为“((((-标题改变示例”。    第二种方法:具体改变方法如下:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值