Welcome 微信登录

首页 / 软件开发 / C++

用VC++编写扫雷游戏

用VC++编写扫雷游戏

用VC++编写扫雷游戏2010-09-18首先分析扫雷的最基本功能。点击鼠标左键于未知区域,如果未知区域有雷,游戏停止,显示所有的地雷。如果没雷,则显示周围雷数,如果周围没雷,则再查看周围八个区域是否有雷直到有雷为止并显示,这其实是一个递归过程。点击鼠标右键于未知区域,则将其置为有雷而不管是否真的有雷。可选择初、中、高三级并可自定义雷数和区域大小。雷区上部左侧显示总雷数减被标明有雷区域的数目。雷区上部中间位置显示一按钮用于开局和显示鼠标动作的结果。雷区上部...
系统理解Win32 API和MFC(上)

系统理解Win32 API和MFC(上)

系统理解Win32 API和MFC(上)2010-09-18温昱Win32 API是微软的操作系统Windows提供给开发人员的编程接口,它决定了我们开发的Windows应用程序的能力。MFC是微软为开发人员提供的类库,在某种意义上是对Win32 API的封装。本文试图从全局角度对Win32 API和MFC进行理解──给出二者的概念模型。本文使用UML描述概念模型。Win32 API本不是面向对象的,我用面向对象的观点去理解它,无非是想表达其全局。本文参考...
系统理解Win32 API和MFC(下)

系统理解Win32 API和MFC(下)

系统理解Win32 API和MFC(下)2010-09-18温昱二、MFC的概念模型前面我们研究了WIN32 API的“领域模型”,对它有较全面的认识。下面,对MFC概念模型的研究,我们把重点放在对app framework的研究上。app framework中的message响应/传递机制是最重要的。而Hook机制和Message响应/传递机制是密切相关的,后者以前者为基础。1. Hook机制也许有些程序员只知道hook机制可以编...
VC++中实现程序互斥运行

VC++中实现程序互斥运行

VC++中实现程序互斥运行2010-09-18在软件的开发过程中,有时需要控制一些程序不能同时运行,也就是多个程序间互斥运行(还包括禁止同一程序运行多个实例)。针对这一问题,我们在Visual C++ 6.0中利用内存映射文件实现了多个程序间的互斥运行。在讲述具体的编程方法之前,让我们先来看看和内存映射文件操作有关的几个重要的函数:1)CreateFileMapping函数为指定的文件创建一个文件映射对象,该函数的原型如下:HANDLE CreateFil...
Visual C++中回调函数的使用

Visual C++中回调函数的使用

Visual C++中回调函数的使用2010-09-18对于回调函数的编写始终是写特殊处理功能程序时用到的技巧之一。先介绍一下回调的使用基本方法与原理。1、在这里设:回调函数为A()(这是最简单的情况,不带参数,但我们应用的实际情况常常很会复杂),使用回调函数的操作函数为B(), 但B函数是需要参数的,这个参数就是指向函数A的地址变量,这个变量一般就是函数指针。使用方法为:int A(char *p); // 回调函数typedef int(*CallBa...
VC调试入门

VC调试入门

VC调试入门2010-09-18阿荣概述调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。这里我简要的根据自己的经验列出调试中比较常用的技巧,希望对大家有用。本文约定,在选择菜单时,通过/表示分级菜单,例如File/Open表示顶级菜单File的子菜单Open。设置为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWizard创建的工程中包含的Debug C...
基于CDialogBar的IE多标签栏的实现

基于CDialogBar的IE多标签栏的实现

基于CDialogBar的IE多标签栏的实现2010-09-29 vckbase 郑瑜IE浏览器的多标签模式已日趋占据浏览器市场的主流模式。回忆IE6.0时代的单文档多实例年代,那浏览多网页是何等的痛苦。原本有限的空间就要被那些烦琐的网页所占据,要从这些烦琐的网页中切换到自己目的网页更是何等的不便。现在很多第三方IE浏览器对IE浏览器所显示出来的弊病虎视眈眈许久,多标签浏览器也应运而生。遨游、世界之窗、TT等如今都是拜多标签浏览器之福,早早占领了市场,占据...
类似QQ游戏大厅导航的树型控件

类似QQ游戏大厅导航的树型控件

类似QQ游戏大厅导航的树型控件2010-09-29 vckbase 方建君在最近的项目中,需要实现一个类似QQ游戏大厅导航树型控件。参考了网络上的部分资料,自己动手制作了一个类CTreeCtrlBT。其界面如下:实现步骤第一步:新建一个基于对话框的MFC工程,拖动一棵标准树型控件放于界面之上。添加一个新类CTreeCtrlBT派生自CTreeCtrl。第二步:为该类添加一些消息响应以及虚函数。其详细作用如下:void PreSubclassWindow()...
多线程编程之二——MFC中的多线程开发

多线程编程之二——MFC中的多线程开发

多线程编程之二——MFC中的多线程开发2010-09-29韩耀旭五、MFC对多线程编程的支持MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等。但对于Win32的API编程而言,这两种...
多线程编程之三——线程间通讯

多线程编程之三——线程间通讯

多线程编程之三——线程间通讯2010-09-29韩耀旭七、线程间通讯一般而言,应用程序中的一个次要线程总是为主线程执行特定的任务,这样,主线程和次要线程间必定有一个信息传递的渠道,也就是主线程和次要线程间要进行通信。这种线程间的通信不但是难以避免的,而且在多线程编程中也是复杂和频繁的,下面将进行说明。使用全局变量进行通信由于属于同一个进程的各个线程共享操作系统分配该进程的资源,故解决线程间通信最简单的一种方法是使用全局变量。对于标准类型的全局变量,我们建议...
多线程编程之四——线程的同步

多线程编程之四——线程的同步

多线程编程之四——线程的同步2010-09-29韩耀旭八、线程的同步虽然多线程能给我们带来好处,但是也有不少问题需要解决。例如,对于像磁盘驱动器这样独占性系统资源,由于线程可以执行进程的任何代码段,且线程的运行是由系统调度自动完成的,具有一定的不确定性,因此就有可能出现两个线程同时对磁盘驱动器进行操作,从而出现操作错误;又例如,对于银行系统的计算机来说,可能使用一个线程来更新其用户数据库,而用另外一个线程来读取数据库以响应储户的需要,极有可能读数据库的线程...
基于ODBC自动存储自动定期删除数据库记录

基于ODBC自动存储自动定期删除数据库记录

基于ODBC自动存储自动定期删除数据库记录2010-09-29赵慎交本人在近期一电厂控制工程中,用户要求我们程序对数据要有自动保存和定期删除功能,因为我们以前是做 DCS 加强系统,DCS具有数据的自动处理功能,不需要我们做。为了满足用户需要,应用必须实现自动数据处理。本文下面就来介绍如何使用 VC 实现基于 ODBC 数据库的自动删除和存储。希望本文提供的方法对你有所帮助。首先,注册数据源。如图所示:2、然后在 IDE 中建立基于对话框的程序,并创建基类...
关于构造单实例类的一个问题

关于构造单实例类的一个问题

关于构造单实例类的一个问题2010-09-29NorthTibet最近一个朋友问我创建单实例的一个问题,他写了一个C++单实例类CSingleton,其构造函数也是private类型。这个类有一个静态函数:GetInstance,它返回单实例类对象的引用,只要用这个函数声明实例便可以限制对象的复制:// 这一句编译器通不过CSingleton temp = CSingleton::GetInstance();但是编译器始终在上面这行代码处受阻。这到底是为什...
用CabLib创建DXF(绘图交换格式)文件

用CabLib创建DXF(绘图交换格式)文件

用CabLib创建DXF(绘图交换格式)文件2010-09-29eastvc介绍什么是DXF绘图交换格式(DXF)文件允许在AutoCAD和其它程序进行图形交换。DXF文件即可以是ASCII格式也可以是二进制格式。 因为ASCII格式的DXF文件比二进制格式更加通用,所以CadLib使用ASCII的DXF格式。什么是CadLibCadLib不是计算机辅助设计(CAD)程序。它是创建用于CAD程序DXF文件的工具。它由两部分组成,一部分是用于创建DXF文件的...
软件框架的利器、TangramMini组件应用教程一:入门

软件框架的利器、TangramMini组件应用教程一:入门

软件框架的利器、TangramMini组件应用教程一:入门2010-09-29 vckbase 骆归由于工作需要,使用了Tangram团队开发的TangramMini组件。自认为对此组件了解得足够深入,并且网上相关此产品的文档不多,所以从今天开始写几篇TangramMini组件教程。TangramMini组件是Tangram团队从Tangram框架产品中演绎出来的迷你微型版本,在非商业产品中可以免费使用,认证后还可以做商业开发,功能强大,主要用于软件产品框...
软件框架的利器、TangramMini组件应用教程二:安装对象

软件框架的利器、TangramMini组件应用教程二:安装对象

软件框架的利器、TangramMini组件应用教程二:安装对象2010-09-29 vckbase 骆归在上一篇教程中,我们生成了一个XTML文档,并且使用Microsoft Visual C++ 6.0生成了一个Tutorial1对话框程序,在这一篇中,我将介绍怎样在建立的框架上安装自己感兴趣的对象。首先,我先介绍一下TangramMiniCtrl组件怎样在空白区域安装一个对象。此组件提供了方法SetWnd()安装一个窗口对象,在以后的介绍中我统一将空白...
软件框架的利器、TangramMini组件应用教程三:基本使用

软件框架的利器、TangramMini组件应用教程三:基本使用

软件框架的利器、TangramMini组件应用教程三:基本使用2010-09-29 vckbase 骆归在上一篇中我介绍了SetWnd()以及Save()的用法,我相信大家已经知道怎样安装自己的窗口组件了,在这一篇中我将介绍一下TangramMiniCtrl组件的基本方法,以及将Tutorial1对话框程序改造成一个软件的模型。首先,我们来改造这个对话框程序。因为是个框架程序,所以做为一个对话框我们假设这个对话框要有可改变窗体尺寸的要求,我们先更改窗体属性...
<< 281 282 283 284 285 286 287 288 289 290 >>