일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- two pointer
- Trie
- Brute Force
- SQL
- 이진탐색
- String
- Dijkstra
- Stored Procedure
- binary search
- 그래프
- 스토어드 프로시저
- 다익스트라
- Two Points
- DP
- MYSQL
- union find
- Hash
Archives
- Today
- Total
codingfarm
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
|
#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
HINSTANCE g_hInst;
LPCTSTR lpszClass = TEXT("First");
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)GetStockObject(WHITE_BRUSH);
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_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd, iMessage, wParam, lParam));
}
|
cs |
배경색 꾸미기
- 17번째 줄에서 hbrBackground에 흰색 브러시를 지정하여 배경색이 흰색이 되었다.
GetStockObject
- 윈도우에서 기본적으로 제공하는 브러시, 펜 등의 핸들을 구하는 함수
- 기본적으로 제공하는 브러시의 색은 흰색, 검정, 회색뿐이다.
- 다른색을 칠하고 싶으면 별도의 방법을 써야 한다.
아래 코드는 파란색의 배경을 가지는 윈도우를 그린다.
WndClass.hbrBackground = CreateSolidBrush(RGB(0,0,255));
아래 코드는 빨간색의 기울어진 바둑판 배경을 그린다.
WndClass.hbrBackground = CreateHatchBrush(HS_DIAGCROSS, RGB(255,0,0));
원칙대로 하려면 파괴도 해야하는데 여기서는 생략한다.
이방법에 대한 자세한 설명은 추후 알아가겠다.
커서 바꾸기
- WndClass에서 커서를 지정하는 멤버가 아래와 같이 정의된다.
WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
- 윈도우 위에 마우스 커서를 위치시키면 화살표 모양의 표준 커서가 나타난다.
- hCursor 멤버는 윈도우가 기본적으로 사용할 커서를 지정한다.
- LoadCursor 함수는 커서를 읽어 오는 함수이다.
HCURSOR LoadCursor (
HINSTANCE hInstance,
LPCTSTR lpCursorName);
매개변수 | 기능 |
hInstance | 커서를 가지고 있는 프로그램의 인스턴스 핸들 윈도우즈가 제공하는 표준커서를 사용하려면 NULL을 전달 |
lpCursorName | 사용하고자 하는 커서의 이름을 지정 |
lpCursorName으로 전달 가능한, 윈도우즈가 디폴트로 제공하는 커서에는 다음과 같은 종류가 있다.
값 | 설명 |
IDC_ARROW | 화살표 모양 |
IDC_CROSS | 십자 모양 |
IDC_IBEAM | I자 모양 |
IDC_NO | 원안에 빗금이 쳐진 모양 |
IDC-WAIT | 모래시계 모양 |
윈도우의 타이틀 바꾸기
- CreateWindows 함수의 두번째 인수인 lpszClass 문자열에 윈도우즈의 타이틀바에 나오는 문자열을 바꿀 수 있다.
- 실행중에 타이틀바의 문자열을 바꾸고 싶다면 wsprintf등의 서식 조립함수로 조립하여 사용하면 된다.
- 4~7번째 인수로 윈도우의 크기와 위치를 지정할 수 있다.
윈도우 스타일
- CreateWindow 함수의 세번째 인수 dwStyle로 윈도우의 모양과 동작 방식을 결정한다.
값 | 설명 |
WS_CAPTION | 타이틀 바를 가진다. |
WS_HSCROLL | 수평 스크롤 바를 가진다. |
WS_VSCROLL | 수직 스크롤 바를 가진다. |
WS_MAXIMIZEBOX | 최대화 버튼을 가진다. |
WS_MINIMIZEBOX | 최소화 버튼을 가진다. |
WS_SYSMENU | 시스템 메뉴를 가진다. |
WS_THICKFRAME | 크기를 조절할 수 있는 경계선을 가진다. |
- 이 값들은 OR연산자로 연결하여 여러가지 속성을 한꺼번에 지정 가능하다.
'Windows > 윈도우즈 API' 카테고리의 다른 글
3. 그래픽 출력 (0) | 2020.11.19 |
---|---|
3. 문자열의 출력(TextOut, DrawText) (0) | 2020.11.19 |
3. DC(Device Context) (0) | 2020.11.19 |
2. 기본 윈도우 생성 - 윈도우 생성 과정, 메시지 루프 (0) | 2020.04.27 |
1. 윈도우즈 프로그래밍 (0) | 2020.04.27 |
Comments