



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一个简单的剪贴板浏览器剪贴板浏览器不一定要像Windows所提供的那样完善,例如,剪贴板浏览器可以只显示一种剪贴板数据格式。程序12-2中所示的CLIPVIEW程序是一种只能显示CF_TEXT格式的剪贴板浏览器。 程序12-2 CLIPVIEWCLIPVIEW.C#include LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) static TCHAR szAppName = TEXT (ClipView) ; HWND hwnd ; MSG msg ; WNDCLASS wndclass ; wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; wndclass.lpszMenuName = NULL ; wndclass.lpszClassName = szAppName ; if (!RegisterClass (&wndclass) MessageBox ( NULL, TEXT (This program requires Windows NT!), szAppName, MB_ICONERROR) ; return 0 ; hwnd = CreateWindow (szAppName, TEXT (Simple Clipboard Viewer (Text Only), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL) ; ShowWindow (hwnd, iCmdShow) ; UpdateWindow (hwnd) ; while (GetMessage (&msg, NULL, 0, 0) TranslateMessage (&msg) ; DispatchMessage (&msg) ; return msg.wParam ;LRESULT CALLBACK WndProc ( HWND hwnd, UINT message, WPARAM wParam,LPARAM lParam) static HWND hwndNextViewer ; HGLOBAL hGlobal ; HDC hdc ; PTSTR pGlobal ; PAINTSTRUCT ps ; RECT rect ; switch (message) case WM_CREATE: hwndNextViewer = SetClipboardViewer (hwnd) ; return 0 ; case WM_CHANGECBCHAIN: if (HWND) wParam = hwndNextViewer) hwndNextViewer = (HWND) lParam ; else if (hwndNextViewer) SendMessage (hwndNextViewer, message, wParam, lParam) ; return 0 ; case WM_DRAWCLIPBOARD: if (hwndNextViewer) SendMessage (hwndNextViewer, message, wParam, lParam) ; InvalidateRect (hwnd, NULL, TRUE) ; return 0 ; case WM_PAINT: hdc = BeginPaint (hwnd, &ps) ; GetClientRect (hwnd, &rect) ; OpenClipboard (hwnd) ;#ifdef UNICODE hGlobal = GetClipboardData (CF_UNICODETEXT) ;#else hGlobal = GetClipboardData (CF_TEXT) ;#endif if (hGlobal != NULL) pGlobal = (PTSTR) GlobalLock (hGlobal) ; DrawText (hdc, pGlobal, -1, &rect, DT_EXPANDTABS) ; GlobalUnlock (hGlobal) ; CloseClipboard () ; EndPaint (hwnd, &ps) ; return 0 ; case WM_DESTROY: ChangeClipboardChain (hwnd, hwndNextViewer) ; PostQuitMessage (0) ; return 0 ; return DefWindowProc (hwnd, message, wParam, lParam) ;CLIPVIEW依上面所讨论的方法来处理WM_CREATE、WM_CHANGECBCHAIN、WM_DRAWCLIPBOARD和WM_DESTROY消息。WM_PAINT消息处理打开剪贴板,并用CF_TEXT格式调用GetClipboardData。如果函数传回一个整体内存代号,那么CLIPVIEW将锁定它,并用DrawText在显示区域显示文字。处理标准格式(如Windows提供的那个剪贴板一样)以外的数据格式的剪贴板浏览器还需要完成一些其它工作,比如显示剪贴板中目前所有数据格式的名称。使用者可以通过调用EnumClipboardFormats并使用GetClipboardFormatName得到非标准数据格式名称来完成这项工作。使用CF_OWNERDISPLAY数据格式的剪贴板浏览器必须把下面四个消息送往剪贴板数据的拥有者以显示该数据:WM_PAINTCLIPBOARDWM_SIZECLIPBOARDWM_VSCROL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年专有许可合同2篇
- 城市民屋购房合同4篇
- 理论业务知识培训课件
- 法兰阀门保温工程方案(3篇)
- 球鞋修复培训课件
- 清华苑建设项目环境影响报告表
- 房建工程坡道方案(3篇)
- 低压配线工程方案(3篇)
- 方案落地打造优.质工程(3篇)
- 工程博士发展方案范文(3篇)
- GB/T 32892-2016光伏发电系统模型及参数测试规程
- 友善-主题班会课件
- 深交所期权测试题库专业考试
- 酒店服务心理学培训教材课件
- 校方责任险课件
- 拟经营的食品种类、存放地点
- 家乡小吃课件
- 集团公司落实子企业董事会职权工作方案
- JJG(建材) 107-1999 透气法比表面积仪检定规程-(高清现行)
- 血栓弹力图-PPT课件
- 十八项核心制度完整版
评论
0/150
提交评论