Ejemplo n.º 1
0
// ウィンドウプロシージャ
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
    int id;
    HDC hdc;
    PAINTSTRUCT ps;
    LPCTSTR lpszStr = TEXT("猫でもわかるWindowsプログラミング");

    switch (msg) {
        case WM_PAINT:
            hdc = BeginPaint(hWnd, &ps);
            // MyTextOut関数がDLL内から呼び出さる
            MyTextOut(hdc, 10, 10, lpszStr);
            EndPaint(hWnd, &ps);
            break;
        case WM_CLOSE:
            id = MessageBox(hWnd, TEXT("終了してもよろしいですか"),
                TEXT("終了確認"), MB_YESNO);
            if (id == IDYES)
                DestroyWindow(hWnd);
            break;
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        default:
            return (DefWindowProc(hWnd, msg, wp, lp));
    }
    return 0;
}
Ejemplo n.º 2
0
BOOL CALLBACK MyWindowEnumProc ( HWND hwnd, LPARAM lParam )
{
  TCHAR wndcaption[1024], buf[1024];
  EnumData* ped = (EnumData*)lParam;
  GetWindowText ( hwnd, wndcaption, sizeof(wndcaption)/sizeof(*wndcaption) );
  _sntprintf ( buf, sizeof(buf)/sizeof(*buf), _T("%x - %s"), hwnd, wndcaption );
  MyTextOut ( ped->hdc, ped->x, ped->y, buf );
  ped->y += 13;
  return TRUE;
}
Ejemplo n.º 3
0
LRESULT CALLBACK MainWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
  PAINTSTRUCT ps;
  HDC hDC;
  RECT rect;
  TCHAR buf[100];
  EnumData ed;

  switch(msg)
  {
  case WM_PAINT:
    hDC = BeginPaint(hWnd, &ps);
    SelectObject(hDC, tf);

    GetClientRect ( hWnd, &rect );
    FillRect ( hDC, &rect, hbrBackground );

    MyTextOut ( hDC, 10, 10, "EnumWnd Test" );

    _sntprintf ( buf, sizeof(buf)/sizeof(*buf), _T("My HWND: %x"), hWnd );
    MyTextOut ( hDC, 10, 30, buf );

    ed.hdc = hDC;
    ed.x = 10;
    ed.y = 70;

    switch ( test )
    {
    case 1:
      MyTextOut ( hDC, 10, 50, _T("Test #1: EnumWindows()") );
      EnumWindows ( MyWindowEnumProc, (LPARAM)&ed );
      break;
    case 2:
      MyTextOut ( hDC, 10, 50, _T("Test #2: EnumChildWindows()") );
      EnumChildWindows ( hWnd, MyWindowEnumProc, (LPARAM)&ed );
      break;
    case 3:
      MyTextOut ( hDC, 10, 50, _T("Test #3: EnumDesktopWindows") );
      EnumDesktopWindows ( NULL, MyWindowEnumProc, (LPARAM)&ed );
      break;
    case 4:
      MyTextOut ( hDC, 10, 50, _T("Test #4: EnumThreadWindows") );
      EnumThreadWindows ( GetCurrentThreadId(), MyWindowEnumProc, (LPARAM)&ed );
      break;
    default:
      MyTextOut ( hDC, 10, 50, _T("Press any of the number keys from 1 to 4 to run a test") );
      MyTextOut ( hDC, 10, 70, _T("Press the left and right mouse buttons to cycle through the tests") );
      break;
    }

    EndPaint(hWnd, &ps);
    break;

  case WM_CHAR:
    test = (TCHAR)wParam - '1' + 1;
    RedrawWindow ( hWnd, NULL, NULL, RDW_INVALIDATE );
    break;

  case WM_LBUTTONDOWN:
    if ( ++test > 4 )
      test = 1;
    RedrawWindow ( hWnd, NULL, NULL, RDW_INVALIDATE );
    break;

  case WM_RBUTTONDOWN:
    if ( !--test )
      test = 4;
    RedrawWindow ( hWnd, NULL, NULL, RDW_INVALIDATE );
    break;

  case WM_DESTROY:
    PostQuitMessage(0);
    break;

  default:
    return DefWindowProc(hWnd, msg, wParam, lParam);
  }
  return 0;
}