随笔分类 - VC
摘要:线程池(本章节中例子都是用 VS2010 编译调试的)线程池编写必须在WindowsVista操作系统(以及以上版本的操作系统)下,且 C++ 编译器版本至少是 VS2008线程池的功能以异步的方式来调用一个函数每隔一段时间调用一个函数当内核对象触发的时候调用一个函数当异步 I/O 请求完成的时候调用一个函数注意当一个进程初始化的时候,它并没有任何与线程池的开销.但是,一旦调用了新的线程池函数,系统就会为进程相应的内核资源,其中的一些资源在进程终止之前都将一直存在.正如我们可以看到,使用线程池的开销取决于用法:系统会以进程的名义来分配线程,其他内核以及内部数据结构.因此我们不应该盲目地使用这些
阅读全文
摘要:作业(本章节中例子都是用 VS2005 编译调试的)参考文献:Windows作业内核事件用途:Windows 提供一个作业对象,它允许我们将进程组合在一起并创建一个"沙箱"来限制进程能做什么.可以将作业想象成一个进程容器.但是,只包含一个进程的作业同样有用,因为这样可以对进程施加平时不能施加的限制.注意:如果进程已与一个作业相关联,就无法将当前进程或者它的任何子进程从作业中除去,这个安全特性可以确保进程无法摆脱对它施加的限制.如果确定在自己的代码中不再访问作业对象,就必须调用 CloseHandle 来关闭它的句柄.但是关闭一个作业对象,不会迫使作业中的所有进程都终止运行.
阅读全文
摘要:目录 内核对象概述互斥对象事件对象可等待的计时器内核对象信号量内核对象内核对象状态速查表保证实例的唯一性(本章节中例子都是用 VS2010 编译调试的)内核对象概述何为内核对象内核对象为一个数据结构且只能被内核访问,因此应用程序无法在内存中找到这些数据结构并直接改变它们的内容.Microsoft 规定了这个限制条件,目的是为了确保内核对象结构保持状态的一致.所以 Microsoft 能自由的添加、删除和修改这些结构中的成员.同时不干扰任何程序正常运行.Windows 提供了一组函数,来对这些结构进行操作.始终可以使用这组函数来访问这些内核对象.当调用一个用于创建内核对象的函数时,该函数就返回一
阅读全文
摘要:目录 Interlocked 系列函数多线程访问共享变量的问题关键代码段/临界资源Slim 读写锁条件变量线程同步(内核对象)线程同步的比较Interlocked 系列函数为何要使用 Interlocked 系列来修改线程共享变量,先看看下面的例子://共享变量 g_xlong g_x = 0;//线程1DWORD WINAPI ThreadFunc1(PVOID pvParam){ g_x++; return 0;}//线程2DWORD WINAPI ThreadFunc2(PVOID pvParam){ g_x++; return 0;}代码中声明了一个全局变量并将...
阅读全文
摘要:目录 CHtmlDialog 对话框与普通对话框的区别事件处理映射宏DDX 宏C++ 与 javaSript 的相互调用CDHtmlDialog 中 html 资源加载 css 样式,js 脚本,图片CHtmlDialog 对话框与普通对话框的区别目前发现了四点(可能还有更多):类的继承关系class CTestHtmlDialogDlg : public CDHtmlDialog//表明此对话框类的确是继承了CDHtmlDialog资源枚举enum { IDD = IDD_TESTHTMLDIALOG_DIALOG, IDH = IDR_HTML_TESTHTMLDIALOG_DIALOG
阅读全文
摘要:目录ODBC 概述 ODBC 数据类型API 函数ODBC 编程(本章节中例子都是用 VS2005 编译调试的,数据库为 SQL Server 2005)ODBC 概述ODBC 概述ODBC(Open Database Connectivity),开放数据库互连.ODBC 是上个世纪八十年代末九十年代初出现的技术,它为编写关系数据库的客户软件提供了一种统一的接口.ODBC 提供一个单一的 API,可用于处理不同数据库的客户应用程序.使用 ODBC API 的应用程序可以与任何具有ODBC驱动程序的关系数据库进行通信ODBC 是为客户应用程序访问关系数据库时提供的一个标准的接口,对于不同的数据库
阅读全文
摘要:目录ODBC 数据类型API 函数 ODBC 数据类型ODBC SQL 数据类型展开显示ODBCSQL数据类型SQL类型标识SQL92类型标识类型描述SQL_CHARCHAR(n)定长字符串,其长度为nSQL_VARCHARVARCHAR(n)变长字符串,最大长度为nSQL_LONGVARCHARLONGVARCHAR变长字符串,最大长度取决于数据源SQL_WCHARNCHAR(n)定长Unicode字符串,其长度为nSQL_WVARCHARVARNCHAR(n)变长Unicode字符串,最大长度为nSQL_WLONGVARCHARLONGWVARCHAR变长Unicode字符串,最大长度取决
阅读全文
摘要:目录控件重绘 系统托盘图标(本章节中例子都是用 VS2005 编译调试的)控件重绘注意:要自绘的控件必须在 Owner Draw 属性上设置为 true,或者用 Create 函数创建控件时候,具备自绘属性(例如 CButton 在用 Create 创建时候需具备BS_OWNERDRAW,CStatic在用 Create 创建时候需具备SS_OWNERDRAW等等)在重绘某个控件时重要结构体:DRAWITEMSTRUCT(MSDN 链接)作用: 为需要自绘的控件或者菜单项提供了必要的信息结构体定义:View Code typedef struct tagDRAWITEMSTRUCT { ...
阅读全文
摘要:(本章节中例子都是用 VS2005 编译调试的)窗口与窗口类关系与窗口类关系 MFC 类窗口类中封装了一个窗口句柄,窗口销毁时候,与之对应的MFC类窗口对象看其生命是否结束,但是MFC类窗口类对象销毁时候,与之对应的窗口一定会被销毁修改程序外观 修改应用程序窗口图标,标题栏在框架类中实现修改应用程序背景与光标(因为视觉类窗口始终覆盖在框架类上) 在视类中实现设置窗口类属性在窗体生成前且窗口类注册前在CMainFrame的PreCreateWindow函数中进行: 第一种 修改函数中传递的CREATESTRUT结构的对象cs,修改cs中的对应属性,便可以达到修改窗体类的对应属性(CREATEST
阅读全文
摘要:目录工具栏 状态栏(本章节中例子都是用 VS2005 编译调试的)工具栏[对话框][单/多文档]相关类: CToolBar , CToolBarCtrl对话框相关函数:创建工具栏: Create加载工具栏: LoadToolBar移动窗口: MoveWindow获得客服区/窗口区域: GetClientRect /GetWindowRect调整和重置窗口客户区的控制栏(工具栏/状态栏)位置: RepositionBars获得请求的窗口对象: GetWindow获得在窗口管理链表中的下个窗口: GetNextWindow设置工具栏按钮和按钮上图像大小: SetSizes设置对话...
阅读全文
摘要:目录插入符 绘制路径(本章节中例子都是用 VS2005 编译调试的)插入符CWnd 插入符相关函数:创建图像插入符: CreateCaret创建插入符: CreateSolidCaret显示插入符: ShowCaret获得 / 设置插入符的位置: GetCaretPos / SetCaretPos编写步骤:代码示例:这里以在对话框里添加插入符为例子,而创建与显示插入符操作相关实现添加在初始化对话框函数中(即 OnInitDialog函数),代码如下:View Code //创建插入符CreateSolidCaret(5,30);//显示插入符ShowCaret();//修改插入...
阅读全文
摘要:目录Tree Control 控件 List Control 控件(本章节中例子都是用 VS2005 编译调试的)Tree Control 控件(MSDN 链接)说明:树形控件是用于构造树形的结构,其中有一个根接点(Root)然后下面有许多子结点,而每个子结点上有允许有一个或多个或没有子结点.在树形控件中每一个结点都有一个句柄(HTREEITEM),同时添加结点时必须提供该结点的父结点句柄(其中根Root结点只有一个,既不可以添加也不可以删除),MFC 中使用 CTreeCtrl 类来封装树形控件的各种操作.树形控件的消息映射使用 ON_NOTIFY 宏.三个重要结构:TVINSERTSTRU
阅读全文
摘要:目录属性页编写总体思路 CPropertySheet 编程Tab Control 控件(本章节中例子都是用 VS2005 编译调试的)属性页编写总体思路大体思想:设置对话框属性页属性:在编写时要注意把对话框资源以下属性设置为对应值属性名 值 System Menu FalseStyle ...
阅读全文
摘要:目录设置对话框背景颜色 常用控件及对应类创建模态/非模态对话框为对话框控件添加关联变量(本章节中例子都是用 VS2005 编译调试的)设置对话框背景颜色[利用OnPaint 来实现修改对话框背景颜色][利用OnCtlColor 实现修改对话框背景颜色]利用OnPaint 来实现修改对话框背景颜色说明: 在窗口重绘时候获得资源 DC 然后FillSolidRect 函数用指定颜色填充整个对话框客户区域来实现修改对话框背景色流程图:代码样例:View Code void CtestDlg::OnPaint(){ if (IsIconic()) { CPaintDC dc...
阅读全文
摘要:目录颜色对话框 字体对话框文件对话框(本章节中例子都是用 VS2005 编译调试的)颜色对话框 CColorDialog[成员变量][成员函数][编写颜色对话框]类成员变量m_cc成员变量作用: 记入选择结果,和对话框初始样式.数据类型: CHOOSECOLOR结构体.CHOOSECOLOR结构的定义如下(MSDN参考链接):View Code typedef struct { DWORD lStructSize; //结构长度HWND hwndOwner; //对话框的拥有窗口HWND hInstance;COLORREF rgbResult; //表示选择结果的样色值COLORRE...
阅读全文
摘要:目录RTTI 运行时类型识别 MFC消息机制消息路由(本章节中例子都是用 VS2005 编译调试的)RTTI 运行时类型识别(内容源自深入浅出MFC,相关宏的知识点链接)类的"类型识别录" CRuntimeClass 类:在介绍动态识别技术时候首先要介绍一个结构,用于记录类的信息.(在 afx.h 头文件中定义)其成员定义与解释如下(MSDN参考链接)Public Methods Name Description CRu...
阅读全文
摘要:目录 套接字概述相关函数套接字编程(本章节中例子都是用 VS2005 编译调试的)相关文献:Socket模型详解(转)Socket通信中的多进程编程实例套接字概述简介(源于维基)Berkeley套接字(也作BSD套接字应用程序接口)刚开始是4.2BSD Unix操作系统(于1983发布)的一套应用程序接口。然而,由于AT&T的专利保护着UNIX,所以只有在1989年Berkeley大学才能自由地发布自己的操作系统和网络库。Berkeley套接字接口,一个应用程序接口(API),使用一个Internet套接字的概念,使主机间或者一台计算机上的进程间可以通讯。 它可以在很多不同的输入/输出
阅读全文
摘要:目录 消息钩子定时器(本章节中例子都是用 VS2005 编译调试的)消息钩子[概述][相关函数][编写消息钩子]概述钩子过程操作系统在传递消息时,将我们感兴趣的消息先传递给HOOK过程,在此函数中进行检查,然后在决定是否放行该消息,就好像逃犯在逃亡时可能会经过许多段路段,为了抓住他,警察要在某些地方设置检查站,以便检查过往的车辆和行人,我们可以把车辆和行人看做是消息,检查站就好像是HOOK过程,如果在摸个检查站发现了这个逃犯,就会把他抓起来,这样就相当于阻止了逃犯的逃亡过程,让他无法在继续逃亡下去了,这个道理和钩子过程是一样的,操作系统将我们感兴趣的消息都交给钩子过程,后者实际就是一个函数,在
阅读全文
摘要:目录 动态链接库概述相关函数动态链接库编程dumpbin工具(本章节中例子都是用 VS2005 编译调试的)动态链接概述说明所谓动态链接,就是把一些经常会共用的代码(静态链接的OBJ程序库)制作成DLL档,当可执行文件调用到DLL档内的函数时,windows操作系统才会把DLL档加载存储器内,DLL档本身的结构就是可执行文件,当程序需求函数才进行链接.通过动态链接方式,存储器浪费的情形将可大幅降低.DLL的文档格式与视窗EXE文档一样——也就是说,等同于32位视窗的可移植执行文档(PE)和16位视窗的New Executable(NE).作为EXE格式,DLL可以包括源代码、数据和资源的多种组
阅读全文
摘要:目录 注册表概述注册表相关函数详解注册表编程(本章节中例子都是用 VS2005 编译调试的)注册表概述概述注册表是windows操作系统中的一个核心数据库,其中存放着各种参数,直接控制着windows的启动、硬件驱动程序的装载以及一些windows应用程序的运行,从而在整个系统中起着核心作用.这些作用包括了软、硬件的相关配置和状态信息,比如注册表中保存有应用程序和资源管理器外壳的初始条件、首选项和卸载数据等,联网计算机的整个系统的设置和各种许可,文件扩展名与应用程序的关联,硬件部件的描述、状态和属性,性能记录和其他底层的系统状态信息,以及其他数据等.数据结构注册表由键(或称"项&qu
阅读全文

浙公网安备 33010602011771号