Windows/윈도우즈 API
7-9. 스태틱
scarecrow1992
2021. 12. 29. 23:46
0. 개요
사용자로부터 입력을 받는 기능 없이, 오로지 문자열을 보여주는것이 전부인 컨트롤
그렇기에 부모 윈도우로 통지 메시지를 보낼 필요도, 메시지를 받을 필요도 없다.
그러므로 여러개의 스태틱 컨트롤 모두 ID를 -1로 지정해도 된다.
즉, 별다른 목적이 없다면 사용자가 선택할 이유도, static control 끼리 구분되어야할 필요도 없다.
가령 위 윈도우에서 Header, Footer, Left, Top 등의 문자열이 static control이다.
주로 다른 컨트롤 옆에서 해당 컨트롤에 대해 수식하는 역할을 담당한다.
1. 스타일
static control에 즐겨 쓰이는 스타일은 아래와 같다.
스타일 | 설명 |
SS_LEFT | 왼쪽으로 정렬되는 텍스트이며 자동으로 개행된다. |
SS_LEFTNOWORDWRAP | 왼쪽으로 정렬되는 텍스트이며 자동으로 개행되지 않는다. |
SS_CENTER | 중앙으로 정렬되는 텍스트이며 자동으로 개행된다. |
SS_RIGHT | 오른쪽으로 정렬는 텍스트이며 자동으로 개행된다. |
SS_SIMPLE | 단순한 문자열이며 자동개행되지 않는다. |
SS_WHITEFRAME | 윈도우의 배경색으로 그려지는 사각형 |
SS_WHITERECT | 윈도우의 배경색으로 그려지는 속이 채워진 사각형 |
SS_BLACKFRAME | 화면 배경색으로 그려지는 사각형 |
SS_BLACKRECT | 화면 배경색으로 그려지는 속이 채워진 사각형 |
SS_GRAYFRAME | 윈도우 프레임 색상으로 그려지는 사각형 |
SS_GRAYRECT | 윈도우 프레임 색상으로 그려지는 속이 채워진 사각형 |
SS_ICON | 대화상자내에서 아이콘 출력 |
SS_NOPREFIX | &문자를 단축키 지정에 사용하지 않고 그대로 출력한다. |
2.예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
#include <windows.h>
#include <tchar.h>
#include <vector>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
HINSTANCE g_hInst;
LPCTSTR lpszClass = TEXT("Menu");
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance
, LPSTR lpszCmdParam, int nCmdShow)
{
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
g_hInst = hInstance;
WndClass.cbClsExtra = 0;
WndClass.cbWndExtra = 0;
WndClass.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
WndClass.hInstance = hInstance;
WndClass.lpfnWndProc = (WNDPROC)WndProc;
WndClass.lpszClassName = lpszClass;
WndClass.lpszMenuName = NULL;
WndClass.style = CS_HREDRAW | CS_VREDRAW;
RegisterClass(&WndClass);
hWnd = CreateWindow(lpszClass, lpszClass, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, (HMENU)NULL, hInstance, NULL);
ShowWindow(hWnd, nCmdShow);
while (GetMessage(&Message, 0, 0, 0)) {
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
switch (iMessage) {
case WM_CREATE:
CreateWindow(L"static", L"Only Text", WS_CHILD | WS_VISIBLE,
20, 20, 100, 25, hWnd, (HMENU)-1, g_hInst, NULL);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd, iMessage, wParam, lParam));
}
|
cs |