Win32 SDK 기초(8) Windows 메시지 메커니즘에 대한 자세한 설명(그림)
1. 메시지란 무엇인가요?
메시지가 무엇인지 설명하기 전에 먼저 프로그램의 실행 메커니즘을 살펴보겠습니다. 일반적으로 프로그램은 실행 메커니즘에 따라 두 가지 범주로 나눌 수 있습니다.
첫 번째 범주는 프로세스드라이버입니다. 예를 들어, 프로그래밍을 처음 접했을 때 작성한 C 프로그램이나 마이크로 컨트롤러 프로그램이 있습니다. 이러한 유형의 프로그램에는 미리 설정된 실행 프로세스가 있는 경우가 많으며, 이를 실행할 때 단계별로 실행합니다. 두 번째 유형은
이벤트 중심입니다. 이번 사건은 모두가 이해할 수 있을 것이라 믿습니다. 각 사건의 발생은 무작위이며 각 사건은 인생의 사건과 유사하게 고유한 순간을 갖습니다. 프로그램의 이벤트에는 자체 트리거 지점도 있습니다. 이벤트 중심 프로그램은 각 이벤트에 대한 처리 흐름을 미리 작성했습니다. Windows 운영 체제에서 메시지는 Windows의 이벤트입니다. Windows의 거의 모든 작업은 메시지를 트리거합니다. 앞서 말했듯이 창을 만들면 WM_CREATE 메시지가 트리거되고, 창을 그리면 마우스나 키보드를 클릭하면 해당 메시지가 트리거됩니다. Windows 메시지는 MSG라는
구조 로 캡슐화됩니다. 이 구조의 프로토타입은 다음과 같습니다.
typedef struct tagMSG { // msg HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG;
메시지 - 메시지 ID입니다. Windows 운영 체제는 각 메시지에 메시지 ID를 할당하며 이 ID는 고유합니다. 위에서 언급한 WM_CREATE는 기본적으로 메시지 ID인
정수입니다. wParam - 메시지에 첨부할 수 있는 매개변수입니다.
lParam - 메시지에 첨부할 수 있는 매개변수입니다.
시간 - 메시지가 발생한 순간입니다.
Pt - 메시지가 발생했을 때 마우스의 위치입니다.
위 매개변수는 메시지에 반드시 필요합니다.
Windows에서는 각 메시지가 MSG
개체로 캡슐화됩니다. 메시지 보내기에서 이러한 개체는 메시지를 받을 때 메시지 queue에 배치되며 이러한 MSG 개체도 획득됩니다.
루프
이전 기사에서 메시지 루프를 작성한 적이 있습니다. 소위 메시지 루프는 우리 프로세스의 메시지 큐에 있는 메시지를 지속적으로 읽고 처리하는 것입니다.void Message() { MSG nMsg = { 0 }; while (GetMessage(&nMsg, NULL, 0, 0)) { TranslateMessage(&nMsg); DispatchMessage(&nMsg); } }
function 프로토타입은 다음과 같습니다. GetMessage(LPMSG lpMsg, HWND hWnd, UINT w MsgF 필터민, UINT wMsgFilterMax)
lpMsg - 메시지를 저장하는 데 사용되는 MSG 유형의 포인터입니다.
hWnd - 메시지를 가져온 창의 핸들을 지정합니다. 해당 값이 NULL이면 GetMessage는 호출 스레드에 속한 모든 창에 대한 메시지를 검색합니다.
wMsgFilterMin – 검색할 최소 메시지 값을 지정하는 정수입니다.
wMsgFilterMax – 검색할 최대 메시지 값을 지정하는 정수입니다.
GetMessage()가 메시지를 얻은 후 TranslateMessage는 주로 가상 키 메시지를 문자 메시지로 변환하여 메시지를 번역합니다. 문자 메시지는 호출 스레드의 메시지 큐로 전송되고 다음에 스레드가 GetMessage 또는 PeekMessage 함수를 호출할 때 읽혀집니다. Windows의 각 키보드 키는 매크로에 해당하며 이 키보드 키가 보내는 메시지는 가상 키 메시지입니다. TranslateMessage의 기능은 가상 키 메시지를 문자 메시지 WM_CHAR, WM_SYSCHAR 등으로 변환하는 것입니다.
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DESTROY: PostQuitMessage(0);//可¨¦以°?使º1GetMessage返¤¦Ì回?0 break; default: break; } return DefWindowProc(hWnd, uMsg, wParam, lParam); }
hWnd就是产生消息的窗口句柄,uMsg是传递的消息,wParam和lParam分别是消息携带的两个参数。在上面的窗口处理函数中,我们定只处理了一个消息WM_DESTROY,这是我们在点击窗口的关闭按钮后产生的一个消息。我们说过,我们在创建窗口是,也会产生一个WM_CREATE消息。下面我们在窗口处理函数中处理这个消息:
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DESTROY: PostQuitMessage(0);//可¨¦以°?使º1GetMessage返¤¦Ì回?0 break; case WM_CREATE: MessageBox(NULL,"WM_CREATE消息被处理了","消息处理",MB_OK); default: break; } return DefWindowProc(hWnd, uMsg, wParam, lParam); }
我们在接受到WM_CREATE后,会弹出一个对话框。预期的效果是点击这个对话框的确定按钮后才会显示窗口。如下面所示:
运行程序,先弹出对话框:
点击确定按钮后,弹出窗口:
위 내용은 Win32 SDK 기초(8) Windows 메시지 메커니즘에 대한 자세한 설명(그림)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Windows 11의 기본 앱(예: 파일 탐색기) 및 기타 셸 앱은 기본적으로 둥근 모서리와 Fluent 디자인 요소(예: 아크릴)를 사용합니다. 둥근 모서리 외에도 Windows 11의 또 다른 중요한 디자인 특징은 앱의 배경색을 바탕 화면과 일치시키는 운모와 같은 소재입니다. 운모는 아크릴과 비슷하지만 작동 방식이 약간 다릅니다. Microsoft가 설명했듯이 Windows Mica Materials는 배경을 앱과 정렬하여 "색상 계층 구조"를 만듭니다.

빌드 22523용 새로운 Windows 11 SDK는 Microsoft가 Windows 11을 위한 새로운 흐림 효과를 개발하고 있음을 밝혔습니다. 이 효과는 Tabbed라고 하며 아크릴과 운모에 추가됩니다. 22523 SDK의 새로운 DWMWA_SYSTEMBACKDROP_TYPE, Mica, Acrylic의 공개 Win32 API 및 이상한 새로운 "탭" 혼합: pic.twitter.com/dbsu7ZFiIi — It's All Back(@StartIsBack) 2021년 12월 15일 다음 SDK의 샘플 애플리케이션에서 사용 가능

바이러스 백신 소프트웨어는 때때로 Windows 32 노트북에서 Trojan/win11.casdet rfn이라는 경고를 표시할 수 있습니다. PC가 트로이목마 악성코드에 감염되어 오작동을 일으킨다는 의미입니다. 다행히 아래에 설명된 대로 이 문제를 해결할 수 있는 몇 가지 방법이 있습니다. 또한 cdn.districtm.io가 팝업/바이러스/악성 프로그램인지 여부에 대한 자세한 가이드에 관심이 있으실 수 있습니다. Trojan/win32.casdet rfn은 무엇입니까? Trojan/win32.casdet rfn은 시스템을 오버런하고 프로세스를 죽일 수 있는 심각한 트로이 목마 바이러스 감염입니다.

win32와 win64의 차이점은 다음과 같습니다. 1. win32는 Microsoft Windows 운영 체제의 32비트 환경을 의미하고 win64는 Microsoft Windows 운영 체제의 64비트 버전을 의미하며 32보다 안정적이고 빠릅니다. -bit 버전 2. win32는 최대 2G의 메모리를 지원합니다. win64는 4G 이상의 메모리를 보유해야 합니다. 3. win64는 64비트 프로세서를 지원하지만 win32는 이를 완전히 지원할 수 없습니다. 4. win32는 단순성을 추구하지만, win64는 성능을 추구합니다.

2021년 8월, Microsoft는 여러 버전의 메모 작성 앱을 하나의 노력으로 통합함에 따라 Windows 10 및 Windows 11의 OneNote가 앞으로 몇 달 안에 일련의 주요 기능 업데이트를 받을 것이라고 약속했습니다. 고객의. OneNote는 지난 몇 년 동안 많은 변화를 겪었습니다. 2018년에 Microsoft는 사람들이 UWP 버전의 OneNote를 사용하기를 정말로 원했을 때 사전 설치된 Office 앱과 함께 기능이 풍부한 원본 버전의 OneNote를 번들로 묶는 것을 중단했습니다. 대신 Microsoft는 UWP 클라이언트만 제공하고 최신 버전에 새로운 기능을 추가했습니다. Microsoft는 나중에 변경했습니다.

Java Hikvision SDK의 2차 개발을 위한 필수 기술을 습득합니다. 소개: 정보 기술의 급속한 발전으로 영상 감시 시스템이 다양한 분야에서 널리 사용되고 있습니다. 국내 최고의 영상 감시 솔루션 제공업체로서 Hikvision의 제품과 기술은 항상 시장에서 중요한 위치를 차지하고 있습니다. 다양한 프로젝트의 요구 사항을 충족하기 위해 Hikvision은 개발자가 2차 개발을 수행할 수 있는 SDK를 제공합니다. 이 기사에서는 Java Hikvision SDK의 2차 개발을 마스터하기 위한 몇 가지 필수 기술을 소개하고 해당 코드 예제를 첨부합니다. 1. 하이크비전 이해하기

WindowsAppSDK는 개발자가 Windows 애플리케이션에서 Windows 10(버전 1809 이상) 및 Windows 11을 사용하는 다양한 장치에 "일관된" 기능을 제공하는 데 사용할 수 있는 도구 및 API 세트입니다. .NET 또는 Windows SDK와 같은 기존 애플리케이션 유형을 대체하는 것이 아니라 기존 애플리케이션을 보완하는 데 사용할 수 있는 통합 API 도구 세트를 제공한다는 점을 이해하는 것이 정말 중요합니다. 오늘 Microsoft는 많은 새로운 기능이 포함된 Windows App SDK 버전 1.2를 출시했습니다. 이번 릴리스의 하이라이트는 타사 개발자일 수 있습니다.

SDK의 전체 이름은 "소프트웨어 개발 키트"이며 중국어로 "소프트웨어 개발 키트"를 의미합니다. 하드웨어 플랫폼, 운영 체제(OS) 또는 프로그래밍 언어 제조업체가 제공하는 도구 세트입니다. SDK는 소프트웨어 개발자가 특정 플랫폼, 시스템 또는 프로그래밍 언어용 애플리케이션을 만드는 데 도움을 줍니다. 기본 SDK는 일반적으로 컴파일러, 디버거 및 API(애플리케이션 프로그래밍 인터페이스)로 구성되지만 문서, 라이브러리, 런타임/개발 환경, 테스트/분석 도구, 네트워크 프로토콜 등과 같은 다른 콘텐츠도 포함될 수 있습니다.
