³ª. ShowMsg

ApiEdit´Â Å×½ºÆ®¿ë ÇÁ·ÎÁ§Æ®·Î ¾²±â¿¡´Â ÀÌÁ¦ µ¢Ä¡°¡ ³Ê¹« Ä¿Á® ¹ö·È´Ù. ±×·¡¼­ ÄÁÆ®·ÑÈ­ ¹æ¹ýÀ» ¿¬±¸Çغ¸±â À§ÇÑ Àç·á·Î´Â ºÎÀû´çÇÑ °Í °°¾Æ Á» ´õ °£´ÜÇÑ ¿¹Á¦¸¦ ÅëÇØ °¢ ¹æ¹ýÀ» ºñ±³ÇØ º» ÈÄ ApiEdit¿¡ Àû¿ëÇϵµ·Ï ÇÒ °ÍÀÌ´Ù. ´ÙÀ½ ShowMsg ¿¹Á¦´Â ÁöÁ¤µÈ À§Ä¡¿¡ ¹®ÀÚ¿­ ¸Þ½ÃÁö¸¦ º¸¿©ÁÖ´Â °£´ÜÇÑ ±â´ÉÀ» °¡Áö°í Àִµ¥ Àо º¸¸é ½±°Ô ºÐ¼®ÀÌ µÉ °ÍÀÌ´Ù.

 

#include <windows.h>

 

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

HINSTANCE g_hInst;

HWND hWndMain;

LPCTSTR lpszClass=TEXT("ShowMsg");

 

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance

       ,LPSTR lpszCmdParam,int nCmdShow)

{

     HWND hWnd;

     MSG Message;

     WNDCLASS WndClass;

     g_hInst=hInstance;

    

     WndClass.cbClsExtra=0;

     WndClass.cbWndExtra=0;

     WndClass.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);

     WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);

     WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);

     WndClass.hInstance=hInstance;

     WndClass.lpfnWndProc=(WNDPROC)WndProc;

     WndClass.lpszClassName=lpszClass;

     WndClass.lpszMenuName=NULL;

     WndClass.style=CS_HREDRAW | CS_VREDRAW;

     RegisterClass(&WndClass);

 

     hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,

          CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,

          NULL,(HMENU)NULL,hInstance,NULL);

     ShowWindow(hWnd,nCmdShow);

     hWndMain=hWnd;

    

     while(GetMessage(&Message,0,0,0)) {

          TranslateMessage(&Message);

          DispatchMessage(&Message);

     }

     return (int)Message.wParam;

}

 

int x;

int y;

TCHAR *str;

 

void ChangeString(TCHAR *nstr)

{

     lstrcpy(str,nstr);

     InvalidateRect(hWndMain,NULL,TRUE);

}

 

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

     HDC hdc;

     PAINTSTRUCT ps;

     RECT crt;

 

     switch(iMessage) {

     case WM_CREATE:

          x=50;

          y=50;

          str=(TCHAR *)malloc(128);

          lstrcpy(str,"String");

          return 0;

     case WM_SIZE:

          if (wParam != SIZE_MINIMIZED) {

              x=min(x,LOWORD(lParam)-50);

              y=min(y,HIWORD(lParam)-10);

          }

          return 0;

     case WM_KEYDOWN:

          GetClientRect(hWnd,&crt);

          switch (wParam) {

          case VK_LEFT:

              if (x > 0)

                   x--;

              break;

          case VK_RIGHT:

              if (x < crt.right-50)

                   x++;

              break;

          case VK_UP:

              if (y > 0)

                   y--;

              break;

          case VK_DOWN:

              if (y < crt.bottom-10)

                   y++;

              break;

          }

          InvalidateRect(hWnd,NULL,TRUE);

          return 0;

     case WM_LBUTTONDOWN:

          if (lstrcmp(str,"String") == 0) {

              ChangeString("¹®ÀÚ¿­");

          } else {

              ChangeString("String");

          }

          return 0;

     case WM_PAINT:

          GetClientRect(hWnd,&crt);

          hdc=BeginPaint(hWnd, &ps);

          Rectangle(hdc,0,0,crt.right,crt.bottom);

          TextOut(hdc,x,y,str,lstrlen(str));

          EndPaint(hWnd, &ps);

          return 0;

     case WM_DESTROY:

          free(str);

          PostQuitMessage(0);

          return 0;

     }

     return(DefWindowProc(hWnd,iMessage,wParam,lParam));

}

 

¼¼ °³ÀÇ Àü¿ªº¯¼ö¸¦ °¡Áö°í Àִµ¥ x, y ÁÂÇ¥¿¡ ¹®ÀÚ¿­ strÀ» Ãâ·ÂÇÑ´Ù. str º¯¼ö´Â ÀÏÁ¾ÀÇ ¹®ÀÚ¿­ ¹öÆÛÀε¥ WM_CREATE¿¡¼­ µ¿ÀûÀ¸·Î ÇÒ´çµÇ°í WM_DESTROY¿¡¼­ ÇØÁ¦µÈ´Ù. ¹®ÀÚ¿­ Ãâ·Â ±â´É ¿Ü¿¡ Ä¿¼­À̵¿Å°·Î ¹®ÀÚ¿­ÀÇ À§Ä¡¸¦ Á¶Á¤ÇÒ ¼ö ÀÖÀ¸¸ç ¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» Ŭ¸¯ÇÏ¿© ¹®ÀÚ¿­ÀÇ ³»¿ëÀ» ¹Ù²Ü ¼ö ÀÖ´Ù. ¹®ÀÚ¿­ º¯°æÀ» À§ÇØ ChangeStringÀ̶ó´Â ÀϹÝÇÔ¼öµµ Çϳª Á¤ÀǵǾî Àִµ¥ ÀÌ ÇÔ¼ö¸¦ ÀϺη¯ ¿ÜºÎ·Î ºÐ¸®ÇسõÀº ÀÌÀ¯´Â ÄÁÆ®·ÑÈ­ ¹æ¹ý¿¡ µû¶ó ÀϹÝÇÔ¼öÀÇ ÇüÅ°¡ Á¶±Ý¾¿ ¹Ù²î´Â °ÍÀ» »ìÆ캸±â À§Çؼ­ÀÌ´Ù. ½ÇÇàÁßÀÇ ¸ð½ÀÀº ´ÙÀ½°ú °°´Ù.

½Ç¿ëÀû °¡Ä¡¶ó°í´Â ÀüÇô ¾ø´Â °£´ÜÇÑ ±â´ÉÀÇ À©µµ¿ìÀε¥ ÀÌ À©µµ¿ì¸¦ ÄÁÆ®·Ñ·Î ¸¸µé¾î º¸µµ·Ï ÇÏÀÚ. ÄÁÆ®·ÑÀÌ µÇ¸é ´Ù¸¥ À©µµ¿ìÀÇ Â÷Àϵ尡 µÇ¹Ç·Î ÀçÈ°¿ë¿¡ À¯¸®ÇÏ´Ù. ÀÌ À©µµ¿ì¸¦ ÄÁÆ®·Ñ·Î ¸¸µå´Â ¹æ¹ýÀº ApiEdit¿¡µµ ±×´ë·Î Àû¿ëµÈ´Ù.