C++
文章平均质量分 70
qq1712088151
这个作者很懒,什么都没留下…
展开
-
第一个Win32程序
Win32程序的入口为WinMain`函数,是由操作系统调用的。和main()函数不同,WinMain有严格的原型定义,不能改变。其原型如下: int WINAPI WinMain(HINSTANCE hInstance, //当前实例句柄 HINSTANCE hPrevInstance, //前一个实例句柄 LPSTR lpCmdLine, //命令行参数 int nCm原创 2012-03-06 10:47:41 · 731 阅读 · 0 评论 -
通过ADO控件访问数据库示例
下面以Microsoft Office Access数据库为例,讲解通过ADO控件访问数据库的方法。这种方法基本不用编写代码,就可以完成对数据库的访问,非常方便。1、在Access中建立数据库student.mdb,并添加表stu_info,如下图:这里的字段名使用了中文,只是为了教学方便,建议在实际工作中使用英文字段名。2、建立一个MFC对话框工程AdoCtrl。3、在对原创 2012-03-20 09:50:17 · 1079 阅读 · 0 评论 -
通过ADO对象编程访问数据库
通过ADO对象进行数据库开发的基本流程如下:n 初始化COM库CoInitialize(NULL)n 引入ADO库定义文件msado15.dlln 用Connection对象连接数据库n 利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录集进行查询、处理。n 使用完毕后关闭连接释放对象。1、COM库的初原创 2012-03-22 17:07:46 · 638 阅读 · 0 评论 -
使用ADO对象进行数据库开发实例
1、 创建一个MFC对话框工程AdoObject,并设计如下对话框界面。2、关联变量:3、在stdafx.h引入ADO库定义文件,包含头文件。#prgama warning (disable : 4146)#include "icrsint.h"#import "C:\Program Files\Common Files\System\ado\msado15.dll原创 2012-03-22 17:12:28 · 561 阅读 · 0 评论 -
C++构造函数调用顺序
class Y {...}class X : public Y {...}X one;构造函数的调用顺序是下面的顺序:Y(); // 基类的构造函数X(); // 继承类的构造函数对于多基类的情况,下面是一个例子:class X : public Y, public ZX one;构造函数以声明的次序调用。Y(); // 基类构造函数首先被调用Z();原创 2012-04-24 11:17:28 · 607 阅读 · 0 评论 -
结构(struct)
结构是由基本数据类型构成的、并用一个标识符来命名的各种变量的组合。 结构中可以使用不同的数据类型。 1. 结构说明和结构变量定义 在Turbo C中, 结构也是一种数据类型, 可以使用结构变量, 因此, 象其它 类型的变量一样, 在使用结构变量时要先对其定义。 定义结构变量的一般格式为: struct 结构名 {原创 2012-04-25 10:20:40 · 2691 阅读 · 0 评论 -
win32 c++编写系统服务程序
首先先创建一个控制台程序,或者win32程序,都没关系。因为后台服务是看不到界面的。服务程序应具有这样的功能:一个服务主函数,注册服务控制句柄,启动要运行的代码。二是服务控制函数,注册给系统,提供对服务管理程序SCM的响应,就是我的电脑-》管理里面的服务,不是有开始,停止,暂停这些功能么,这个函数就是对这个响应,停止的时候就做退出清理工作,关闭进程。就两个函数而已。一般是Servi原创 2012-04-25 10:21:32 · 1146 阅读 · 1 评论 -
一般函数指针和类的成员函数指针
函数指针是通过指向函数的指针间接调用函数。函数指针可以实现对参数类型、参数顺序、返回值都相同的函数进行封装,是多态的一种实现方式。由于类的非静态成员函数中有一个隐形的this指针,因此,类的成员函数的指针和一般函数的指针的表现形式不一样。1、指向一般函数的指针函数指针的声明中就包括了函数的参数类型、顺序和返回值,只能把相匹配的函数地址赋值给函数指针。为了封装同类型的函数,可以把函数指针作为原创 2012-04-25 10:22:46 · 882 阅读 · 1 评论 -
利用C语言实现计算机图像处理的方法
1.图像平移 图像平移只是改变图像在屏幕上的位置,图像本身并不发生变化。 假设原图像区域左上角坐标为(x0, y0),右下角坐标为(x1, y1),将图像分别沿x和y轴平移dx和dy,则新图像的左上角坐标为(x0 + dx, y0 + dy),右下角坐标为(x1 + dx, y1 + dy)。坐标平移变换公式为: x′ = x + dx y′ = y + dy原创 2012-04-25 10:15:21 · 672 阅读 · 0 评论 -
C++类的继承与多重继承的访问控制
对于单个类来说,讨论保护继承与私有继承的区别意义是不大的,他们的区别只在多级继承的情况中体现。 在这里我声明一下,对于此章节的内容不太适合用过多的文字进行描述,主要还是看例子,通过例子熟悉之间的关系,过多的文字描述会模糊读者思路。 例程如下(重要部分都做了详细说明): //程序作者:管宁 //站点:www.cndev-lab.com //所有稿件均有版权,如要转载,请原创 2012-04-25 10:16:10 · 378 阅读 · 0 评论 -
HTML基础知识:学习掌握HTML 标准属性
HTML标签拥有属性。每个标签的特殊属性均被列于每个标签描述之下。这里列出的属性是通用于每个标签的核心属性和语言属性(有个别例外):核心属性 (Core Attributes)以下标签不提供下面的属性:base、head、html、meta、param、script、style以及title元素。属性值描述classclass_rule or sty原创 2012-04-24 11:11:40 · 456 阅读 · 0 评论 -
顺序表的基本操作用C 语言实现
顺序表的基本操作 void main() { char a[5]={'a','b','c','d','e'}; int n=5; char f='f',b='a',e; SqList sq; InitList(sq); //初始化表 CreateList(sq,a,n); //传入数据 DispList(sq)原创 2012-04-24 11:14:37 · 702 阅读 · 0 评论 -
从java转向C\c++开发要学会些什么
1、继续保持java平台的可移植作风: 尽量使用标准库(顺便学学STL)、开源的东西、条件编译 2、学会忍受引用和指针的混合使用 3、继续保持面向对象的管理方式 4、学会内存管理,不要想象java的内存自管理 5、不要C++\C的网络应用库很丰富,就算有java那么丰富,你的头也会大。所以学会一门脚本语言, 来实现一些对时效没有要求,但对功能有较高要求的网络应用。 6原创 2012-04-24 11:15:22 · 646 阅读 · 0 评论 -
C++程序设计最佳实践
随着计算机语言的发展,我们现在编写一个程序越来越容易了。利用一些软件开发工具,往往只要通过鼠标的拖拖点点,计算机就会自动帮你生成许多代码。但在很多时候,计算机的这种能力被滥用了,我们往往只考虑把这个程序搭起来,而不去考虑程序的性能如何,程序是否足够的健壮。而此节课的目的主要是介绍一些编码的经验,让大家编写的程序更加健壮和高性能。 1、Prefer const and inline to原创 2012-04-24 11:24:23 · 1291 阅读 · 1 评论 -
ADO对象
ADO是一个面向对象的COM组件库,用ADO访问数据库,其实就是利用ADO对象来操作数据库中的数据,所以我们首先要撑握ADO的对象。ADO对象有:l 连接对象(connection):连接对象用于与数据库建立连接,执行查询及进行事务处理。在连接时必须指定使用何种数据库的OLEDB供应者。l 命令对象(Command):可以执行数据库操作命令(如查询,修改,增加和删除)。用命令对象执原创 2012-03-20 09:29:08 · 727 阅读 · 0 评论 -
四种数据库访问技术
l ODBC(Open Database Connectivity)开放式数据库连接,是一种用来在数据库管理系统(DBMS)中存取数据的标准应用程序接口。有ODBC API和MFC ODBC两种开发技术。l DAO(Data Access Object )即数据访问对象集,是Microsoft提供的基于一个数据库对象集合的访问技术。和ODBC一样,他们都是Windows API的一部分原创 2012-03-14 09:29:14 · 1885 阅读 · 1 评论 -
Windows应用程序编程接口------Windows API
在上例中,我们接触了许多以前没见过的函数,如MessageBox, TextOut,CreateWindow, PostQuitMessage等等,这些就是所谓的Windows API函数。Windows操作系统通过两种接口对外提供服务:普通用户操作接口服务和程序员接口服务。其中用户操作接口服务是通过最终用户的操作来完成的,而程序员接口服务是提供一系列底层的实现操作系统最基本的函数(接口)供程原创 2012-03-06 10:50:21 · 1303 阅读 · 0 评论 -
将Win32Class.h文件从工程中移除,实现对WinMain等函数的隐藏。
将Win32Class.h文件移到windows.h所在的同一目录下,然后将#include "Win32Class.h"的引号改成尖括号#include ,工程中就看不到WinMain()等函数了。这就和MFC的情况类似了。然后再添加OnClose和OnCreate消息响应的代码,发现非常简单了。不过,现在的简单是因为我们前面做了大量的封装工作。此时的Win32Class已经和MFC非常原创 2012-03-06 11:03:21 · 336 阅读 · 0 评论 -
从Win32过渡到MFC
一、 开发自己的Win32类库MFC是微软对Win32代码进行封装的一套庞大的类库,如果直接讲解,由于不了解其内部结构和开发思想,学习起来将是非常难于理解的。为了了解MFC是如何封装的,今天我们先来开发一个我们自己的Win32类库。所谓类库,是指一套可以重用的代码,是为了方便以后的开发,将大量固定的、重复的、有规律的代码包装起来,供以后开发时直接调用,而不用再次重写这部分代码;这样就可以将原创 2012-03-06 10:57:40 · 584 阅读 · 0 评论 -
将Win32Lib封装成类(Win32Class)
前面的WinMain工程和Win32Lib工程,都还是全局函数的形式,现在我们来将Win32Lib封装成class,为向MFC过渡埋下伏笔。Win32Lib工程中,我们仅仅是改造了WinProc()这个窗口处理函数,对WinMain()主函数并没有改造。仔细分析WinMain()函数,发现其本质就做了2件事情:一是创建和显示窗口,一是进行消息循环以响应窗口消息。因此,我们的封装思想也是基于这2原创 2012-03-06 11:00:28 · 649 阅读 · 0 评论 -
Win32编程基本概念
1、消息驱动在介绍Windows消息驱动概念之前,我们首先来回顾面向过程的程序结构:main()程序有明显的开始、中间过程和结束点,程序是围绕这个过程编写好相关的子过程,再把这些子过程串联在一起。程序编好以后,该过程也就确定了,程序必须按照规定好的顺序执行:是否需要用户的输入、输入什么、程序取得用户输入以后做什么处理,处理完毕将结果显示给用户。该过程一旦确定,程序的执行过程也是固定的,用户不能原创 2012-03-06 10:42:12 · 566 阅读 · 0 评论 -
优化Win32Class,将不常用的代码移到.h文件中,将常用的代码移到.cpp文件中去。
其中使用MY_MESSAGE_DECLARE和MY_MESSAGE_MAP这2个宏将原本在Win32Class.h文件中的声明消息响应函数和定义消息响应函数数组的代码也移到了Win32Class.cpp文件中。这样,.h文件中都是一些结构性和固定模式的不需要经常改动的内容了,而.cpp文件中的内容就全是需要经常改动、和应用相关的内容,如要再添加新的消息及其响应代码,只需要照葫芦画瓢即可,真正实现了原创 2012-03-06 11:02:15 · 336 阅读 · 0 评论 -
MFC消息映射机制
我们进行了Win32环境下的“消息映射”。其实,通过前面的过程,我们已经不知不觉的接触到了MFC消息映射的核心。MFC环境下的消息映射,其原理和我们讲解过的Win32下的消息映射是类似的。简单地讲,就是让程序员指定要某个MFC类(有消息处理能力的类)处理某个消息。MFC提供了工具 ClassWizard来帮助实现消息映射,在处理消息的类中添加一些有关消息映射的内容和处理消息的成员函数。程序员负原创 2012-03-07 10:08:15 · 369 阅读 · 0 评论 -
手工进行消息映射
上面是使用类向导工具自动进行的消息映射,下面我们通过手工的方式来实现同样的功能,以加深对消息映射的理解。手工映射的主要步骤是:在.h头文件中:声明消息响应函数、声明消息映射。如: afx_msg void OnPaint(); //声明消息响应函数 DECLARE_MESSAGE_MAP() //声明消息映射在.cpp文件中:进行消息映射。如:BEGIN_原创 2012-03-07 10:11:27 · 534 阅读 · 0 评论 -
第一个MFC程序
1、建立一个SDI程序“3SDI”2、介绍SDI程序中的App类,Frame类,View类,Doc类,以及他们之间的相互关系。3、WinMain咋不见了?简单的跟踪执行,理解SDI执行过程。4、在View类的OnDraw中输出”Hello world!”5、事件、消息、虚函数afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);原创 2012-03-08 11:46:52 · 485 阅读 · 0 评论 -
Windows消息分类
Windows消息可以分为以下4类:1、标准消息:即以WM_开头的消息,但WM_COMMAND除外。从CWnd派生的所有类均可接收该类消息。2、命令消息:即以WM_COMMAND 形式出现的消息,如菜单、快捷键、工具条按钮消息都是命令消息。从CCmdTarget派生的类可以接收该类消息。(重温第一天第一个作业Win32自动创建Hello world的代码,其中就有WM_COMMAND的用法原创 2012-03-08 11:47:57 · 401 阅读 · 0 评论 -
MFC类向导工具class wizard用法介绍
可以使用类向导(class wizard)工具来建立消息映射、添加类成员变量和成员函数等。一般类向导生成的代码最好不要手动修改。如对一个菜单项使用类向导进行消息映射:1、点击右键选择class wizard,如下图:2、选择合适的类,要进行映射的资源ID,和要进行映射的消息种类,使他们高亮显示如下图。然后点击Add function按钮,系统为给对应的消息处理函数起名。如果ID名称原创 2012-03-08 11:50:55 · 14223 阅读 · 0 评论 -
GDI编程
一、GDI相关概念1、GDI(GraphicsDevice Interface):图形设备接口,是一个应用程序与输出设备之间的中介。它提供了一套函数库,这些函数在不同的输出设备上输出图形和文字。一方面,GDI向应用程序提供一个与设备无关的编程环境,另一方面,它又以设备相关的格式和具体的设备打交道。2、DC (Device Context):设备描述表(设备上下文),是一种Windows数据原创 2012-03-09 17:32:04 · 1487 阅读 · 0 评论 -
设备描述表DC
Win32下获取DC的API函数有:HDC BeginPaint(HWND hwnd, LPPAINTSTRUCT lpPaint):特定用于WM_PAINT消息HDC GetDC(HWND hWnd):用于获得hWnd参数所指定窗口的客户区域的HDC。HDC GetWindowDC(HWND hWnd):返回hWnd参数所指定的窗口的HDC,包括非客户区,如标题栏、菜单、滚动条,以及原创 2012-03-09 17:34:56 · 857 阅读 · 0 评论 -
菜单
一、菜单1. 新建一个单文档SDI工程1MiniCAD,在原菜单右侧添加“绘图”子菜单:菜单项名热键加速键(快捷键)状态栏提示工具栏图标提示普通模式(&M)\t Ctrl+M退出绘图模式\n普通模式画线(&L)原创 2012-03-13 14:53:23 · 480 阅读 · 0 评论 -
利用C++支持多国语言
本文以emule为例,探讨一下多国语言支持的实现。选择emule,因为它的多国语言支持实现的相当好,可以支持动态切换。而且最关键,它是开源的,可以直接通过源码来研究它的实现技术。 emule是利用动态加载资源DLL来实现多语言切换的,每一个资源DLL中包含了一份对应某一语言的字符串表。在源码的srchybrid\lang 路径上可以发现一个lang解决方案,其中包含了差不多40个项目,每个原创 2012-04-24 11:25:26 · 889 阅读 · 0 评论