Windows дээрх хэрэглэгчийн интерфейсийн тухай ойлголт нь цонхны ойлголт дээр суурилдаг. Харилцан яриа, товчлуур, хяналтын самбар, жагсаалт нь бүгд цонх юм. Тиймээс, өөрийн эсвэл хэн нэгний програмын интерфейсийн аль ч элементтэй холбоотой аливаа үйлдлийг гүйцэтгэхийн тулд та цонхны бариулыг авах хэрэгтэй.
Шаардлагатай
- - Платформ SDK багц;
- - хөрвүүлэгч.
Зааварчилгаа
1-р алхам
Үүнийг бий болгосноор цонхны бариулыг аваарай. CreateWindow эсвэл CreateWindowEx API функцууд руу дуудлага хийх, эсвэл цонх эсвэл удирдлагатай ажиллах ажиллагааг багтаасан ашигласан хүрээ эсвэл номын сангийн ангиудын тохирох боох аргуудыг (шаардлагатай объектууд дээр) дуудах хэрэгтэй. CreateWindow ба CreateWindowEx функцууд нь шууд буцаж ирдэг. амжилттай бүтээх цонхны бариул. Хэрэв амжилтгүй дуудвал тэд 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/en-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/en-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx хаягаар орж олж болно. өгөгдсөн цэгт хамаарах өгөгдсөн эх цонхны цонх. Энэ тохиолдолд 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.