'programing'에 해당되는 글 29건

  1. 2010.07.23 WinApi 컨트롤
  2. 2010.07.23 WinApi 그래픽 [TEXT COLOR]
posted by nsakura 2010. 7. 23. 17:36

이전 까지 해서 그래픽을 마쳤다..

컨트롤은 이 포스트 하나에 꾸역꾸역 넣어을 생각입니다.

왜냐하면 이번장은 거의 보편적으로 사용하는 방법이 같기 때문이고 은근히 지겨울지도 모르기 때문이다.

그렇다면 컨트롤이 무엇인가? 컨트롤은 인터페이스를 이루는 도구이다.

그러면 인터페이스는 또 무엇인가?

우리는 흔히 일상생활에서도 인터페이스 인터페이스 하는데  인터페이스의 정의는 무엇일까?

간단하게 설명하자.

여러분은 tv리모컨이 있는가?

그렇다면 물어보겠다 리모컨을 사용하는데 있어서 여러분은 그내부 구조와 원리를 이해를 하고

사용하는가? 그건 아니지 않는가 그냥 버튼 누르면 그만인다.

굳이 내부를 알필요가없고 모른다고해서 사용을 못하는건 아니다 왜냐하면 리모컨제작자가 사용자가 사용하기 편하게

디자인을 해두었기때문이다 그리고  인터페이스는 사용자에게 편의를 제공하지만 반대로 보면 내부를 지키는 기능을 한다.

즉 윈도우를 키면 윈도우에 시작버튼 화면 전체가 인터페이스라고 보면 된다 자동차로 보면 기어 핸들 등등 운전사가 제어하는 부분이

인터페이스인것이다 내부는 인터페이스에서 입력받은 기능을 수행하면 되는것이다.

그 수행의 과정을 의문을 품을 이유는 개발자를 목표를 하는 사람이 아니라면 알필요도없고 쓸때도 없는것이다.

자 그럼 윈도우에서 제공하는 컨트롤 클래스을 알아보도록 하자.

 button  버튼,체크,라디오 
 static  텍스트
 scrollbar  스크롤바
 edit  에디트
 listbox  리스트 박스
 combobox  콤보박스

등이 있다.

참고로 컨트롤도 하나의 윈도우이다. 화면상의 일장한 영역을 차지하며 자신의 고유 메시지를 처리할 수 있는 능력을

가지고있다. 그렇다고 독립적으로 만들수있는건 아니다 무조건 부모 윈도우가 있어야 사용이 가능하며 부모윈도우가 만들어

질때 (WM_CREATE) 메세지가 발생했을때 만든다. 위에서 설명하였듯 컨트롤도 하나의 윈도임으로.

CreateWindow함수를 사용한다.

자  그럼 첫번째는 버튼에 대해 알아보자

버튼

역시 꾸역꾸역 넣는건 잘 안되는군요.

'Computer > Win API' 카테고리의 다른 글

소켓 통신 관련해서 .....  (0) 2013.12.13
WinApi 그래픽 [TEXT COLOR]  (0) 2010.07.23
WinApi 그래픽[폰트]  (0) 2010.07.22
WinApi 그래픽 [비트맵 bitmap]  (0) 2010.07.22
WinApi RopMode2 [확장]  (0) 2010.07.22
posted by nsakura 2010. 7. 23. 00:22

폰트 업,젝트외에 출력되는 문자열에 영향을 주는 여러 가지 함수가 있다. 오늘은

COLORREF SetTextColor(HDC hdc,COLORREF crColor);  //텍스트의 색을 지정
COLORREF SetBkColor(HDC hdc,COLORREF crColor);    //텍스트의 배경을 지정
int SetBkMode(HDC hdc, int iBkMode);                        //배경색상을 사용할 방법을 설정.

보통 Set 함수가 있으면 Get함수가 있는법.

GetTextColor
GetBkColor

함수도 있다. 기능은 set의 반대이다.


iBkMode 인자의 값은

 OPAQUE  배경의 색상에 따라 뒷쪽의 그림이 사라진다.
 TRANSPARENT  투명한 배경을 사용한다 그래서 문자를 출력한 후에도 배경은 투명이다

LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam){
 HDC hdc;
 PAINTSTRUCT ps;
 HFONT hFont,saveFont;
 HBRUSH hBrush,saveBrush;
 
 TCHAR *str=TEXT("GFP입니다.");

 static LOGFONT lFont;

 switch(iMessage){
 case WM_CREATE:
  lFont.lfHeight=50;
  lFont.lfWidth=0;
  lFont.lfEscapement=0;
  lFont.lfOrientation=0;
  lFont.lfWeight=0;
  lFont.lfItalic=0;
  lFont.lfUnderline=0;
  lFont.lfStrikeOut=0;
  lFont.lfCharSet=HANGEUL_CHARSET;
  lFont.lfOutPrecision=0;
  lFont.lfClipPrecision=0;
  lFont.lfQuality=0;
  lFont.lfPitchAndFamily=VARIABLE_PITCH|FF_ROMAN;
  lstrcpy(lFont.lfFaceName,TEXT("궁서"));
 case WM_PAINT:
  hdc=BeginPaint(hWnd,&ps);
  hBrush=CreateHatchBrush(HS_CROSS,RGB(0,0,255));
  saveBrush=(HBRUSH)SelectObject(hdc,hBrush);

  Rectangle(hdc,10,10,500,200);
  SelectObject(hdc,saveBrush);

  hFont=CreateFontIndirect(&lFont);
  saveFont=(HFONT)SelectObject(hdc,hFont);

  SetTextColor(hdc,RGB(255,0,0));
  SetBkColor(hdc,RGB(255,255,0));

  TextOut(hdc,20,20,str,lstrlen(str));

  SetBkMode(hdc,TRANSPARENT);

  TextOut(hdc,120,120,str,lstrlen(str));

  DeleteObject(SelectObject(hdc,saveFont));
  DeleteObject(SelectObject(hdc,saveBrush));
  EndPaint(hWnd,&ps);
  return 0;
 case WM_DESTROY:
  PostQuitMessage(0);
  return 0;
 }
 
 return (DefWindowProc(hWnd,iMessage,wParam,lParam));

}

결과는.. 다음과 같다.



'Computer > Win API' 카테고리의 다른 글

소켓 통신 관련해서 .....  (0) 2013.12.13
WinApi 컨트롤  (0) 2010.07.23
WinApi 그래픽[폰트]  (0) 2010.07.22
WinApi 그래픽 [비트맵 bitmap]  (0) 2010.07.22
WinApi RopMode2 [확장]  (0) 2010.07.22