教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 外语考试 >

windows程序设计(C语言版)第12章-剪贴簿(3)

来源:网络收集 时间:2025-09-14
导读: NULL, NULL, hInstance, NULL) ; ShowWindow (hwnd, iCmdShow) ; UpdateWindow (hwnd) ; hAccel = LoadAccelerators (hInstance, szAppName) ; while (GetMessage (msg, NULL, 0, 0)) { if (!TranslateAccelerator

NULL, NULL, hInstance, NULL) ;

ShowWindow (hwnd, iCmdShow) ;

UpdateWindow (hwnd) ;

hAccel = LoadAccelerators (hInstance, szAppName) ;

while (GetMessage (&msg, NULL, 0, 0))

{

if (!TranslateAccelerator (hwnd, hAccel, &msg))

{

TranslateMessage (&msg) ;

DispatchMessage (&msg) ;

}

}

return msg.wParam ;

}

LRESULT CALLBACK WndProc ( HWND hwnd, UINT message, WPARAM wParam,LPARAM lParam)

{

static PTSTR pText ;

BOOL bEnable ;

HGLOBAL hGlobal ;

《Windows程序设计(第5版 珍藏版)》是一本经典的Windows编程圣经,曾经伴随着近50万Windows程序员步入编程殿堂,成长为IT时代的技术精英。

HDC hdc ;

PTSTR pGlobal ;

PAINTSTRUCT ps ;

RECT rect ;

switch (message)

{

case WM_CREATE:

SendMessage (hwnd, WM_COMMAND, IDM_EDIT_RESET, 0) ;

return 0 ;

case WM_INITMENUPOPUP:

EnableMenuItem ((HMENU) wParam,

IDM_EDIT_PASTE,

IsClipboardFormatAvailable (CF_TCHAR) ? MF_ENABLED : MF_GRAYED) ;

bEnable = pText ? MF_ENABLED : MF_GRAYED ;

EnableMenuItem ((HMENU) wParam, IDM_EDIT_CUT, bEnable) ;

EnableMenuItem ((HMENU) wParam, IDM_EDIT_COPY, bEnable) ;

EnableMenuItem ((HMENU) wParam,

IDM_EDIT_CLEAR, bEnable) ;

break ;

case WM_COMMAND:

switch (LOWORD (wParam))

{

case IDM_EDIT_PASTE:

OpenClipboard (hwnd) ;

if (hGlobal = GetClipboardData (CF_TCHAR))

{

pGlobal = GlobalLock (hGlobal) ; if (pText)

{

free (pText) ; pText = NULL ; }

pText = malloc (GlobalSize (hGlobal)) ; lstrcpy (pText, pGlobal) ;

InvalidateRect (hwnd, NULL, TRUE) ; }

CloseClipboard () ;

return 0 ;

《Windows程序设计(第5版 珍藏版)》是一本经典的Windows编程圣经,曾经伴随着近50万Windows程序员步入编程殿堂,成长为IT时代的技术精英。

case IDM_EDIT_CUT:

case IDM_EDIT_COPY:

if (!pText)

return 0 ;

hGlobal = GlobalAlloc (GHND | GMEM_SHARE, (lstrlen (pText) + 1) * sizeof (TCHAR)) ;

pGlobal = GlobalLock (hGlobal) ;

lstrcpy (pGlobal, pText) ;

GlobalUnlock (hGlobal) ;

OpenClipboard (hwnd) ;

EmptyClipboard () ;

SetClipboardData (CF_TCHAR, hGlobal) ; CloseClipboard () ;

if ( LOWORD (wParam) == IDM_EDIT_COPY)

return 0 ;

// fall through for IDM_EDIT_CUT

case IDM_EDIT_CLEAR:

if (pText)

{

free (pText) ;

pText = NULL ;

}

InvalidateRect (hwnd, NULL, TRUE) ;

return 0 ;

case IDM_EDIT_RESET:

if (pText)

{

free (pText) ;

pText = NULL ;

}

pText = malloc ((lstrlen (szDefaultText) + 1) * sizeof (TCHAR)) ;

lstrcpy (pText, szDefaultText) ;

InvalidateRect (hwnd, NULL, TRUE) ; return 0 ;

}

break ;

case WM_PAINT:

hdc = BeginPaint (hwnd, &ps) ;

GetClientRect (hwnd, &rect) ;

《Windows程序设计(第5版 珍藏版)》是一本经典的Windows编程圣经,曾经伴随着近50万Windows程序员步入编程殿堂,成长为IT时代的技术精英。

if (pText != NULL)

DrawText (hdc, pText, -1, &rect, DT_EXPANDTABS | DT_WORDBREAK) ;

EndPaint (hwnd, &ps) ;

return 0 ;

case WM_DESTROY:

if ( pText)

free (pText) ;

PostQuitMessage (0) ;

return 0 ;

}

return DefWindowProc (hwnd, message, wParam, lParam) ;

}

CLIPTEXT.RC (摘录)

//Microsoft Developer Studio generated resource script.

#include "resource.h"

#include "afxres.h"

/////////////////////////////////////////////////////////////////////////////

// Menu

CLIPTEXT MENU DISCARDABLE

BEGIN

POPUP "&Edit"

BEGIN

MENUITEM "Cu&t\tCtrl+X", IDM_EDIT_CUT

MENUITEM "&Copy\tCtrl+C", IDM_EDIT_COPY

MENUITEM "&Paste\tCtrl+V", IDM_EDIT_PASTE

MENUITEM "De&lete\tDel", IDM_EDIT_CLEAR

MENUITEM SEPARATOR

MENUITEM "&Reset", IDM_EDIT_RESET

END

END

/////////////////////////////////////////////////////////////////////////////

// Accelerator

CLIPTEXT ACCELERATORS DISCARDABLE

BEGIN

"C", IDM_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT

"V", IDM_EDIT_PASTE, VIRTKEY, CONTROL, NOINVERT

VK_DELETE, IDM_EDIT_CLEAR, VIRTKEY, NOINVERT

"X", IDM_EDIT_CUT, VIRTKEY, CONTROL, NOINVERT

END

RESOURCE.H(摘录)

《Windows程序设计(第5版 珍藏版)》是一本经典的Windows编程圣经,曾经伴随着近50万Windows程序员步入编程殿堂,成长为IT时代的技术精英。

// Microsoft Developer Studio generated include file.

// Used by ClipText.rc

#define IDM_EDIT_CUT 40001

#define IDM_EDIT_COPY 40002

#define IDM_EDIT_PASTE 40003

#define IDM_EDIT_CLEAR 40004

#define IDM_EDIT_RESET 40005

这是在Windows NT下执行Unicode版和ANSI版程式的概念,而且可以看到,剪贴簿是如何在两种字元集之间转换的。注意CLIPTEXT.C顶部的#ifdef叙述。如果定义了UNICODE识别字,那么CF_TCHAR(我命名的一种常用的剪贴簿格式)就等於CF_UNICODETEXT;否则,它就等於CF_TEXT。程式後面呼叫的IsClipboardFormatAvailable、GetClipboardData和SetClipboardData函式都使用CF_TCHAR来指定资料型态。

在程式的开始部分(以及您从「Edit」功能表中选择「Reset」选项时),静态变 …… 此处隐藏:3551字,全部文档内容请下载后查看。喜欢就下载吧 ……

windows程序设计(C语言版)第12章-剪贴簿(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/116449.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)