-
C언어 공부 되새김 Win32Api구현해보기 5편 화면출력 printfC언어 공부 되새김 Win32api로 구현해보기 2019. 10. 20. 21:33
컴퓨터 프로그래밍 C언어 공부를 콘솔로 공부하고 윈도우 프로그래밍으로 구현하는데
콘솔로 공부하던 소스를 윈도우 프로그래밍 기본 코드를 제외하고 함수 형식으로 콘솔 소스와
비슷하게 구현해보려고 합니다.
콘솔은 쉽고 윈도우는 어렵다가 아니고 윈도우 프로그래밍을 시작부터 접하면서 친숙해졌으면 합니다.
구현은 무료 통합개발 환경인 Dev-C++ 4.9.9.2로 구현합니다.
지난편에는 정렬 출력하였습니다.
이번엔 console의 printf 함수처럼 여러 가지 출력 변화를 줄 수 있는 방법을 구현해 보겠습니다.
▷ Console 프로그래밍
void main(int argc, char *argv[])
{int i, j;
i=10;
j=20;printf("%d + %d = %d\n",i,j,i+j);
system("PAUSE");
}
▷ Win32Api 프로그래밍
void Study_Main(HDC hdc){
char str[80]; //화면 출력을 위한 임시 변수
int i;
int j;i=10;
j=20;wsprintf(str,TEXT("%d + %d = %d"), i, j, i+j);
TextOut(hdc, 0,0, str, lstrlen(str));
}
▷ windows 전체 소스
#include <windows.h>
/* Declare Windows procedure */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
/* Make the class name into a global variable */
char szClassName[ ] = "myadmonWindowsApp";
void Study_Main(HDC hdc);
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
{
HWND hwnd; /* This is the handle for our window */
MSG messages; /* Here messages to the application are saved */
WNDCLASSEX wincl; /* Data structure for the windowclass */
/* The Window structure */
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */
wincl.style = CS_DBLCLKS; /* Catch double-clicks */
wincl.cbSize = sizeof (WNDCLASSEX);
/* Use default icon and mouse-pointer */
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL; /* No menu */
wincl.cbClsExtra = 0; /* No extra bytes after the window class */
wincl.cbWndExtra = 0; /* structure or the window instance */
/* Use Windows's default color as the background of the window */
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
/* Register the window class, and if it fails quit the program */
if (!RegisterClassEx (&wincl))
return 0;
/* The class is registered, let's create the program*/
hwnd = CreateWindowEx (
0, /* Extended possibilites for variation */
szClassName, /* Classname */
"myadmon Windows App", /* Title Text */
// WS_OVERLAPPEDWINDOW, /* default window */
WS_CAPTION | WS_SYSMENU,
// WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,
CW_USEDEFAULT, /* Windows decides the position */
CW_USEDEFAULT, /* where the window ends up on the screen */
640, /* The programs width */
480, /* and height in pixels */
HWND_DESKTOP, /* The window is a child-window to desktop */
NULL, /* No menu */
hThisInstance, /* Program Instance handler */
NULL /* No Window Creation data */
);
/* Make the window visible on the screen */
ShowWindow (hwnd, nFunsterStil);
/* Run the message loop. It will run until GetMessage() returns 0 */
while (GetMessage (&messages, NULL, 0, 0))
{
/* Translate virtual-key messages into character messages */
TranslateMessage(&messages);
/* Send message to WindowProcedure */
DispatchMessage(&messages);
}
/* The program return-value is 0 - The value that PostQuitMessage() gave */
return messages.wParam;
}
/* This function is called by the Windows function DispatchMessage() */
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
switch (message) /* handle the messages */
{
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
Study_Main(hdc); //함수 호출
EndPaint(hwnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
break;
default: /* for messages that we don't deal with */
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
void Study_Main(HDC hdc){
char str[80]; //화면 출력을 위한 임시 변수
int i;
int j;
i=10;
j=20;
wsprintf(str,TEXT("%d + %d = %d"), i, j, i+j);
TextOut(hdc, 0,0, str, lstrlen(str));
함수 부분만 구현된 부분은 콘솔 소스와 비슷하죠?
오늘은 여기까지 하겠습니다.
그럼 이만...
'C언어 공부 되새김 Win32api로 구현해보기' 카테고리의 다른 글
C언어 공부 되새김 Win32Api구현해보기 7편 반복문 for - DrawText (0) 2019.10.21 C언어 공부 되새김 Win32Api구현해보기 6편 반복문 for - TextOut (0) 2019.10.21 C언어 공부 되새김 Win32Api구현해보기 4편 화면출력함수처리3 (0) 2019.10.19 C언어 공부 되새김 Win32Api구현해보기 3편 화면출력함수처리2 (0) 2019.10.17 C언어 공부 되새김 Win32Api구현해보기 2편 화면출력함수처리 (0) 2019.10.16