Windows-тағы қолданушы интерфейсінің тұжырымдамасы терезе тұжырымдамасына негізделген. Диалогтар, батырмалар, басқару тақталары, тізімдер - барлығы терезелер. Сондықтан кез-келген әрекетті өзіңіздің немесе басқа біреудің қолданбалы интерфейсінің кез-келген элементімен орындау үшін сізге терезе тұтқасын алу қажет.
Қажетті
- - SDK платформасының пакеті;
- - құрастырушы.
Нұсқаулық
1-қадам
Оны жасау арқылы терезенің тұтқасын алыңыз. CreateWindow немесе CreateWindowEx API функцияларына қоңырау шалыңыз немесе терезелермен немесе басқару элементтерімен жұмыс істеу функционалдығын жинайтын пайдаланылған рамка немесе кітапхана кластарының сәйкес орау әдістерін (қажетті объектілерде) шақырыңыз. сәтті құруға арналған терезе тұтқасы. Егер сәтсіз шақырылса, олар NULL қайтарады. Қатенің себебі кодын GetLastError API функциясы арқылы сұрауға болады. CreateWindow және CreateWindowEx функцияларының прототиптері мен параметрлерінің толық сипаттамаларын https://msdn.microsoft.com/en-us/library/windows/desktop/ms632679%28v=vs.85%29.aspx сілтемелерінен алуға болады. және https:// msdn.microsoft.com / en-us / library / windows / desktop / ms632680% 28v = vs.85% 29.aspx Әр түрлі фреймворктардың кластарын қолданған кезде, амалдық жүйенің терезе объектілері жасалуы мүмкін (әдісті шақыру арқылы) немесе жасырын түрде (RAII стратегиясын жүзеге асыру). Сондықтан терезенің тұтқасын дайын инициализацияланған объектіге алған дұрыс. Нысанмен қоршалған терезе дескрипторын қайтаратын кластардың әдістері туралы тиісті раманың құжаттамасынан білуге болады. Мысалы, MFC-де ұқсас әдіс CWnd класының GetSafeHwnd болып табылады.
2-қадам
Терезені іздеу арқылы оны ұстаңыз. FindWindow және FindWindowEx API функцияларын немесе сіз қолданып отырған фрейм үшін сәйкес нысан обьектілерінің орамаларын қолданыңыз. Табылған жағдайда FindWindow жоғарғы деңгей терезесіне дескрипторды қайтарады немесе сәтсіздікке NULL. Іздеу сынып аты және терезе тақырыбы бойынша жүзеге асырылады. Параметрлер мен функциялардың сипаттамаларын https://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx сілтемесі арқылы табуға болады. FindWindowEx функциясы FindWindow-қа ұқсас, айырмашылығы - еншілес терезелерді іздеуінде. FindWindowEx құжаттамасын https://msdn.microsoft.com/en-us/library/windows/desktop/ms633500%28v=vs.85%29.aspx мекен-жайы бойынша алуға болады.
3-қадам
Олардың жиынтықтарын тізімдеу кезінде терезенің тұтқасын табыңыз. API функцияларын EnumWindows, EnumChildWindows, EnumThreadWindows немесе сіз қолданатын фреймнің сынып объектілерінің әдістерін қолданыңыз. EnumWindows және EnumChildWindows функциялары сәйкесінше жоғарғы деңгейлі терезелер мен еншілес терезелерді санайды. EnumThreadWindows функциясы көрсетілген ағынның барлық еншілес емес терезелерін санайды. Осы функциялардың әрқайсысы қайта шақыру процедурасына сілтегіш жіберілуі керек, ол табылған терезелердің тұтқалары жұмыс кезінде параметр ретінде беріледі. Санау функцияларын біріктіру, кері шақыру процедурасында терезе қасиеттерін алу және талдау, сіз қажетті терезе. Сипатталған функцияларға арналған құжаттама сілтемелерде келтірілген: - EnumWindows: https://msdn.microsoft.com/kk-us/library/windows/desktop/ms633497%28v=vs.85%29.aspx; - EnumChildWindows: https:// msdn.microsoft.com/en-us/library/windows/desktop/ms633494%28v=vs.85%29.aspx; - EnumThreadWindows: https://msdn.microsoft.com/en-us/library / windows / desktop /ms633495%28v=vs.85%29.aspx.
4-қадам
Белгілі координаттар бойынша терезенің тұтқасын алыңыз. WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx функциялары көрсетілген нүктеге тиесілі терезелерді өңдейді, WindowFromPoint функциясы қолдануға оңай, бірақ жасырын немесе өшірілген терезелер үшін тұтқаларды қайтармайды. Оны пайдалану туралы құжаттарды https://msdn.microsoft.com/kk-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx сайтынан табуға болады. ChildWindowFromPoint және ChildWindowFromPointEx функциялары балаға арналған тұтқаларды табады. берілген нүктеге жататын берілген ата-аналық терезенің терезелері. Бұл жағдайда ChildWindowFromPointEx мінез-құлқын қосымша параметр көмегімен икемді басқаруға болады. Бұл функцияларға арналған құжаттаманы сілтемелер ұсынады: - ChildWindowFromPoint: https://msdn.microsoft.com/en-us/library/windows/desktop/ms632676%28v=vs.85%29.aspx; - ChildWindowFromPointEx: https:// msdn.microsoft.com/en-us/library/windows/desktop/ms632677%28v=vs.85%29.aspx.