`
heiyan
  • 浏览: 45485 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

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里去掉,是个反与的操作,其他的类同。

分享到:
评论

相关推荐

    VC++6.0下MFC单文档窗口分割(拆分)

    实现功能:将单文档的MFC项目窗口,划分分左右两个部分,左侧为可视化控件窗口,右侧为绘图窗口 运行环境:Windows10 64位,VC++6.0,MFC架构 使用方法:将其中的Test02文件夹整个解压到某一目录下,双击打开其中的...

    vc++6.0界面设计

    vc++6.0你不知道的功能 单文档和多文档程序框架窗口 项目的文件组织 更改应用程序菜单

    vc++6.0简体中文版

    vc++6.0。数据编程的开始。计算机等级考试必备。简体中文版 vc++是Windows平台上的C++编程环境,学习VC要了解很多Windows平台的特性并且还要掌握MFC、ATL、COM等的知识,难度比较大。Windows下编程需要了解Windows的...

    VC++6.0学习教材

    VC++是微软公司开发的一个IDE(集成开发环境),换句话说,就是使用c++的一个开发...MFC是Win32API的包装类,需要理解文档视图类的结构,窗口类的结构,消息流向等等;COM是代码共享的二进制标准,需要掌握其基本原理等等。

    单文档视图分割,分割一行两列

    单文档视图分割,分成一行两行,可以设置分割线的粗细

    VC++6.0如何拆分窗口

    本资料主要是讲解在VC++6.0如何拆分窗口,包括PDF文档的详细讲解步骤。欢迎下载参考

    VC++6.0 单文档拆分与多视图通信(含DEMO)

    建一个单文档窗口,将视口切分成两个,一个放滑动条,另一个画图(随便画,矩形什么的都行),用窗口中的滑动条控制另一个窗口图形的大小和颜色。

    OpenGL 在VC++ 6.0中的应用

    该文档是我毕设作品的前半部分,里面包括了VC++ 6.0的窗口拆分和OpenGL的基本绘图,里面有详细的文档一步步的教你怎么做,并且将每个函数的功能写的很清楚,还有源代码供应,只要选择输入数据将模型文件夹里的文件...

    vc++6.0 MFC 窗口子类化

    针对多文档的程序,截获客户区窗口的消息,在客户区窗口显示图片

    vc++6.0 窗体分割的三种方法

    如果想在一个窗口里面观察文档的不同部分,或者是在一个窗口里用不同类型的视图(比如用图表和表格)观察同一个文档,那么采用分割窗口是非常方便的。许多优秀的软件都采用了分割窗口技术,因此我们有必要掌握分割...

    vc++ 6.0 实训

    新手入门最好的动手试验文档,通过试验快速了解开发环境。了解控件,窗口,对话框等等,windows下编程的入门级知识。从易到难,试验都做完后就可以很快上手vc的编程了。

    filetool.exe_VC++6.0和Office2007或office2010不兼容问题解决办法

    电脑上如果装有VC++6.0编程软件和office2007(2010)办公软件,那么经常编程的人就会遇到下面的问题:VC打不开文件和工程,总是提示读取内存错误,点“确定”后vc自动关闭,但vc却能新建文件和工程;这让许多人困惑。...

    VC++6.0 从入门到精通

    |------ 3.1 文档 视图 框架窗口间的关系和消息传送规律 |------ 3.2 接收用户输入 |------ 3.3 使用菜单 |------ 3.4 文档,视,框架之间相互作用 |------ 3.5 利用序列化进行文件读写 |------ 3.6 MFC中所提供的...

    VC++6.0 开发指南 第11章静态分割

    本例子采用的是在MFC下以静态的方式将窗口分割为3个部分。且在单文档的模式下

    VC6.0显示PNG图片

    Visual C++6.0使用GDI+的一般方法 1. 载解压GDI+开发包; 2. 正确设置include & lib 目录; 3. stdafx.h 添加: #ifndef ULONG_PTR #define ULONG_PTR unsigned long* #endif #include 4. 程序中添加GDI+的...

    编程技巧(全部工程源代码,物超所值)

    VC++6.0多线程技术在端口扫描程序中的应用 VC++6.0多线程技术在端口扫描程序中的应用 让程序防病毒 用VC++5.06.0实现“更改图标”对话框 统一网内微机系统时钟的一种方案 用InstallShield制作商品化软件...

    Visual C++应用教程-程序代码

    内容为:Visual C++6.0开发环境、基本C++语言、C++的面向对象程序设计、MFC基本应用程序的建立、对话框及常用控件、选单、工具栏和状态栏、框架窗口、文档和视图、绘图、数据库及媒体控制接口等。“实用教程”部分是...

    VC++窗口任意拆分(文档讲解+源码)

    本人从网上收集的资料。帮助VC爱好者学习在VC6.0环境中通过使用CSplitterWnd类实现窗口的任意拆分。

    MFC 窗口切分

    利用VC++6.0创建一个单文档SDI应用程序,在框架客户区实现切分窗口的功能,切分窗口的比例为5:4

Global site tag (gtag.js) - Google Analytics