2.2 VISUAL BASIC программасында күрделі терезелерді программалау жолдары
Көпшіліктеріңіз Windows жүйесінде стандартты емес терезелерді (шеңбер, үшбұрышты, т.б.) көріп осындай терезелерді қалай жасаукеректігін үйренгіңіз келеді. Егер де Visual Basic программалау тілін оқысақ, онда тілдің стандартты құралдары бұндай мүмкіндіктерге ие еместігі туралы қорытынды жасауға болады. Ал егер соншалықты қажет болып тұрса не істеу керек? Онда VB программасының құрамында стандартты емес формалады жасауға арналған Windows API бар екенін еске түсірген жөн.
Visual Basic программасында күрделі терезелерді программалаудың теориясы
Алдымен күрделі терезелерді программалаудың теориялық жолдарына тоқталайық. Windows құжатнамасында жүйедегі әрбір терезе көптеген параметрлер арқылы суреттелетіні көрсетілген. Қалыпты жағдайда жүйедегі Visual Basic-ті құрайтын «терезенің көрінетін аумағы» тікбұрыш түріне ие болады, алайда осы аумақтың формасын өзгертуге еш нәрсе кедергі келтіре алмайды. Терезенің аталған көрінетін аумағы Region деп аталатын арнайы объектінің көмегімен суреттеледі. Регионды координаттармен шектелген, осы аумақтың бұрыштық нүктелерін суреттейтін беткі қабат ретінде түсіндіруге болады. Басқаша айтқанда, кез-келген формадағы аумақты суреттеуге болады, ал содан кейін одан арнайы функциялар көмегімен регионды жасап және оны бізге қажетті терезеге «бекіту» қажет. Windows API бірнеше функциялардан тұрады, олардың ішінде ең негізгілері мыналар:
CombineRgn – Екі регионды өзара комбинациялайды
CreateEllipticRgn – Эллипс немесе қоршау түріндегі регионды құрады
CreatePolygonRgn – Көпбұрыш түріндегі регионды құрады
CreateRectRgn – Тікбұрышты регионды құрады
CreateRoundRectRgn – Тік бұрышты аумақтан шеңберленген шеттері бар регионды құрады
SetWindowRgn – Көрсетілген терезеге регионды бекітеді
Қарапайым стандартты емес терезелерді құру
Енді, бізге регионды құрудың негізгі функциялары белгілі болды, осы арқылы алынған білімді тәжірибеде қолдануға болады. pTestRgn жобасын жүкеңіз де, оның кодын мұқият меңгеріңіз. Бұл жобада терезені кеңейтілген шеңберге өзгерту үшін кодтың небәрі үш тармағы және Win32 API-дің үш функциясы қолданылады. Алдымен CreateEllipticRgn көмегімен регион құрылады, ол терезеге бекітіледі, ал содан кейін біз құрған региондағы керексіз болып қалған терезе бөліктерін жоюдың реті келеді. Егер де Сіз енді қажеті жоқ объектіні жоймасаңыз, онда Windows сіз үшін регион құра отырып, оны өзінде сақтап қалады және оны қолдану бойынша келесі бұйрықтарды күтетін болады. Қысқаша айтқанда, бөлінген жадыдан керексіз бөліктер босқа орын алады. Сонымен қарапайым стандартты емес терезелерді құрудың программасы төмендегідей:
Private Sub cmbCreateOval_Click()
Dim lRgn As Long
lRgn = CreateEllipticRgn(0, 0, Me.ScaleWidth / Screen.TwipsPerPixelX, Me.ScaleHeight / Screen.TwipsPerPixelY)
SetWindowRgn Me.hwnd, lRgn, True
DeleteObject lRgn
End Sub
Достарыңызбен бөлісу: |