반응형
간단하게 윈도우 API를 통해 메세지 박스에 Hello World를 출력했으니 이제는 윈도우창에 Hello World를 출력해보자!!
먼저 WInMain 함수에 Hello Wolrd를 출력할 윈도우 창을 만들어야 합니다.
CreateWindow 함수를 메인함수에 구현해서 창을 출력하도록 해보겠습니다.
먼저 CreateWindow 함수를 마소에 물어보겠습니다. (발번역 시작)
출처 - https://msdn.microsoft.com/en-us/library/windows/desktop/ms632679(v=vs.85).aspx |
HWND WINAPI CreateWindow( _In_opt_ LPCTSTR lpClassName, _In_opt_ LPCTSTR lpWindowName, _In_ DWORD dwStyle, _In_ int x, _In_ int y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam ); |
매개 변수 | 의미 |
lpClassName | 윈도우 클래스의 이름을 지정합니다. RegisterClass 또는 RegisterClassEx함수에 대한 이전 호출에 의해 생성 된 클래스를 입력할 수 있습니다. |
lpWindowName | 윈도우 창 이름을 지정합니다. 창 제목은 제목 표시줄에 표시되며, 식별자는 구문 #num을 사용합니다. |
dwStyle | 윈도우의 스타일을 지정 할 수 있습니다. (자세한 종류는 해당 출처 주소를 참고해주세요.) |
x | 윈도우의 초기 수평위치를 지정합니다. 윈도우의 왼쪽 상단 구석의 x 좌표이며, 자식창일 경우 x는 부모 윈도우의 클라이언트 영역의 왼쪽 위 모서리가 기준입니다. CW_USEDEFAULT 로 설정할 경우 좌상 코너에 위치하며, y 값을 무시합니다. 팝업 또는 자식 창을 설정하였을 경우 x,y 값은 0으로 설정 됩니다. |
y | 윈도우의 초기 수직위치를 지정합니다. 윈도우의 왼쪽 상단 구석의 y 좌표이며, 자식창일 경우 x는 부모 윈도우의 클라이언트 영역의 왼쪽 위 모서리가 기준입니다y WS_VISIBLE 스타일 비트로 생성되며, x 값이 CW_USEDEFAULT 로 설정될 경우 y값은 윈도우가 표시되는 방법을 결정합니다. y 값이 CW_USEDEFAULT 경우 ShowWindow 함수와 SW_SHOW 플래그를 생성할 수 있습니다. (자세한 종류는 해당 출처 주소를 참고해주세요.) |
nWidth | 윈도우 창의 수평 폭을 지정합니다. |
nHeight | 윈도우 창의 수직 폭을 지정합니다. |
hWndParent | 윈도우의 부모 또는 소유자 창에 대한 핸들을 생성합니다.(부모 설정) 자식창이나 소유의 창을 만들려면 핸들을 제공하며, 이 매개변수는 선택적입니다. |
hMenu | 윈도우 메뉴의 핸들이며, 자식창의 식별자를 지정합니다. 또 오버랩 또는 팝업창 , 창의 HMENU 함께 사용하도록 메뉴를 식별합니다. 해당 매개변수는 NULL 일 수 있습니다. (메뉴 생성 여부) |
hInstance | 윈도우 모듈의 인스턴스 핸들 값입니다. WinMain의 인수로 전달된 hInstance를 대입해주면 됩니다. |
lpParam | CREATESTRUCT을 통해 윈도우에 포인터 값을 전달합니다. CLIENTCREATESTRUCT 구조를 가리켜야하며, 추가적인 데이터가 필요하지 않을 경우 해당 매개변수는 NULL 일 수 있습니다. |
모든 인자값의 설명을 이해할 수는 없습니다. 그렇기에 현재는 NULL 이 가능한 부분은 NULL로 설정하고
빌드를 해보면..뭔가 창이 팍! 하고 나타났다가 사라지는걸 볼 수 있습니다.
생성은 했지만 출력해주는 주는 장치가 없기 때문인데요..
정식적인 방법이면 전혀 걱정할 필요가 없겠지만...그럼 이전에 작성했던 메세지창을 추가해서 해당 윈도우창을 임시로 잡아줘 보겠습니다.
#include <Windows.h> int CALLBACK WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nShowCmd) { CreateWindow( "edit" , "Hello World!" , WS_OVERLAPPEDWINDOW | WS_VISIBLE, 0 , 0 , 1000 , 1000, NULL, NULL , hInstance , NULL ); MessageBoxA(NULL, "Hello World!!" , "Hello World! 출력" , MB_OK ); } |
//출력 결과 |
뭔가 아쉬운 부분이 있지만 일단 창을 출력하는데 성공했습니다.
하지만 뭔가 허접한데요..그럼 메세지 박스 없이 기본 입력값과 더불어 윈도우 클래스를 통해서
윈도우를 지속적으로 보여주는것을 해보겠습니다.
WIndows API - #3. 윈도우창에 Hello World 출력하기(2)로 이어집니다.
반응형
'프로그래밍 관련 > Win API' 카테고리의 다른 글
WIndows API - #4. 윈도우창 출력 함수 자세히보기(1) (0) | 2015.08.23 |
---|---|
WIndows API - #3. 윈도우창에 Hello World 출력하기(2) (0) | 2015.08.21 |
WIndows API - #2. Hello World MessageBox 출력하기(2) (0) | 2015.08.21 |
WIndows API - #2. Hello World MessageBox 출력하기(1) (0) | 2015.08.20 |
WIndows API - #1. 기본 (0) | 2015.08.20 |