ݺߣ

ݺߣShare a Scribd company logo
CHAP. 9
윈도우 스타일
1
2
LRESULT CALLBACK WndProc(HWND hWnd, UINT mesg, WPARAM wParam, LPARAM lParam)
{
static HWND hWnd2;
switch(mesg)
{
case WM_CREATE:
hWnd2 = CreateWindow(
"WND2",
"World",
WS_OVERLAPPEDWINDOW,
320, 0, 320, 240,
hWnd, NULL,
hInstance,
NULL
);
ShowWindow(hWnd2, SW_SHOW);
break;
} …
}
이거 빼면 화면에 윈도우 안
나타난다
3
LRESULT CALLBACK WndProc(HWND hWnd, UINT mesg, WPARAM wParam, LPARAM lParam)
{
static HWND hWnd2;
switch(mesg) {
case WM_CREATE:
hWnd2 = CreateWindow(
"WND2",
"World",
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
320, 0, 320, 240,
hWnd, NULL,
hInstance,
NULL
);
ShowWindow(hWnd2, SW_SHOW);
break;
} …
}
다음과 같이 하면 생략할 수 있다
생성과 동시에 화면출력
옵션 (스타일) 지정
4
CreateWindow(…, DWORD dwStyle,…)
윈도우 생성
윈도우 생성 함수: 3번째 인자
5
꼭 알아두어야 할 스타일
WS_BORDER 윈도우 테두리 나타남
WS_CHILD 자식 윈도우로 설정
WS_POPUP 팝업 윈도우로 설정
WS_VISIBLE 윈도우를 생성과 동시에 화면에 표시
WS_OVERLAPPEDWINDOW 일반 속성 모두 포함
WS_CHILD 는 WS_POPUP과 함께 사용 불가 (반대 속성)
어떤 속성은 다른 속성들의 조합
기타 속성은 MSDN을 참고
WS_OVERLAPPED WS_CAPTION
WS_SYSMENU WS_THICKFRAME
WS_MINIMIZEBOX WS_MAXIMIZEBOX
※ MSDN 참고
6
스타일 추가 및 제거
WS_OVERLAPPEDWINDOW에서 WS_SYSMENU
제거해 보자
7
style = style & (~WS_SYSMENU);
스타일 추가: OR ( | )
스타일 제거: Negation ( ~ ) 및 AND ( & ) 연산 적용
DWORD style;
style = WS_OVERLAPPEDWINDOW | WS_VISIBLE;
style = _______________________ ;
hWnd2 = CreateWindow(
"WND2",
"WORLD",
style,
320, 0, 320, 240,
hWnd, NULL, _hInstance, NULL
);
비트 연산 잘 이해가 안되면 다음 참조
8
#include <stdio.h>
#define SW1 1 // 0001
#define SW2 2 // 0010
#define SW3 4 // 0100
#define SW4 8 // 1000
main()
{
int sw = 0; // 모든 스위치가 꺼져 있다
sw = SW1; // 1번 스위치 ON
sw = sw | SW2; // 2번 스위치 ON
sw = sw | SW3; // 3번 스위치 ON
if (sw & SW2) // 2번 스위치 ON인지 검사
printf(“ON”);
}
9
int sw = 0;
sw = SW1;
sw = sw | SW2;
sw = sw | SW3;
sw = sw & (~WS2);
if (sw & SW3) printf(“ON”);
0 0 0 0 0 0 0 1
sw
0 0 0 0 0 0 1 0 SW2
0 0 0 0 0 0 1 1
|
sw2 sw1
10
int sw = 0;
sw = SW1;
sw = sw | SW2;
sw = sw | SW3;
sw = sw & (~WS2);
if (sw & SW3) printf(“ON”);
0 0 0 0 0 0 1 1
sw
0 0 0 0 0 1 0 0 SW3
0 0 0 0 0 1 1 1
|
sw2 sw1sw3
11
int sw = 0;
sw = SW1;
sw = sw | SW2;
sw = sw | SW3;
sw = sw & (~WS2);
if (sw & SW3) printf(“ON”);
0 0 0 0 0 1 1 1
sw
1 1 1 1 1 1 0 1 ~SW2
0 0 0 0 0 1 0 1
&
SW2: OFF
12
int sw = 0;
sw = SW1;
sw = sw | SW2;
sw = sw | SW3;
sw = sw & (~WS2);
if (sw & SW3) printf(“ON”);
0 0 0 0 0 1 0 1
0 0 0 0 0 1 0 0 SW3
0 0 0 0 0 1 0 0 → 4 > 0
&
SW3: ON true
13
WS_CHILD 테스트
WS_CHILD 스타일 추가해 보자
부모 윈도우의 안쪽에 위치한다
부모 윈도우 벗어날 수 없음
14
LRESULT CALLBACK WndProc(HWND hWnd, UINT mesg, WPARAM wParam, LPARAM lParam)
{
static HWND hWnd2;
switch(mesg) {
case WM_CREATE:
hWnd2 = CreateWindow(
"WND2",
"World",
WS_OVERLAPPEDWINDOW | WS_VISIBLE |
WS_CHILD,
320, 0, 320, 240,
hWnd,
NULL,
_hInstance,
NULL
);
break;
} …
}
다른 윈도우의 안쪽에 위치 하므로
반드시 부모 윈도우가 있어야 한다
Ad

Recommended

06 일반적 유형의 프로그램
06 일반적 유형의 프로그램
jaypi Ko
08 부모윈도우 자식윈도우
08 부모윈도우 자식윈도우
jaypi Ko
04 이벤트처리
04 이벤트처리
jaypi Ko
12 컨트롤에서의 메세지 처리
12 컨트롤에서의 메세지 처리
jaypi Ko
11 노티피케이션코드
11 노티피케이션코드
jaypi Ko
13 사용자 메세지 처리
13 사용자 메세지 처리
jaypi Ko
10 컨트롤윈도우
10 컨트롤윈도우
jaypi Ko
05 윈도우 프로그램 유형
05 윈도우 프로그램 유형
jaypi Ko
07 윈도우 핸들
07 윈도우 핸들
jaypi Ko
03 첫번째프로그램
03 첫번째프로그램
jaypi Ko
MongoDB - Aggregation Pipeline
MongoDB - Aggregation Pipeline
Jason Terpko
Introduction à React JS
Abdoulaye Dieng
Cours JavaScript
Olivier Le Goaër
Clean Code Principles
Clean Code Principles
YeurDreamin'
Composition, agrégation et immuabilité
ECAM Brussels Engineering School
Empower your App by Inheriting from Odoo Mixins
Empower your App by Inheriting from Odoo Mixins
Odoo
CSW2017 Qinghao tang+Xinlei ying vmware_escape_final
CSW2017 Qinghao tang+Xinlei ying vmware_escape_final
CanSecWest
Introduction to Node js
Introduction to Node js
Akshay Mathur
reactJS
reactJS
Syam Santhosh
The Newton polytope of the sparse resultant
The Newton polytope of the sparse resultant
Vissarion Fisikopoulos
Plsql
rchbeir
Svelte JS introduction
Svelte JS introduction
Mikhail Kuznetcov
Introduction à ajax
Abdoulaye Dieng
Clean code
Clean code
ifnu bima
Inter thread communication
Inter thread communication
subash andey
Lab#7 CSS Box Model
Lab#7 CSS Box Model
Yaowaluck Promdee
You code sucks, let's fix it
You code sucks, let's fix it
Rafael Dohms
Support programmation orientée objet c# .net version f8
ENSET, Université Hassan II Casablanca
CVPR 2022 Tutorial에 대한 쉽고 상세한 Diffusion Probabilistic Model
CVPR 2022 Tutorial에 대한 쉽고 상세한 Diffusion Probabilistic Model
jaypi Ko
개념 이해가 쉬운 Variational Autoencoder (VAE)
개념 이해가 쉬운 Variational Autoencoder (VAE)
jaypi Ko

More Related Content

What's hot (20)

07 윈도우 핸들
07 윈도우 핸들
jaypi Ko
03 첫번째프로그램
03 첫번째프로그램
jaypi Ko
MongoDB - Aggregation Pipeline
MongoDB - Aggregation Pipeline
Jason Terpko
Introduction à React JS
Abdoulaye Dieng
Cours JavaScript
Olivier Le Goaër
Clean Code Principles
Clean Code Principles
YeurDreamin'
Composition, agrégation et immuabilité
ECAM Brussels Engineering School
Empower your App by Inheriting from Odoo Mixins
Empower your App by Inheriting from Odoo Mixins
Odoo
CSW2017 Qinghao tang+Xinlei ying vmware_escape_final
CSW2017 Qinghao tang+Xinlei ying vmware_escape_final
CanSecWest
Introduction to Node js
Introduction to Node js
Akshay Mathur
reactJS
reactJS
Syam Santhosh
The Newton polytope of the sparse resultant
The Newton polytope of the sparse resultant
Vissarion Fisikopoulos
Plsql
rchbeir
Svelte JS introduction
Svelte JS introduction
Mikhail Kuznetcov
Introduction à ajax
Abdoulaye Dieng
Clean code
Clean code
ifnu bima
Inter thread communication
Inter thread communication
subash andey
Lab#7 CSS Box Model
Lab#7 CSS Box Model
Yaowaluck Promdee
You code sucks, let's fix it
You code sucks, let's fix it
Rafael Dohms
Support programmation orientée objet c# .net version f8
ENSET, Université Hassan II Casablanca
07 윈도우 핸들
07 윈도우 핸들
jaypi Ko
03 첫번째프로그램
03 첫번째프로그램
jaypi Ko
MongoDB - Aggregation Pipeline
MongoDB - Aggregation Pipeline
Jason Terpko
Introduction à React JS
Abdoulaye Dieng
Cours JavaScript
Olivier Le Goaër
Composition, agrégation et immuabilité
ECAM Brussels Engineering School
Empower your App by Inheriting from Odoo Mixins
Empower your App by Inheriting from Odoo Mixins
Odoo
CSW2017 Qinghao tang+Xinlei ying vmware_escape_final
CSW2017 Qinghao tang+Xinlei ying vmware_escape_final
CanSecWest
Plsql
rchbeir
Introduction à ajax
Abdoulaye Dieng
Inter thread communication
Inter thread communication
subash andey
You code sucks, let's fix it
You code sucks, let's fix it
Rafael Dohms
Support programmation orientée objet c# .net version f8
ENSET, Université Hassan II Casablanca

More from jaypi Ko (20)

CVPR 2022 Tutorial에 대한 쉽고 상세한 Diffusion Probabilistic Model
CVPR 2022 Tutorial에 대한 쉽고 상세한 Diffusion Probabilistic Model
jaypi Ko
개념 이해가 쉬운 Variational Autoencoder (VAE)
개념 이해가 쉬운 Variational Autoencoder (VAE)
jaypi Ko
신경망기초]오류역전파알고리즘구˳
신경망기초]오류역전파알고리즘구˳
jaypi Ko
파이썬설치
파이썬설치
jaypi Ko
객체지향 단어가 의미하는 것
객체지향 단어가 의미하는 것
jaypi Ko
C언어 들어가기
C언어 들어가기
jaypi Ko
C언어 연산자에 대해 간과한 것
C언어 연산자에 대해 간과한 것
jaypi Ko
확률통계04모수추정
확률통계04모수추정
jaypi Ko
MFC 프로젝트 시작하기
MFC 프로젝트 시작하기
jaypi Ko
01 윈도우프로그램 들어가기
01 윈도우프로그램 들어가기
jaypi Ko
[신경망기초] 신경망학습
[신경망기초] 신경망학습
jaypi Ko
[신경망기초] 합성곱신경망
[신경망기초] 합성곱신경망
jaypi Ko
[신경망기초] 퍼셉트론구현
[신경망기초] 퍼셉트론구현
jaypi Ko
interface
interface
jaypi Ko
com architecture
com architecture
jaypi Ko
[신경망기초] 소프트맥스회귀분석
[신경망기초] 소프트맥스회귀분석
jaypi Ko
[신경망기초] 심층신경망개요
[신경망기초] 심층신경망개요
jaypi Ko
[신경망기초] 선형회귀분석
[신경망기초] 선형회귀분석
jaypi Ko
[신경망기초] 오류역전파알고리즘
[신경망기초] 오류역전파알고리즘
jaypi Ko
[신경망기초] 멀티레이어퍼셉트론
[신경망기초] 멀티레이어퍼셉트론
jaypi Ko
CVPR 2022 Tutorial에 대한 쉽고 상세한 Diffusion Probabilistic Model
CVPR 2022 Tutorial에 대한 쉽고 상세한 Diffusion Probabilistic Model
jaypi Ko
개념 이해가 쉬운 Variational Autoencoder (VAE)
개념 이해가 쉬운 Variational Autoencoder (VAE)
jaypi Ko
신경망기초]오류역전파알고리즘구˳
신경망기초]오류역전파알고리즘구˳
jaypi Ko
객체지향 단어가 의미하는 것
객체지향 단어가 의미하는 것
jaypi Ko
C언어 들어가기
C언어 들어가기
jaypi Ko
C언어 연산자에 대해 간과한 것
C언어 연산자에 대해 간과한 것
jaypi Ko
확률통계04모수추정
확률통계04모수추정
jaypi Ko
MFC 프로젝트 시작하기
MFC 프로젝트 시작하기
jaypi Ko
01 윈도우프로그램 들어가기
01 윈도우프로그램 들어가기
jaypi Ko
[신경망기초] 신경망학습
[신경망기초] 신경망학습
jaypi Ko
[신경망기초] 합성곱신경망
[신경망기초] 합성곱신경망
jaypi Ko
[신경망기초] 퍼셉트론구현
[신경망기초] 퍼셉트론구현
jaypi Ko
com architecture
com architecture
jaypi Ko
[신경망기초] 소프트맥스회귀분석
[신경망기초] 소프트맥스회귀분석
jaypi Ko
[신경망기초] 심층신경망개요
[신경망기초] 심층신경망개요
jaypi Ko
[신경망기초] 선형회귀분석
[신경망기초] 선형회귀분석
jaypi Ko
[신경망기초] 오류역전파알고리즘
[신경망기초] 오류역전파알고리즘
jaypi Ko
[신경망기초] 멀티레이어퍼셉트론
[신경망기초] 멀티레이어퍼셉트론
jaypi Ko
Ad

09 윈도우스타일

  • 2. 2 LRESULT CALLBACK WndProc(HWND hWnd, UINT mesg, WPARAM wParam, LPARAM lParam) { static HWND hWnd2; switch(mesg) { case WM_CREATE: hWnd2 = CreateWindow( "WND2", "World", WS_OVERLAPPEDWINDOW, 320, 0, 320, 240, hWnd, NULL, hInstance, NULL ); ShowWindow(hWnd2, SW_SHOW); break; } … } 이거 빼면 화면에 윈도우 안 나타난다
  • 3. 3 LRESULT CALLBACK WndProc(HWND hWnd, UINT mesg, WPARAM wParam, LPARAM lParam) { static HWND hWnd2; switch(mesg) { case WM_CREATE: hWnd2 = CreateWindow( "WND2", "World", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 320, 0, 320, 240, hWnd, NULL, hInstance, NULL ); ShowWindow(hWnd2, SW_SHOW); break; } … } 다음과 같이 하면 생략할 수 있다 생성과 동시에 화면출력 옵션 (스타일) 지정
  • 4. 4 CreateWindow(…, DWORD dwStyle,…) 윈도우 생성 윈도우 생성 함수: 3번째 인자
  • 5. 5 꼭 알아두어야 할 스타일 WS_BORDER 윈도우 테두리 나타남 WS_CHILD 자식 윈도우로 설정 WS_POPUP 팝업 윈도우로 설정 WS_VISIBLE 윈도우를 생성과 동시에 화면에 표시 WS_OVERLAPPEDWINDOW 일반 속성 모두 포함 WS_CHILD 는 WS_POPUP과 함께 사용 불가 (반대 속성) 어떤 속성은 다른 속성들의 조합 기타 속성은 MSDN을 참고 WS_OVERLAPPED WS_CAPTION WS_SYSMENU WS_THICKFRAME WS_MINIMIZEBOX WS_MAXIMIZEBOX ※ MSDN 참고
  • 6. 6 스타일 추가 및 제거 WS_OVERLAPPEDWINDOW에서 WS_SYSMENU 제거해 보자
  • 7. 7 style = style & (~WS_SYSMENU); 스타일 추가: OR ( | ) 스타일 제거: Negation ( ~ ) 및 AND ( & ) 연산 적용 DWORD style; style = WS_OVERLAPPEDWINDOW | WS_VISIBLE; style = _______________________ ; hWnd2 = CreateWindow( "WND2", "WORLD", style, 320, 0, 320, 240, hWnd, NULL, _hInstance, NULL ); 비트 연산 잘 이해가 안되면 다음 참조
  • 8. 8 #include <stdio.h> #define SW1 1 // 0001 #define SW2 2 // 0010 #define SW3 4 // 0100 #define SW4 8 // 1000 main() { int sw = 0; // 모든 스위치가 꺼져 있다 sw = SW1; // 1번 스위치 ON sw = sw | SW2; // 2번 스위치 ON sw = sw | SW3; // 3번 스위치 ON if (sw & SW2) // 2번 스위치 ON인지 검사 printf(“ON”); }
  • 9. 9 int sw = 0; sw = SW1; sw = sw | SW2; sw = sw | SW3; sw = sw & (~WS2); if (sw & SW3) printf(“ON”); 0 0 0 0 0 0 0 1 sw 0 0 0 0 0 0 1 0 SW2 0 0 0 0 0 0 1 1 | sw2 sw1
  • 10. 10 int sw = 0; sw = SW1; sw = sw | SW2; sw = sw | SW3; sw = sw & (~WS2); if (sw & SW3) printf(“ON”); 0 0 0 0 0 0 1 1 sw 0 0 0 0 0 1 0 0 SW3 0 0 0 0 0 1 1 1 | sw2 sw1sw3
  • 11. 11 int sw = 0; sw = SW1; sw = sw | SW2; sw = sw | SW3; sw = sw & (~WS2); if (sw & SW3) printf(“ON”); 0 0 0 0 0 1 1 1 sw 1 1 1 1 1 1 0 1 ~SW2 0 0 0 0 0 1 0 1 & SW2: OFF
  • 12. 12 int sw = 0; sw = SW1; sw = sw | SW2; sw = sw | SW3; sw = sw & (~WS2); if (sw & SW3) printf(“ON”); 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 SW3 0 0 0 0 0 1 0 0 → 4 > 0 & SW3: ON true
  • 13. 13 WS_CHILD 테스트 WS_CHILD 스타일 추가해 보자 부모 윈도우의 안쪽에 위치한다 부모 윈도우 벗어날 수 없음
  • 14. 14 LRESULT CALLBACK WndProc(HWND hWnd, UINT mesg, WPARAM wParam, LPARAM lParam) { static HWND hWnd2; switch(mesg) { case WM_CREATE: hWnd2 = CreateWindow( "WND2", "World", WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_CHILD, 320, 0, 320, 240, hWnd, NULL, _hInstance, NULL ); break; } … } 다른 윈도우의 안쪽에 위치 하므로 반드시 부모 윈도우가 있어야 한다