Windows/Windows Programming 13

윈도우 핸들 (Windows Handle Object)

핸들(Handle)이란 무엇인가? 우리가 흔히 핸들이라고 생각하면 자동차의 핸들(Steering Wheel)을 떠올리기 마련인데요,자동차 바퀴의 방향을 제어하기 위해 이 핸들을 사용하게 됩니다. 윈도우의 핸들이 바로 이 자동차의 핸들과 개념이 유사합니다. (갖다 붙이기 나름이죠?) 좌회전을 한다고 가정해봅시다.그러면 운전자는 바퀴를 움직이기 위해 직접 손으로 바퀴를 움켜잡고 돌리지 않고 핸들이라는 조향 장치를 이용해 간접적으로 바퀴의 방향을 제어하게 됩니다. 마찬가지로 윈도우의 핸들도 커널 오브젝트(혹은 GDI, 사용자 오브젝트)를 사용하기 위해 필요한 하나의 장치라고 보시면 됩니다. 프로세스가 초기화되면 운영체제는 프로세스가 커널 오브젝트를 사용할 수 있게 하려고 핸들 테이블을 할당하게 됩니다.(GDI..

에러 핸들링

에러 핸들링은 말 그대로 윈도우 프로그램이 내부 함수들을 진행하면서 발생시킬 수 있는 에러들을 제어하는 것을 말합니다.윈도우 프로그램 뿐만 아니라 기본적으로 모든 애플리케이션에서는 에러를 잘 처리해줘야 예기치 못한 기능 실패시에 프로그램이 Crash 되는 것을 막아줄 수 있습니다. (기능은 처리되지 못할 지라도 프로그램은 계속 동작할 수 있도록) 아래는 윈도우 함수들이 사용하고 있는 리턴형들입니다. 자료형 실패  VOID 실패하지 않음, 리턴형 없음  - 필요 외 프로그래밍시에 VOID형 함수 설계는 피하는것이 좋습니다. BOOL 실패시 0 리턴, 성공시 0이 아닌 값 - 때문에 TRUE(1)를 비교하면 성공했더라도 제대로 된 결과를 얻지 못할 수 있습니다. - 함수 내에서 명시적으로 TRUE를 리턴하는..

윈도우 메세지

윈도우 메세지윈도우는 메세지 기반 구동 방식의 운영체제입니다.윈도우 메세지는 마우스를 움직인다거나 키보드를 입력하는 등의 이벤트들이나 윈도우 크기 변화 색깔의 변화 등과 같은 시스템적 상태 변화에 의해 발생합니다.윈도우 메세지가 발생하면 윈도우는 두 가지 방법으로 메세지를 전달합니다. 1. 각 어플리케이션 마다 가지고 있는 메세지 큐에 메세지를 추가하는 방법 - 사용자 요구에 따른 키보드/마우스 이벤트 등2. 빠른 처리를 위해 어플리케이션의 윈도우 프로시저에 직접 메세지를 전달하는 방법 - 특정 윈도우에 어떠한 작업을 지시하기 위한 메세지이 있습니다.    이벤트 발생 -> 시스템 메세지 큐 -> 응용 프로그램 메세지 큐 -> 메세지 루프 -> 윈도우 프로시저이러한 처리 과정을 가지고 있습니다. 메세지 ..