O'zbekiston respublikasi axborot texnologiyalari va kommunikatsiyalarini rivojlantirish vazirligi muhammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti samarqand filiali



Download 17,73 Kb.
Sana31.12.2021
Hajmi17,73 Kb.
#209810
Bog'liq
Raqamli 1-mustaqil ish


O'ZBEKISTON RESPUBLIKASI AXBOROT
TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI
RIVOJLANTIRISH VAZIRLIGI


MUHAMMAD AL-XORAZMIY NOMIDAGI
TOSHKENT AXBOROT TEXNOLOGIYALARI
UNIVERSITETI SAMARQAND FILIALI
"Kompyuter injiniring" fakulteti
"Kompyuter injiniring" kafedrasi
“Raqamli qurilmalarni loyihalashga kirish” fanidan

MUSTAQIL ISH №1

Mavzu: Takrollagichlar va Buferlar

Bajardi: Davronov Feruzbek

Qabul qildi: Norqulov A.S.


Mavzu: Takrollagichlar va Buferlar

Windows dastur dasturchisining vazifalaridan biri bu boshqa Windows dasturlariga o'xshash mahsulotlarni yaratishdirki, foydalanuvchi ularning xatti-harakatlari va tashqi ko'rinishidagi farqni sezmasdan, ular orasida osonlikcha almashinishi mumkin. Ideal holda, foydalanuvchi bir hil muhitni sezishi va dasturlar orasidagi farqni sezmasligi kerak. Bunday muhitda dasturlar o'rtasida ma'lumotlar uzatish imkoniyati tabiiy ravishda o'zini taklif qiladi.

Windows buferi dasturlar o'rtasida ma'lumot almashishni osonlashtiradi.

Buferning tarkibi istalgan vaqtda buferga ma'lumot joylashtirgan dastur tomonidan yaratilgan xotiradagi ob'ektlar to'plamidir. Buferni amalga oshiruvchi API funktsiyalari va xabarlari uning tarkibini boshqaradi. Bufer saqlangan ma'lumotlarga kirish uchun yagona protokol bo'lib xizmat qiladi.

1. Bufer formatlari

Ilovalar bir xil ma'lumotni turli usullar bilan boshqarishi mumkin. Masalan, matn terminal emulyatori tomonidan yaratilgan oddiy belgilar yoki zamonaviy, to'liq xususiyatli so'z protsessorining natijasi bo'lishi mumkin. Buferdan har qanday dastur tomonidan import qilingan ma'lumotlar eng yaxshi formatda taqdim etilishi kerak. Shu maqsadda, buferga ma'lumot oladigan dasturlar ularni iloji boricha ko'proq eksport qiladi.

Natijada, buferdan o'qiyotganda, mijozga bir qator variantlar taqdim etiladi. Buferda ma'lumotlarning taqdim etilishining turli xil usullari bufer formatlari deb ataladi.

Ma'lumot almashish buferiga ma'lum bir formatdagi ma'lumotlarni joylashtirish uchun dastur SetClipboardData () funktsiyasidan foydalanganda, dastur bu formatni takrorlaydi. Umuman olganda, dastur qancha ko'p clipboard formatini qo'llab-quvvatlasa, u Windows-ning boshqa dasturlari bilan shunchalik aniq aloqa o'rnatadi. Shuning uchun, bufer formatini iloji boricha ko'proq o'ynash mantiqan.

Buferni EmptyClipboard () funktsiyasi orqali tozalab, so'ngra unga SetClipboardData () funktsiyasi yordamida istalgan formatdagi ma'lumotlarni joylashtiradigan dastur clipboard egasi deb nomlanadi. (Bu atama to'liq to'g'ri emas, chunki ma'lumotlar almashish buferiga joylashtirilgandan so'ng, u endi egasiga tegishli bo'lmaydi. Ushbu ma'lumotlar Windows muhitiga tegishli.)

Ma'lumotlarni oladigan boshqa dasturlarga clipboardreaders deyiladi. Buferdan ma'lumotlarni olish mijozni uning egasiga aylantirmaydi.

Birgina maqsadi bufer tarkibini ko'rish bo'lgan Windows dasturiga clipboardviewer deyiladi.

Ilova tomonidan qo'llab-quvvatlanadigan har bir bufer formati uchun SetClipboardData () funktsiyasiga alohida qo'ng'iroq qilish kerak. Buferga har bir qo'ng'iroq natijasida yozilgan ma'lumotlar faqat berilgan format uchun buferda saqlangan ma'lumotlarni almashtiradi. Shu sababli, buferga yangi ma'lumotlarni joylashtirishdan oldin, dastur barcha saqlangan formatlarni nomaqbul ma'lumotlardan tozalash uchun EmptyClipboard () funktsiyasini chaqirishi kerak. Aks holda, ushbu ma'lumotlar noto'g'ri saqlangan bo'lishi mumkin. EmptyClipboard () funktsiyasini chaqirish, shuningdek, eski bufer egasiga WM_DESTROYCLIPBOARD xabarini qayta ishlash orqali ma'lum formatlarga ajratilgan barcha xotira maydonlarini tozalashga imkon beradi.

1-rasmda clipboard egasi va mijoz o'rtasidagi o'zaro munosabatlar ko'rsatilgan. Shuni esda tutingki, mijoz ma'lumotni CF_TEXT formatida ko'rishni tanlagan, garchi egasi kamida uchta matn formatini, shu jumladan GF_TEXT, CF_OEMTEXT va CF_UNICODETEXT formatlarini o'ynaydi.

Bufer mijozi boshqa formatlarni qo'llab-quvvatlashi mumkin, ammo CF_TEXT formati ma'lumotlarni joylashtirish uchun eng mos keladi.

1-jadvalda oldindan belgilangan ba'zi formatlarning ro'yxati keltirilgan va har bir tur uchun SetClipBoardData () funktsiyasiga o'tgan ma'lumotlar va tavsiflovchi turi tasvirlangan. Buferga yozishning eng keng tarqalgan turi bu GMEM_DDESHARE opsiyasi bilan ajratilgan global xotira bloki. Buning uchun jadvalda HANDLE oddiy yozuvi ishlatiladi. Bufer formatlari uchun doimiy qiymatlar winuser.h sarlavha faylida bufer interfeysini belgilaydigan API prototipi funktsiyalari bilan birga tasvirlangan.

1-jadval

Oldindan belgilangan bufer formatlari

Bufer formati Deskriptor turi Ma'lumotlarning tavsifi

CF_BITMAP HBITMAP ma'lumotlar bitlar to'plamidir.

CF_DSPENHMETAFILE HENHMETAFILE Ilovaga tegishli kengaytirilgan metafayl.

CF_DSPMETAFILEPICT HANDLE Ilovaga maxsus bo'lgan METAFILEPICT tuzilishini o'z ichiga olgan xotira ob'ekti.

CF_DSPTEXT HANDLE Ilova uchun maxsus matn.

Ilova uchun maxsus bo'lgan CF_DSPBITMAP NVITMAP Bitmap. Ushbu format, masalan, bitta dasturning turli xil nusxalari o'rtasida ma'lumotlarni uzatish uchun ishlatilishi mumkin. Buferning egasini aniqlash uchun GetClipboardOwner () funktsiyasidan foydalaning.

CF_ENHMETAFILE HENHMETAFILE Kengaytirilgan metafayl.

CF_GDIOBJFIRST HGDIOBJ dastur tomonidan tavsiflangan bufer formatlaridan o'tish

GDI (GraphicDeviceInterface) ob'ektlari bilan ifodalanadigan almashinuv (klaviatura). EmptyClipboard () funktsiyasi chaqirilganda, DeleteObject () funktsiyasi ushbu formatdagi ma'lumotlarni o'chirish uchun ishlatiladi.

CF_METFILEPICT HANDLE METAFILEPICT tuzilishini o'z ichiga olgan xotira ob'ekti.

CF_OEMTEXT QO'LLASH Nol bilan tugagan OEM belgilar qatorini o'z ichiga olgan xotira ob'ekti. Chiziqlar aravachani qaytarish va chiziqli uzatish (CR / LF) belgilarining ketma-ketligi bilan ajralib turadi.

CF_OWNERDISPLAY NULL Ma'lumotlarni ko'rsatish uchun buferning egasi javobgar bo'lishini belgilaydi va shuningdek, buferni ko'rish oynasini yangilaydi. Bufer ko'rish vositasi egasiga WM_ASKCBFORMATNAME, WM_PAINTCLIPBOARD, WM_HSCROLLCLIPBOARD, WM_SIZECLIPBOARD va WM_VSCROLLCLIPBOARD xabarlarini yuboradi.

CF_PRIVATEFIRST dan CF_PRIVATELAST Ushbu interval buferning shaxsiy formatini bildiradi. Windows ushbu formatlarni boshqarmaydi. Buferning egasi resurslarni boshqarishi kerak "degan xabarni WM_DESTROYCLBOARD.

CF_RBIFF HANDLE Murakkab audio ma'lumotlarini qo'llab-quvvatlash. Murakkablikda CF_WAVE-ni qo'llab-quvvatlaydi.

CF_TEXT HANDLE Null tugaydigan belgilar qatorini o'z ichiga olgan xotira ob'ekti. Chiziqlar aravachani qaytarish va chiziqli uzatish (CR / LF) belgilarining ketma-ketligi bilan chegaralanadi.

CF_TIFF HANDLE Rasm faylini tavsiflovchi formati.

CF_UNCODETEXT HANDLE Ko'p baytli global Unicode belgilar kodi formatida bo'sh tugagan qatorni o'z ichiga olgan xotira ob'ekti.

CF_WAVE HANDLE Wave fayllari uchun standart yordam.

2. Windows muhitida bufer ma'lumotlarini boshqarish

Windows tizimi buferning tarkibi va formatlarini boshqaradi. Windows har bir format uchun ma'lumotlarni alohida saqlaydi, shunda ma'lumotlarni bitta formatga qo'yish boshqa formatda yozilgan ma'lumotlarga ta'sir qilmaydi. Bundan tashqari, Windows buferga joylashtirilgan ma'lumotlarni o'chirishni boshqaradi. Buferda saqlangan ma'lumotlar format uchun yangi ma'lumotlar saqlanganda yoki barcha bufer tarkibini tozalash uchun EmptyClipboard () chaqirilganda o'chirilishi kerak.

Windows maxsus o'chirish funktsiyasini chaqirish orqali bufer ma'lumotlarini o'chiradi. Funksiyani tanlash bufer formatida saqlanadigan ma'lumotlar turiga bog'liq.

Masalan, GDIWindows ob'ektlari uchun u DeleteObject () funktsiyasidan, xotira ob'ektlari uchun GlobalFree () funktsiyasidan va h.k.

Ushbu qoidalarning yagona istisnolari buferning shaxsiy formatidir. Ko'rsatilgandek, Windows bufer formatida saqlangan ma'lumotlarni nazorat qila olmaydi. Aslida, ushbu formatlarni yaratadigan dasturlar shaxsiy formatlarda saqlangan ma'lumotlarni boshqarish uchun.

3. Bufer ma'lumotlarini kechiktirish bilan ijro etish

Bufer ma'lumotlarining ko'p sonli formatlarini qayta ishlash ko'p vaqt talab etadi, ayniqsa, dastur grafik rasm formatlarini qo'llab-quvvatlasa, masalan, bitmap rasmlari yoki metafayllar. GDI moslamalarini boshqarish vaqt va xotirani talab qiladi. Agar uning formati umuman ishlatilmasa, ma'lumotlarni qayta ishlash yoki saqlash mantiqsiz.

Yaxshiyamki, Win32 API-lari ma'lumotni ma'lum formatda olish uchun so'rov paydo bo'lguncha buferga ma'lumotlarni joylashtirishni kechiktirishning oddiy usulini taqdim etadi. Bu kechiktirilgan berish deb nomlanadi. Uni yoqish uchun SetClipboardData () funktsiyasidan foydalangan holda ma'lumotlarni o'rnatishda bufer ma'lumotlariga NULL qiymatini HANDLE tipining tavsiflovchisi sifatida berish kifoya. Agar dastur formatni qayta ishlashni talab qilsa, so'ralgan formatni ko'rsatish uchun wParam o'zgaruvchisi bilan WM_RENDERFORMAT xabari yuboriladi.

Kechiktirilgan ijro vaqt va resurslarni tejaydi. Ushbu yondashuvning birdan-bir kamchiligi shundaki, foydalanuvchi kiritishni talab qilgandan so'ng tizim darhol javob bermasligi mumkin, chunki ma'lumotlarni formatlash uchun biroz vaqt talab etiladi.

Ammo, agar siz ko'plab formatlarni qo'llab-quvvatlasangiz yoki buferga ma'lumotlarni joylashtirish uchun vaqtingiz bo'lmasa, kechiktirilgan ijro odatda eng yaxshi usul hisoblanadi. Esingizda bo'lsin, ko'pincha ma'lumotlar kesiladi yoki nusxalanadi, lekin yopishtirilmaydi.

Kechiktirilgan ijro etishning misollari ClipboardFormatAvailable () va GetPriorityClipboardFormat () funktsiyalari.

CF_OWNERDISPLAY formati

Buferning noyob formati CF_OWNERDISPLAY bufer ma'lumotlarini ko'rsatish funktsiyalarini egasiga yuklaydi. Buferning egasi bufer ko'ruvchisidagi mijoz sohasidagi o'zgarishlarni tavsiflovchi xabarlar to'plamini oladi. Ushbu xabarlar 2-jadvalda umumlashtirilgan.

CF_OWNERDISPLAY formatining illyustratsion misollaridan biri bu Clipbook yordam dasturi, bu Windows-ning buferini ko'rish vositasi bo'lib, u cheksiz miqdordagi formatlarni taniydi. Aslida, Clipbook o'zining mijozlar maydonini bufer ma'lumotlari egasiga ochib beradi, bu, albatta, asl hujjatdagi kabi tarkibni ko'rsatishga qodir. Buferning egasi uchun yagona farq - bu ma'lumotlar ko'rsatilishi kerak bo'lgan oyna.

Biroq, bu dastur mantig'ini o'zgartirmaydi.

2-jadval


Ma'lumotlarni ko'rsatish uchun buferning egasi tomonidan olingan xabarlar

Xabarning ma'nosi

Bufer ko'ruvchisi format nomini so'raganda, WM_ASKCBFORMATNAME yuboriladi. Buferning egasi wParam baytlarini lPrarm parametri ko'rsatgan buferga ko'chirishi kerak.

WM_PAINTCLIPBOARD bufer oynasining mijoz maydoni yangilashni talab qilganda yuboriladi. WParam parametri buferni ko'rish oynasining dastagi. LParam parametri PAINTSTRUCT uchun ko'rsatgichdir.

WM_SIZECLIPBOARD buferni ko'rish vositasining mijoz maydoni hajmi o'zgartirilganda yuboriladi. WParam parametri buferni ko'rish oynasining dastagi. LParam parametri RECT tuzilmasi uchun ko'rsatgichdir.

WM_HSCROLLCLIPBOARD va WM_VSCROLLCLIPBOARD buferni ko'rish vositasining mijoz maydoni aylantirilganda yuboriladi. WParam parametri buferni ko'rish oynasining dastagi. LParam parametrining past tartibli so'zi aylantirish satri so'rovining turini bildiradi (masalan, WM_HSCROLL yoki WM_VSCROLL xabaridagi wParam parametri). LParam parametrining yuqori tartibli so'zi slayderning holatini bildiradi va faqat aylantirish satri SB_THUMBPOSITION so'rasa.

CF_OWNERDISPLAY bufer formati barcha formatlarda eng yuqori xilma-xillikni ta'minlaydi, chunki ma'lumotlar manbai ularni namoyish qilish uchun javobgardir. Agar dastur buferning g'ayrioddiy formatini qo'llab-quvvatlasa (masalan, shaxsiy yoki ro'yxatdan o'tgan bo'lsa), dasturdan tashqarida ma'lumotlarni ko'rsatish uchun faqat ikkita variant mavjud:

- egasi tomonidan namoyish etilishi;

- buferni ko'rish uchun oyna yozish.

4. Buferni tomoshabinlar

Buferni ko'rish vositasi buferning tarkibini ko'rish uchun mo'ljallangan dasturdir. Odatda ko'rinish oynalari ko'plab formatlarni qo'llab-quvvatlaydi, lekin shaxsiy ro'yxatdan o'tgan formatlarni to'g'ri talqin qila olmaydi. Shu munosabat bilan, siz o'zingizning clipboard ko'rish vositasini yaratishingiz kerak bo'lishi mumkin.

Buferni ko'rish vositasi boshqaradigan ma'lumotlarga ega emasligini unutmang. Viewport talablari:

1. Ko'rish oynasi hech qachon buferning tarkibiga yozmasligi kerak.

2. Ko'rish oynasi hech qachon bufer tarkibidagi biron bir elementni qulflangan holda qoldirmasligi kerak.

3. Bir nechta tomosha oynalari istalgan vaqtda ishlashi mumkinligi va ular o'rtasida xabarlar bog'langan tomoshabinlar ro'yxati orqali uzatilishi sababli, siz yaratgan dastur quyidagi shartlarga rioya qilishi kerak:

- SetClipboardViewer () funktsiyasining qaytish qiymatini saqlang, bu zanjirdagi buferning keyingi ko'ruvchisiga ishora qiladi. Windows yangi brauzerni allaqachon o'rnatilgan brauzerlar oldiga qo'yadi.

- WM_DRAWCLIPBOARD xabarlarini zanjirning keyingi ko'rinish oynasiga yuboring. Aks holda, boshqa ko'rinish oynalari yangilanmaydi.

- WM_CHANGECBCHAIN ​​xabarlarini zanjirning keyingi ko'rinish oynasiga yuboring. Aks holda, ko'rish oynalari zanjiri uzilib qoladi.



- Zanjirning keyingi oynasini olib tashlash uchun WM_CHANGECBCHAIN ​​xabarlarini tomosha qiling. IParam parametrida keyingi ko'rish oynasi o'chirilgan taqdirda, keyingi oynaning yangi dastagi mavjud.

- Ko'rish oynasini zanjirdan olib tashlash uchun keyingi oynaning saqlangan qiymatidan foydalanib ChangeClipboardChain () funktsiyasini chaqiring.
Download 17,73 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish