Reja:
1. Microsoft Foundation Class kutubxonas
2. Menyular buyruqlarni mantiqiy tartibda tuzish
Microsoft Foundation Class kutubxonasi (MFC) - bu Microsoft Windows -da dasturlash uchun "amaliy muhit". MFC quyidagilar uchun zarur bo'lgan kodning ko'p qismini beradi:
Windows boshqaruvi.
Menyular va muloqot qutilari.
Asosiy kirish -chiqish ishlarini bajarish.
Ma'lumotlar ob'ektlari to'plamini saqlash va boshqalar.
Siz o'zingizning C ++ ilovalaringizdagi MFC ramkasining asosiy funktsiyasini MFC tizimiga ilovangizga qo'shib osongina kengaytira olasiz yoki bekor qilishingiz mumkin.
MFC asoslari
MFC tizimi Windows dasturlashni soddalashtirish uchun mo'ljallangan, qayta ishlatiladigan sinflar to'plamini taqdim etadi.
MFC kundalik dasturlashda ishlatiladigan satrlar, fayllar va to'plamlar kabi ko'plab asosiy ob'ektlar uchun sinflar beradi.
Shuningdek, u Windows -ning umumiy API -lari va derazalar, boshqaruv elementlari va qurilma kontekstlari kabi ma'lumotlar tuzilmalari uchun darslar beradi.
Bu ramka, shuningdek, ActiveX va hujjatlarni taqdim etish kabi ilg'or xususiyatlar uchun mustahkam asos yaratadi.
Bundan tashqari, MFC ilovalar arxitekturasi ierarxiyasini tashkil etuvchi sinflarni o'z ichiga olgan holda dasturlar doirasini taqdim etadi.
MFC tizimi Windows dasturlashni soddalashtirish uchun mo'ljallangan, qayta ishlatiladigan sinflar to'plamini taqdim etadi.
MFC kundalik dasturlashda ishlatiladigan satrlar, fayllar va to'plamlar kabi ko'plab asosiy ob'ektlar uchun sinflar beradi.
Shuningdek, u Windows -ning umumiy API -lari va derazalar, boshqaruv elementlari va qurilma kontekstlari kabi ma'lumotlar tuzilmalari uchun darslar beradi.
Bu ramka, shuningdek, ActiveX va hujjatlarni taqdim etish kabi ilg'or xususiyatlar uchun mustahkam asos yaratadi.
Bundan tashqari, MFC ilovalar arxitekturasi ierarxiyasini tashkil etuvchi sinflarni o'z ichiga olgan holda dasturlar doirasini taqdim etadi.
Nima uchun MFC?
MFC platformasi - bu tajribali Windows dasturchilarining ishiga tayanish imkonini beradigan kuchli yondashuv. MFC tuzilishi quyidagi afzalliklarga ega.
Bu rivojlanish vaqtini qisqartiradi.
Bu kodni yanada portativ qiladi.
Bundan tashqari, dasturlash erkinligi va moslashuvchanligini kamaytirmasdan, katta yordam beradi.
Bu "dasturlash qiyin" elementlarga va foydalanuvchi interfeysi texnologiyalariga oson kirishni ta'minlaydi.
MFC Data Access Objects (DAO) va Open Database Connectivity (ODBC) yordamida ma'lumotlar bazasini dasturlashni va Windows Sockets yordamida tarmoq dasturlashni soddalashtiradi.
Bu rivojlanish vaqtini qisqartiradi.
Bu kodni yanada portativ qiladi.
Bundan tashqari, dasturlash erkinligi va moslashuvchanligini kamaytirmasdan, katta yordam beradi.
Bu "dasturlash qiyin" elementlarga va foydalanuvchi interfeysi texnologiyalariga oson kirishni ta'minlaydi.
MFC Data Access Objects (DAO) va Open Database Connectivity (ODBC) yordamida ma'lumotlar bazasini dasturlashni va Windows Sockets yordamida tarmoq dasturlashni soddalashtiradi.
Menyular buyruqlarni mantiqiy tartibda tuzishga imkon beradi va ularni topish oson. Menyu muharriri yordamida siz tugallangan ilovadagi satrga juda o'xshash menyu paneli bilan to'g'ridan -to'g'ri ishlash orqali menyular tuzishingiz va tahrir qilishingiz mumkin. Menyu yaratish uchun quyidagi amallarni bajaring:
1 -qadam - Loyihangizni o'ng tugmasini bosing va Qo'shish → Resurslarni tanlang. Siz "Resurslarni qo'shish" muloqot oynasini ko'rasiz.
2 -qadam - Menyu -ni tanlang va Yangi -ni bosing. Menyu satrida "Bu erga kiring" deb yozilgan to'rtburchakni ko'rasiz.
3 -qadam - Quyidagi skrinshotda ko'rsatilgandek Fayl, Tahrir va hokazo kabi menyu elementlarini yozing.
4 -qadam - Resurs ko'rinishida Menyu papkasini kengaytirsangiz, IDR_MENU1 ID menyusini ko'rasiz. Ushbu identifikatorni o'ng tugmasini bosing va uni IDM_MAINMENU ga o'zgartiring.
5 -qadam - Barcha o'zgarishlarni saqlang.
6 -qadam - Biz bu menyuni muloqot oynamizga biriktirishimiz kerak. Solution Explorer-dagi Dialog papkasini kengaytiring va dialog identifikatorini ikki marta bosing.
7 -qadam - Xususiyatlar menyusini ko'rasiz. Yuqorida ko'rsatilgandek, ochiladigan ro'yxatdan menyu identifikatorini tanlang.
8 -qadam - Ushbu dasturni ishga tushiring va siz menyu elementlarini o'z ichiga olgan quyidagi dialog oynasini ko'rasiz.
Asboblar paneli
A asboblar paneli foydalanuvchi tugmasini bosgan o'rniga bir menyu yordamida bir shaklda ustiga, ayrim ishlarni bajarish imkonini beradi Windows nazorat hisoblanadi.
Asboblar paneli tugmalar shaklida eng qulay amallarni taklif qilib, foydalanuvchi tajribasini soddalashtiradigan qulay tugmalar guruhini taqdim etadi.
Asboblar paneli bunday umumiy harakatlarni foydalanuvchiga yaqinlashtirishi mumkin.
Asboblar paneli odatda asosiy menyu ostida ko'rsatiladi.
Ularda tugmalar bo'lishi mumkin, lekin ba'zida ularning tugmalari yoki ba'zi tugmalari imzoga ega.
Asboblar paneli boshqa turdagi boshqaruv elementlari bilan ham jihozlanishi mumkin.
Asboblar paneli tugmalar shaklida eng qulay amallarni taklif qilib, foydalanuvchi tajribasini soddalashtiradigan qulay tugmalar guruhini taqdim etadi.
Asboblar paneli bunday umumiy harakatlarni foydalanuvchiga yaqinlashtirishi mumkin.
Asboblar paneli odatda asosiy menyu ostida ko'rsatiladi.
Ularda tugmalar bo'lishi mumkin, lekin ba'zida ularning tugmalari yoki ba'zi tugmalari imzoga ega.
Asboblar paneli boshqa turdagi boshqaruv elementlari bilan ham jihozlanishi mumkin.
Asboblar paneli yaratish uchun quyidagi amallarni bajaring.
1 -qadam - Loyihangizni o'ng tugmasini bosing va Qo'shish → Resurslarni tanlang. Siz "Resurslarni qo'shish" muloqot oynasini ko'rasiz.
2 -qadam - asboblar panelini tanlang va Yangi -ni bosing. Siz quyidagi ekranni ko'rasiz.
Qadam 3. Quyidagi skrinshotda ko'rsatilgandek, dizaynerda asboblar panelini yarating va identifikatorlarni taqdim eting.
4 -qadam - bu ikkita o'zgaruvchini CMFCModalDemoDlg sinfiga qo'shing.
CToolBar m_wndToolBar ;
BOOL butD ;
5 -qadam - Quyida CMFCModalDemoDlg.h faylida CMFCModalDemoDlg to'liq bajarilishi ko'rsatilgan -
sinf CMFCModalDemoDlg : umumiy CDialogEx { // Qurilish ommaviy : CMFCModalDemoDlg ( CWnd * pParent = NULL ); // standart konstruktor // Dialog Data #ifdef AFX_DESIGN_TIME
enum { IDD = IDD_MFCMODALDEMO_DIALOG }; #endif
himoyalangan : DoDataExchange virtual bo'shligi ( CDataExchange * pDX ); // DDX / DDV -ni qo'llab -quvvatlash
// Ilova himoyalangan :
HICON m_hIcon ; CToolBar m_wndToolBar ;
BOOL butD ;
// Yaratilgan xabarlar xaritasi funktsiyalari virtual BOOL OnInitDialog ();
afx_msg void OnPaint ();
afx_msg HCURSOR OnQueryDragIcon ();
DECLARE_MESSAGE_MAPA ()
ommaviy :
afx_msg void OnBnClickedOk (); };
6 -qadam - CMFCModalDemoDlg :: OnInitDialog () ni quyidagi kodda ko'rsatilgandek yangilang.
BOOL CMFCModalDemoDlg :: OnInitDialog () { CDialogEx :: OnInitDialog ();
// Ushbu dialog uchun belgini o'rnating. Framework buni avtomatik ravishda bajaradi // ilovaning asosiy oynasi SetIcon dialogi bo'lmaganida ( m_hIcon , TRUE ); // SetIcon katta belgisini o'rnating ( m_hIcon , FALSE ); // Kichik belgini o'rnating
if (! m_wndToolBar . Yaratish ( bu ) || ! m_wndToolBar . LoadToolBar ( IDR_TOOLBAR1 )) // if (m_wndToolBar.CreateEx (bu, TBSTYLE_FLAT, WS_CHILD |! // WS_RSS_VISI_VSI_VISI_T_RSS_VSI_VSI)) | // CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || //! M_wndToolBar.LoadToolBar (IDR_TOOLBAR1)) {
TRACE0 ( "Dialog asboblar paneli yaratilmadi \ n" ); EndDialog ( IDCANCEL ); }
lekinD = TRUE ; To'g'ri rcClientOld ;
// Old Client Rect CRect rcClientNew ; // Xabar qo'shilgan yangi mijozli rekt
// Old Client WindowSize -ni qaytarish // Oynaning mijozlar maydonidagi boshqaruv panellarini qayta joylashtirish va hajmini o'zgartirish uchun chaqiriladi // ReposQuery FLAG asboblar panelini aniq ko'rsatmaydi. Bu faqat hisob -kitoblarni amalga oshiradi. // Va yangi ClientRect qiymatlarini rcClientNew -ga qo'yamiz, shunda biz qolgan matematikani qila olamiz.
GetClientRect ( rcClientOld ); RepositionBars ( AFX_IDW_CONTROLBAR_FIRST , AFX_IDW_CONTROLBAR_LAST , 0 , reposQuery , rcClientNew ); // Bolalarning barcha Windows -lari (boshqaruv elementlari) endi ko'chirilishi kerak, shuning uchun to'lov paneli ularni yashirmaydi. // Tollbar CPoint ptOffset ( rcClientNew . Chap - rcClientOld . Chap , rcClientNew . Top - rcClientOld . Top ) qo'shilgandan so'ng, barcha bolalar boshqaruv elementlarini ko'chirish Offest ;
To'g'ri rcChild ; CWnd * pwndChild = GetWindow ( GW_CHILD ); // Muloqot oynasini boshqarish
while ( pwndChild ) // Barcha bola boshqaruv elementlari orqali
aylaning { pwndChild -> GetWindowRect ( rcChild ); // RECT ScreenToClient ( rcChild ) bola boshqaruvini oling ;
// Child Rectni rcChild to'plangan ofset qiymatlari bo'yicha
o'zgartiradi . OffsetRect ( ptOffset );
pwndChild -> MoveWindow ( rcChild , FALSE ); // Bola boshqaruvini
siljiting pwndChild = pwndChild -> GetNextWindow (); }
To'g'ri rcWindow ; // GetWindowRect ( rcWindow ) dialogining RECTini oling;
// Kenglikni yangi Client Width
rcWindow ga oshirish . o'ng + = rcClientOld . Kenglik () - rcClientNew . Kenglik ();
// balandlikni yangi Client Height
rcWindow ga oshirish . pastki + = rcClientOld . Balandlik () - rcClientNew . Balandlik (); // Window MoveWindow -ni qayta chizish ( rcWindow , FALSE );
// Endi biz Haqiqatan ham asboblar paneli RepositionBars -ni qayta chizamiz ( AFX_IDW_CONTROLBAR_FIRST , AFX_IDW_CONTROLBAR_LAST , 0 );
// TODO: Bu erga qo'shimcha ishga tushirish qo'shing
Haqiqatni qaytarish ; // Fokusni boshqaruvga o'rnatmaguningizcha TRUE -ni qaytaring }
7 -qadam - Ushbu dasturni ishga tushiring. Siz quyidagi dialog oynasini ko'rasiz, u ham asboblar panelini o'z ichiga oladi.
6-Mavzu: TCP / IP to'plamining transport qatlami.
Do'stlaringiz bilan baham: |