代码改变世界

VC中添加WM_DEVICECHANGE消息(经典)

2011-10-31 12:53 by 捣乱小子, 14826 阅读, 1 推荐, 收藏, 编辑
摘要:在mfc添加WM_DEVICECHANGE不像添加WM_MOUSEMOVE(举例)等等那样直接鼠标点击之后就自动添加。当中是有封装WM_DEVICECHANGE消息的(CWnd::OnDeviceChange),括号里的东西就是msdn里面的东西,就是说CWnd是有这个函数的。在开发的时候,我们不得不手动添加,而不是用IDE的自动添加功能。所以如果不了解mfc的消息机制的话,看起来会比较晦涩。入主题。①添加消息映射BEGIN_MESSAGE_MAP(CFileCopyDlg, CDialog)……ON_WM_DEVICECHANGE()……END_MESSAGE_MAP()②在窗口类当中添加消 阅读全文

win32 又一个经典爽歪歪的api,太强大了SHGetFileInfo

2011-10-29 23:27 by 捣乱小子, 1055 阅读, 1 推荐, 收藏, 编辑
摘要:今天突发奇想在将来学会(从事)桌面软件的设计,因为在windows下桌面的快捷便利性是很受到众多网友们的爱戴的,而且一款好的桌面软件能给常年工作于计算机的友友们带来不可忽略的效率,甚至可以赏心悦目,让大家都爱不释手的。如果软件很臃肿,除非很多的用户对其有特别的依赖性,不然它很快会被大众埋没。不废话了,直接如题。SHGetFileInfo是一个非常实用的api。DWORD_PTRSHGetFileInfo(LPCTSTRpszPath,DWORDdwFileAttributes,SHFILEINFO*psfi,UINTcbFileInfo,UINTuFlags);参数一是文件的路径不解释三是结构 阅读全文

win32系统托盘图标,对vc编程很有帮助

2011-10-27 19:32 by 捣乱小子, 2352 阅读, 0 推荐, 收藏, 编辑
摘要:很不错的一个例子,对理解系统托盘很有帮助,以后实验用得着的。#include <windows.h>#define IDR_PAUSE 12#define IDR_START 13/*#include <shellapi.h>#pragma comment(lib, "shell32.lib") */LPCTSTR szAppName = TEXT("服务程序");LPCTSTR szWndName = TEXT("服务程序");HMENU hmenu;//菜单句柄LRESULT CALLBACK WndPro 阅读全文

win32的时间api

2011-10-24 21:08 by 捣乱小子, 1186 阅读, 0 推荐, 收藏, 编辑
摘要:在时间函数当中会用到两个比较常用的函数,GetSystemTime和GetLocalTime,其中前者是得到格林威治时间,后者是得到当地的时间,大家知道格林威治时间是世界标准时间,我们国家用的是北京时间,而北京在在东八区,自然要加八个小时。在一些软件日志和数据录入(比如销售详明)都会调用时间函数。 不说那么多,直接上代码: #include <windows.h>#include <std... 阅读全文

win32GDI函数BitBlt

2011-10-19 20:36 by 捣乱小子, 3934 阅读, 0 推荐, 收藏, 编辑
摘要:今天又充电了。 平时输出文字一般都是用textout或者drawtext。而今天遇到绘制绘图的问题,但是这个不能顾名思义的说直接在客户区draw就可以了,win32有特俗的处理方法。 要在一个设备环境中绘制位图,我们不能直接话,按msdn里面的说法,我们要创建一个与当前设备环境相兼容的另一个设备环境;将位图选入新创建的设备环境后,再调用bitblt函数来显示位图,bitblt就实现了将位图... 阅读全文

在测试第一个动态链接库的时候遇到的GetTextExtentPoint()

2011-10-18 19:08 by 捣乱小子, 1071 阅读, 0 推荐, 收藏, 编辑
摘要:在vs2008测试第一个动态链接库的项目,很久以前就对动态链接库感兴趣,因为他可以让可执行程序变的小一点,减轻程序的负担。.h的代码#ifdef __cplusplus#define EXPORT extern "C" __declspec (dllexport)#else#define EXPORT __declspec(dllexport)#endifEXPORT BOOL CALLBACK EdrCenterTextA(HDC,PRECT,PCSTR);EXPORT BOOL CALLBACK EdrCenterTextW(HDC,PRECT,PCWSTR);#ifd 阅读全文

win32可以自定义消息

2011-10-16 21:08 by 捣乱小子, 3704 阅读, 1 推荐, 收藏, 编辑
摘要:#include <windows.h>#include <process.h>#include <math.h>#define CLSNAME "Bigjob1"#define WNDNAME "yanshi"#define REP 1000000#define STATUS_READY 0#define STATUS_WORKING 1#define STATUS_DONE 2#define WM_CALC_DONE (WM_USER+0)#define WM_CALC_ABORTED (WM_USER+1)typ 阅读全文

win32的一个售票程序,收获有非常的多

2011-10-15 10:23 by 捣乱小子, 746 阅读, 2 推荐, 收藏, 编辑
摘要:先秀一下我的收获吧!1、在创建非模态对话框的时,需要用到createdialog函数,第二个参数需要注意是填写对话框的资源标识符(id),之后需要调用showwindow来显示对话框;或者不这么做也行,就是在对话框属性visiable设置为true;2、hdc变量最好在函数内初始化,别将它直接传入函数;3、WM_SIZE的wParam参数很有用;4、关于movewindowMoveWindow sends the WM_WINDOWPOSCHANGING, WM_WINDOWPOSCHANGED, WM_MOVE, WM_SIZE, and WM_NCCALCSIZE messages to 阅读全文

win32关于WM_QUERYENDSESSION消息

2011-10-12 18:08 by 捣乱小子, 2843 阅读, 0 推荐, 收藏, 编辑
摘要:当结束对话或者一个程序调用系统关闭功能的时候,WM_QUERYENDSESSION消息会被发送给尚未终止的所有窗口。当程序在处理这个消息的时候,如果返回了false(0),那么系统将不结束对话或者关机(注销)。所以在处理这消息的时候,我们要有个好的习惯,就是对数据进行保护操作,以免造成数据的损失。网摘了一个比较经典的解释:原理:Windows在关机的时候会想所有顶层窗口广播一个消息WM_QUERYENDSESSION,其lParam参数可以区分是关机还是注销用户(注销用户时lParam是ENDSESSION_LOGOFF)。然后Windows会等到所有的应用程序都对这个消息返回TRUE才会关机 阅读全文

win32 API函数大全

2011-10-10 12:57 by 捣乱小子, 1159 阅读, 0 推荐, 收藏, 编辑
摘要:1.API之网络函数WNetAddConnection创建同一个网络资源的永久性连接WNetAddConnection2创建同一个网络资源的连接WNetAddConnection3创建同一个网络资源的连接WNetCancelConnection结束一个网络连接WNetCancelConnection2结束一个网络连接WNetCloseEnum结束一次枚举操作WNetConnectionDialog启动一个标准对话框,以便建立同网络资源的连接WNetDisconnectDialog启动一个标准对话框,以便断开同网络资源的连接WNetEnumResource枚举网络资源WNetGetConnect 阅读全文

win32简单的剪切板文本查看器

2011-10-09 22:53 by 捣乱小子, 952 阅读, 0 推荐, 收藏, 编辑
摘要:剪切板很有意思,捣乱又学会了setclasslong()#include <windows.h>#define CLSNAME "Clipview"#define WNDNAME ""LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam );int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmd... 阅读全文

win32自定义控件(虽然不美观,但对理解很有好处)

2011-10-09 20:26 by 捣乱小子, 3468 阅读, 0 推荐, 收藏, 编辑
摘要:win32的自定义控件不是很美观,但是对控件有个比较底层的认识,值了。 #include <windows.h>#include "resource.h"#define CLSNAME "About3"#define WNDNAME "about3 demo"LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam );LRESULT CALLBACK EllipPushWndProc(HWND,UINT,WPARAM,LP 阅读全文

win32剪切板学习笔记

2011-10-09 19:59 by 捣乱小子, 509 阅读, 0 推荐, 收藏, 编辑
摘要:win32 api的剪切板操作很有趣。 ①数据准备好后,向剪切板传输数据需要步骤: HGLOBAL hGlobal;PTSTR pGlobal;hGlobal = ::GlobalAlloc(GHND|GMEM_SHARE,iSize);//其中#define GHND (GMEM_MOVEABLE | GMEM_ZEROINIT)pGlobal = (PTSTR)::GlobalLoc... 阅读全文

win32只创建一个对话框的程序(很有趣)

2011-10-08 20:34 by 捣乱小子, 571 阅读, 0 推荐, 收藏, 编辑
摘要:只创建一个对话框的程序,诱发了我很大的兴趣。#include <windows.h>#include <commdlg.h>int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){ static CHOOSECOLOR cc; static COLORREF crCustColors[16]; cc.lStructSize = sizeof(CHOOSECOLOR); cc.hwndOwner = NULL; cc.hInstance = N 阅读全文

模态对话框和非模态对话框的消息

2011-10-06 10:54 by 捣乱小子, 345 阅读, 0 推荐, 收藏, 编辑
摘要:模态对话框在创建后,主程序的的消息循环是空的(除非对话框给主程序发送消息就另当别论了),就是与系统消息循环断开联系了,而进入了自己独有的一个消息循环。然而非模态对话框在创建后立即返回,并且和主程序共用一个消息循环。 阅读全文