首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Win32编程兑现剪贴板监控查看

2013-04-02 
Win32编程实现剪贴板监控查看网络上有很多使用MFC和.NET实现windows剪贴板监控的程序。这里参考《Windows程

Win32编程实现剪贴板监控查看

网络上有很多使用MFC和.NET实现windows剪贴板监控的程序。这里参考《Windows程序设计(第五版)》实现了一个最简单的Win32剪贴板监控程序。采用原始的win32编程,不适用MFC和.NET等的封装库。

下面是需要修改的WndProc函数。(整个工程在https://github.com/kingzone/ClipboardMonitor)

////  函数: WndProc(HWND, UINT, WPARAM, LPARAM)////  目的: 处理主窗口的消息。////  WM_COMMAND- 处理应用程序菜单//  WM_PAINT- 绘制主窗口//  WM_DESTROY- 发送退出消息并返回////LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){int wmId, wmEvent;PAINTSTRUCT ps;HDC hdc;static HWND hwndNextViewer; HGLOBAL hGlobal;PTSTR pGlobal;RECT rect;switch (message){case WM_CREATE:hwndNextViewer = SetClipboardViewer(hWnd);break;case WM_CHANGECBCHAIN:if((HWND)wParam == hwndNextViewer)hwndNextViewer = (HWND)lParam;else if(hwndNextViewer)SendMessage(hwndNextViewer, message, wParam, lParam);//return 0;break;case WM_DRAWCLIPBOARD:if(hwndNextViewer)SendMessage(hwndNextViewer, message, wParam, lParam);InvalidateRect(hWnd, NULL, TRUE);//return 0;break;case WM_COMMAND:wmId    = LOWORD(wParam);wmEvent = HIWORD(wParam);// 分析菜单选择:switch (wmId){case IDM_ABOUT:DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);break;case IDM_EXIT:DestroyWindow(hWnd);break;default:return DefWindowProc(hWnd, message, wParam, lParam);}break;case WM_PAINT:hdc = BeginPaint(hWnd, &ps);// TODO: 在此添加任意绘图代码...// OpenClipboard, GetClipboardData, CloseClipboardGetClientRect(hWnd, &rect);OpenClipboard(hWnd);#ifdef UNICODEhGlobal = GetClipboardData(CF_UNICODETEXT);#else hGlobal = GetClipboardData(CF_TEXT);#endifif(hGlobal != NULL){pGlobal = (PTSTR)GlobalLock(hGlobal);DrawText(hdc, pGlobal, -1, &rect, DT_EXPANDTABS);GlobalUnlock(hGlobal);}CloseClipboard();EndPaint(hWnd, &ps);break;case WM_DESTROY:ChangeClipboardChain(hWnd, hwndNextViewer);PostQuitMessage(0);//return 0;break;default:return DefWindowProc(hWnd, message, wParam, lParam);}return 0;}


热点排行