[ create a new paste ] login | about

Link: http://codepad.org/kky37ici    [ raw code | fork ]

C, pasted on Dec 15:
#include <windows.h>

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp) {
  static HWND hNextWnd = 0;
  HGLOBAL hg;
  PTSTR strText;
  HDC hdc;
  PAINTSTRUCT ps;
  RECT rect;

  switch (msg) {
  case WM_DESTROY:
    if (hNextWnd)
      ChangeClipboardChain(hwnd, hNextWnd);
    PostQuitMessage(0);
    return 0;
  case WM_CREATE:
    hNextWnd = SetClipboardViewer(hwnd);
    return 0;
  case WM_DRAWCLIPBOARD:
  label_DRAWCLIPBOARD:
    if (hNextWnd)
      SendMessage(hNextWnd, msg, wp, lp);
    InvalidateRect(hwnd, NULL, TRUE);

/* why needed ??? */
    UpdateWindow(hwnd);
/*-----------------*/

    return 0;
  case WM_CHANGECBCHAIN:
    if ((HWND)wp == hNextWnd) hNextWnd = (HWND)lp;
    else goto label_DRAWCLIPBOARD;
  case WM_PAINT:
    hdc = BeginPaint(hwnd, &ps);
    if (OpenClipboard(hwnd) && (hg = GetClipboardData(CF_TEXT))) {
      strText = (PTSTR)GlobalLock(hg);
      GetClientRect(hwnd, &rect);
      DrawText(hdc, strText, -1, &rect, DT_LEFT);
      GlobalUnlock(hg);
      CloseClipboard();
    }
    EndPaint(hwnd, &ps);
    return 0;
  }
  return DefWindowProc(hwnd, msg, wp, lp);
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pComdLine, int nCmdShow) {
  HWND hwnd;
  MSG msg;
  WNDCLASS winc;

  winc.style = CS_HREDRAW | CS_VREDRAW;
  winc.lpfnWndProc = WndProc;
  winc.cbClsExtra = 0;
  winc.cbWndExtra = DLGWINDOWEXTRA;
  winc.hInstance = hInstance;
  winc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  winc.hCursor = LoadCursor(NULL, IDC_ARROW);
  winc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
  winc.lpszMenuName = NULL;
  winc.lpszClassName = TEXT("KITTY");

  if(!RegisterClass(&winc)) return -1;
  hwnd = CreateWindow(TEXT("KITTY"), TEXT("Kitty on your lap"),
                      WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                      CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
                      NULL, NULL, hInstance, NULL);
  if (hwnd == NULL) return -1;
  while (GetMessage(&msg, NULL, 0, 0)) {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }
  return msg.wParam;
}
/* end */


Create a new paste based on this one


Comments: