SlideShare a Scribd company logo
1 of 8
Download to read offline
CHAP. 11
Notification 코드
1
2
컨트롤 윈도우에서 미리 정의해 둔 특정 사건을
구분하기 위한 코드
컨트롤 윈도우의 특정 사건
컨트롤 윈도우의 윈도우 프로시저에서
윈도우 메시지를 구현 하고 여기에 번호 붙여 놓은 것
둘 다 와 닿지 않으니까 그냥 패스, 예제 보면 금방 알아요
메시지 처리 유형 Ⅲ
유형번호는 중요치 않다
유형 Ⅲ도 컨트롤 윈도우 때문에 생긴 것
3
컨트롤 윈도우의 특정사건 구분
어디에서 사건이 발생하더라도 WM_COMMAND 발생하니까
이 메시지의 부가정보에 뭔가 있을 듯
메뉴항목 선택
컨트롤 윈도우에서 부모 윈도우에 알림 코드 보낼 때
단축키 눌렸을 때
WM_COMMAND 메시지 발생하는 세 가지 경우
int wNofifyCode = HIWORD(wParam)
int wID = LOWORD(wParam);
HWND hWndCtrl = (HWND)lParam;
WM_COMMAND 부가정보
Notification Code
4
버튼 윈도우의 Notification 코드
BN_CLICKED 클릭 코드
BN_DBLCLK 더블클릭 코드
BN_KILLFOUCS 키보드 포커스를 잃었을 때
편집 윈도우의 Notification 코드
EN_CHANGED 편집 창의 내용이 바뀜
EN_SETOCUS 편집 창이 키보드 포커스를 얻었을 때
버튼 이니까 BN으로 시작
편집(Edit) 이니까 EN으로 시작
5
편집 윈도우 Notification 코드 연습
편집 창에 키보드 입력할 때마다 하단
에 출력되도록 구현
6
LRESULT CALLBACK WndProc(HWND hWnd, UINT mesg, WPARAM wParam, LPARAM lParam)
{
static HWND hBtn1, hEdt1, hEdt2;
switch (mesg)
{
case WM_CREATE:
hBtn1 = CreateWindow("BUTTON","button",
WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON,
0, 0,100,100, hWnd,(HMENU)888, _hInstance, NULL);
hEdt1 = CreateWindow("EDIT", "Hello", WS_VISIBLE|WS_CHILD|
WS_BORDER|ES_AUTOHSCROLL|ES_AUTOVSCROLL|ES_MULTILINE,
102, 0, 200,100, hWnd,(HMENU)999, _hInstance, NULL);
hEdt2 = CreateWindow("EDIT","",
WS_VISIBLE|WS_CHILD|
ES_AUTOHSCROLL|ES_AUTOVSCROLL|ES_MULTILINE,
0, 102, 302, 100, hWnd,(HMENU)777,_hInstance, NULL);
break;
버튼, 편집 윈도우 2개 생성
7
case WM_COMMAND:
int id;
id = LOWORD(wParam);
if (id == 888) {
char szMsg[1024];
GetWindowText(hEdt1, szMsg, 1024);
SetWindowText(hEdt2, szMsg);
}
else if (id == 999) {
int code;
code = HIWORD(wParam);
if (code == EN_CHANGE)
{
char szMsg[1024];
GetWindowText(hEdt1, szMsg, 1024);
SetWindowText(hEdt2, szMsg);
}
}
break;
…
}
상단의 편집 창에서 사건 발생하면
Notification 코드를 확인하여 처리
( 편집 창의 내용이 바뀌었다면 )
버튼 눌렀을 때
8
Notification 코드에 대한 단상
Notification 코드는 컨트롤 윈도우의 메시지 처리 함수에서
필요하다고 판단되는 것들을 일부 구현해 놓은 것
예들 들어, 버튼 윈도우의 Notification 코드인 BN_CLICKED 같은 경우 WM_LBUTTONDOWN
과 WM_LBUTTONUP 메시지의 조합으로 볼 수 있다. WM_LBUTTONDOWN 메시지가 발생한
후 곧 바로 WM_LBUTTONUP 메시지가 발생하면 wParam의 상위워드에 미리 정의해둔 상수
BN_CLICKED을 넣고 부모 윈도우 메시지처리 함수에게 WM_COMMAND 메시지를 날리도록
구현한 것
윈도우 메시지의 조합에 따라 수많은 사건의 유형을 정의가능
미리 정의된 Notification 코드에
프로그래머가 필요로 하는 코드가 없을 수 있다
다 정의해 둘 수 없다

More Related Content

What's hot

05 윈도우 프로그램 유형
05 윈도우 프로그램 유형05 윈도우 프로그램 유형
05 윈도우 프로그램 유형jaypi Ko
 
Інформатика 8 клас
Інформатика 8 клас Інформатика 8 клас
Інформатика 8 клас PRESLAVA1972
 
POO Java Chapitre 2 Encapsulation
POO Java Chapitre 2 EncapsulationPOO Java Chapitre 2 Encapsulation
POO Java Chapitre 2 EncapsulationMouna Torjmen
 
Fiche1 ex-sous-programme
Fiche1 ex-sous-programmeFiche1 ex-sous-programme
Fiche1 ex-sous-programmeBaghdadi Wajih
 
ALGORITHMIQUE fonction et procedure.pptx
ALGORITHMIQUE fonction et procedure.pptxALGORITHMIQUE fonction et procedure.pptx
ALGORITHMIQUE fonction et procedure.pptxHathat10
 
Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)salah fenni
 
Node js Modules and Event Emitters
Node js Modules and Event EmittersNode js Modules and Event Emitters
Node js Modules and Event EmittersTheCreativedev Blog
 
Develop a connector on any apps using Odoo-connector
Develop a connector on any apps using Odoo-connectorDevelop a connector on any apps using Odoo-connector
Develop a connector on any apps using Odoo-connectorodoohub
 
Polymorphisme : un concept polymorphe !
Polymorphisme : un concept polymorphe !Polymorphisme : un concept polymorphe !
Polymorphisme : un concept polymorphe !Aurélien Regat-Barrel
 
Odoo's Test Framework - Learn Best Practices
Odoo's Test Framework - Learn Best PracticesOdoo's Test Framework - Learn Best Practices
Odoo's Test Framework - Learn Best PracticesOdoo
 
Fiche3 ex-sous-programme
Fiche3 ex-sous-programmeFiche3 ex-sous-programme
Fiche3 ex-sous-programmeBaghdadi Wajih
 
4 klas-informatyka-andrusych-2021
4 klas-informatyka-andrusych-20214 klas-informatyka-andrusych-2021
4 klas-informatyka-andrusych-2021NoName520
 

What's hot (20)

05 윈도우 프로그램 유형
05 윈도우 프로그램 유형05 윈도우 프로그램 유형
05 윈도우 프로그램 유형
 
Python avancé : Classe et objet
Python avancé : Classe et objetPython avancé : Classe et objet
Python avancé : Classe et objet
 
Ejercicios c#
Ejercicios c#Ejercicios c#
Ejercicios c#
 
Інформатика 8 клас
Інформатика 8 клас Інформатика 8 клас
Інформатика 8 клас
 
POO Java Chapitre 2 Encapsulation
POO Java Chapitre 2 EncapsulationPOO Java Chapitre 2 Encapsulation
POO Java Chapitre 2 Encapsulation
 
Fiche1 ex-sous-programme
Fiche1 ex-sous-programmeFiche1 ex-sous-programme
Fiche1 ex-sous-programme
 
ALGORITHMIQUE fonction et procedure.pptx
ALGORITHMIQUE fonction et procedure.pptxALGORITHMIQUE fonction et procedure.pptx
ALGORITHMIQUE fonction et procedure.pptx
 
Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)
 
Node js Modules and Event Emitters
Node js Modules and Event EmittersNode js Modules and Event Emitters
Node js Modules and Event Emitters
 
PL/SQL:les curseurs
PL/SQL:les curseursPL/SQL:les curseurs
PL/SQL:les curseurs
 
Develop a connector on any apps using Odoo-connector
Develop a connector on any apps using Odoo-connectorDevelop a connector on any apps using Odoo-connector
Develop a connector on any apps using Odoo-connector
 
Каскадні таблиці стилів CSS
Каскадні таблиці стилів CSSКаскадні таблиці стилів CSS
Каскадні таблиці стилів CSS
 
Polymorphisme : un concept polymorphe !
Polymorphisme : un concept polymorphe !Polymorphisme : un concept polymorphe !
Polymorphisme : un concept polymorphe !
 
Урок 23. Події. Обробники подій
Урок 23. Події. Обробники подійУрок 23. Події. Обробники подій
Урок 23. Події. Обробники подій
 
Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
 
Odoo's Test Framework - Learn Best Practices
Odoo's Test Framework - Learn Best PracticesOdoo's Test Framework - Learn Best Practices
Odoo's Test Framework - Learn Best Practices
 
JavaScript. Lectures. part 1. basis
JavaScript. Lectures. part 1. basisJavaScript. Lectures. part 1. basis
JavaScript. Lectures. part 1. basis
 
Fiche3 ex-sous-programme
Fiche3 ex-sous-programmeFiche3 ex-sous-programme
Fiche3 ex-sous-programme
 
4 klas-informatyka-andrusych-2021
4 klas-informatyka-andrusych-20214 klas-informatyka-andrusych-2021
4 klas-informatyka-andrusych-2021
 
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce  Basé sur Spring IOC MVC Security JPA HibernateSite JEE de ECommerce  Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
 

More from jaypi Ko

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

More from jaypi Ko (20)

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

11 노티피케이션코드

  • 2. 2 컨트롤 윈도우에서 미리 정의해 둔 특정 사건을 구분하기 위한 코드 컨트롤 윈도우의 특정 사건 컨트롤 윈도우의 윈도우 프로시저에서 윈도우 메시지를 구현 하고 여기에 번호 붙여 놓은 것 둘 다 와 닿지 않으니까 그냥 패스, 예제 보면 금방 알아요 메시지 처리 유형 Ⅲ 유형번호는 중요치 않다 유형 Ⅲ도 컨트롤 윈도우 때문에 생긴 것
  • 3. 3 컨트롤 윈도우의 특정사건 구분 어디에서 사건이 발생하더라도 WM_COMMAND 발생하니까 이 메시지의 부가정보에 뭔가 있을 듯 메뉴항목 선택 컨트롤 윈도우에서 부모 윈도우에 알림 코드 보낼 때 단축키 눌렸을 때 WM_COMMAND 메시지 발생하는 세 가지 경우 int wNofifyCode = HIWORD(wParam) int wID = LOWORD(wParam); HWND hWndCtrl = (HWND)lParam; WM_COMMAND 부가정보 Notification Code
  • 4. 4 버튼 윈도우의 Notification 코드 BN_CLICKED 클릭 코드 BN_DBLCLK 더블클릭 코드 BN_KILLFOUCS 키보드 포커스를 잃었을 때 편집 윈도우의 Notification 코드 EN_CHANGED 편집 창의 내용이 바뀜 EN_SETOCUS 편집 창이 키보드 포커스를 얻었을 때 버튼 이니까 BN으로 시작 편집(Edit) 이니까 EN으로 시작
  • 5. 5 편집 윈도우 Notification 코드 연습 편집 창에 키보드 입력할 때마다 하단 에 출력되도록 구현
  • 6. 6 LRESULT CALLBACK WndProc(HWND hWnd, UINT mesg, WPARAM wParam, LPARAM lParam) { static HWND hBtn1, hEdt1, hEdt2; switch (mesg) { case WM_CREATE: hBtn1 = CreateWindow("BUTTON","button", WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON, 0, 0,100,100, hWnd,(HMENU)888, _hInstance, NULL); hEdt1 = CreateWindow("EDIT", "Hello", WS_VISIBLE|WS_CHILD| WS_BORDER|ES_AUTOHSCROLL|ES_AUTOVSCROLL|ES_MULTILINE, 102, 0, 200,100, hWnd,(HMENU)999, _hInstance, NULL); hEdt2 = CreateWindow("EDIT","", WS_VISIBLE|WS_CHILD| ES_AUTOHSCROLL|ES_AUTOVSCROLL|ES_MULTILINE, 0, 102, 302, 100, hWnd,(HMENU)777,_hInstance, NULL); break; 버튼, 편집 윈도우 2개 생성
  • 7. 7 case WM_COMMAND: int id; id = LOWORD(wParam); if (id == 888) { char szMsg[1024]; GetWindowText(hEdt1, szMsg, 1024); SetWindowText(hEdt2, szMsg); } else if (id == 999) { int code; code = HIWORD(wParam); if (code == EN_CHANGE) { char szMsg[1024]; GetWindowText(hEdt1, szMsg, 1024); SetWindowText(hEdt2, szMsg); } } break; … } 상단의 편집 창에서 사건 발생하면 Notification 코드를 확인하여 처리 ( 편집 창의 내용이 바뀌었다면 ) 버튼 눌렀을 때
  • 8. 8 Notification 코드에 대한 단상 Notification 코드는 컨트롤 윈도우의 메시지 처리 함수에서 필요하다고 판단되는 것들을 일부 구현해 놓은 것 예들 들어, 버튼 윈도우의 Notification 코드인 BN_CLICKED 같은 경우 WM_LBUTTONDOWN 과 WM_LBUTTONUP 메시지의 조합으로 볼 수 있다. WM_LBUTTONDOWN 메시지가 발생한 후 곧 바로 WM_LBUTTONUP 메시지가 발생하면 wParam의 상위워드에 미리 정의해둔 상수 BN_CLICKED을 넣고 부모 윈도우 메시지처리 함수에게 WM_COMMAND 메시지를 날리도록 구현한 것 윈도우 메시지의 조합에 따라 수많은 사건의 유형을 정의가능 미리 정의된 Notification 코드에 프로그래머가 필요로 하는 코드가 없을 수 있다 다 정의해 둘 수 없다