Ей там, колегите ентусиасти за програмиране на Windows! Днес ще се потопя дълбоко в това, което е манипулаторът на съобщения в програмирането на Windows. И като доставчик на манипулатор имам някои истински световни прозрения, които да споделя с вас.
Първо, първо, нека поговорим за това какви съобщения са в средата на Windows. Windows е операционна система, управлявана от събитие. Това означава, че може да се случи цял куп неща, като потребител, който щракне с бутон, преместване на мишката или таймер, който излиза. Всяко от тези събития генерира съобщение. Помислете за съобщенията като за малко части от информацията, които казват на системата или приложението, че се е случило нещо.
Тогава манипулаторът на съобщения е като Bouncer в клуб. Той е отговорен за справяне с тези съобщения. Когато съобщение бъде изпратено до приложение, манипулаторът на съобщенията решава какво да прави с него. Той може да пренебрегне съобщението, да го обработи или да го предаде на друга част от приложението.
В програмирането на Windows съобщенията обикновено се представят като цели числа. Например, има предварително дефинирани съобщения за неща като преоразмеряване на прозореца (wm_size), кликвания на мишката (wm_lbuttondown за ляво - щракване) и натиска на клавиша (wm_keydown). Тези съобщения се изпращат до процедурата на прозореца на приложение.
Процедурата на прозореца е специална функция в приложението на Windows. Това е основният манипулатор на съобщения за прозореца. Когато пристигне съобщение, операционната система извиква процедурата на прозореца и предава съобщението заедно с някаква допълнителна информация, като позицията на щракването на мишката или натискания ключ.
![]()
![]()
Нека да разгледаме един прост пример в C ++. Ето основна структура на процедурата на прозореца:
Lresult callback wndproc (hwnd hwnd, uint msg, wparam wparam, lparam lparam) {switch (msg) {случай wm_destroy: postquitmessage (0); почивка; случай wm_paint: // код за справяне с рисуването на счупването на прозореца; По подразбиране: връщане на defwindowProc (HWND, MSG, WPARAM, LPARAM); } връщане 0; }
В този пример,WndprocФункцията е манипулаторът на съобщенията. Използва aпревключвателизявление за проверка на стойността наMSGпараметър. Ако съобщението еWm_destroy, което означава, че потребителят иска да затвори прозореца, той се обаждаPostquitmessageЗа да сигнализирате на приложението да се откаже. Ако е такаWm_paint, може да се справи с картината на прозореца. И ако това е друго съобщение, то се обаждаDefwindowproc, което е функцията за съобщение по подразбиране - обработка, предоставена от Windows.
Сега, като доставчик на манипулатор, ние разбираме важността на ефективните и надеждни манипулатори на съобщения. В голямо приложение за мащаб може да има хиляди съобщения всяка секунда. Ако манипулаторът на съобщения е бавен или неефективен, това може да доведе до изоставащо и неотговарящо приложение.
Ние предлагаме редица решения за оптимизиране на обработката на съобщения. Нашите манипулатори са проектирани да бъдат леки и бързи, като гарантират, че приложението ви може да обработва съобщения в реално време. Независимо дали работите върху просто приложение на работния плот или сложна игра, нашите ръководители могат да направят значителна разлика в производителността.
За тези в полупроводниковата индустрия имаме и няколко страхотни продукти, които да споделяме. Вижте нашитеПолупроводникова лазерна машина за декап. Това е състояние - на - художествената машина за декапиране на полупроводникови лазери, което е от решаващо значение за тестване и анализ.
Имаме иПолупроводниково опаковъчна линия. Тази линия е проектирана за ефективно опаковане на полупроводникови чипове, подобрявайки общия производствен процес.
И ако търсите машина, която да обработва ленти за залепване, нашитеМашина за капинг на полуавторияе пътят. Това е полу - автоматично, осигурява добър баланс между автоматизацията и ръчния контрол.
Обратно към манипулаторите на съобщения в програмирането на Windows. Друг важен аспект е филтрирането на съобщения. Понякога не искате да обработвате всяко едно съобщение, което влиза. Може да се интересувате само от конкретен набор от съобщения. Това е мястото, където идва филтрирането на съобщения. Можете да използвате функции катоPEEK съобщениеилиGetMessageЗа филтриране на съобщения, преди да стигнат до основния манипулатор на съобщения.
Например, можете да използватеPEEK съобщениеЗа да проверите дали определен тип съобщение е на опашката, без всъщност да го премахнете. Това може да бъде полезно, ако искате да извършите някои допълнителни проверки или обработка, преди да обработвате съобщението.
MSG MSG; докато (peekmessage (& msg, null, 0, 0, pm_remove))) {if (msg.message == wm_keydown) {// направете нещо специално за ключ - надолу съобщения} translateMessage (& msg); Dispatchmessage (& msg); }
В този код използвамеPEEK съобщениеЗа да проверите за съобщения в опашката. Ако съобщението е aWm_keydownСъобщение, можем да извършим някои персонализирани действия. След това използвамеTranslateMessageза конвертиране на виртуални - ключови съобщения в символни съобщения иИзпращанеЗа да изпратите съобщението до процедурата на прозореца.
Като доставчик на манипулатор ние също така разбираме необходимостта от гъвкавост. Различните приложения имат различни изисквания, когато става въпрос за обработка на съобщения. Ето защо нашите ръководители могат да бъдат персонализирани, за да отговарят на вашите специфични нужди. Независимо дали се нуждаете от манипулатор, който може да се справи с голям обем съобщения или този, който е оптимизиран за определен тип съобщение, ние ви обхванахме.
Ако се интересувате да научите повече за нашите манипулатори на съобщения или някой от нашите полупроводникови продукти, не се колебайте да се свържете. Винаги сме щастливи, че разговаряме за това как можем да ви помогнем да подобрите вашите приложения на Windows или вашия процес на производство на полупроводници. Независимо дали сте малък разработчик на мащаби или голям мащаб, имаме необходимите решения. Така че, свържете се и нека започнем разговор за това как можем да работим заедно, за да постигнем вашите цели.
ЛИТЕРАТУРА
- Петсолд, Чарлз. "Програмиране на прозорци." Microsoft Press.
- Рихтер, Джефри. "Windows чрез C/C ++." Pearson Education.
