Simple Clipboard Viewer (Apenas Texto)
1 #include <windows.h>
2
3 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
4
5 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
6 PSTR szCmdLine, int iCmdShow) {
7
8 static TCHAR szAppName[] = TEXT("ClipView");
9 HWND hwnd;
10 MSG msg;
11 WNDCLASS wndclass;
12
13 wndclass.style = CS_HREDRAW | CS_VREDRAW;
14 wndclass.lpfnWndProc = WndProc;
15 wndclass.cbClsExtra = 0;
16 wndclass.cbWndExtra = 0;
17 wndclass.hInstance = hInstance;
18 wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
19 wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);
20 wndclass.hbrBackground = (HBRUSH) WHITE_BRUSH;
21 wndclass.lpszMenuName = NULL;
22 wndclass.lpszClassName = szAppName;
23
24 if(!RegisterClass(&wndclass)) {
25 MessageBox(NULL, TEXT("This program requires Windows NT!"),
26 szAppName, MB_ICONERROR);
27 return 0;
28 }
29 hwnd = CreateWindow(szAppName, TEXT("Simple Clipboard Viewer (Apenas Texto)"),
30 WS_OVERLAPPEDWINDOW,
31 CW_USEDEFAULT, CW_USEDEFAULT,
32 CW_USEDEFAULT, CW_USEDEFAULT,
33 NULL, NULL, hInstance, NULL);
34
35 ShowWindow(hwnd, iCmdShow);
36 UpdateWindow (hwnd) ;
37
38 while(GetMessage(&msg, NULL, 0, 0)) {
39 TranslateMessage(&msg);
40 DispatchMessage (&msg);
41 }
42
43 return msg.wParam;
44 }
45
46 LRESULT CALLBACK WndProc(HWND hwnd, UINT message,
47 WPARAM wParam, LPARAM lParam) {
48
49 static HWND hwndNextViewer;
50 HGLOBAL hGlobal;
51 HDC hdc;
52 PTSTR pGlobal;
53 PAINTSTRUCT ps;
54 RECT rect;
55
56 switch(message) {
57 case WM_CREATE:
58 hwndNextViewer = SetClipboardViewer(hwnd);
59 return 0;
60
61 case WM_CHANGECBCHAIN:
62 if((HWND) wParam == hwndNextViewer)
63 hwndNextViewer = (HWND) lParam;
64 else if(hwndNextViewer)
65 SendMessage(hwndNextViewer, message, wParam, lParam);
66 return 0;
67
68 case WM_DRAWCLIPBOARD:
69 if (hwndNextViewer)
70 SendMessage(hwndNextViewer, message, wParam, lParam);
71 InvalidateRect(hwnd, NULL, TRUE);
72 return 0;
73
74 case WM_PAINT:
75 hdc = BeginPaint(hwnd, &ps);
76 GetClientRect(hwnd, &rect);
77 OpenClipboard(hwnd);
78 #ifdef UNICODE
79 hGlobal = GetClipboardData(CF_UNICODETEXT);
80 #else
81 hGlobal = GetClipboardData(CF_TEXT);
82 #endif
83
84 if(hGlobal != NULL) {
85 pGlobal = (PTSTR) GlobalLock(hGlobal);
86 DrawText(hdc, pGlobal, -1, &rect, DT_EXPANDTABS);
87 GlobalUnlock(hGlobal);
88 }
89 CloseClipboard();
90 EndPaint(hwnd, &ps);
91 return 0;
92
93 case WM_DESTROY:
94 ChangeClipboardChain(hwnd, hwndNextViewer);
95 PostQuitMessage(0);
96 return 0;
97 }
98 return DefWindowProc(hwnd, message, wParam, lParam);
99 }
Comentários
Postar um comentário