일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 연습문제
- 솔루션
- C4996
- 소주
- Android
- 한빛미디어
- 시스템 사양
- origin
- NFC
- 어플리케이션 숨기기
- ubuntu for phone
- 윈도우
- 심즈3
- 안드로이드
- 인터넷 이해와 활용
- 태그를 입력해 주세요.
- 에러
- 스카이림
- 둔산동
- mysql
- 관평동
- C언어
- 오리진
- 정보보안개론과 실습
- 예제
- 맛집
- C
- 소켓통신
- C++
- Error
- Today
- Total
스프링노트
[C++] 간단한 Win32 SDK 윈도우 프로그램 만들기 본문
#include <Windows.h>
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM IParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR IpszCmdLine, int nCmdShow) {
static LPTSTR szAppName = "EasyText";
static LPTSTR szTitleName = "Practice1_1";
HWND hwnd;
MSG msg;
WNDCLASSEX WndClass;
//1_윈도우 클래스 구조체 WndClass에 값을 채워 윈도우 클래스를 등록한다.
WndClass.cbSize = sizeof(WNDCLASSEX); //구조체 크기
WndClass.style = CS_HREDRAW | CS_VREDRAW; //클래스 스타일
WndClass.lpfnWndProc = 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)GetStockObject(WHITE_BRUSH);
WndClass.lpszMenuName = NULL;
WndClass.lpszClassName = szAppName;
WndClass.hIconSm = 0;
// 윈도우 클래스를 등록한다.
RegisterClassEx(&WndClass);
//2_프레임 윈도우를 생성한다.
hwnd = CreateWindow(
szAppName,
szTitleName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);
//프레임 윈도우를 화면에 표시한다.
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
//3_메시지 큐로부터 메시지를 받아와 메시지를 해당 윈도우 프로시저로 보낸다.
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM IParam)
{
HDC hdc; //디바이스 컨텍스트
RECT rect; //RECT 구조체
PAINTSTRUCT ps; //페인트 구조체
LPTSTR szMsg1 = "I LOVE WINDOW PROGRAMMING!";
LPTSTR szMsg2 = "키보드가 눌러졌습니다.";
LPTSTR szMsg3 = "키보드가 떼어졌습니다.";
//1_ 커널에서 들어온 메시지를 switch문을 이용하여 처리
switch(message)
{
case WM_CREATE : //윈도우가 처음 생성 메시지가 온 경우
break;
case WM_PAINT : //화면에 출력 메시지가 온 경우
hdc = BeginPaint(hwnd, &ps);
TextOut(hdc, 10, 10, szMsg1, strlen(szMsg1)); //윈도우에 문자열을 출력
EndPaint(hwnd, &ps);
break;
case WM_KEYDOWN : //키보드 버튼이 눌린 경우
hdc = GetDC(hwnd);
GetClientRect(hwnd, &rect);
DrawText(hdc, szMsg2, strlen(szMsg2), &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
ReleaseDC(hwnd, hdc);
break;
case WM_KEYUP :
hdc = GetDC(hwnd);
GetClientRect(hwnd, &rect);
DrawText(hdc, szMsg3, strlen(szMsg3), &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
ReleaseDC(hwnd, hdc);
break;
case WM_DESTROY : //프로그램 종료 메시지가 온 경우
PostQuitMessage(0);
break;
default : //그 외 메시지가 온 경우
return DefWindowProc(hwnd, message, wParam, IParam);
}
return 0;
}
출처 : 생능출판사
'DEVELOPMENT > C/C++' 카테고리의 다른 글
[C#] 텍스트박스에서 엔터키 이벤트 (0) | 2013.07.18 |
---|---|
[C#] MySQL 레코드 불러오기 (0) | 2013.07.17 |
간단한 구조체 예시 (0) | 2013.04.29 |
[C] 함수의 크기 (0) | 2013.04.29 |
학점 계산 프로그램 (0) | 2013.04.29 |