孙鑫VC学习笔记
文章平均质量分 85
wdswei
这个作者很懒,什么都没留下…
展开
-
孙鑫VC学习笔记:第十讲画图 创建颜色/字体对话框
画图软件要经常改变当前画笔的颜色,创建一个颜色对话框让用户选择颜色是最方便的;我们也可以弹出一个字体对话框让用户方便地选择要显示的字体。这一节讲一下如何创建颜色对话框和字体对话框。原创 2010-01-04 09:01:00 · 167 阅读 · 0 评论 -
孙鑫VC学习笔记:第十一讲 坐标空间与各种转换的概念
介绍一下坐标空间、逻辑空间、映射方式等概念MicroSoft Windows 下的程序运用坐标空间和转换来对图形输出进行缩放,平移,旋转,斜切和反射。一个坐标空间是一个二维空间,通过使用连个相互垂直并且长度相等的轴来定义二维对象坐标空间API使用四种坐标空间:世界坐标系空间,页面空间,设备空间,和物理设备空间。基于Win32的应用程序运用世界坐标系空间对图形输出进行旋转、斜切或者反射。转载 2010-01-04 09:37:00 · 183 阅读 · 0 评论 -
孙鑫VC学习笔记:第十一讲 如何把元文件保存到文件当中
如何把元文件保存到文件当中1.为“打开”,“保存”添加命令相应函数。2.用 CopyMetaFile 拷贝元文件到指定文件中CopyMetaFile 将windows格式的元文件拷贝到指定的文件当中。首先我们在“保存”命令响应函数OnFileSave()中完成保存元文件到文件的功能,执行之后在项目工程文件夹中增加了一个meta.wmf的文件,用ACDsee可以打开。------------转载 2010-01-04 09:38:00 · 155 阅读 · 0 评论 -
孙鑫VC学习笔记:第十一讲 如何使窗口具有滚动条
如何使窗口具有滚动条?本程序的CGraphicView 类是从View类继承的 class CGraphicView : public Cview首先将基类改成CScrollView class CGraphicView : public CScrollView然后将源文件cpp文件中的CView全部替换成CScrollView在文件中替换字或词的步骤, 从菜单中选择 Edit->Replac转载 2010-01-04 09:40:00 · 241 阅读 · 0 评论 -
孙鑫VC学习笔记:第十讲画图 创建设置画笔的对话框 并且可以预览效果
转载 2010-01-04 09:45:00 · 207 阅读 · 0 评论 -
Windows API函数大全 分类速查
1. API之网络函数WNetAddConnection创建同一个网络资源的永久性连接WNetAddConnection2创建同一个网络资源的连接WNetAddConnection3创建同一个网络资源的连接WNetCancelConnection结束一个网络连接WNetCancelConnection2结束一个网络连接WNetCloseEnum结束一次枚举操作WN转载 2010-01-04 09:02:00 · 115 阅读 · 0 评论 -
孙鑫VC学习笔记:第十八讲 ActiveX 控件
基本概念:容器和服务器程序 容器应用程序时可以嵌入或链接对象的应用程序。Word就是容器应用程序。 服务器应用程序是创建对象并且当对象被双击时,可以被启动的应用程序。Excel就是服务器应用程序。 ActiveX控件不能独立运行,它必须被嵌入容器应用程序中,和容器应用程序一起运行。 --------------------------------------------------------原创 2010-01-04 09:19:00 · 209 阅读 · 0 评论 -
孙鑫VC学习笔记:第十六讲 利用事件对象实现线程间的同步
事件对象基本概念事件对象:事件对象与互斥对象都属于内核对象,事件对象包含一个使用计数,一个用于指明该事件是一个自动重置的事件还是一个人工重置的事件的布尔值,另一个用于指明该事件处于已通知状态还是为通知状态的布尔值。有两种不同类型的事件对象:一种是人工重置的事件,另一种是自动重置的事件。当人工重置的事件得到通知时,等待该事件的所有线程均变为可调度线程;当一个自动重置的事件得到通知时,等待该事转载 2010-01-04 09:22:00 · 194 阅读 · 0 评论 -
孙鑫VC学习笔记:第十六讲 用异步套接字编写聊天程序
基于消息的异步套接字 Windows套接字在两种模式下执行I/O操作,阻塞和非阻塞。在阻塞模式下,在I/O操作完成前,执行操作的Winsock函数会一直等待下去,不会立即返回程序(将控制权交还给程序)。而在非阻塞模式下,Winsock函数无论如何都会立即返回。 Windows Sockets为了支持Windows消息驱动机制,使应用程序开发者能够方便地处理网络通信,它对网络事件采用了基于消息的转载 2010-01-04 09:24:00 · 188 阅读 · 0 评论 -
孙鑫VC学习笔记:第十三讲 设置文档标题
设置文档标题:前面我们讲过如何去修改一个程序的图标(在CMainFrame类中)、光标、背景(在View类中),没有讲如何修改程序的标题(在前面两个类中都修改不了)。方法一: 在程序启动的时候,会调用OnNewDocument创建一个“无标题”文档, 所以我们可以在这个方法中调用CDocument类的SetTitle成员函数修改标题。方法二: 也可以在String Table中修改标转载 2010-01-04 09:33:00 · 249 阅读 · 0 评论 -
孙鑫VC学习笔记:第十三讲 生成可串行化的类
生成可串行化的类:如果要用CArchive来保存一个对象,那么这个对象的类必须支持串行化。要生成一个可串行化的类,需要下面5个步骤:(以生成第11讲中用过的CGraph类为例)1 . Deriving your class from CObject (or from some class derived from CObject). 从CObject派生你的类 class CGraph转载 2010-01-04 09:33:00 · 153 阅读 · 0 评论 -
孙鑫VC学习笔记:第十二讲 读写注册表
修改注册表对注册表的操作是通过几个函数完成的。在注册表中,值包含三个部分:值的名称,值的类型,值的本身即数据使用RegSetValue()向注册表写入数据:注意:RegCreateKey只能建立REG_SZ型数据,要建立其他数据需要调用RegCreateKeyEx使用RegSetValueEx()向注册表写入数据:使用RegQueryValue读取注册表:要获得其他数据类型数据,调用R转载 2010-01-04 09:36:00 · 169 阅读 · 0 评论 -
孙鑫VC学习笔记:第十一讲 图形的保存与重绘方法一
图形的保存和重绘编写画图代码,设定一个标识,在OnLButtonDown中保存鼠标按下去的点,在OnLButtonUp中捕获鼠标弹起的点,利用switch语句分别画图。这是上节课的内容,上节课还讲了窗口重绘的原理,实际上分为两步,首先擦除以前的背景,然后再进行窗口重绘。所以当拖动窗口改变窗口大小时,窗口要发生重绘,首先会擦除以前的背景,于是先前所画图像会消失。解决办法是将画图代码写在OnD转载 2010-01-04 09:37:00 · 222 阅读 · 0 评论 -
孙鑫VC学习笔记:第十讲画图 改变对话框及控件的文字/背景颜色
◆改变对话框及对话框上控件的背景颜色及文字颜色1.增加WM_CTLCOLOR消息处理2.自定义一个画刷m_brush,让WM_CTLCOLOR消息处理函数OnCtlColor返回, 对话框就会用这个画刷去绘制对话框和子控件◆如何改变一个BUTTON的颜色要改变一个BUTTON的颜色,不能像其他控件一样利用OnCtlColor方法,而需要从CButton类派生一个自己的类(CTest转载 2010-01-04 09:00:00 · 192 阅读 · 0 评论 -
孙鑫VC学习笔记:第十二讲 用C语言函数读写文件
C语言中文件写入操作FILE *pFile=fopen("1.txt","w"); //w方式,会销毁打开文件中原先的内容fwrite("I Love You",1,strlen("I Love You"),pFile); //写入数据-------------------------------------------------------------------------------转载 2010-01-04 09:34:00 · 161 阅读 · 0 评论 -
孙鑫VC学习笔记:第十一讲 图形重绘方法三 利用兼容DC
介绍利用兼容DC保存图形与重绘图形的方式1.构造兼容DC对象:CDC m_dcCompatible2.在CGraphicView::OnLButtonUp写下面代码3.在CGraphicView::OnDraw中写入下面代码:CBitmap::CreateCompatibleBitmap 通过指定的宽高创建一个兼容位图。初始化一个与指定设置相兼容的位图 BOOL CreateCompatib转载 2010-01-04 09:38:00 · 173 阅读 · 0 评论 -
孙鑫VC学习笔记:第十二讲 用API函数、CFile类操作文件
用Win32API函数操作文件:1.保存文件 首先用CreateFile 打开文件,然后调用WriteFile将数据写入到文件当中。 2.读取文件 首先用CreateFile 打开文件,然后调用ReadFile读取数据到ch字符数组中。--------------------------------------------------------------------------转载 2010-01-04 09:35:00 · 187 阅读 · 0 评论 -
孙鑫VC学习笔记:第十二讲 用C++函数读写文件
C++读写文件方法在C++中,可以用ofstream类来写入文件,这个类的头文件是 可以用ifstream类来读取文件,ifstream类的用法与ofstream类似转载 2010-01-04 09:35:00 · 191 阅读 · 0 评论 -
孙鑫VC学习笔记:第十三讲 保存可串行化的类对象 如何获取文档与视类指针
如何获取视类指针:1.首先要获得第一个视类对象在视类对象列表中的位置,用GetFirstViewPosition方法virtual POSITION GetFirstViewPosition( ) const; A POSITION value that can be used for iteration with the GetNextView member function. POSIT转载 2010-01-04 09:34:00 · 194 阅读 · 0 评论 -
孙鑫VC学习笔记:第十讲画图 在窗口中贴上位图
要拷贝一张图片到窗口上,可以先用兼容的DC在内存中准备图像,再将图像拷贝到实际DC当中,步骤如下:1.创建位图2.创建兼容DC : CDC dcCompatible; dcCompatible.CreateCompatibleDC(pDC);3.将位图选到兼容DC中4.将兼容DC中的位图贴到当前DC中。窗口绘制分为两个步骤:1.擦除窗口背景, 此时会发送一个WM_ERASE转载 2010-01-04 09:01:00 · 162 阅读 · 0 评论 -
孙鑫VC学习笔记:第十七讲 用命名管道实现进程间的通信
用命名管道实现进程间的通信: 命名管道概念:命名管道是通过网络来完成进程间的通信,它屏蔽了地称的网络协议细节。我们在不了解网络协议的情况下,也可以利用命名管道来实现进程间的通信。命名管道充分利用了Windows NT和Windows2000内建的安全机制。将命名管道作为一种网络编程方案时,它实际上建立了一个客户机/服务器通信体系,并在其中可靠的传输数据。命名管道是围绕W转载 2010-01-04 09:20:00 · 231 阅读 · 0 评论 -
孙鑫VC学习笔记:第十五讲 进程和线程基本概念
程序、进程和线程基本概念——程序和进程程序是计算机指令的集合,它以文件的形式存储在磁盘上。进程:通常被定义为一个正在运行的程序的实例, 是一个程序在其自身的地址空间中的一次执行活动。进程是资源申请、调度和独立运行的单位,因此,它使用系统中的运行资源;而程序不能申请系统资源,不能被系统调度,也不能作为独立的运行的单位, 因此,他不占用系统的运行资源。进程由两个部分组成: 1、操作系统用来管理转载 2010-01-04 09:29:00 · 115 阅读 · 0 评论 -
孙鑫VC学习笔记:第十五讲 线程创建方法
一、创建一个线程创建线程使用CreateThreadThe CreateThread function creates a thread to execute within the address space of the calling process.HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, DWOR转载 2010-01-04 09:29:00 · 110 阅读 · 0 评论 -
孙鑫VC学习笔记:第十五讲 增加互斥条件实现线程同步
增加互斥条件,实现线程同步。一、创建互斥对象 : HANDLE CreateMutex( LPSECURITY_ATTRIBUTES lpMutexAttributes,// 安全性 BOOL bInitialOwner, // flag for initial ownership, LPCTSTR lpName // pointer to mutex-object name )转载 2010-01-04 09:30:00 · 132 阅读 · 0 评论 -
孙鑫VC学习笔记:第十四讲 网络的基本概念
介绍一下网络的基本概念------------------------------------------------------------------------ISO/OSI七层参考模型OSI(Open System Interconnection)参考模型将网络的不同功能划分为7层。应用层--->处理网络应用表示层--->数据表示会话层--->主机间通信传输层--->端到端的连接网络层转载 2010-01-04 09:31:00 · 283 阅读 · 0 评论 -
孙鑫VC学习笔记:第十三讲 用CArchive类读取与保存文件
介绍一种利用CArchive类读取与保存文件的方法: 首先:构造一个CFile对象 然后构造一个CArchive对象, 接着就可以用CArchive对象的">"操作符提取数据 注意:提取数据时应按照保存的顺序提取。转载 2010-01-04 09:32:00 · 130 阅读 · 0 评论 -
孙鑫VC学习笔记:第十三讲 WM_FILE_NEW消息响应原理
WM_FILE_NEW消息响应原理当点击“新建”按钮时,会发送WM_FILE_NEW消息,按照消息响应函数的命名规则,它的响应函数应该叫OnFileNew(),但是在代码中找不到,通过调试发现,当新建按钮时,程序会调用CGraphicDoc::OnNewDocument(),WM_FILE_NEW的消息是如何响应的呢?我们可以在VC++的安装目录下找到一个文件../Microsoft Vi转载 2010-01-04 09:33:00 · 146 阅读 · 0 评论 -
孙鑫VC学习笔记:第十二讲 往win.ini的文件中写入数据
往win.ini的文件中写入数据在实际开发程序时,我们经常要把一些初始化信息写入到一个配置文件中,当程序启动的时候读入这些初始化的信息。早期的软件会将这些信息写入一个叫win.ini的文件中(当然现有很多软件将这些信息写到注册表中)。如果我们也想在win.ini文件中写入信息,可以利用WriteProfileString函数。我们在CFileApp::InitInstance()函数中转载 2010-01-04 09:36:00 · 173 阅读 · 0 评论 -
孙鑫VC学习笔记:第十一讲 图形重绘方法二 利用元文件
介绍两种保存图形与重绘图形的方式第一种,要利用要一个类 CMetaFileDC第一步创建一个CMetaFileDC 对象。接着调用CMetaFileDC 构造器,然后再调用Create 函数 创建一个设备上下文与CMetaFileDC 对象关联起来。下一步给CMetaFileDC 对象发送一系列的CDC命令在为元文件发送完命令之后,调用Close成员函数关闭元文件的设备上下文,并返回一转载 2010-01-04 09:41:00 · 186 阅读 · 0 评论 -
孙鑫VC学习笔记:第二十讲 Hook编程
通过安装Hook过程,可以用来屏蔽消息队列中某些消息The SetWindowsHookEx function installs an application-defined hook procedure into a hook chain. You would install a hook procedure to monitor the system for certain type原创 2010-01-04 08:57:00 · 200 阅读 · 0 评论 -
孙鑫VC学习笔记:第二十讲 ado数据库编程
数据库编程:COM[计] 小型可执行程序的扩展名, 串行通讯端口[域] Commercial organizations,商业组织,公司The Component Object Model组件对象模型ADO的三个核心对象Connection对象Connection对象表示了到数据库的连接,它管理应用程序和数据库之间的通信。Recordest和Co转载 2010-01-04 08:59:00 · 267 阅读 · 0 评论 -
孙鑫VC学习笔记:第十六讲 利用关键代码段实现线程间的同步
关键代码段 1.关键代码段(临界区)工作在用户方式下。 2.关键代码段(临界区)是指一个小代码段,在代码能够执行前,它必须独占对某资源的访问权。利用关键代码段实现线程间的同步的一个实例互斥对象、事件对象与关键代码段的比较 互斥对象和事件对象属于内核对象,利用内核对象进行线程同步,速度较慢, 但利用互斥对象和事件对象这样的内河对象,可以在多个进程中的各个线程间进行同步。 关键代码段时工作在用户方转载 2010-01-04 09:23:00 · 120 阅读 · 0 评论 -
孙鑫VC学习笔记:第十四讲 网络编程
基于TCP服务器端编程步骤//1.加载套接字库//2.创建套接字//3.将套接字绑定到本地地址与端口上//4.设置监听//4.接收服务器端发送的数据,并且向服务器端发送数据//5.关闭套接字,释放资源,并且终止对套接字库的使用基于TCP客户端编程见下面,TCP和UDP编程代码大致相同,不同之处在于,TCP使用send/recv发送与接收数据;UDP使用sendto/recvfrom;转载 2010-01-04 09:31:00 · 147 阅读 · 0 评论 -
孙鑫VC学习笔记:第十三讲 关于释放内存
关于释放内存不管是新建文档还是打开另外一份文档,文档对象都是被重复使用的,我们应该在这个时候去释放先前分配的内存。在打开或者新建一个文档时都会调用Cdocument::OnOpenDocument方法,而这个方法又会调用DeletContents成员函数删除文档数据,该函数在文档被销毁之前或文档被重复使用之前被调用,用来删除对象的数据(但并不消除对象本身),从而确保文档数据是空的。这对于一转载 2010-01-04 09:31:00 · 237 阅读 · 1 评论 -
孙鑫VC学习笔记:第十二讲 介绍常量指针、指针常量,文本、二进制文件
◆指向常量的指针它指向的内容是常量,不能修改;但是指针本身存放的是指针值,可以修改。char ch[5]="list" 这种赋值形式只能在数组定义的同时进行。 常量字符串会自动加上/0,所以字符串长度为五通常,如果想用指针传参,通常会将形参声明的指向常量的指针类型当实参传入之后,形参无法修改实参指向的内容,从而保证了数据的一致性---------------------------------转载 2010-01-04 09:44:00 · 266 阅读 · 0 评论