
Windows API
文章平均质量分 75
一劳永逸
IT宅男
展开
-
API之控件与消息函数
AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小 AnyPopup 判断屏幕上是否存在任何弹出式窗口 ArrangeIconicWindows 排列一个父窗口的最小化子窗口 AttachThreadInput 连接线程输入函数 BeginDeferWindowPos 启动构建一系列新窗口位置的过程 BringWindowToTop 将指定的窗口带至窗口列表顶转载 2007-09-03 09:51:00 · 973 阅读 · 0 评论 -
回调函数的使用(二)
凡是由你设计却由windows系统呼叫的函数,统称为callback函数。某些API函数要求以callback作为你参数之一。如SetTimer,LineDDA,EnumObjects。回调函数是由开发者按照一定的原形进行定义的函数(每个回调函数都必须遵循这个原则来设计)例如:----------------------------------------BOOL CALLBACK Dia原创 2009-10-24 15:54:00 · 631 阅读 · 0 评论 -
回调函数的使用(三)
MSDN文章理解: 实现回调函数1. BOOL EnumWindows(WNDENUMPROC lpEnumFunc, LPARAM lParam)表示此函数需要回调函数的线索之一是存在lpEnumFunc参数.如果参数采用指向回调函数的指针,其名称中通常会有lp(长指针)前缀与Func后缀的结合 22.创建托管回调函数.该实例声明一个名为Callback 委托类型,此委托类型采用两个原创 2009-10-24 15:56:00 · 784 阅读 · 0 评论 -
回调函数的使用(四)
大家都知道对象是数据和方法的封装体。在C++中,它们分别表现为数据成员和成员函数。程序设计者通过执行对象的各种方法,来改变对象的状态(即改变对象的属性数据)。从而使该对象发生某些“事件”。当一对象发生某事件时,它通常需向其它相关对象发送“消息”,请求它们作出一些处理。 这时,发生事件并向其它对象请求处理的对象被称为“事件对象”,而处理事件的对象被称为“回调对象”。回调对象对事件的处理称为“回调函数原创 2009-10-24 15:57:00 · 1024 阅读 · 2 评论 -
VC读写XML文件
MSXML2::IXMLDOMDocumentPtr pDoc; MSXML2::IXMLDOMElementPtr xmlRoot ; // 创建DOMDocument对象 HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40)); if ( ! SUCCEEDED(hr)) {原创 2010-01-15 12:43:00 · 1389 阅读 · 0 评论 -
NTFS解析
据说NTFS是很复杂的文件系统, 想要解析一下, 看了很多资料, 但是也不是官方的.为了备忘记了一下.第一部分:从MBR到NTFS基于古老的bios的PC, 硬盘的第一个扇区是MBR. 基于新的EFI的有所不同, 还没有仔细研究.I386结构也就是下x86支持四个基本分区, 在MBR的offset 0x1bE, 0x1cE, 0x1DE, 0x1EE. 每个分区的数据结构如下:struct partition_dos { unsigned char boot转载 2010-06-27 15:19:00 · 1192 阅读 · 0 评论 -
VC中#Pragma的使用方法(一)
在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 其格式一般为: #Pragma Para 其中Para 为参数,下面来看一些常用的参数。(1)message 参数。 Message 参数是我最喜欢的一个参数,它能够在编译信息输出窗 口中输出相应的原创 2010-07-16 19:47:00 · 907 阅读 · 0 评论 -
VC中#Pragma的使用方法(二)
<br /><br />在编写程序的时候,我们经常要用到#pragma指令来设定编译器的状态或者是指示编译器完成一些特定的动作.<br />下面介绍了一下该指令的一些常用参数,希望对大家有所帮助!<br /> 一. message 参数。<br />message <br />它能够在编译信息输出窗 <br />口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为: <br />#pragma message(“消息文本”) <br />当编译器遇到这条指令时就在编译输出窗口中原创 2010-07-16 19:49:00 · 733 阅读 · 0 评论 -
Windows静态库和动态库的创建和使用
偶们在实际的编程开发中,经常会遇到运行时无法找到某个DLL文件或者链接时无法找到某个LIB文件。然后,我们就开始乱GOOGLE一下,然后将VS2005的设置改变一下,或许就Ok了,我们将别人开发的DLL或者LIB导入到我们的编程中,那么这些lib,DLL到底是什么呢?下面,偶就细细道来。首先,偶们说第一个:静态链接库(Static Libary)偶们用VS2005做一个静态链接库先打开VS2005,新建à项目(staticCai)àWin32控制台应用程序新建static_lib.h 和static_lib原创 2010-07-16 20:37:00 · 32657 阅读 · 12 评论 -
Win32下使用Socket:WinSock
<br />学习socket最好能有两台以上联网的电脑,以及能获得公网IP的网络接入方式。两年前,我主要使用的是一台win2k3和Debain Linux双系统的电脑,例外有台99年的老机器装着win98,而且没有装VC,测试相当的麻烦。现在买了笔记本,使用的是Vista的win32环境(32位),可以直接和老电脑的Linux联网进行测试。另外,网络环境也换成了电信的ADSL,贵了很多,为的就是能有一个公网IP。接下来的教程我会兼顾winsock的代码,这主要是因为winsock本身对socket几乎是兼容原创 2010-07-16 20:17:00 · 2273 阅读 · 0 评论 -
VC操作注册表
<br /><br />注册表的操作,API为我们提供了大约25个函数。他提供了对注册表的读取,写入,删除,以及打开注<br />册表及键值时所有函数,并且可以达到对注册表的备份,连接和对远端注册表进行查看等等。注册表对<br />整个系统十分重要,你在进行操作时,一定要先考虑清楚。这些函数有:<br />RegCloseKey RegConnectRegistry RegCreateKey RegCreateKeyEx RegDeleteKey RegDeleteVale <br原创 2010-07-20 21:56:00 · 4682 阅读 · 1 评论 -
系统区域为非中文(比如英文)的情况下,执行MultiByteToWideChar失败
<br />问题描述: 在wince下,中文字体和环境都设置好,但是系统区域为非中文(比如英文)的情况下,执行MultiByteToWideChar失败 解决过程: 首先是之前使用的方法: UINT WChar2Char(LPCWSTR pwszSrc, LPSTR pszDst) { return WideCharToMultiByte( CP_ACP, 0, pwszSrc, -1, pszDst, MAX_PATH, NULL, NULL ); }转载 2010-08-04 18:38:00 · 1067 阅读 · 0 评论 -
WTL文件选择对话框多文件选择
<br />众所周知,CFileDialog类和CFileDialogImpl类(一个是接口类,一个是实现类)用于显示文件打开和保存对话框,CFileDialogImpl类中最重要的两个成员是m_ofn 和m_szFileName。但是,请注意m_szFileName 是一个TCHAR 数组,用来保存选择的文件名。如果选择了多个文件,他的结构为:<br />路径/0第一个文件名/0第二个文件名/0第三个文件名/0/0<br />多于三个的以此类推。<br />下面是我的一个解析方法:<br /> <br /原创 2011-01-01 01:05:00 · 1308 阅读 · 0 评论 -
VC中如何获取当前计算机中所有逻辑驱动器的数目和盘符
<br /><br />一般都用这两种方法获取本地磁盘盘符: <br />1. GetLogicalDriveStrings方法 <br /> TCHAR buf[100]; <br /> DWORD len = GetLogicalDriveStrings(sizeof(buf)/sizeof(TCHAR),buf); <br /> 从名字上就知道GetLogicalDriveStrings是获得盘符的字符形式 <br /> 这个函数将所有盘符都存在buf原创 2010-11-11 11:08:00 · 2274 阅读 · 0 评论 -
Utf8和Gb2312相互转化的封装
<br />最近遇到需要将中文在utf8格式和gb2312格式之间的转化,写了一个封装类。<br />这个类主要利用iconv函数族编程实现。<br /> <br />/*************************************<br />*头文件 */<br />/**************************************/<br /> <br /><br />#include <iconv.h> <br />#include <iostream> <br /> <br原创 2010-11-15 22:06:00 · 824 阅读 · 0 评论 -
system调用命令行命令而不显示命令行窗口
system调用命令行命令而不显示命令行窗口通常用system调用命令行命令时都会弹出黑底白字的命令行窗口,下面的代码可以不显示弹出的命令行窗口。代码如下view plain#pragma comment( linker, "/subsystem:转载 2011-08-02 22:22:55 · 12354 阅读 · 4 评论 -
vc获取时间函数总结
如何获取时间?精度如何? A:1 使用time_t time( time_t * timer ) 精确到秒 计算时间差使用double difftime( time_t timer1, time_t timer0 )转载 2009-10-24 15:23:00 · 11173 阅读 · 1 评论 -
VC进度条实时显示
当我们在处理大程序时,常常需要耗很长时间,为了不让用户错误的认为系统已经死机,我们要给程序添加进度条,但是大家知道如果就直接添加进度条,并在程序里面控制它的进度,往往得到的结果是程序仍然像死机状态,直到处理完毕才显示进度条进度为100%,中间的过程看不到了,那么怎么办呢,是为什么呢?原因是我们处理大程序和进度条显示是在同一个线程中进行的,这样往往因为处理大程序导致界面无法实时更新。解决办法就原创 2009-10-24 16:29:00 · 15302 阅读 · 30 评论 -
API之位图、图标和光栅运算函数
BitBlt 将一幅位图从一个设备场景复制到另一个 CopyIcon 制作指定图标或鼠标指针的一个副本。这个副本从属于发出调用的应用程序 CopyImage 复制位图、图标或指针,同时在复制过程中进行一些转换工作 CreateBitmap 按照规定的格式创建一幅与设备有关位图 CreateBitmapIndirect 创建一幅与设备有关位图 CreateCompatibleBitmap 创建一幅与转载 2007-09-03 09:52:00 · 619 阅读 · 0 评论 -
API之文本和字体函数
AddFontResource 在Windows系统中添加一种字体资源 CreateFont 用指定的属性创建一种逻辑字体 CreateFontIndirect 用指定的属性创建一种逻辑字体 CreateScalableFontResource 为一种TureType字体创建一个资源文件,以便能用API函数AddFontResource将其加入Windows系统 DrawText 将文本描绘到指定转载 2007-09-03 09:53:00 · 605 阅读 · 0 评论 -
API之进程和线程函数
CancelWaitableTimer 这个函数用于取消一个可以等待下去的计时器操作 CallNamedPipe 这个函数由一个希望通过管道通信的一个客户进程调用 ConnectNamedPipe 指示一台服务器等待下去,直至客户机同一个命名管道连接 CreateEvent 创建一个事件对象 CreateMailslot 创建一个邮路。返回的句柄由邮路服务器使用(收件人) CreateMutex原创 2007-09-03 09:57:00 · 577 阅读 · 0 评论 -
API之菜单函数
AppendMenu 在指定的菜单里添加一个菜单项 CheckMenuItem 复选或撤消复选指定的菜单条目 CheckMenuRadioItem 指定一个菜单条目被复选成“单选”项目 CreateMenu 创建新菜单 CreatePopupMenu 创建一个空的弹出式菜单 DeleteMenu 删除指定的菜单条目 DestroyMenu 删除指定的菜单 DrawMenuBar 为指定的窗口重画菜转载 2007-09-03 09:59:00 · 699 阅读 · 0 评论 -
API之绘图函数
AbortPath 抛弃选入指定设备场景中的所有路径。也取消目前正在进行的任何路径的创建工作 AngleArc 用一个连接弧画一条线 Arc 画一个圆弧 BeginPath 启动一个路径分支 CancelDC 取消另一个线程里的长时间绘图操作 Chord 画一个弦 CloseEnhMetaFile 关闭指定的增强型图元文件设备场景,并将新建的图元文件返回一个句柄 CloseFigure 描绘到一转载 2007-09-03 10:00:00 · 581 阅读 · 0 评论 -
API之硬件与系统函数
ActivateKeyboardLayout 激活一个新的键盘布局。键盘布局定义了按键在一种物理性键盘上的位置与含义 Beep 用于生成简单的声音 CharToOem 将一个字串从ANSI字符集转换到OEM字符集 ClipCursor 将指针限制到指定区域 ConvertDefaultLocale 将一个特殊的地方标识符转换成真实的地方ID CreateCaret 根据指定的信息创建一个插入符(光转载 2007-09-03 10:01:00 · 651 阅读 · 0 评论 -
Windows SDK笔记
Windows SDK笔记(一):Windows程序基本结构一、概述Windows程序具有相对固定的结构,对编写者而言,不需要书写整个过程,大部分过程由系统完成。程序中只要按一定的格式填写系统留给客户的那一小部分。所需要完成的有:窗口类的定义、窗口的建立、消息函数的书写、消息循环。 二、消息处理函数Windows程序是事件驱动的,对于一个窗口,它的大部分例行维护是由系统维护的。没个窗口转载 2008-12-19 11:48:00 · 1339 阅读 · 0 评论 -
接触VC之一:WinSDK
预设目录:第一部分:WinSDK第二部分:MFC类基础,C++程序编写规范介绍第三部分:MFC基于对话框程序第四部分:Dll动态链接库第五部分:COM组件基础第六部分:COM组件几个常用技术:IDispatch,可连接对象.第七部分:COM组件的应用,以及MFC的COM编写第一部分:WinSDK 学习VC已近一年了,回顾我的学习历史真是相当的艰苦。既没有老师教原创 2008-12-19 12:09:00 · 789 阅读 · 1 评论 -
接触VC之三:MFC基于对话框程序
下载本文示例工程(VC.Net版本)最 近,本人赶时髦,装上了一套Visual Studio.net,安装要2213M呢,硬盘上三个盘符总共剩下不足2G的地方了。不过,界面相当的漂亮,且功能强大,值得心慰。我终于可以在类视图 上,尽情去看类的基类,以及基类的实现代码了。不仅如此,最好的是那附带的MSDN上所有的VC基础文章都是中文,翻译的比希望出版社的好得没的说。什么 文档啊,框加窗口啊,多视图啊原创 2008-12-19 12:27:00 · 3371 阅读 · 2 评论 -
WinSock学习笔记(二)
function StorePage(){d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.getSelection?d.getSelection():);void(keyit=window.open(http://www.365key转载 2008-12-19 12:44:00 · 662 阅读 · 0 评论 -
WinSock学习笔记(一)
function StorePage(){d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.getSelection?d.getSelection():);void(keyit=window.open(http://www.365key.com/storeit.a转载 2008-12-19 12:46:00 · 501 阅读 · 0 评论 -
接触VC之四:COM组件模型基础
按照我以前的计划,我应该谈谈我对COM组件模型的认识了。一来可以对自己的学习状况进行总结。二来,请教高手,可以帮忙指出错漏之处。三来,说不定会对初学者们有所帮助。请各位高手多多指正啊.在这里先谢了。 一、动态链接库: 动态链态库是大部分COM组件的承载对象(不要在意ocx,它同样也是dll,只不过改了一下后缀而已)。当然Exe同样也是可以的(TTS中的TextToSpeech对象就是一个转载 2008-12-19 12:48:00 · 757 阅读 · 0 评论 -
__stdcall、__cdecl与__fastcall的区别
function StorePage(){d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.getSelection?d.getSelection():);void(keyit=window.open(http://www.365key.com/storeit.a原创 2008-12-19 12:53:00 · 592 阅读 · 0 评论 -
回调函数的使用(一)
简介 对于很多初学者来说,往往觉得回调函数很神秘,很想知道回调函数的工作原理。本文将要解释什么是回调函数、它们有什么好处、为什么要使用它们等等问题,在开始之前,假设你已经熟知了函数指针。 什么是回调函数? 简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。原创 2009-10-24 15:52:00 · 739 阅读 · 0 评论 -
文件读写时注意的细节问题
目录是否存在检查: BOOL FolderExist(CString strPath){ WIN32_FIND_DATA wfd; BOOL rValue = FALSE; HANDLE hFind = FindFirstFile(strPath, &wfd); if ((hFind!=INVALID_HANDLE原创 2009-10-24 16:26:00 · 832 阅读 · 0 评论 -
tooltip2 与 ctooltipctrl 小结
MFC中有一个CToolTipCtrl类,想必大家都知道,近来我在一个项目中需要在ActiveX Control上为特定的控件或区域添加提示.开始使用CToolTipCtrl,但发现它根本就不工作.无奈,只好自己写了一个类来实现它.该类为CTip(包含CTip.c和CTip.转载 2011-08-24 09:12:13 · 1590 阅读 · 0 评论