2011년9월22일_winAPI_Label과 비슷한 static컨트롤
WLW2010의 글꼴 대화상자를 보면 “글꼴(F):”, “글꼴 스타일(Y):”, “크기(S):”, “색상(C):” 문자열이 보인다.
이들 문자열이 바로 스태틱(static)컨트롤로 주로 다른 컨트롤의 용도를 설명하기 위해 근처에 배치하여 사용한다.
VS2005에서는 Label이라고 부르고 거의 비슷하다.
CreateWindow(TEXT("static"), // 윈도우 클래스 = static = 텍스트 |
windows API정복 page.222 예제: Static의 소스코드 중 핵심코드만 설명하였다.
단순히 문자열을 출력하는 컨트롤인데 TextOut()와 뭐가 다른가?
TextOut()는 화면에 출력한 문자열이 그냥 문자열일 뿐이므로 언제든지 지워질 수 있고 그래서 WM_PAINT메시지 처리 코드에서,
저장된 문자열을 계속 출력하여 복구시켜야 한다.
반면 스태틱 컨트롤은 스스로 메시지를 처리할 수 있는 윈도우이기 때문에 일단 배치해 놓기만 하면 더 이상 신경 쓰지 않아도 된다.
또한 색상, 글꼴 크기 등 운영체제의 세팅이 바뀔 경우 이런 변화에 대해서도 스스로 대처한다는 장점이 있다.
(컨트롤 == 윈도우)
★ 컨트롤을 잘 다루기 위해서 필요한 컨트롤의 3요소
① 스타일
② 통지메세지
③ 부모 윈도우가 보내는 메세지
(왠지 중요해 보여서 적어 놓음;;;)
● 전체소스코드 중 메시지처리 함수들만 미리보기
1: LPCTSTR lpszClass = TEXT("MyStatic"); 2: WndClass.lpszClassName = lpszClass;
|
WinMain()내부…윈도우클래스 구조체를 정의하는 부분에서 클래스의 이름을 “Static”으로 정하니,
아무리 실행해도 컨트롤이 보이지 않았다. (스태틱이외의 어떤 컨트롤도..)
한 30분 동안 코드에 이상이 없나 살펴보아도 없자...
클래스명이 의심스러워 책소스CD를 보니 “MyStatic”이라고 되어 있지 않은가!!
그래서 이름을 바꿔 보니 컨트롤이 화면에 제대로 표시되었다.
대소문자 구분 안하는가 보다!!
'내장형하드웨어 > 일일보고서' 카테고리의 다른 글
2011년9월23일_winAPI_에디트, 리스트박스, 콤보박스, (0) | 2011.09.26 |
---|---|
2011년9월23일_ARM_AT91SAM7S256 PWM제어기를 사용하여 LED의 밝기를 조절하자. (0) | 2011.09.26 |
2011년9월20일_ARM_AT91SAM7S256 MCU 내장ADC를 사용하여 CdS(광센서)와 써미스터(온도센서)의 아날로그출력을 디지털값을 바꾸어 PC로 전송하고 CLCD에도 표시하자. (+ SAR ADC이론) (0) | 2011.09.21 |
2011년9월19일_winAPI_컨트롤, 버튼 컨트롤예제 (0) | 2011.09.19 |
2011년9월15일_winAPI_비트맵 리소스(임시제목)와 간단히 코드를 프로젝트에 추가하는 법 (0) | 2011.09.15 |