// Visual Studio 2015, Hello world! API 예제 ( sualchi@daum.net )
// 비주얼스튜디오 2015에서 API 응용프로그램 프로젝트를 만드는 방법은 다른 분들의 글을 참고하세요.
// main.c 파일을 생성하고, 이 소스 코드를 모두 복사해서 빌드/실행하세요(F5).
#include <Windows.h>
const wchar_t className[] = L"HelloWin"; // 윈도우 클래스 이름
BOOL InitApp(HINSTANCE h); // 초기화 함수 원형 선언
LRESULT CALLBACK HelloWndProc(HWND, UINT, WPARAM, LPARAM);
BOOL InitInstance(HINSTANCE h, int nCmdShow);
// 메인 함수
int WINAPI wWinMain(HINSTANCE h, HINSTANCE hp, wchar_t * lpCmdLine, int nCmdShow)
{
MSG msg;
if (!InitApp(h))
return FALSE;
if (!InitInstance(h, nCmdShow))
return FALSE;
while (GetMessage(&msg, (HWND)NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
// 응용프로그램 초기화 및 등록 함수
BOOL InitApp(HINSTANCE h)
{
WNDCLASSEX wcx;
wcx.cbSize = sizeof(wcx);
wcx.style = CS_HREDRAW | CS_VREDRAW;
wcx.lpfnWndProc = HelloWndProc;
wcx.cbClsExtra = 0;
wcx.cbWndExtra = 0;
wcx.hInstance = h;
wcx.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wcx.hCursor = LoadCursor(NULL, IDC_ARROW);
wcx.hbrBackground = GetStockObject(WHITE_BRUSH);
wcx.lpszMenuName = NULL;
wcx.lpszClassName = (LPCTSTR)className;
wcx.hIconSm = NULL;
return RegisterClassEx(&wcx);
}
// 윈도우 프로시저 콜백 함수
LRESULT CALLBACK HelloWndProc(HWND hWnd, UINT message, WPARAM wp, LPARAM lp)
{
const LPCWSTR text = L"Hello, Window! 안녕하세요!";
switch (message)
{
case WM_PAINT:
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
TextOutW(hdc, 100, 100, text, (int)wcslen(text));
EndPaint(hWnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, message, wp, lp);
}
// 윈도우 인스턴스 초기화 함수
BOOL InitInstance(HINSTANCE h, int nCmdShow)
{
HWND hwnd;
hwnd = CreateWindow(
(LPCWSTR)className,
L"Hello Window",
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
(HWND)NULL,
(HMENU)NULL,
h,
(LPVOID)NULL);
if (!hwnd)
return FALSE;
// ShowWindow(hwnd, SW_SHOW); // WS_VISIBLE 속성을 지정 안한 경우에는 직접 호출 가능
return TRUE;
}
'C' 카테고리의 다른 글
C 언어 이진 검색에서 2의 30승 이상의 원소일 때 mid 값 오버플로우 줄이기 (0) | 2016.08.02 |
---|---|
Visual Studio 2015, Hello world! API 예제 (2) (0) | 2016.07.21 |
C 라이브러리 레퍼런스 사이트 (0) | 2016.06.16 |
Visual C++, 다른 서버의 파일을 FTP로 다운로드 하기 (0) | 2016.04.16 |
C와 MySQL (0) | 2014.01.14 |