GetClipboardData() 函数的第一个参数问题
#include <windows.h>
#define UNICODE
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, // window class name
TEXT ("Simple Clip Viewer (Text Only)"), // window caption
WS_OVERLAPPEDWINDOW, // window style
CW_USEDEFAULT, // initial x position
CW_USEDEFAULT, // initial y position
CW_USEDEFAULT, // initial x size
CW_USEDEFAULT, // initial y size
NULL, // parent window handle
NULL, // window menu handle
hInstance, // program instance handle
NULL); // creation parameters
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;
PTSTR pGlobal;
HGLOBAL hGlobal;
HDC hdc;
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);
hGlobal = GetClipboardData (CF_TEXT); //这里的疑问,MSDN中说 CF_TEXT 是ANSI CF_UNICODETEXT是 UNICODE, 但是这个程序偏偏要使用 CF_TEXT 偏偏能显示中文.....而CF_UNICODETEXT 只能显示错误的
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);
}
问题在注释中。。。
对编码一直有中疑惑。。。TXT文档 保存有 ANSI 类型,为什么能够显示类型,不是说ANSI 才8位嘛。。。
相关推荐
解决2010VC的复制 遇到的CSTRING 向CHAR转换的问题
解决2010VC的复制 遇到的CSTRING 向CHAR转换的问题
c++复制黏贴
c++复制黏贴c++复制黏贴 解决unidoce的和多字节之间的转换
VC得带剪切板上的文件名
int CrnGetClipBoardFileList(CString *pList) { if(IsClipboardFormatAvailable(CF_HDROP) && OpenClipboard(NULL)) { HDROP hDrop = (HDROP)::GetClipboardData(CF_HDROP); // 获得文件数 int nFilesCount = 0; nFilesCount = ::DragQueryFile(hDrop,0xFFFFFFFF,NULL,0); for(int i=0;i<nFilesCount;i++) { char szFileName[MAX_PATH]; int nLength = ::DragQueryFile(hDrop,i,szFileName,MAX_PATH); pList[i].Format("%s",szFileName); } } ::CloseClipboard(); return nFilesCount; }
wx.openSetting,wx.setClipboardData,wx.getClipboardData
作者:码农随想录,来自授权地址 感谢分享者的贡献!让我们可以一睹为快! 1、wx.openSetting(OBJECT) 概述 wx.openSetting能让用户对小程序授权的地理位置、录音功能、用户信息进行管理 OBJECT参数说明 (此图片来源于网络,如有侵权,请联系删除! ) OBJECT参数说明 代码实现 基础库版本 1.1.0 开始支持,对wx.openSetting做判断是对低版本做兼容处理 if (wx.openSetting) { wx.openSetting({ success: (res) => { console.log(
DELPHI_JIANTIEBAN.rar_DELPHI_JIANTIEBAN
delphi 读取剪贴板数据的代码实例 没有用到其它控件


