08 2011 档案
摘要:文档标题的更改方法一·单文档接口(SDI)类型窗口标题的改变 首先,我们来看WindowsSDI类型窗口标题栏的结构形式。结合具体例子说明:用VC的AppWizard创建一个名为“SDITitle”的单文档类型的工程,创建完工程后,编译运行该工程,程序主窗口标题形式如下: 文档标题 主窗口标题 1·文档标题的改变 文档标题在是由工程中相应的文档类所控制的,因此我们可以利用SetTitle()函数来改变文档标题。例:改变CSDITitleDoc::OnNewDocument() 函数为:BOOL CSDITitleDoc::OnNewDocument() {if (!CDoc
阅读全文
摘要:多视图是VC开发中经常要用到的技术之一,一般地实现单文档多视图有两种方式1)通过视图分割的技术(使用CSplitterWnd实现),将窗口分割为多个部分,每个部分显示各自显示不同的视图,这种技术实现起来比较简单,并且相关的资料也很多。2)通过一个文档关联多个视图,窗口显示整个视图。第二种实现较第一种复杂,这里给出详细的实现方法。Step 1:使用VC 6.0新建一个Project,命名为:MultiView。除选择单文档属性外,一切使用“默认”方式。于是你可以获得五个类:CMainFrame ,CMultiViewApp,CMultiViewDoc,CMultiViewView,和CAbout
阅读全文
摘要:用习惯了Delphi、VB、Windows Form(Visual C#)等称之为RAD(Rapid Application Development)的开发工具进行项目开发的都会很满足这些工具和平台提供的快速界面开发的功效:你可以很容易就可以实现一个MIS系统的管理界面,提供一个主框架,点击主框架上的某一个菜单项就打开一个处理事务的窗口,这些窗口可以重叠,可以最大/小化,一切看起来都像那么回事。但是当你在VC中进行开发的时候,发现整个世界都变了,虽然VC提供了MDI支持多文档视图的框架,但是每次你点击“打开”/“新建”菜单项的时候,你会发现新打开的窗口千孔一面,都是同一个样式,根本就不能满足项
阅读全文
摘要:今天我们来看看VB.NET怎样将程序窗口嵌入到任务栏(Taskbar)中,下图是我们实现的效果。 开始之前,小孟先简单介绍一下任务栏的组成,在这里小孟只介绍与我们的程序有关的部分。整个任务栏是有一个大的窗口容器(该容器类名是Shell_TrayWnd)和一些窗口共同组成的,在这个类名是Shell_TrayWnd的容器中,有一个类名是ReBarWindow32的二级容器。这个二级容器中包含的窗口在Win7和WinXP中是不同的(小孟使用的Win7,不过在这个程序中Win7和WinXP的效果都是一样的)。在WinXP中,包含一个类名是MSTaskSwWClass的窗口外,这个窗口就是来显示...
阅读全文
摘要:前段时间为了一个项目而把VS2008换成了VS2010,结果原本就不堪重负的本本跑起VS2010来那更是慢得没话说,于是看了遍VS2010选项,又从网上到处找资料找优化方法,总算使我的VS2010跑得快了些。一、VS2010选项视觉体验设置工具->选项->环境视觉体验的勾选都去掉。不解释,你懂得。二、禁用Intellisense工具->选项->文本编辑器->C/C++->高级禁用IntelliSense设为True这个功能很好用。相较于Visual Assist X,Intellisence结果更加准确,但活动也更加频繁,项目一庞大时修改头起来就会使VS变得
阅读全文
摘要:1、如何在视图类中获取主窗口指针主窗口的指针保存在CWinThread::m_pMainWnd中(应用程序类的Initlnstance函数有用到),可以调用AfxGetMainWnd获取,也可以用视图类继承的函数GetParent()获取。另外,如果要获取当前视图类对象的指针(比如要在当前视图手动添加控件)要使用this。2、如何在主框架类中获得视图类指针单文档(SDI): CMainFrame*pMainFrame = (CMainFrame*)AfxGetMainWnd(); CYourDoc*pDoc =(CYourDoc*)pMainFrame->GetActiveDocumen
阅读全文
摘要:三、编写工程代码10. 编写CMemberSystemView类的处理函数CMemberSystemView类的处理函数在MemberSystemView.h文件里有如下的声明:private:BOOL OpenCurRecordset(CString strTableName);BOOL RefreshColumn(ULONG *pulColCount);BOOL RefreshData(ULONG ulColCount);BOOL GetInfoArray(CString strTableName, CUIntArray&uaID,CStringArray &saArray
阅读全文
摘要:本示例节选自《VC数据库编程三部教学》第九章,是一个关于会员消费的简单应用,与原文相比有删节(便于理清简单数据库应用开发的思路),并修改了多处错误。一、创建数据库表与视图 在SqlServer企业管理器中创建数据库MyDataBase,创建登录用户并分配对数据库MyDataBase的读写权限(也可以将用户设置为数据库拥有者,但为了数据库的安全性,不可将一般用户设置为数据库管理员)。创建会员表Member、社团表Society、消费记录表Consumption与相关视图:CREATE VIEW dbo.ConsumeViewASSELECTdbo.Member.MemberID, dbo.Mem
阅读全文
摘要:一、在Windows应用程序中添加ListControl控件的几种方法1、在对话框中添加控件:创建对话框应用程序,在资源视图中添加对话框。如下图所示,在控件工具条中选择ListControl控件添加到对话框中,并调整控件尺寸。在ListControl控件的属性页中设置控件样式(Styles)和扩展样式等。为了显示详细数据信息,可以设置控件的显示风格为报表视图(Report)。为了在对话框中使用控件,需要在ClassWizard中为对话框类添加控件成员变量,如下图所示:执行以上操作后,系统自动添加了一个ClistControl对象,并与ListControl控件资源关联,相关代码如下: //Li
阅读全文
摘要:利用MFC开发的ActiveX控件要正常运行必须依赖MFC库。但是你不能保证你用户的机器上装有与你开发环境相同的库,所以,当你发行一个ActiveX控件,你必须要包证这些依赖库的存在。可以通过打包控件及其依赖的库文件来解决这一问题。 在使用OBJECT 标记将 ActiveX 控件嵌入网页中时,用于指定下载位置的 CODEBASE 属性可以指向 .cab 压缩包文件。在CAB 文件中打包 MFC ActiveX 控件时,允许控件中包含 .inf 文件以便对 ActiveX控件的安装进行控制;允许对相关 DLL(MFC库文件) 进行命名并提供位置;允许代码签名以及自动压缩代码以便更快地进行下载。
阅读全文
摘要:一、建立工程 在VisualStudio6.0中新建一个单文档工程,除在文档模式中选择单文档方式外,其它步骤均选择默认配置,工程名为CreateLine。二、鼠标划线的实现思路本例为使用鼠标绘制线段、矩形、圆及任意曲线等图形。1、画线段:在菜单中选择划线命令,在窗口客户区可以单击鼠标左键连续划线,双击鼠标左键结束划线。设置一个保存鼠标单击次数的变量,当变量值为0时,使用MoveTo函数设置起始点,变量值大于0时,使用LineTo函数实现连续划线;利用鼠标左键双击消息处理函数,设置鼠标单击次数变量值为-1,结束划线;利用鼠标移动消息处理函数实现划线过程中的橡皮线显示。2、画圆:选择画圆菜单,点击
阅读全文
摘要:一、使用向导工具搭建控件程序框架如上图所示,使用向导工具创建Activex程序框架。在创建过程中一直选择默认配置。向导工具自动生成的程序文件如下图所示。其中包括应用程序类文件DrawLine.cpp、控件类文件DrawLineCtl.cpp、控件属性页文件DrawLinePpg.cpp文件等。需要指出的是DrawLine.odl文件中包含了控件及其接口等的全局唯一标识符字串uuid,如图所示。系统将使用该uuid,作为控件的ClassID记录到注册表中。二、为控件添加工具条为了用户能够选择绘制不同图形,需要为Activex控件添加工具条。如下图所示,在工具主菜单或资源视图右键菜单中选择添加工具
阅读全文
摘要:一、定义对话框资源继续上一节使用的程序例子。如下图所示,在程序资源视图中添加一个自定义的对话框:对话框比较简单,只是添加了一个编辑框控件和一个显示提示文字的静态文本控件,另外的OK按钮和Cancel按钮是系统自动添加的。二、定义对话框类有了对话框资源,还要定义一个与之关联的对话框类才可以使用。如下图所示定义对话框类:有了对话框类,为了使其它对象(如CSysMenuView对象)可以获取对话框中的控件信息,需要为对话框类添加一个公共成员变量,以保存编辑框的输入值。这里定义一个字符串变量name,如下图所示:获取对话框中编辑控件输入值的方法有多种,下图是通过定义编辑框控件的关联变量(控件的成员变量
阅读全文
摘要:一、传统的Windows编程--SDK编程 SDK 就是Software Development Kit的缩写,即“软件开发工具包”。这是一个覆盖面相当广泛的名词,应该说,辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”,如JavaSDK等,这里只讨论开发 Windows 平台下的应用程序所使用的SDK。 上面只是说了一个SDK 大概的概念而已,为了解释什么是 SDK 我们不得不引入 API、动态链接库、导入库等等概念。首先要接触的是“API”,也就是 Application ProgrammingInterface,其实就是操作系统留给应用程序的一个调用接口,应用程序通过调
阅读全文
摘要:FMD(http://www.fmdstudio.net)文档视图结构中利用序列化机制使用OLE剪贴板一、序列化支持从CObject派生对象通过在类声明和实现部分添加特定的宏语句添加序列化支持DECLARE_SERIAL(CSomeObject)IMPLEMENT_SERIAL(CSomeObject,CSomeBase, 1 )重载serialize成员函数,书写对象的存储和读取过程。正在装载数...
阅读全文
摘要:VS2010中CMFCToolBar的用法自从VS2008中增加了一些特性的菜单,但这些特性在帮助中说明的很少,给使用者造成了很多麻烦。笔者经过搜索以及自己的摸索,对其的用法有了初步了解,形成本文,如果能够为后来者解决一些问题,笔者将会感到欣慰。一、向导自动生成的CMFCToolBar由于应用了系统风格,向导生成的菜单确实很漂亮。如下图:但在某些情况下(至于哪些情况,笔者还不能确定),向导自动生成的菜单会没有名字,在“工具栏和停靠窗口”的子菜单下会显示空。如下图:出现这种情况的解决办法就是自己给工具栏命个名称。在CMainFrame::OnCreate()事件中给工具栏命名: int CMai
阅读全文
摘要:一伙劫匪在抢劫银行时说了一句至理名言:"通通不许动,钱是国家的,命是自己的!大家都一声不吭躺倒。劫匪望了一眼躺在桌上四肢朝天的出纳小姐,说:"请你躺文明些!这是抢劫,又不是强奸!劫匪回去后,其中一个新来的硕士劫匪说,老大,我们赶快数一下抢了多少,那老劫匪(小学文化)说,你傻啊?这么多,你要数到什么时候啊?今天晚上看新闻不就知道了吗。这就叫工作经验,这年头工作经验比学历更重要 呵呵,这个故事还有续集...
阅读全文
摘要:不选择在 PreSubclassWindow 中作“初始化”工作是因为用户可能在使用中改变属性,必须在一个经常进入的地方检查是否要重新“初始化”。把这项工作放到和绘制有关的消息响应函数里则父窗口一个 RedrawWindow() 就可以引起重新“初始化”。 一般步骤: 1.派生控件子类 2.添加 PreTranslateMessage 3.进行常规操作记下消息类型 4.在子类里处理消息 MFC的 ...
阅读全文

浙公网安备 33010602011771号