윈도우 프로그램을 보면 윈도우 안에 윈도우가 있는 모습을 볼 수 있다. 그 대표적인 예가 바로 Windows에서 제공하는 계산기이다. 가장 큰 윈도우 틀이 부모 윈도우이고 그 안에 필요에 따라 여러 자식 윈도우가 들어있는 계산기 같은 프로그램이 윈도우 프로그램의 가장 기본적인 형태인 셈이다.(앞서본 컨트롤 윈도우도 그 윈도우의 자식 윈도우로써 생성했었다!!!) 부모와 자식 윈도우를 설정해주는 것은 간단하다. 일단 자식 윈도우도 컨트롤 윈도우처럼 그 윈도우의 프로시져(WndProc)에서 생성하는게 일반적이므로 부모 윈도우의 프로시져에서 스태틱으로 윈도우 핸들을 선언해준다. 그리고 늘 윈도우를 생성할 때 사용한 CreateWindow()함수를 사용해서 생성하되 8번째 인자에 부모 윈도우의 핸들을 넣어주면 된..
컨트롤 윈도우란 API에서 제공되어지는 윈도우들을 의미한다. 컨트롤 윈도우의 종류는 버튼, 에디트, 콤보박스, 리스트박스, 스크롤바, 스태틱 등이 있다. 우선 예제부터 보면 다음과 같다. 123456789101112131415161718192021222324LRESULT CALLBACK WndProc(HWND hWnd, UINT mesg, WPARAM wParam, LPARAM lParam){ static HWND btn; switch (mesg) { case WM_CREATE: btn = CreateWindow( L"button", L"CLICK", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 0, 0, 50, 50, hWnd, (HMENU)0, NULL, NULL); brea..
윈도우 메세지 처리는 윈도우 프로그래밍의 모든 것을 처리하는 것인 셈이다. 메세지 처리는 처리하는 메세지에 따라 여라가지 유형이 존재한다. 우선 가장 기본적인 메세지 처리를 보면 윈도우에서 발생하는 메세지를 처리를 하는 것이다. 일단 알다시피 메세지 처리는 통칭 WndProc함수에서 처리한다. 윈도우에서 발생하는 메세지는 WM_으로 시작하며, 그 종류는 굉장히 많지만 자주 발생하는 것만 모아 보면 123456789WM_SIZE //윈도우의 크기가 변할 때WM_MOVE //윈도우가 이동할 때WM_CREATE //윈도우가 생성될 때WM_DISTROY //윈도우가 파괴될 때WM_MOUSEMOVE //마우스가 움직일 때WM_LBUTTONDOWN //마우스 왼쪽 버튼이 눌렸을 때WM_LBUTTONUP //마우스 ..
이번엔 윈도우 생성이다. 윈도우 생성은 CreateWindow()라는 함수로 이루어진다. 윈도우 CreateWindow()를 먼져 대충 살펴 보면 12345678910111213HWND CreateWindow( LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam);cs 위와 같다. 이제 차근차근 살펴보면 LPCTSTR lpClassName은 윈도우를 생성할 때 사용할 윈도우 클래스 이름을 받는 인자이며, 자기가 정의한 윈도우 클래스 이름을 넣어주면 된다. 그 외에 이미..
기초 부분에서 보았듯이 윈도우 클래스를 생성하려면 WINDOWCLASS 구조체 변수로 선언해주면 되는 것을 알 수 있다. 생성은 간단했지만 정의는 생각 보다 길다. 기초에 있는 코드에서 보면 12345678910WndClass.style = NULL;WndClass.lpfnWndProc = (WNDPROC)WndProc;WndClass.cbClsExtra = 0;WndClass.cbWndExtra = 0;WndClass.hInstance = hInstance;WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);WndClass.hbrBackground = (HBRUSH)GetStockOb..
일단 먼져 알아둘게 윈도우 프로그램이란 윈도우에서 메세지를 보내 그 메세지에 대한 이벤트 처리를 하는 프로그램이기 때문에 "이벤트 기반 프로그램"이라고도 한다. 윈도우 프로그래밍에서 프로그래머가 해주어야 하는 것은 윈도우 생성과 이벤트 처리 이 2가지 이다. 그래서 크게 윈도우 프로그래밍을 위해서 아래의 2가지 함수가 필요하다. WinMain(HINSTANCE, HINSTANCE, LPSTR, int) 와 WndProc(HWND, UINT, WPARAM, LPARAM) 이다. WinMain은 C나 C++에서 쓰는 main을 대신하며 윈도우를 생성을 코딩하는 해야할 함수이며, WndProc은 윈도우에서 발생하는 이벤트를 처리 코딩을 해야할 함수이다. 그래서 윈도우 프로그램을 저 2개의 함수로 구조를 보면 ..
게임 정도의 출력 처리를 요구하는 프로그램이면 출력을 구현 할 때 system함수가 유용하게 쓰일 때가 많습니다. 일단 헤더파일 Window.h가 필요합니다. 함수의 원형은 뭔질 모르겠지만 제가 적자면 아래와 같을 겁니다. system(char *Command) system함수는 cmd에서 사용하는 명령어를 사용하는 함수인데요. 콘솔이 cmd이고 cmd가 콘솔이기 때문에 가능한 것 같습니다. 많은 cmd 명령어들 중에서 그래픽 처리에 주로 사용하는 것만 고르자면 아마 "cls" "mode con: lines=(정수) cols=(정수)" "color (배경색)(글자색)" "pause" 정도 일 것 같은데요. 순서대로 소개하자면 system("cls") "cls"는 cmd에서 화면을 지우는 함수입니다. 그래..
- Total
- Today
- Yesterday