
windows编程
文章平均质量分 80
125096
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
strstr字符串查找函数
#include #include char str[] = "lazy";char string[] = "The quick brown dog jumps over the lazy fox";char fmt1[] = " 1 2 3 4 5";char fmt2[] = "12345原创 2015-03-02 16:25:57 · 749 阅读 · 0 评论 -
VC内存泄露检测
#include #include #include #include using namespace std;#ifdef _DEBUG#define new new(_NORMAL_BLOCK, __FILE__, __LINE__) #endifint main(void){ _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTD原创 2015-03-02 16:00:28 · 448 阅读 · 0 评论 -
stringstream字符串转换整数函数
#include #include #include using namespace std;int main (void){ string mystr ("1204"); int myint; stringstream(mystr)>>myint; cout<<myint<<endl;}/*2015年3月2日16:24:06程序执行输出如下结果:1204请按任意键原创 2015-03-02 16:23:32 · 1124 阅读 · 0 评论 -
Visual C++ 2010 MSXML使用示例
新建一个win32控制台应用程序,加入下面源码:#include #include int main(void){ HRESULT hr = NULL; VARIANT var; V_VT(&var) = VT_BSTR; // COM库初始化 CoInitialize(NULL); // IXMLDOMDocument* pXMLDoc; hr = CoCreate原创 2015-03-23 10:46:30 · 808 阅读 · 0 评论 -
VC精确计时
1、WM_TIMER消息映射SetTimer()设置定时间隔,定时响应函数 OnTimer()计时精度30ms,定时器消息在多任务操作系统中的优先级很低,不能得到及时响应。2、sleep()函数计时精度30ms,CPU占用率高,延时期间不能处理其他的消息。3、COleDateTime类和COleDateTimeSpan类结合WINDOWS的消息处理过程计时精度秒级转载 2015-03-18 17:34:29 · 899 阅读 · 0 评论 -
__FILE__预定义宏
#include using namespace std;int main (void) { cout<<__LINE__<<endl; //当前行 cout<<__FILE__<<endl; //当前文件 cout<<__DATE__<<endl; //当前日期 cout<<__TIME__<<endl; //当前源文件编译时间 cout<<__TIMESTAMP原创 2015-04-01 09:24:13 · 546 阅读 · 0 评论 -
WM消息
把一个消息发送到窗口有3种方式:发送、寄送和广播。送消息的函数有SendMessage、SendMessageCallback、SendNotifyMessage、SendMessageTimeout;寄送消息的函数主要有PostMessage、PostThreadMessage、PostQuitMessage;广播消息的函数我知道的只有BroadcastSystemMessage、Broa原创 2015-04-02 00:59:00 · 760 阅读 · 0 评论 -
SendMessage和PostMessage的区别PostThreadMessage
//PostMessage会立即返回//PostMessage(hwndDlg,WM_SIZE,0,0);//OutputDebugString(TEXT("PostMessage返回"));//SendMessage会等待消息执行完毕才会返回。如果消息一直没有执行完毕,SendMessage不会返回,会造成当前执行SendMessage线程无线等待,卡死状态//SendMessage原创 2015-04-02 01:00:47 · 750 阅读 · 0 评论 -
进程间通信的四种方式
进程间通信的四种方式剪贴板匿名管道命名管道邮槽 剪贴板#include #include #include int main (void){ //设置剪贴板 if(OpenClipboard(GetForegroundWindow())) { HANDLE hClip; TCHAR szText[100]={0}; EmptyC原创 2015-04-18 20:47:28 · 859 阅读 · 0 评论 -
可变参数的日志输出信息
#include #include #include #include bool TraceLog(TCHAR* lpszFormat, ...);int main (void){ TraceLog(TEXT("i=%d j=%d"),5,6); return 0;}bool TraceLog(TCHAR* lpszFormat, ...){ assert(lpszF原创 2015-04-22 10:51:44 · 574 阅读 · 0 评论 -
#pragma
//编译器优化开关#ifdef _DEBUG#pragma optimize( "", off )#else#pragma optimize( "", on )#endif原创 2015-04-22 15:26:34 · 786 阅读 · 0 评论 -
dll编写2
dll2Head.h#ifndef DLL2_API_HEAD_FILE#define DLL2_API_HEAD_FILE//导出定义#ifndef DLL2_API #ifdef DLL2_API_DLL #define DLL2_API _declspec(dllexport) #else #define DLL2_API _declspec(dllimport)原创 2015-04-19 01:38:23 · 430 阅读 · 0 评论 -
SetWindowsHookEx在当前进程设置键盘钩子
vs2010新建一个空的win32工程,工程设置在静态库中使用mfc 1.h//键入如下代码#ifndef MFCTEST_HEAD#define MFCTEST_HEAD#pragma once#include #include #define IDC_START 1012 //按钮定义HHOOK g_KeyBoard=NULL;LRESU原创 2015-04-19 12:01:26 · 2384 阅读 · 0 评论 -
SetWindowsHookEx设置全局键盘钩子
vs2010新建一个空的win32项目取名dllhook 新建dllhook.def键入如下代码LIBRARY dllhookEXPORTS SetKeyBoardHook @123 新建dllhook.h键入如下代码#ifndef DLLHOOK_HEAD_FILE#define DLLHOOK_HEAD_FILE#include //导出定义#i原创 2015-04-19 13:22:42 · 8093 阅读 · 0 评论 -
OnMouseHover()和OnMouseLeave()(让窗口捕获并响应WM_MOUSEHOVER和WM_MOUSELEAVE消息)
当鼠标停留在程序窗口一定时间后,会产生一个WM_MOUSEHOVER消息;当鼠标离开程序窗口后,会产生一个WM_MOUSELEAVE消息。那如何才能使窗口响应这两个消息呢?按下面的步骤,即可让指定的窗口能捕获并响应WM_MOUSEHOVER和WM_MOUSELEAVE消息了:1、在窗口类的头文件中添加: afx_msg void OnMouseLeave(); afx_msg vo原创 2015-04-08 14:44:19 · 1410 阅读 · 1 评论 -
WM_CLOSE WM_DESTROY WM_QUIT 区别
在发送 WM_QUIT消息时,要使用PostMessage发送,否则,窗口已经关闭,但任务管理器中进程还存在。可以通过 pDlg->PostMessage(WM_QUIT);或DWORD dwThreadId = GetWindowThreadProcessId(pDlg->GetSafeHwnd(),NULL);PostThreadMessage(dwThreadId,WM_QUIT转载 2015-03-17 11:14:08 · 405 阅读 · 0 评论 -
vs2008最简单的MFC窗口程序
vs2008新建一个空的win32项目,工程属性设置使用mfc静态库1.h#ifndef MFCTEST_HEAD#define MFCTEST_HEAD#pragma once#include #include #define IDC_START 1012 //按钮定义class CMyApp:public CWinApp{public:原创 2015-04-20 11:34:24 · 2490 阅读 · 0 评论 -
vs2010最简单的MFC窗口程序
在Visual Studio中创建一个新的空Win32工程,配置属性--常规---在静态库中使用 MFC内容如下:1.h#ifndef MFCTEST_HEAD#define MFCTEST_HEAD#pragma once#include #include #define IDC_START 1012 //按钮定义class CMyApp原创 2015-03-20 18:01:09 · 3186 阅读 · 0 评论 -
dllmain
#include BOOL APIENTRY DllMain(HMODULE hModule,DWORD ul_reason_for_call,LPVOID lpReserved){ switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: { OutputDebugString(TEXT("加载dll")); }原创 2015-04-20 11:20:33 · 500 阅读 · 0 评论 -
vs2008最简单的MFC对话框程序
vs2008新建一个空的win32项目,工程设置使用MFC静态库新建stdafx.h键入如下代码(这里我是从vs2008新建的mfc中拷贝过来的)// stdafx.h : 标准系统包含文件的包含文件,// 或是经常使用但不常更改的// 特定于项目的包含文件#pragma once#ifndef _SECURE_ATL#define _SECURE_ATL 1#endif原创 2015-04-20 13:47:45 · 2857 阅读 · 1 评论 -
win32SDK窗口程序
#pragma once#include #include //窗口回调LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);//创建事件bool OnCreate(HWND hwnd);TCHAR szWindowClass[]=TEXT("哈哈");int APIENTRY _tWinMain(HINSTANCE hI原创 2015-04-21 10:10:40 · 471 阅读 · 0 评论 -
MFC常用函数
//向父窗口发送关闭消息AfxGetMainWnd()->PostMessage( WM_CLOSE, 0, 0 ) ;//获取父窗口句柄AfxGetMainWnd()-> GetSafeHwnd()原创 2015-04-21 10:08:38 · 484 阅读 · 0 评论 -
消息处理
一、消息处理1.1发送消息SendMessage//此函数给一个或多个窗口发送一条消息。函数SendMessage直到消息被处理完毕后才返回SendMessageCallback//该函数向指定的一个或多个窗口发送指定的消息。函数为指定的消息调用窗口处理消息的代码段,当此窗口处理完消息以后,系统将调用该函数指定的回调函数,同时该消息的处理结果和一个用户定义的参数传递给此回调函数原创 2015-04-26 17:42:28 · 517 阅读 · 0 评论 -
Event
#include #include #include #include #include #define BUFFER_SIZE 1024*64FILE *fp=NULL;int event_record=0; /* Event logging local structure */ typedef struct _os_el { int time_of_last;原创 2015-04-27 02:26:27 · 566 阅读 · 0 评论 -
dll编写3之LoadLibrary动态加载
_declspec(dllexport) int __cdecl add (int a,int b){ return a+b;}_declspec(dllexport) int _stdcall sub (int a,int b){ return a-b;} #include #include int main (void){ typedef int(_原创 2015-04-19 01:39:15 · 584 阅读 · 0 评论 -
dll编写1
dll1_declspec(dllexport) int add (int a,int b){ return a+b;}_declspec(dllexport) int sub (int a,int b){ return a-b;}extern "C" _declspec(dllexport) int test (int a,int b){ //extern "C"只能原创 2015-04-19 01:34:09 · 368 阅读 · 0 评论 -
__declspec (naked)
#include #include __declspec (naked) int addNum (int a,int b){ _asm { push ebx mov ebp,esp push ebx push esi push edi mov eax,a mov ebx,b add eax,ebx pop edi原创 2015-05-04 22:03:54 · 563 阅读 · 0 评论 -
进程间互斥CreateEvent
#include #include int main (void){ HANDLE hMutex=CreateEvent (NULL,FALSE,FALSE,TEXT("125096")); if (hMutex) { if (GetLastError()==ERROR_ALREADY_EXISTS) { printf("已经存在一个实例在运行\n"); }原创 2015-05-05 20:49:59 · 1031 阅读 · 0 评论 -
进程间互斥CreateMutex
#include #include int main (void){ HANDLE hMutex=CreateMutex(NULL,TRUE,TEXT("125096")); if (hMutex) { if (GetLastError()==ERROR_ALREADY_EXISTS) { printf("有一个实例存在"); HANDLE hOpen=Op原创 2015-05-05 20:50:41 · 1203 阅读 · 0 评论 -
进程间互斥CreateMutexTRUE
#include #include int main (void){ HANDLE hMutex=CreateMutex(NULL,TRUE,TEXT("125096")); if (hMutex) { if (GetLastError()==ERROR_ALREADY_EXISTS) { printf("有一个实例存在"); HANDLE hOpen=Op原创 2015-05-05 20:51:25 · 510 阅读 · 0 评论 -
进程间互斥CreateSemaphore
#include #include int main (void){ HANDLE hMutex=CreateSemaphore(NULL,1,5,TEXT("125096")); if (hMutex) { if (GetLastError()==ERROR_ALREADY_EXISTS) { printf("有一个实例存在"); HANDLE h原创 2015-05-05 20:50:08 · 1495 阅读 · 0 评论 -
ASCII编码和UNICODE编码转换
#include #include #include #include #include using namespace std;//string转wstringinline void Ascii2WideString( const std::string& src, std::wstring& dest );//wstring转stringinline void WideS原创 2015-05-15 15:12:34 · 1118 阅读 · 0 评论 -
MFC的CStatic控件验证码例子
SkinValidateCode.h#ifndef SKIN_VALIDATE_CODE_HEAD_FILE#define SKIN_VALIDATE_CODE_HEAD_FILE#pragma once#include "HeadFile.h"using namespace Gdiplus;////////////////////////////////////////////原创 2015-05-19 15:53:50 · 1782 阅读 · 0 评论 -
MSXML使用
main.h#include #include #include #include #include #include #include #import "msxml4.dll"using namespace std;using namespace MSXML2;//MSDN//ms-help://MS.MSDNQTR.v90.chs/wmsrvsdk/htm/xml原创 2015-05-03 23:57:15 · 1370 阅读 · 0 评论 -
TinyXML1
main.cpp#include #include #include #include #pragma comment (lib,"tinyxmld.lib")bool build_simple_doc(TCHAR szFileName[]); //建立xml文件bool SetAttri(void); //创建和设置属性int du原创 2015-05-04 00:03:17 · 434 阅读 · 0 评论 -
TinyXML
main.h#include #include #include #include #pragma comment (lib,"tinyxmld.lib")using namespace std;bool build_simple_doc(TCHAR szFileName[]); //建立xml文件bool SetAttri(void);原创 2015-05-04 00:02:03 · 512 阅读 · 0 评论 -
TinyXML3
main.cpp#include #include #include #pragma comment (lib,"tinyxmld.lib")const unsigned int NUM_INDENTS_PER_SPACE=2;const char* getIndent (unsigned int numIndents){ static const char* pINDENT原创 2015-05-04 00:04:57 · 581 阅读 · 0 评论 -
TinyXML4
main.cpp#include #include #include #include #include #pragma comment (lib,"tinyxmld.lib")using namespace std;//控制台界面不支持UTF-8 //只支持GB2312int main (void){ TIXML_STRING str; TiXmlDocument原创 2015-05-04 00:05:50 · 358 阅读 · 0 评论 -
TinyXML2
main.cpp#include #include #include #include #include #include #include using namespace std;#pragma comment (lib,"tinyxmld.lib")typedef map MessageMap;class WindowSettings{public: int原创 2015-05-04 00:04:13 · 448 阅读 · 0 评论 -
win32和mfc读写文件
wn32#include #include int main (void){ //写文件 HANDLE hFile=CreateFile(TEXT("1.txt"),GENERIC_WRITE,NULL,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); if (hFile) { DWORD dwWrites=0; if (原创 2015-04-01 22:37:48 · 449 阅读 · 0 评论