當前位置:編程學習大全網 - 編程語言 - 如何把 剪切板 的內容繪制到窗口 VC win32編程

如何把 剪切板 的內容繪制到窗口 VC win32編程

OpenClipboard打開剪貼板

GetClipboardData獲得剪貼板上的內容

CloseClipboard關閉剪貼板

BitBlt繪圖

#include <windows.h>

#include <tchar.h>

#define ID_DRAW 50

HMENU CreateMenuBar() {

HMENU hMenu = CreateMenu();

AppendMenu(hMenu, MF_STRING, ID_DRAW, _T("Draw"));

return hMenu;

}

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

HANDLE hBit;

HDC hDC, hMemDC;

RECT rc;

switch (uMsg) {

case WM_COMMAND:

switch (LOWORD(wParam)) {

case ID_DRAW:

if (OpenClipboard(hwnd)) {

hBit = GetClipboardData(CF_BITMAP);

CloseClipboard();

if (hBit) {

hDC = GetDC(hwnd);

hMemDC = CreateCompatibleDC(NULL);

hBit = SelectObject(hMemDC, hBit);

GetClientRect(hwnd, &rc);

BitBlt(hDC, 0, 0, rc.right, rc.bottom, hMemDC, 0, 0, SRCCOPY);

SelectObject(hMemDC, hBit);

DeleteDC(hMemDC);

ReleaseDC(hwnd, hDC);

break;

}

}

MessageBox(hwnd, _T("Invalid data."), _T("Error"), MB_ICONERROR);

}

break;

case WM_DESTROY: PostQuitMessage(0); break;

default: return DefWindowProc(hwnd, uMsg, wParam, lParam);

}

return 0;

}

INT WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, INT nCmdShow) {

MSG msg;

WNDCLASS wnd = { 0 };

wnd.lpfnWndProc = WndProc;

wnd.hInstance = hInstance;

wnd.hCursor = LoadCursor(NULL, IDC_ARROW);

wnd.hbrBackground = (HBRUSH)COLOR_WINDOW;

wnd.lpszClassName = _T("test");

RegisterClass(&wnd);

if (!CreateWindow(_T("test"), _T("test"), WS_OVERLAPPEDWINDOW | WS_VISIBLE,

CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,

NULL, CreateMenuBar(), hInstance, NULL)) return 0;

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

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return msg.wParam;

}

  • 上一篇:急:java培訓上周末班還是脫產班
  • 下一篇:java 中讀取word 設置每次讀取行數 下次讀取能繼續上次的行數
  • copyright 2024編程學習大全網