随笔分类 - Win32
摘要://删除文件或者文件夹bool DeleteFile(char * lpszPath){SHFILEOPSTRUCT FileOp={0};FileOp.fFlags = FOF_ALLOWUNDO | //允许放回回收站 FOF_NOCONFIRMATION; //不出现确认对话框FileOp.p...
阅读全文
摘要:今天第一次用CListCtrl控件,遇到不少问题,查了许多资料,现将用到的一些东西总结如下: 以下未经说明,listctrl默认view 风格为report 相关类及处理函数 MFC:CListCtrl类 SDK:以 “ListView_”开头的一些宏。如 ListView_InsertColumn
阅读全文
摘要:本文背景:在编程中,很多Windows或C++的内存函数不知道有什么区别,更别谈有效使用;根本的原因是,没有清楚的理解操作系统的内存管理机制,本文企图通过简单的总结描述,结合实例来阐明这个机制。本文目的:对Windows内存管理机制了解清楚,有效的利用C++内存函数管理和使用内存。本文内容:本文一共有六节,由于篇幅较多,故按节发表。其他章节请看本人博客的Windows内存管理及C++内存分配实例(一)(二)(三)(五)和(六)。4. 内存管理机制--内存映射文件 (Map) 和虚拟内存一样,内存映射文件可以用来保留一个进程地址区域;但是,与虚拟内存不同,它提交的不是物理内存或是虚拟页文件,而是
阅读全文
摘要:MFC下按钮自绘的实现(一) 在MFC下编程,很多时候对于标准的按钮控件不是很满意,想要弄的美观点。这就需要按钮自绘。这里简单记录一下方法,以免过个十天半个月的,自己又忘的一干二净了。 首先给工程添加一个MFC类,基类为CButton。要想让按钮具备自绘功能,就要为按钮添加BS_OWNERDRAW属
阅读全文
摘要:一般应用:设置属性: Auto Buddy(自动取关联控件为TAB顺序前一个)Set Buddy Interger(使控件设置关联控件数值,这个值可以是十进制或十六进制)Wrap(数值超过范围时循环)Arrow keys(当按下向上和向下方向键时,控件可以增加或减小)OnInitDialog函数中设
阅读全文
摘要:#include "stdafx.h"#include #include #pragma comment(lib, "Shlwapi.lib")int _tmain(){ TCHAR szPath[MAX_PATH]; if(S_OK==SHGetFolderPath(NULL, CSIDL_PERSONAL|CSIDL_FLAG_CREATE, NULL, 0, szPath)) { //PathAppend(szPath, TEXT("New Doc.txt")); //HANDLE hFile = CreateFile(szPa
阅读全文
摘要:Download demo project - 15.7 KbContentsIntroductionVirtual listCreating a virtual listAdd items to the listHandling the LVN_GETDISPINFO messageHandling the LVN_ODFINDITEM messageHandling the LVN_ODCACHEHINT messageChanging an itemCheck boxesNotesHistoryIntroductionLet's say you have a large data
阅读全文
摘要:http://technet.microsoft.com/zh-CN/sysinternalshttp://technet.microsoft.com/en-us/sysinternals/bb896647我们利用debugView 命令可以自动生成log文件,而且是atomic。cmd -h就可以看到了。用ShellExeccute从codeProject 搜索debugview刚找到一些 http://www.codeproject.com/Articles/13345/DbMon-NET-A-simple-NET-OutputDebugString-capturerhttp://www.
阅读全文
摘要:#include "stdafx.h"void dump_machine_info( HANDLE fh ){ CHAR Str[MAX_PATH*3]; CHAR MHzStr[64]; CHAR CpuId[MAX_PATH]; CHAR VendorId[MAX_PATH]; TCHAR RegPath[MAX_PATH]; ULONG i; HKEY hKey; ULONG MHz; DWORD t; ULONG l; MEMORYSTATUS ms ; for(i=0; i<128; i++) { wsprintf(RegPath, _T("HAR
阅读全文
摘要:在Win32中自带了一些API函数,它们提供了相当于一般调试器的大多数功能,这些函数统称为Win32调试API(Win32 Debug API)。利用这些API可以做到加载一个程序或捆绑到一个正在运行的程序上以供调试;可以获得被调试的程序的底层信息,例如进程ID、进入地址、映像基 址等;甚至可以对被调试的程序进行任意的修改,包括进程的内存、线程的运行环境等。简而言之,读者可以用这些API写一个进程调试器。就像现在流行的调试器Visual C++调试器、WinDBG、OllyDbg等一样。当然除了能写调试器外,利用调试API还能做很多不同寻常的工作。3.1 Win32调试API原理3.1.1调试
阅读全文
摘要:在应用程序和调试器之间传递数据是通过一个 4KB 大小的共享内存块完成的,并有一个互斥量和两个事件对象用来保护对他的访问。下面就是相关的四个内核对象:对象名称对象类型DBWinMutexMutexDBWIN_BUFFERSection (共享内存)DBWIN_BUFFER_READYEventDBWIN_DATA_READYEvent互斥量通常一直保留在系统中,其他三个对象仅当调试器要接收信息才出现。事实上 - 如果一个调试器发现后三个对象已经存在,它会拒绝运行。当 DBWIN_BUFFER 出现时,会被组织成以下结构。进程 ID 显示信息的来源,字符串数据填充这 4K 的剩余部分。按照约定,
阅读全文
摘要:最近面试的许多公司都询问关于多线程的问题,但是问的深度一般不会很难,仅仅问相关的同步问题以及对应的API函数,下面是windows下几个常用的同步方法,对于应付帮助或者一般的开发都非常有用目录一 临界区二 互斥体三 事件四 信号量五 附录一 临界区临界区的使用在线程同步中应该算是比较简单,说它简单还是说它同后面讲到的其它方法相比更容易理解。举个简单的例子:比如说有一个全局变量(公共资源)两个线程都会对它进行写操作和读操作,如果我们在这里不加以控制,会产生意想不到的结果。假设线程A正在把全局变量加1然后打印在屏幕上,但是这时切换到线程B,线程B又把全局变量加1然后又切换到线程A,这时候线程A打印
阅读全文
摘要:/* For sockaddr_in */#include <netinet/in.h>/* For socket functions */#include <sys/socket.h>/* For gethostbyname */#include <netdb.h>#include <unistd.h>#include <string.h>#include <stdio.h>int main(int c, char **v){ const char query[] = "GET / HTTP/1.0\r\n&q
阅读全文
摘要:#include "stdafx.h"#include <stl_h.hpp>#include <CInitSocket.hpp>#include <winsock2.h>#include <ws2tcpip.h>#pragma comment(lib,"ws2_32.lib")CInitSocket init;using namespace std;int main(int argc, char **argv){ char *ptr,**pptr; struct hostent *hptr; char s
阅读全文
摘要://使用标准C语言的time函数,可以满足一般性需要#include <time.h>#include <stdio.h>int main( void ){time_t t = time( 0 );char tmp[64];strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t) );puts( tmp );return 0;}//GetLocalTime获取当前系统时间,精确到微妙级#include <windows.h>#include <s
阅读全文
摘要:ListCtrl在工作中,常常用到,也常常看到大家发帖问怎么用这个控件,故总结了一下自己的使用经验,以供参考使用。 先注明一下,这里,我们用m_listctrl来表示一个CListCtrl的类对象,然后这里我们的ListCtrl都是report形式,至于其他的如什么大图标,小图标的暂时不讲,毕竟report是大众话的使用。其次,我们这里用条款一,条款二来描述第一点,第二点,这个是参照《Effective C++》的叫法,俺觉得这么叫比较COOL :) 条款一:设置ListCtrl的风格 在CSDN上常常看到有人问怎么设置风格的,他们ListCtrl的样子是一个列表,有横条和竖条分界线,然后选.
阅读全文
摘要:本文主要介绍了 OpenSCManager、CreateService、OpenService、ControlService、DeleteService、 RegisterServiceCtrlHandler、SetServiceStatus、StartServiceCtrlDispatcher等操 作服务程序的主要几个API的用法,具体的函数参数大家可以查阅MSDN。为什么要使用服务应该程序呢?服务程序就像系统的一些服务一样,能够自动地启动,并执行相应的操作;而且因为服务程序的在层次上和一般的应用程序不同,其 能够在系统启动时就自动地运行,而不像一般的应用程序那样一定要在登陆后才能运行,这些
阅读全文
摘要:第一部分为位图文件头BITMAPFILEHEADER,是一个结构,其定义如下:typedef struct tagBITMAPFILEHEADER {WORD bfType;DWORD bfSize;WORD bfReserved1;WORD bfReserved2;DWORD bfOffBits;} BITMAPFILEHEADER; 这个结构的长度是固定的,为14个字节(WORD为无符号16位整数,DWORD为无符号32位整数),各个域的说明如下:bfType指定文件类型,必须是0x424D,即字符串“BM”,也就是说所有.bmp文件的头两个字节都是“BM”。bfSize指定文件大小,包括
阅读全文