박하의 나날

Basic

프로그래밍/WIN32 API

2015.03.20. 22:11

*기본적인 부모윈도우를 띄우는 베이직소스!​

#include <windows.h>
#include <tchar.h>

/*Unicode:

wchar: Unicode(2byte:16bit, TCHAR *szString  = L"ABC")

char:ASCIIcode(1byte:8bit, char *szString  = ABC"))

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

//LRESULT= long: OS에게보고용자료
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR strCmdLine, int nShowCmd)

//WINAPI WinMain: Windows 실행방식
//HINSTANCE hInstance: 프로그램 번호,
{
 WNDCLASSEX wcex;

// 윈도우정보구조체
 memset(&wcex, 0, sizeof(wcex));

  wcex.cbSize    = sizeof(wcex);

//윈도우구조체크기
  wcex.style    = CS_HREDRAW | CS_VREDRAW;

// 윈도우 스타일
  wcex.hbrBackground  = (HBRUSH)GetStockObject(WHITE_BRUSH);

//클라이언트 배경색
  wcex.hCursor   = LoadCursor(NULL, IDC_ARROW);

//커서모양
  wcex.hIcon    = LoadIcon(NULL, IDI_APPLICATION);

//아이콘모양
  wcex.hInstance   = hInstance;

//프로그램번호
  wcex.cbClsExtra   = 0;
  wcex.cbWndExtra   = 0;

//윈도우즈예역영역
  wcex.hIconSm   = NULL;

//작은아이콘
  wcex.lpszMenuName  = NULL;

//메뉴. 리스소에디터로 제작
  wcex.lpfnWndProc  = WndProc;

//메시지처리함수
  wcex.lpszClassName   = L"MyWindow";

// 위 설정의 윈도우 클래스 이름
  RegisterClassEx(&wcex);

//윈도우에 등록

 HWND hWnd = CreateWindow(L"MyWindow", L"MyWindow", WS_OVERLAPPEDWINDOW,
  //CreateWindow 윈도우 생성함수
  // L L 첫번째는 생성하고자하는 클래스, 두번째는 윈도우캡션
  //WS_ 윈도우형태
  CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
  // 윈도우 x, y  좌표   

 // 윈도우 width, height
 //부모윈도우
 //NULL 윈도우의 MENU ID값
 //hInstance 프로그램번호와 윈도우 연결
 //NULL특수목적
 if(hWnd == NULL)
 {
  MessageBox(NULL, L"윈도우생성실패", L"에러", MB_ICONERROR | MB_OK);
  return -1;
 }
 ShowWindow(hWnd, SW_SHOW);

 MSG msg;
 memset(&msg, 0, sizeof(msg));
 while(GetMessage(&msg, NULL, 0, 0))

//(메시지 구조체 포인터, 메시지 얻어올 장소, 메시지 최소값, 메시지 최대값)
 {
  TranslateMessage(&msg);

//키값 조사
  DispatchMessage(&msg);

// 메시지 처리
 }
 return 0;
}

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

                                      //         누가        메시지 제목        내용1                      내용2
{
 switch (uMsg)
 {
 case WM_PAINT:
  {
   break;
  }

 case WM_DESTROY :

//윈도우창 파괴될경우 메시지
  {
   PostQuitMessage(0);

// WM_QUIT 발생
   break;
  }
 }

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

//윈도우 보고용
}

'프로그래밍 > WIN32 API' 카테고리의 다른 글

1,2일차 기본  (0) 2017.04.06
마우스좌표 나타내기  (0) 2017.04.06
Pen, Brush  (0) 2017.04.06
Text Out  (0) 2017.04.06