API 8

#013_WIndow_API_부모와 자식이 함께해요_자식 프로세스

안녕하세요 삽잡이입니다.이번 시간에는 몇가지 윈도우를 함께 다뤄보는 시간을 가지려 합니다. 대부분의 윈도우에는 메시지 루프, Dispatcher, CreateWindow, Proc가 있습니다.그렇다면 여러 윈도우를 생성할 때를 생각해보도록 하지요...윈도우 생성을 할 때에는 CreateWindow를 사용합니다.또한, Window 생성 시 반드시 윈도우 클래스 이름이 필요합니다. 어플리케이션에서 메인 윈도우는 어딜 가나 하나입니다.그리고 나머지는 모두 메인 윈도우의 자식 윈도우들이라고 할 수 있습니다.(참고로, 팝업 윈도우는 메인 윈도우의 영역을 벗어날 수 있는 자식 윈도우를 말합니다. 뜬금...) 어찌됬건, 메인 윈도우는 단 하나입니다.또한, 자식 윈도우는 메인 윈도우보다 먼저 만들어질 수 없습니다. 자..

#012_WIndow_API_GUI 프로그래밍에서 주의할 점

안녕하세요 삽잡이입니다. 이번 시간에는 잠시 GUI 환경의 프로그램에서 신경써야할 사항들에 대해서 알아보려고 합니다. GUI에는 크게 UI 부분인 View와 코드 영역인 Data가 있습니다.이 둘은 서로 일대일로 부합해야 되며, 이를 싱크라고 합니다. View는 사용자에게 직접 보이는 곳으로써, 사용자의 Input을 받고 Output을 제공하는 역할을 담당하고 있습니다.그말인 즉, Input으로 받은 데이터를 가공하는 역할을 담당하는 부분이 Data라는 것입니다. 다시 한번 강조하지만,GUI에서는 View와 Data가 정말로 중요합니다.따라서 데이터를 어떻게 조직하고 어떻게 UI로 나타낼지에 대해 고민하는 것이바로 개발 공부를 하는 저와 같은 허접들의 고충이 되겠지요... 아무튼... API를 공부하며 ..

#010_WIndow_API_다이얼로그 (2)

안녕하세요 삽잡이입니다.지난 시간에 모달 다이얼로그에 대해서 알아보는 시간을 가졌습니다.이번 시간에도 이어서 달려보도록 하겠습니다. DialogBox 함수를 통해 우리는 모달 다이어그램을 생성할 수 있었습니다.하지만, 모달 다이어그램을 사용하기 위해서는 WndProc 함수에서 다이얼로그를 생성하고다이얼로그 프로시저에서 다이얼로그를 소멸시켜야 된다는 사실에 대해 알게 되었습니다. 그렇다면 우리는 위의 말을 참고해서 이와 같은 코드를 작성할 수 있습니다. 이 조건문에 대해서 간략하게 설명 드리자면,'IDOK 즉, 확인 버튼을 뜻하는 ID 값과 DialogBox의 반환 값이 같다면' 해당 조건문을 실행하겠다는 뜻입니다. 제가 지금 뜬금없이 x 소리를 하는 것이 아니라는 이유를 설명하기 전에 EndDialog ..

#009_WIndow_API_다이얼로그 (1)

안녕하세요 삽잡이 입니다.이번 시간에는 지난시간에 이어서 리소스에 대해 조금 더 살펴보고자 합니다. 여러분은 이와 같은 메시지 창을 보신적이 있으신가요?물론 없으시겠지요... 저런 혐오스러운 메시지창을 하하... 아무튼... 어떤 확인을 위해 띄우는 윈도우를 바로 MessgeBox라고 합니다.이 메시지 박스를 띄우기 위해서는 MSDN에서 우리에게 알려주는 것과 같이,부모 윈도우 핸들과, 출력될 내용, 캡션의 이름, 스타일이 순서대로 매개변수에 입력되어져야 됩니다.여기서 의문이 듭니다... 왜 부모 윈도우 핸들을 넣어줘야할까요?왜냐하면, 메시지박스는 윈도우이기 때문입니다. 정리하자면, 윈도우 상에 어떠한 작업 중 '확인을 위해 띄우는' 목적에 의해 생성되는 윈도우가 메시지 박스이기 때문에 결과적으로 이 메..

#008_WIndow_API_리소스 (Resource)

안녕하세요 삽잡이입니다.이번 시간에는 리소스에 대해서 알아보도록 하겠습니다. 리소스라는 단어는 이곳 저곳에서 굉장히 많이 사용되는 용어입니다.리소스의 한글 뜻은 '자원'으로써 스타크래프트에서는 SCV가 캐는 미네랄이 바로 '자원'이죠... 아무튼... IT 분야에서 리소스란 '코드와 분리되어 실행 파일에 포함되는 데이터'라고 정의 할 수 있습니다...코드는 리소스와 어떤 차이가 있기에 코드와 분리한다고 하는 것일까요? 우리가 프로그램을 만들게 되면 해당 프로그램은 바이너리 코드 .exe에 만들어집니다.프로그램이란 무수히 많은 데이터와 명령어의 집합으로 구성 되어있습니다.이 집합을 로직 코드로 나누어 따로 데이터를 관리해보자는 취지에서 만들어진 개념이 바로 리소스입니다. 우선 리소스에 대해서 이야기하기전,..

#004_WIndow_API_WinMain, WndProc에 대해서 (3)

안녕하세요 삽잡이입니다.이번 시간에도 마찬가지로 WinMain함수와 WndProc함수에 대해서 마져 알아보도록 하겠습니다. WndProc의 매개변수는 어떻게 생겼을까요... 1LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)cs 이런식으로 생겨먹었습니다...매개변수를 하나씩 살펴보도록 하겠습니다. 우선 hwnd의 경우 메시지가 발생한 윈도우의 핸들을 뜻합니다.다음 매개변수인 iMsg는 메시지의 종류를 뜻합니다. 그리고 하위 두개의 매개 변수는 각각 4바이트 짜리 변수를 뜻합니다.우선 wParam의 w의 경우 2Byte 크기의 WORD를 뜻했었는데 뭐....현재는 정보도 많아지고... 과거의 잔재로 그냥 w가 붙어 있는..

#002_WIndow_API_WinMain, WndProc에 대해서 (1)

안녕하세요 삽잡이 입니다.이번 시간에는 지난 시간에 이어서 WinMain함수와 WndProc함수에 대해서 조금 더 알아보도록 하겠습니다. 우선, 지난 시간에 배운 내용을 간략하게 설명하자면...WinProc 함수는 프로시저이고 , 메시지를 처리하는 함수를 뜩합니다.메인 함수인 WinMain함수는 크게 세가지 영역으로 나뉠 수 있습니다. 첫번째로, 윈도우의 클래스를 등록하는 부분이 있습니다.윈도우 클래스를 등록하기 위해서는 구조체를 사용해야합니다. 즉, 윈도우 클래스라는 구조체를 설정한 다음 해당 윈도우 클래스를 등록하는 것입니다.윈도우 구조체를 잠시 살펴보도록 하기 전, MSDN의 도움을 청해보도록 하겠습니다. 자... 여러분이 지금 살펴보시는 구조체가 바로 WNDCLASS라고 부르며,해당 클래스를 등록..

#001_WIndow_API_Intro

안녕하세요 삽잡이입니다.오랜만에 혼자놀기를 다시 시작하게 되었습니다. 우선 오늘은 간략하게 Window API에 대해서 알아보도록 하겠습니다. 기본적으로 윈도우 API를 사용하기 위한 서적들을 참고하여 본다면,반드시 포함되어 있는 함수들이 두개가 있습니다.바로, WinMain 함수와 WndProc 함수입니다. 조금 오버를 더해 이 함수들을 통해 API 함수들이 만들어진다고 해도 어느정도 맞다고 볼 수 있다는 것이지요... 이 두 함수는 WIndow API 와 관련하여 거의 99% 있어야 합니다.물론 더 세부적으로 말하자면 WinMain 함수는 반드시 있어야하지만,WndProc 함수는 다른 놈으로 바꿀 수도 있다고 할 수 있습니다. Process는 실행중인 프로그램을 말합니다.좀 더 자세하게 말씀드리자면,..