본문 바로가기

API

컨트롤 - 체크 박스 컨트롤이란? 컨트롤도 하나의 윈도우 입니다. 윈도우의 일정 영역을 차지하기도 하여 자신의 고유 메시지를 처리할 수 있는 능력을 가지고 있지요. 보통은 대화상자의 차일드 윈도우로 존재하고, 컨트롤은 윈도우즈가 제공하기 때문에 윈도우 클래스 등록을 따로 할 필요 없이, 미리 정의되어있는 윈도우 클래스를 불러다 쓰면 됩니다. 윈도우 클래스컨트롤 button 버튼, 체크, 라디오 static 텍스트 scrollbar 스크롤 바 edit 에디트 listbox 리스트 박스 combobox 콤보 박스 이 윈도우 클래스들은 시스템 부팅시에 운영체제에 의해 등록되므로 윈도우 클래스를 따로 등록할 필요 없이 CreateWindow 함수의 첫 번째 인수로 클래스 이름만 주면 해당 컨트롤을 만들 수 있습니다. --------.. 더보기
컨트롤 - 푸시 버튼 컨트롤이란? 컨트롤도 하나의 윈도우 입니다. 윈도우의 일정 영역을 차지하기도 하여 자신의 고유 메시지를 처리할 수 있는 능력을 가지고 있지요. 보통은 대화상자의 차일드 윈도우로 존재하고, 컨트롤은 윈도우즈가 제공하기 때문에 윈도우 클래스 등록을 따로 할 필요 없이, 미리 정의되어있는 윈도우 클래스를 불러다 쓰면 됩니다. 윈도우 클래스 컨트롤 button 버튼, 체크, 라디오 static 텍스트 scrollbar 스크롤 바 edit 에디트 listbox 리스트 박스 combobox 콤보 박스 이 윈도우 클래스들은 시스템 부팅시에 운영체제에 의해 등록되므로 윈도우 클래스를 따로 등록할 필요 없이 CreateWindow 함수의 첫 번째 인수로 클래스 이름만 주면 해당 컨트롤을 만들 수 있습니다. -------.. 더보기
그리기 모드(코드) 반전모드를 사용하는 예제를 만들어 보자. 마우스가 이동하는 대로 선을 그리되 선이 그려지는 과정을 보여준다.즉 마우스 버튼을 누른 위치에서부터 시작해서 마우스 버튼을 놓는 자리까지 선을 긋되 버튼을 누른 채로 마우스를 움직이면 중간에 그려질 선의 모양을 보여주는 것이다. 코드는 다음과 같다. LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam) { HDC hdc; static bool bNowDraw = false; static int sx, sy, oldx, oldy; switch (iMessage) { case WM_LBUTTONDOWN: sx = LOWORD(lParam); sy = HIWORD(lParam).. 더보기
그리기 모드 그리기 모드란 도형이 그려질 때 원래 그려져 있던 그림과 새로 그려지는 그림과의 관계를 정의하는 것을 말한다.그리기 모드를 개념적으로 이해하기 위해 아주 단순한 흑백의 그래픽 환경을 가정해 보자.무엇인가를 화면에 그린다는 것은 비디오 메모리에 그림의 이미지를 기록해 넣는 동작을 말하며 이 때 원래 비디오 메모리에 있던값과 새로 써지는 값 사이의 관계를 생각해 볼 수 있다. 가장 단순하게는 새로 그려지는 값으로 원래 있던 값을 덮어 버리는 경우가 있으며 비트 논리 연산에 의해 두 값을 적당히 혼합하는 방법들도 있다.다음 그림은 두 개의 흑백 그림을 4가지 비트 연산으로 합쳐본 것이다.가로로 놓인 막대가 원래 그려져 있던 그림이며 세로로 놓여져 있는 막대가 새로 그려지는 그림이다.첫 번째 COPY는 새로 그.. 더보기
Old의 의미 우리는 지금까지 GDI 오브젝트를 사용할 때마다 항상 같은 타입의 Old 핸들을 선언하고 SelectObject로 선택할 때 밀려 나온 이전에 사용되었던 객체를 Old에 대입받아 두었다가 파괴하기 전에 Old를 다시 DC에 선택하였다.지금부터 이런 식의 코드가 왜 필요한지 연구해 보도록 하자. 아래의 코드는 마우스 왼쪽 버튼을 누를 때 굵기 2의 파란색 펜을 만들고 DC에 선택하여 사용하기를 1000번 반복하는 코드이다. case WM_LBUTTONDOWN: hdc = GetDC(hWnd); for(int i=0; i 더보기
브러쉬 만들기 브러쉬는 StockObject로 만들어 사용할 수 있지만, StockObject에는 단색 브러쉬 뿐임으로 이 외의 브러쉬는 직접 사용자가 만들어 사용해야만 한다. 브러쉬를 만드는 함수는 다음과 같다. HBRUSH CreateSolidBrush(COLORREF crColor);HBRUSH CreateHatchBrush(int fnStyle, COLORREF clrref); 첫 번째 함수는 단색의 브러쉬만을 만들 수 있으며, 브러시의 색상만 인수로 전달한다. 두 번째 함수는 브러쉬의 무늬와 색상을 지정할 수 있다. 지정할 수 있는 무늬의 종류는 다음과 같다. 두 함수 모두 리턴하는 값은 만들어진 브러쉬의 핸들이다. 코드----------------LRESULT CALLBACK WndProc(HWND hWnd.. 더보기
나만의 펜을 만들어 보자! 윈도우즈가 제공하는 펜은 흰색, 검정색, 투명색 세 가지 뿐이며, 파란색, 노란색 등의 원색 펜은 없다. 그러므로 다양한 색의 펜을 사용하고 싶다면 직접 만들어서 사용하는 방법밖에 없다. 펜을 만들 때는 다음 함수를 사용한다. HPEN CreatePen(int fnStyle, int nWidth, COLORREF crColor); 세 개의 인수를 가지며 각 인수의 의미는 다음과 같다. fnStyle 그려질 선의 모양을 지정한다. 이 값을 변경하면 다양한 형태의 선을 만들 수 있다. PS_SOLID는 실선, PS_DASH는 긴 점선, PS_DOT은 점선, PS_DASHDOT은 일점 쇄선, PS_DASHDOTDOT은 이점 쇄선이다.하지만 선의 굵기가 2 이상이면 무조건 실선으로 그려짐으로, 위의 모양을 사용.. 더보기
StockObject를사용한 GDI브러쉬 색 변경 틀린 정보가 다소 있을 수 있습니다! 만약 틀린 내용이 있을 시 댓글로 피드백 주시면 감사할 듯싶습니다! 일단 dc를 얻어온 후, Rectangle을 사용해 사각형을 출력한다.LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam){ HDC hdc; PAINTSTRUCT ps; switch(iMessage){ case WM_PAINT: hdc = BeginPaint(hWnd, &ps); Rectangle(hdc, 50, 50, 300, 300); EndPaint(hWnd, &ps); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return (DefWindow.. 더보기