- 博客(35)
- 收藏
- 关注
原创 回调函数简单应用
1. type void (*PCALLBACK_FN)(void * obj);2.PCALLBACK_FN callback;3.void set_callback_fn(PCALLBACK_FN pcallback) { callback = pcallback; }4.callback("callback_fn");
2009-03-16 15:09:00 370
原创 创建进度条
#include #pragma comment(lib, "comctl32")void PBThreadProc( );hwndPB = CreateWindowEx( 0,PROGRESS_CLASS,NULL,WS_CHILD | WS_VISIBLE, 0,100,500,30,hWnd,(HMENU)0,hInst,NULL);//操作进度条的线程CreateThre
2008-04-16 22:09:00 482
原创 error LNK2019: 无法解析的外部符号
在写程序时如果出现如“error LNK xxxx: 无法解析的外部符号” 错误时,应该想到是不是那个函数的库没有加载。因为是外部的符号,所以去找msdn中找相关的函数在那个头文件中,用的是那个静态库。如:错误 2 error LNK2019: 无法解析的外部符号 __imp__InternetCloseHandle@4,该符号在函数 "void __cdecl download(void
2008-04-10 16:28:00 4716 2
原创 获得ListView中Item的值
TCHAR wszText[MAX_STRING]={/0}; list list1; int iItemCount = ListView_GetItemCount(hListViewCtrl); for(int i=0; i { ListView_GetItemText(hListViewCtrl, 0, i, wszText, MAX_STRING-2);
2008-04-09 16:46:00 945
转载 字符、字符串、常用类型转换简介
1 简介在开发过程中,我们常常会遇到ASCII、Unicode以及MBCS等不同类型的字符串,而且还需要经常进行转换操作。本文先介绍字符的编码方式、各种基本字符串类型,然后说明相关的帮助类,如CComBSTR、_bstr_t、CString和basic_string等,最后讨论在它们之间以及和其他的数据类型的转换方法。 2 ANSI、MBCS与UNI
2008-04-02 18:03:00 3401 1
原创 列表视图控件
本课中我们将学习如何创建和使用列表视图控件。 理论:列表视图控件和树型视图、丰富文本编辑控件一样是通用控件的一种。可能您都已经知道了列表视图控件,只不过是不知道它的确切名字而已。列表视图控件可以用来很好地显示项目。在这方面它和列表框相同,只不过它的性能更强。有两种方法创建一个列表视图控件。第一种也是最简单的方法是:用资源编辑器来创建它。用该种方法只是不要忘记在您的代码(的任何位置处)加入对Init
2008-03-18 14:29:00 621
转载 男女情感,致所有已婚或未婚的朋友
这是篇很好的文字 如果你暂时没有时间细细品味 也请你在有时间的时候将自己的心沉淀下来 用心地看一看 ~*~*~*~*~*~*~*~ 单身,有时不一定是贵族。 单身也许会比较自由,但自由也有一个同义词,叫作寂寞。 因为人不是什麽时候都喜欢一个人独处的;有时好东西需要跟人分享,有时候难过需要人安慰。 单身贵族产生的原因。 是因为经济上的独立;人格上的独立以及感情上的独立。 独立是什么?
2007-11-30 21:43:00 508
转载 追根究底,剖析MFC六大关键技术(第一部分)
追根究底,剖析MFC六大关键技术题外话:我并不认为MFC减轻了程序员们的负担,MFC出现的目的虽然似乎是为了让程序员不用懂得太多就可以进行视窗编程,但本人在MFC里徘徊了很久很久(因为那时没有书本详细介绍MFC的原理),毫无收获。可能朋友们会说,怎么一定要了解MFC的具体呢,“黑箱”作业不行吗?这不是微软的初衷吗?不行!!!如果这样,我宁愿永远不选择MFC!在学电脑之前,本人学习的东西大都与艺术不
2007-08-16 22:26:00 468
转载 追根究底,MFC六大关键技术之剖析(第二部分)
追根究底,MFC六大关键技术之剖析(第二部分)小李先生二、运行时类型识别(RTTI)运行时类型识别(RTTI)即是程序执行过程中知道某个对象属于某个类,我们平时用C++编程接触的RTTI一般是编译器的RTTI,即是在新版本的VC++编译器里面选用“使能RTTI”,然后载入typeinfo.h文件,就可以使用一个叫typeid()的运算子,它的地位与在C++编程中的sizeof()运算子类似的地方(
2007-08-16 22:25:00 381
转载 追根究底,MFC六大关键技术剖析(第三部分)
三、动态创建动态创建就是运行时创建指定类的对象,在MFC中大量使用。如框架窗口对象、视对象,还有文档对象都需要由文档模板类对象来动态的创建。我觉得这是每个MFC的学习者很希望理解的问题。初次接触MFC的时候,很容易有这样的迷惘。MFC的几大类不用我们设计也就罢了,但最疑惑的是不用我们实例化对象。本来最直观的理解就是,我们需要框架的时候,亲手写上CFrameWnd myFrame;需要视的时
2007-08-16 22:23:00 401
转载 让“动态创建”、“静态创建”、“动态内存分配”、“动态联编”真相大白
前天发表的《MFC六大关键技术之剖析(三)》后,就遇到不少朋友的提问。而这些问题都让我很惊讶——不知问的是什么?后来我算是明白了,因为有一个朋友问:“为了动态创建对象,要干那么多的事情吗?究竟怎样才算动态创建对象?”我知道了他还没有弄懂在MFC中动态创建的含义。在MFC的动态创建,比我们平时用new动态分配内存有着更深一层的意义。MFC的动态创建是在程序运行之后,在程序并未预测到将会获得什么样
2007-08-16 22:22:00 638
转载 MFC六大关键技术(第四部分)——永久保存(串行化)
MFC六大关键技术(第四部分)——永久保存(串行化)先用一句话来说明永久保存的重要:弄懂它以后,你就越来越像个程序员了!如果我们的程序不需要永久保存,那几乎可以肯定是一个小玩儿。那怕我们的记事本、画图等小程序,也需要保存才有真正的意义。对于MFC的很多地方我不甚满意,总觉得它喜欢拿一组低能而神秘的宏来故弄玄虚,但对于它的连续存储(serialize)机制,却是我十分钟爱的地方。在此,可
2007-08-16 22:16:00 538
转载 MFC六大关键技术之(五)(六)——消息映射与命令传递
MFC六大关键技术之(五)(六)——消息映射与命令传递题外话:刚开始学视窗程序设计的时候,我就打印了一本Windows消息详解,里面列举了各种已定义消息的意义和作用,共10多页,在编程的时候翻翻,有时觉得很受用。我发觉很多编程的朋友,虽然每天都面对消息,却很少关注它。C++程序员有一个通病,很想写“自己”的程序,即每一行代码都想自己写出来。如果用了一些库,总希望能完全理解库里的类或函数是怎么一
2007-08-16 22:14:00 1004 1
原创 extern 有关解析
2007年7月12日星期四 19:00 - 2007年7月14日星期六 0:30 (ver:0.01)在对extern这个关键字没有讲解之前,我们先来了解一下C++的编译器和链接器的基本工作原理。C++的编译器是对文件为单位进行语法的编译,并生成依文件为名字.obj文件,而链接器是把全部.obj文件整合为一个文件的范围进行链接,生成目标文件的。现在我们对编译器和链接器有了个大
2007-08-16 10:36:00 532
原创 Window 编程之句柄篇
这篇文章是我在学习的时候为了以后忘记所以把当时的理解记录下来。一定有不正确的地方,所以仅供参考。我们初学VC++是经常遇到一些我们在标准C++中没有的数据类型,如句柄,消息。 句柄:我们先看看Winnt.h有关句柄的定义。#ifdef STRICT typedef void *HANDLE; #define DECLARE_HANDLE(name)
2007-08-16 10:35:00 1293
原创 各种类型在xp系统中占用的字节数
我们用sizeof来测试各种类型在xp系统中的字节数。.char 型是1个字节short型是2个字节.int 型是4个字节.float 型是4个字节.long 型是4个字节.double 型是8个字节一般指针类型是4个字节。一般数组是按它自身类型的位数×数组的位数,如:int I[] = {1,2,3} 那个I就是12个字节。指针数组是按指针自身的位数×数
2007-08-16 10:31:00 578
原创 VS 2005 中关于编译时使用那种字符集问题
error C2664: MessageBoxW 有一个项目,开始的时候可以正常运行,在重装系统以及重装VC之后,出现下面的错误, error C2664: MessageBoxW : cannot convert parameter 2
2007-08-15 21:20:00 680
转载 有一种爱,叫做放弃
老鼠對貓說:我愛妳! 貓說:你走開! 老鼠留下一滴淚走了.! 誰都鈈絵想到.老鼠走後.. 貓也留了一滴淚!其實有鍾愛叫做放棄! _____________________________________________________________________有一种爱,叫做放弃。 当你不再爱我,当爱你已成为你的负担,当相爱已是一种痛
2007-08-15 20:31:00 473
转载 Windows数据类型探幽(3)
续表 POINTER_32 void * void *→POINTER_32 32位指针(详解略) POINTER_64 voi
2007-07-20 12:03:00 567
转载 Windows数据类型(2)
续表 INT int * int→INT 32位有符号整数 INT_PTR int(_W64 int即__w64 int)
2007-07-20 11:59:00 671
转载 Windows数据类型(1)
Windows数据类型(一) 由微软Windows操作系统所支持的各种数据类型是用来定义函数的返回值、函数和消息的参数以及结构体成员(因为Win32程序是用C语言来编写,所以没有“类”这个概念)的。这些数据类型定义了上述元素的尺码(在内存中的,也就是占用内存的字节数)和含义。笔者以前一直不太注意这些东西,结果在程序设计时可谓步履维艰。不同类型的常/变量,在程序用扮演的角色相去甚远,了解
2007-07-20 11:57:00 983
转载 Unix/Linux环境下的Socket编程
网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。 Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。常用的Socket类型有两种:流式Socket (SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,
2007-06-04 13:48:00 634
转载 WDM驱动程序入门(1)——HelloWDM
WDM驱动程序是一种很新的东西,相信很多人都跟我一样,对它很感兴趣,但是又找不到学习的切入点。究其原因,还是因为WDM是一种非常“死板板”的程序,它一运行就是工作在系统的底层RING 0处,提供各种接口给应用程序调用。也正因为如此,它不像普通的应用程序一样,可以很快地上手——更多的时候,你是在阅读它的技术资料和各种接口信息,你还要非常地熟悉系统底层的工作原理,否则一个不小心,就“蓝屏”了,呵呵——
2007-01-13 18:14:00 754
转载 Hello World - WDM驱动程序入门 安装步骤
DDK分为98 DDK和2000 DDK两种,它们工作起来是大同小异的,不过有些驱动程序只能在2000 DDK中使用。由于Win98注定是一种即将被淘汰的操作系统了,所以我也不打算介绍如何在98 DDK中进行编译,以下的所有内容都是针对2000 DDK的。·准备工作1、确定你已经安装了Visual C++2、安装2000 DDK3、安装2000 DDK成功后,在“开始”->“程序”里应该有“Dev
2007-01-13 18:10:00 1607
转载 在VC中利用Makefile工程编译DDK驱动
相信很多朋友都为VC不能直接编译DDK程序而苦恼吧!所以有的就直接在MSDOS窗口中或者用单独的一个批处理文件来编译,但总是繁琐,偶也为此大伤脑筋过,最近终于找到这个比较方便的办法,将VC本身和批处理完美地结合在一起了。唯一的缺点就是编译出错时双击信息行不能自动跳转到出错行。场面话就不说了,赶紧来Look一下吧!方法如下:1 先写好一个批处理文件,取名为test.bat,内容如下:@echo
2007-01-13 18:00:00 1275
转载 解析INF文件
相信朋友们对驱动程序的作用和安装应该不会陌生,但INF文件与驱动程序究竟有何关系呢?其实,INF是Device Information File(设备信息文件)的简称,设备管理器通过读取相应的INF文件来安装驱动程序,其中记录了驱动程序安装的所有操作,包括复制文件到指定路径、添加或修改注册表、加载系统服务等,而实际的驱动程序则存放在sys、dll、vxd等文件中。 INF文件的构成 在C:
2007-01-13 17:55:00 1011
转载 驱动开发起步
看了近半个月的书,有了一小点的进步。主要是熟悉了一下驱动开发的环境和配置,USB的协议传输等等。下面是这段时间的体会。以开发一个简单的"hello world"为例。1、先装VC,然后装DDK,我装的是2000DDK,这个顺序不要弄反。2、配置好环境(1)在setting->link->libary modules添加ntoskrnl.lib hal.lib usbd.lib wdm.li
2007-01-13 17:54:00 958
转载 编译第一个WDM程序,菜鸟不可耻
学习和编写WDM 驱动程序对谁而言都是一件具有挑战的事情,需要恒心和毅力。当你入门后你会发现这是一件多么令人兴奋的事情。但是如何使用WDM的编译环境从而开始WDM学习的旅程?对一个初学者来说这个门槛可不低。安装完DDK后,可以用 [开始]->[Development kit]->[Windows XX DDK]->[check/free Build Environment]来启动编译环境,由于DD
2007-01-13 17:52:00 935
转载 驱动开发——安装
作为一个完整的例子,你开发出来驱动还必须要能安装。所以下面我讲一下安装。如果前面的编译过程没有错误的话,现在我们应该已经得到了一个HelloWDM.sys文件,假设它是放在D:/HelloWDM/objfre/i386中。安装WDM驱动程序可以用两种方法,一种是利用注册表,还有一种是利用INF文件。我们一般是采用INF文件(这是微软推荐的)。INF文件可以在 WINNT/INF 目录中找到很多
2007-01-13 17:50:00 757
转载 Visual Studio构造WDM设备驱动程序(下)
3.2 makefile文件 makefile文件激活DDK inc目录中的标准构造文件makefile.def。WdmTest项目的makefile文件如下: !INCLUDE $(NTMAKEENV)/makefile.def3.3 MakeDrvier.bat文件 MakeDrvier.bat是一个批处理文件,它将调用DDK的setenv命令。setenv.bat文件存在于
2007-01-13 17:44:00 1243
转载 Visual Studio构造WDM设备驱动程序(上)
WDM(Win32 Driver Model),即Win32驱动程序模型,是Microsoft力推的全新驱动程序模式,旨在通过提供一种灵活的方式来简化驱动程序的开发,在实现对新硬件支持的基础上减少并降低所必须开发的驱动程序的数量和复杂性。 目前,用于WDM驱动程序开发的主要工具是Microsoft公司提供的DDK(Driver Development Kit),其中包含许多内核态函数及数
2007-01-13 17:43:00 840
转载 驱动开发——编译正传
我在前面也讲过了一些关于编译环境及工具的。在这里结合本例子我再说一下:DDK分为98 DDK和2000 DDK两种,它们工作起来是大同小异的,不过有些驱动程序只能在2000 DDK中使用。由于Win98注定是一种即将被淘汰的操作系统了,所以我学习的时候也没有过多的关注,我用的是2000的DDK,所以以下的所有内容都是针对2000 DDK的。·准备工作1、确定你已经安装了Visual C++2、
2007-01-13 17:42:00 744
转载 NT DDK的安装以及设备驱动程序的编译
作者:程序员客栈提交者:eastvc 发布日期:2003-10-19 20:01:54原文出处:http://www.driverdevelop.com/经常有人问及如何安装DDK,如何编译第一个设备驱动程序以及如何消除掉编译驱动程序 时出现的大量错误信息. 其实, DDK的安装和驱动程序的编译是很简单的. 为了编译驱动程 序, 你必须首先打开一个DOS窗口, 并正确设置好所需的全部环境变量
2007-01-13 17:41:00 1891 1
转载 DriverStudio3.2和2003DDK配合VisualStudio使用时配置方法
DriverStudio3.2和2003DDK配合VisualStudio使用时配置方法1 完全安装DDK/IFSKIT情况下,无需多余的配置2 没有安装64位支持情况:找到DS安装目录下的Common,有批处理文件runbuild.bat,增加goto 2003DDKset DDKBUILDENV=if EXIST %BASEDIR%/bin/build.exe goto
2007-01-13 16:26:00 2245
转载 使用DriverStudio开发WDM设备驱动程序入门
编者按:本文的内容主要由DriverStudio的随机文档翻译整理而来。本文的读者最好有以下软件:DriverStudio2.5,Visual Studio6.0,以及Windows 2000 DDK。本文假设你已安装了这些软件。DriverStudio2.5可在驱动开发网(www.Driverdevelop.com)下载到测试版,Windows 2000 DDK可在微软的网站免费下载,Visua
2007-01-13 16:15:00 1442
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人