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

07 윈도우 핸들
07 윈도우 핸들07 윈도우 핸들
07 윈도우 핸들jaypi Ko
 
03 첫번째프로그램
03 첫번째프로그램03 첫번째프로그램
03 첫번째프로그램jaypi Ko
 
Deciphering Explain Output
Deciphering Explain Output Deciphering Explain Output
Deciphering Explain Output MongoDB
 
Création de Vues | SQL Oracle
Création de Vues | SQL OracleCréation de Vues | SQL Oracle
Création de Vues | SQL Oraclewebreaker
 
JavaScript & Dom Manipulation
JavaScript & Dom ManipulationJavaScript & Dom Manipulation
JavaScript & Dom ManipulationMohammed Arif
 
구글테스트
구글테스트구글테스트
구글테스트진화 손
 
Javascript dom event
Javascript dom eventJavascript dom event
Javascript dom eventBunlong Van
 
04 visual basic .net - les controles standard - exercice
04 visual basic .net - les controles standard - exercice04 visual basic .net - les controles standard - exercice
04 visual basic .net - les controles standard - exerciceHamza SAID
 
Les algorithmes recurrents
Les algorithmes recurrentsLes algorithmes recurrents
Les algorithmes recurrentsmohamed_SAYARI
 
Formation PHP
Formation PHPFormation PHP
Formation PHPkemenaran
 
Serie algos approximationx
Serie algos approximationxSerie algos approximationx
Serie algos approximationxmohamed_SAYARI
 

What's hot (20)

07 윈도우 핸들
07 윈도우 핸들07 윈도우 핸들
07 윈도우 핸들
 
03 첫번째프로그램
03 첫번째프로그램03 첫번째프로그램
03 첫번째프로그램
 
Deciphering Explain Output
Deciphering Explain Output Deciphering Explain Output
Deciphering Explain Output
 
Cours SDL2 (partie 2)
Cours SDL2 (partie 2)Cours SDL2 (partie 2)
Cours SDL2 (partie 2)
 
Création de Vues | SQL Oracle
Création de Vues | SQL OracleCréation de Vues | SQL Oracle
Création de Vues | SQL Oracle
 
JavaScript & Dom Manipulation
JavaScript & Dom ManipulationJavaScript & Dom Manipulation
JavaScript & Dom Manipulation
 
cours Plsql _ abdelkhalek benhoumine
cours Plsql _ abdelkhalek benhouminecours Plsql _ abdelkhalek benhoumine
cours Plsql _ abdelkhalek benhoumine
 
구글테스트
구글테스트구글테스트
구글테스트
 
Javascript dom event
Javascript dom eventJavascript dom event
Javascript dom event
 
04 visual basic .net - les controles standard - exercice
04 visual basic .net - les controles standard - exercice04 visual basic .net - les controles standard - exercice
04 visual basic .net - les controles standard - exercice
 
Cours JavaScript
Cours JavaScriptCours JavaScript
Cours JavaScript
 
Le langage C
Le langage CLe langage C
Le langage C
 
JavaScript: Events Handling
JavaScript: Events HandlingJavaScript: Events Handling
JavaScript: Events Handling
 
Tp java ee.pptx
Tp java ee.pptxTp java ee.pptx
Tp java ee.pptx
 
Ndc12 2
Ndc12 2Ndc12 2
Ndc12 2
 
Redux Thunk
Redux ThunkRedux Thunk
Redux Thunk
 
Les algorithmes recurrents
Les algorithmes recurrentsLes algorithmes recurrents
Les algorithmes recurrents
 
Formation PHP
Formation PHPFormation PHP
Formation PHP
 
Introduction à pl/sql
Introduction à pl/sqlIntroduction à pl/sql
Introduction à pl/sql
 
Serie algos approximationx
Serie algos approximationxSerie algos approximationx
Serie algos approximationx
 

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
 
[신경망기초] 신경망학습
[신경망기초] 신경망학습[신경망기초] 신경망학습
[신경망기초] 신경망학습jaypi Ko
 
[신경망기초] 합성곱신경망
[신경망기초] 합성곱신경망[신경망기초] 합성곱신경망
[신경망기초] 합성곱신경망jaypi Ko
 
[신경망기초] 퍼셉트론구현
[신경망기초] 퍼셉트론구현[신경망기초] 퍼셉트론구현
[신경망기초] 퍼셉트론구현jaypi Ko
 
com architecture
com architecturecom architecture
com architecturejaypi Ko
 
[신경망기초] 소프트맥스회귀분석
[신경망기초] 소프트맥스회귀분석[신경망기초] 소프트맥스회귀분석
[신경망기초] 소프트맥스회귀분석jaypi 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 윈도우프로그램 들어가기
 
[신경망기초] 신경망학습
[신경망기초] 신경망학습[신경망기초] 신경망학습
[신경망기초] 신경망학습
 
[신경망기초] 합성곱신경망
[신경망기초] 합성곱신경망[신경망기초] 합성곱신경망
[신경망기초] 합성곱신경망
 
[신경망기초] 퍼셉트론구현
[신경망기초] 퍼셉트론구현[신경망기초] 퍼셉트론구현
[신경망기초] 퍼셉트론구현
 
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 코드에 프로그래머가 필요로 하는 코드가 없을 수 있다 다 정의해 둘 수 없다