본문 바로가기

Program Languege/WinAPI

컨트롤 컨트롤(Control) 컨트롤(Control)이란 사용자와의 인터페이스를 이루는 도구이다. 인터페이스를 이룬다는 말은 사용자로부터 명령과 입력을 받아들이고 출력 결과를 보여준다는 뜻이므로 컨트롤은 곧 입출력 도구를 뜻한다. 컨트롤을 사용하면 도스나 콘솔 환경에서의 getch, scanf등의 함수들을 사용하는 것보다 안전하고 편리하다. 만약 컨트롤이 없다면 사용자에게 현재 설정된 옵션을 보여줄 방법도, 옵션을 바꾸도록 하지도 못할 것이다. Contrrol을 직역하면 "제어, 조절"이라는 뜻인데 이 말 뜻대로 컨트롤은 사용자가 프로그램을 제어하는 수단이다. 컨트롤의 의미를 한마디로 설명하기는 힘들지만 버튼, 에디트, 리스트 박스, 스크롤 바 등을 컨트롤이라고 한다. 윈도우즈 3.1부터 지원하는 컨트롤에는 버.. 더보기
공통 대화상자 - 3 색상 대화상자 사용자에게 색상을 입력받을 필요가 있을 때 사용한다. 색상값은 그 특성상 직접 눈으로 보지 않고 선택하기 어렵기 때문에 일반적인 방법으로 입력받기 곤란한다. 색상은 빨간색, 파란색, 초록색의 삼원색의 혼합으로 표현되는데 이 방식대로 색상을 선택하려면 3개의 정수 값을 입력받아야 하며 게다가 수치만으로는 실제 색상이 어떻게 나올지 바로 알 수 없으므로 무척 불편하다. BOOL ChooseColor(LPCHOOSECOLOR lpcc); 파일 열기 대화상자와 마찬가지로 구조체의 포인터만을 인수로 가진다. 사용자가 색상을 선택했으면 TRUE를 리턴하며 취소했으면 FALSE를 리턴한다. CHOOSECOLOR 구조체는 다음과 같다. typedef struct { DWORD IStructSize; HW.. 더보기
공통 대화상자 - 2 필터 지정 필터와 관련된 멤버는 총 4개가 있다. 이중 가장 중요한 멤버는 lpstrFilter이며 이 멤버에 필터를 구성하면 팡리 열기 대화상자의 파일 형식 콤보 박스에 필터를 보여준다. lpstrFilter에는 여러 개의 필터를 줄 수 있으며 각 필터는 설명과 패턴으로 구성되고 각 항목은 NULL로 구분된다. 마지막 항목은 두 개의 NULL로 끝나야 한다. 위 필터는 "텍스트 문서\0*.txt\0모든 파일\0*.*\0"로 구성되어 있다. 한 필터에 두 개 이상의 패턴을 지정하려면 "그래픽 파일\0*.gif;*.jpg\0"처럼 세미콜론으로 패턴을 연결하면 된다. lpstrCustomFilter는 사용자가 입력하는 필터를 조사하기 위한 멤버이며 이 버퍼에 커스텀 필터의 설명을 미리 작성해 놓으면 대화상자.. 더보기
공통 대화상자 - 1 공통 대화상자(Common Dialog) 공통 대화상자란 말 그대로 모든 윈도우즈용 프로그램들이 공통으로 사용하는 대화상자이다. 자주 사용되기 때문에 이 대화상자들은 아예 윈도우즈가 운영체제 차원에서 제공하며 응용 프로그램들은 윈도우즈의 서비스만 받으면 이 대화상자를 쉽게 사용할 수 있다. 파일 입출력 방법 자체는 프로그램마다 다르겠지만 대상 파일의 이름과 위치를 얻어오는 작업은 어떤 프로그램이나 동일하다. 그런데 파일의 이름과 위치를 사용자로부터 입력받는 작업은 보통 이상으로 어렵다. 파일이 저장되는 디스크는 계층적인 디렉토리 구조를 이루고 있으며 또 여러개의 디스크가 존재하기도 하고 원하는 파일만 보여줄 수 있도록 필터 처리도 해야한다. 게다가 네트워크 지원까지 신경쓰려면 결코 간단하지가 않다. 그래.. 더보기
스레드 스레드(Thread) 스레드는 운영체제에서 프로세서 시간을 할당하는 기본 단위. 프로세스 내에서 실행되는 흐름의 단위. 멀티 스레드(MultiThread) 여러개의 스레드를 실행하는 것을 말한다. 장점 응답성 : 사용자에 대한 응답성이 증가된다. 자원 공유 : 스레드는 자동적으로 그들이 속한 프로세스의 자원들과 메모리를 공유한다. 경제성 : 프로세스 생성에 메모리와 자원을 할당하는 것은 비용이 많이 든다. 스레드는 자신이 속한 프로세스의 자원을 공유하기 때문에 보다 경제적이다. 단점 다중 스레드는 캐시나 변환 색인 버퍼(TLB)와 같은 하드웨어 리소스를 공유할 때 서로를 간섭할 수 있다. 하나의 스레드만 실행 중인 경우 싱글 스레드의 실행 시간이 개선되지 않고 오히려 지연될 수 있다. 멀티스레드의 지원을.. 더보기
프로세스 프로세스 프로세스(Process) 프로세스란 실행중인 프로그램을 말한다. 프로세스를 프로그램이라고 생각하면 안된다. 프로그램이 실행되면서 인스턴스화 된 것. 프로그램의 인스턴스가 프로세스이다. 운영체제는 실행된 프로그램을 프로세스 단위로 관리한다. 프로세스는 실제로 작업을 처리하지는 않는다 내부에 있는 쓰레드에서 작업을 담당한다. 프로세스는 최소한 한 개 이상의 쓰레드를 가진다. 프로세스를 생성하는 함수는 세가지가 있다. UINT WinExec(LPCSTR lpCmdLine, UINT uCmdShow); DWORD LoadModule(LPCSTR lpModuleName, LPVOID lpParameterBlock); BOOL CreateProcess(LPCTSTR lpApplicationName, LPT.. 더보기
TransparentBlt, AlphaBlend, GdiTranslaparentBlt, GdiAlphaBlend TransparentBlt, AlphaBlend, GdiTranslaparentBlt, GdiAlphaBlend TransparentBlt BOOL TransparentBlt( HDC hdcDest, int xoriginDest, int yoriginDest, int wDest,int hDest, HDC hdcSrc, int xoriginSrc, int yoriginSrc, int wSrc, int hSrc, UINT crTransparent); 일단 msdc에 나와있는 함수의 원형은 위와 같다. ( http://msdn.microsoft.com/en-us/library/windows/desktop/dd145141(v=vs.85).aspx ) 각 인자를 살펴보자. - hdcDest : 복사할 대상의 DC.. 더보기
QueryPerformance QueryPerformance WinAPI에서 제공하는 시간 체크에 대한 함수 중 가장 정밀도가 높은 함수는 QueryPerformanceCount입니다. 이 함수는 모든 컴퓨터(메인보드인지 CPU인지는 조금 더 찾아봐야할 것 같다.)에서 지원하는 함수는 아니기 때문에 QueryPerformanceFrequency함수를 통하여 컴퓨터에서 지원을 하는지 여부와 지원하는 정밀도에 대한 값을 확인해야합니다. 주의 점! - QueryPerformanceCount의 경우 CPU의 사양에 따라 정밀도가 달라지며 시간 체크에 대한 값도 달라집니다. - 멀티 프로세서에서 사용시 한 프로세서에서만 측정하는 것이 좋다고합니다. BIOS나 HAL 레이어의 버그로 인해 프로세서간에 서로 값을 다르게 넘기는 경우가 있다고 합니.. 더보기
PeekMessage PeekMessage BOOL PeekMessage(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg); LPMSG lpMsg - 포인터.(메시지 정보를 전달받을 메세지 구조체의 주소) HWND hWnd - 메시지를 받아올 윈도우의 핸들. NULL일 경우 시스템 큐와 메시지 큐를 모두 확인한다. UINT wMsgFilterMin - 메시지 큐에서 조사하는 메시지의 최소 범위. UINT wMsgFilterMax - 메시지 큐에서 조사하는 메시지의 최대 범위. wMsgFilterMin과 wMsgFilterMax를 이용해서 일정한 범위에 속하는 메시지를 조사할 수 있게 된다. 예를 들어 WM_KEYFIRST와 WM_K.. 더보기
GDI 오브젝트 GDI 오브젝트 GDI 오브젝트란 그래픽 출력에 사용되는 도구를 말하며 펜, 브러시, 비트맵, 폰트 등등이 모두 GDI 오브젝트이다. 사람이 그림을 그릴 때 연필, 붓 등의 도구를 사용하는 것과 마찬가지로 GDI가 그래픽을 출력할 때는 GDI 오브젝트를 사용한다. 즉 선을 그을 때는 펜으로 그리며 면은 브러시로 채우고 문자열을 출력할 때는 폰트를 사용한다. GDI 오브젝트를 모아 놓은 것이 DC이며 GDI는 현재 Dc에 선택되어 있는 GDI 오브젝트를 사용한다. 그래서 사용자는 그래픽을 그리기 전에 DC에 적절한 오브젝트를 선택함으로써 원하는 모양과 속성으로 그래픽을 출력할 수 있다. GDI 오브젝트 핸들 타입 설명 디폴트 펜 HPEN 선을 그을 때 사용된다. 검정색의 가는 실선 브러시 HBRUSH 면을.. 더보기