window api 11

#013_Window_Network_클라이언트 서버 통신 (실행 및 연결 확인)

안녕하세요 삽잡이입니다. 이번 시간에는 TCP 서버와 클라이언트간 실제로 실행이 되는 결과를PC에서 확인하고, 연결 역시 확인해보도록 하겠습니다. 지금까지 배워온 대기 소켓, 통신 소켓을 실제로 확인해보는 것입니다.서버와 클라이언트를 통신하기 위한 코드를 보는 것이 아닌,결과 창만을 확인해보도록 하겠습니다. TCP 서버에서 listen() 함수가 성공적으로 return 이 되면 대기 큐가 생긴다고 했습니다. cmd 창에서 netstat -a 명령어를 쳐서 네트워크 연결 상태를 확인해보겠습니다. 본인은 9000번 포트를 통해 소켓을 하나 생성했습니다.이에 'LISTENING' 상태의 TCP 서버가 존재함을 확인할 수 있습니다.즉, 대기 소켓의 정보를 확인한것입니다.'로컬 주소'는 내 정보를 말하는 것이고 ..

#014_WIndow_API_비트맵

안녕하세요 삽잡이 입니다.이번 시간에는 비트맵에 대해서 알아보려고 합니다. 비트맵은 MS에서 만든 이미지 포멧입니다.대표적으로 이미지 포멧에는 JPG, PNG 등이 있습니다.이는, 표준화 기구, 범용 기구, 회사에서 만들었다는 차이를 가지고 있습니다.MS에서는 자신의 것들로 그리자고 만든 것이 바로 비트맵입니다. 화면에 그리기를 시도할 때에는 디바이스 컨텍스트 (DC)를 얻어야합니다.DC를 얻어서 사용하기 위해서는 해당 DC의 핸들을 얻어서 사용하게 됩니다.즉, DC는 화면에 그리기 위한 정보입니다.그 중에서 우리가 사용했던 DC는 클라이언트 영역에 그리기 위한 DC였습니다. 우리가 보고 있는 화면은,비디오 메모리 비트맵으로 보관되어 있고, 해당 화면에 그림을 그리게 된다면 비트맵이 바뀌면서 화면이 그려..

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

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

#011_WIndow_API_SendMessage와 PostMessage

안녕하세요 삽잡이입니다.이번 시간에는 메시지를 날리는 즉, 통신을 위한 Message 함수들에 대해서 알아보려고 합니다. 정확하게 말씀드리자면, 메시지를 발생시키는 SendMessage와 PostMessage에 대해서 알아보려고 합니다. 우선 SendMessage함수와 PostMessage 함수는 어떻게 생겨먹었는지 살펴보도록 하겠습니다.도와줘 MSDN~ 짜잔... 이렇게 생겨먹었습니다. 그렇다면, PostMessage에 대해서 살펴보도록 하지요... 비슷하게 생긴 듯하며 약간은 다른... 이 두 함수...결과적으로 말하면 똑같이 메시지를 날리는 기능을 가지고 있습니다.핸들은 기본적으로 첫번째 매개변수에 들어가고요...다음으로는 발생시키고자 하는 메시지, 메시지에 대한 부가정보들이 순차적으로 각각 매개변..

#010_WIndow_API_다이얼로그 (2)

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

#009_WIndow_API_다이얼로그 (1)

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

#008_WIndow_API_리소스 (Resource)

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

#005_WIndow_API_그리기 (I/O) (1)

안녕하세요 삽잡이 입니다. 지난 시간까지 윈도우가 어떻게 동작하는지, GUI가 어떤 형태로 처리되는지에 대해서 공부했었습니다.이번 시간에는 그리기와 입력에 대하여 공부해보도록 하겠습니다.그리기는 결국 출력을 말하는 것으로,결론적으로 Input / Output에 대해서 알아보도록 하겠습니다. GUI 프로그램에서 그리기 방식은 두가지로 나눌 수 있습니다.윈도우가 다른 윈도우에 겹쳐졌다가 (가려져 있다가) 뒤에 있던 윈도우를 활성화 시킨다면,활성된 윈도우가 앞으로 나오는 것은 당연한 결과라고 생각하실 수 있을 텐데요...사실 이러한 모습은, 겹친 부분을 복원하는 과정을 거치는 것입니다. 지난시간에 언급했었지만, 어플리케이션을 살펴보게 되면 UI부분과 Code 영역으로 나뉠 수 있습니다.그 중에서 UI 즉, 보..

#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라고 부르며,해당 클래스를 등록..