본문 바로가기
코스웨어/15년 스마트컨트롤러

20151118 임현수 업무일지 WIN32API #5

by 알 수 없는 사용자 2015. 11. 18.
728x90
반응형
■ WIN32API


■ 폰트

LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
  HDC hdc;
  PAINTSTRUCT ps;
  HFONT font;
  HFONT oldfont;
  WCHAR str[] = TEXT("폰트 Test 1234");

  switch (iMessage)
  {
    case WM_DESTROY:
      PostQuitMessage(0);
      return 0;

    case WM_PAINT:
      hdc = BeginPaint(hWnd, &ps);
/*
      font = CreateFont(50,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        HANGEUL_CHARSET,
        0,
        0,
        0,
        0,
        TEXT("궁서"));
      oldfont = (HFONT)SelectObject(hdc, font);

      TextOut(hdc, 100, 100, str, lstrlen(str));

      SelectObject(hdc, oldfont);
      DeleteObject(font);
      */


      lf.lfHeight = 50;
      lf.lfWidth = 0;
      lf.lfEscapement = 0;
      lf.lfOrientation = 0;
      lf.lfWeight = 0;
      lf.lfItalic = 0;
      lf.lfUnderline = 0;
      lf.lfStrikeOut = 0;
      lf.lfCharSet = HANGEUL_CHARSET;
      lf.lfOutPrecision = 0;
      lf.lfClipPrecision = 0;
      lf.lfQuality = 0;
      lf.lfPitchAndFamily = 0;

      lstrcpy(lf.lfFaceName, TEXT("궁서"));

      font = CreateFontIndirect(&lf);
      oldfont = (HFONT)SelectObject(hdc, font);

      TextOut(hdc, 100100, str, lstrlen(str));

      SelectObject(hdc, oldfont);
      DeleteObject(font);

      EndPaint(hWnd, &ps);
      return 0;
  }
  return(DefWindowProc(hWnd, iMessage, wParam, lParam));
}


■ 폰트 색상



LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
  HDC hdc;
  PAINTSTRUCT ps;
  HFONT font;
  HFONT oldfont;
  WCHAR str[] = TEXT("폰트 Test 1234");

  static HBRUSH myBrush;
  static HBRUSH oldBrush;

  switch (iMessage)
  {
    case WM_DESTROY:
      PostQuitMessage(0);
      return 0;

    case WM_PAINT:
      hdc = BeginPaint(hWnd, &ps);
      
      myBrush = CreateHatchBrush(HS_CROSS, RGB(0,0,255));
      oldBrush = (HBRUSH)SelectObject(hdc, myBrush);
      Rectangle(hdc, 5050400200);

      font = CreateFont(30,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        HANGEUL_CHARSET,
        0,
        0,
        0,
        0,
        TEXT("궁서"));
      oldfont = (HFONT)SelectObject(hdc, font);
      
      SetTextColor(hdc, RGB(25500));
      SetBkColor(hdc, RGB(2552550));

      TextOut(hdc, 100100, str, lstrlen(str));
      SetBkMode(hdc, TRANSPARENT);
      TextOut(hdc, 100150, str, lstrlen(str));

      SelectObject(hdc, oldBrush);
      SelectObject(hdc, oldfont);
      DeleteObject(myBrush);
      DeleteObject(font);

      EndPaint(hWnd, &ps);
      return 0;
  }
  return(DefWindowProc(hWnd, iMessage, wParam, lParam));
}


■ 글자 회전시키기


LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
  HDC hdc;
  PAINTSTRUCT ps;

  int i;
  WCHAR str[] = TEXT("                Beautiful Korea");
  HFONT myfont;
  HFONT oldfont;

  switch (iMessage)
  {
    case WM_DESTROY:
      PostQuitMessage(0);
      return 0;

    case WM_PAINT:
      hdc = BeginPaint(hWnd, &ps);

      for (i = 0; i < 900; i=i+100)
      {
        myfont = CreateFont(50,
          0,
          i,
          0,
          FW_NORMAL,
          FALSE,
          FALSE,
          FALSE,
          ANSI_CHARSET,
          OUT_DEFAULT_PRECIS,
          CLIP_DEFAULT_PRECIS,
          DEFAULT_QUALITY,
          VARIABLE_PITCH | FF_SWISS,
          TEXT("Times New Roman"));
        oldfont = (HFONT)SelectObject(hdc, myfont);
      
        TextOut(hdc, 0450, str, lstrlen(str));
        SelectObject(hdc, oldfont);
        DeleteObject(myfont);
      }

      EndPaint(hWnd, &ps);
      return 0;
  }
  return(DefWindowProc(hWnd, iMessage, wParam, lParam));
}


■ 버튼

LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
  HDC hdc;
  PAINTSTRUCT ps;

  switch (iMessage)
  {
    case WM_CREATE:
      CreateWindow(TEXT("button"),
        TEXT("Click Me"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
        20,
        20,
        100,
        25,
        hWnd,
        (HMENU)0,
        g_hInst,
        NULL);

      CreateWindow(TEXT("button"),
        TEXT("Me Two"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
        20,
        50,
        100,
        25,
        hWnd,
        (HMENU)1,
        g_hInst,
        NULL);
      return 0;

    case WM_DESTROY:
      PostQuitMessage(0);
      return 0;

    case WM_COMMAND:
      hdc = BeginPaint(hWnd, &ps);

      switch (LOWORD(wParam))
      {
        case 0:
          MessageBox(hWnd, TEXT("First Button Clicked"), TEXT("Button"), MB_OK);
          break;

        case 1:
          MessageBox(hWnd, TEXT("Second Button Clicked"), TEXT("Button"), MB_OK);
          break;
      }

      EndPaint(hWnd, &ps);
      return 0;
  }
  return(DefWindowProc(hWnd, iMessage, wParam, lParam));
}


■ 오락만들기

■ smart.h

■ main.c


728x90