1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Lập trình Windows - Chương 5: Lập trình tài nguyên (2016)

16 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 446,45 KB

Nội dung

Bài giảng "Lập trình Windows - Chương 5: Lập trình tài nguyên" cung cấp cho người học các kiến thức: Cơ chế và cách tổ chức tài nguyên, lập trình một số tài nguyên (Thực đơn – menu, ảnh và biểu tượng – bitmap & icon & cursor; hộp thoại – Dialog; các đối tượng điều khiển – control objects;...). Mời các bạn cùng tham khảo.

Chương 5- Lập trình tài nguyên   Cơ chế cách tổ chức tài nguyên Lập trình số tài nguyên        Thực đơn – menu Ảnh biểu tượng – bitmap & icon & cursor Hộp thoại – Dialog Các đối tượng điều khiển – control objects Thanh công cụ - toolbar Thanh trạng thái – status bar … 5.1- Tài nguyên & cách tổ chức  Tài nguyên (resource)?     Là hình ảnh, âm thanh, cung cấp giao diện cho ứng dụng Tài nguyên định nghĩa tệp *.rc dự án chương trình Mỗi tài nguyên định danh số hiệu, dùng tệp resource.h để định nghĩa Cách tổ chức tài nguyên *.rc tài nguyên resource.h *.cpp #define NAME Use 5.2- Thực đơn (menu)  Cách tạo: VC tool / script language Mỗi mục chọn (item) có ID, Popup, Caption,…  Cả menu có ID Xử lý menu thông qua đối tượng Cmenu, gồm thao tác:   ID-menu MENU { POPUP “tên-mục” { MENUITEM “tên-mục” , ID-item } MENUITEM “tên-mục” , ID-item } 5.2- Thực đơn (menu)…  Gắn vào cửa sổ CMenu a; a.LoadMenu( ID-menu );  SetMenu( &a );  Lập trình xử lý mục chọn (item): theo quy tăc xử lý thông điệp, item hàm xử lý & ánh xạ bằng: ON_COMMAND( ID-item, tên-hàm )  Hiện thực đơn ngữ cảnh bằng: CMenu :: TrackPopupMenu( flags, x,y, parent ); flags = { TPM_LEFTALIGN, } 5.2- Thực đơn (menu)…  Lấy thực đơn hệ thống bằng: CMenu * CWnd :: GetSystemMenu( );  Một số hàm CMenu:        CreateMenu(); - tạo menu ngang CreatePopupMenu(); - tạo menu dọc AppendMenu( flags, id, text ); - thêm mục chọn RemoveMenu( pos, flag ); - xóa mục chọn GetSubMenu( int position ); - lấy menu dọc GetMenuItemCount(); - lấy số mục chọn … 5.3- Ảnh & biểu tượng  Biểu tượng (icon, cursor) ảnh thu nhỏ    Cách tạo: VC tools / import từ tệp *.ico, *.cur Thiết lập ID cho biểu tượng RC Đặt vào cửa sổ:  B1) Nạp biểu tượng vào chương trình HICON a = AfxGetApp() -> LoadIcon( ID-icon ); HCURSOR b = AfxGetApp() -> LoadCursor( ID-cursor );  B2) Thay đổi tham số lớp cửa sổ SetClassLong( HWND , kiểu , (long) định-danh ); where : kiểu GCL_HICON/HCURSOR; định-danh từ bước  AfxGetApp() lệnh lấy đối tượng chương trình 5.3- Ảnh & biểu tượng…  CBitmap lớp để xử lý ảnh bitmap  B1) Nạp ảnh từ tài nguyên vào CBitmap CBitmap a ; a LoadBitmap( ID-bitmap );  B2) Sử dụng, chép lên hình DC ảo CDC b ; b.CreateCompatibleDC(  ); b.SelectObject( &a );  BitBlt (x,y,w,h, &b, x’, y’, mode );  Hoặc sử dụng CImageList để xử lý CImageList :: Create( bitmapID, cx, num_Img, mask_color ); CImageList :: Draw( CDC *dc, int img, POINT pt, UINT style); where : style=ILD_NORMAL, 5.3- Ảnh & biểu tượng…  Menu dạng ảnh: đặt CBitmap vào item lệnh CMenu :: SetMenuItemBitmaps( ID-pos , flag , Cbitmap *b1, Cbitmap *b2); where : ID-pos ID vị trí mục chọn, flag = MF_BYCOMMAND/BYPOSITION, b1 ảnh uncheck, b2 ảnh check 5.4 Hộp thoại & lớp CDialog    Hộp thoại dạng cửa sổ đặc biệt, tạo sẵn tài nguyên chương trình định danh số hiệu (ID-Dialog) Trên hộp thoại đối tượng điều khiển như: static, editbox, button, Ví dụ hộp thoại: Số hiệu hộp thoại Hộp thoại tạo Các điều khiển tạo hộp thoại 5.4 Hộp thoại & lớp CDialog  Hộp thoại định nghĩa sau, tạo công cụ VC số-hiệu-dialog DIALOG STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION “title” FONT size,name { tên_điều_khiển “text / caption” , số-hiệu , x,y, w,h, style }  Các đối tượng điều khiển đơn giản gồm Tên điều khiển Ý nghĩa Tham số kiểu - style LTEXT Văn tĩnh SS_CENTER, SS_ICON, EDITTEXT Nhập văn ES_MULTILINE, ES_PASSWORD, PUSHBUTTON Nút bấm BS_PUSHBUTTON, BS_CHECKBOX, BS_RADIOBUTTON, LISTBOX Danh sách LBS_SORT, LBS_STANDARD, LBS_MULTIPLESEL, COMBOBOX Ô chọn CBS_DROPDOWN, CBS_SIMPLE, 5.4 Hộp thoại & lớp CDialog  Hộp thoại quản lý đối tượng lớp CDialog, gồm phương thức xử lý sau: CDialog( số-hiệu-dialog ); int CDialog :: DoModal(); void CDialog :: OnOk(); OnCancel()  Để xác định đối tượng điều khiển xử lý ta sử dụng hàm sau, ép kiểu đối tượng tương ứng biến_trỏ = (Kiểu_lớp *) CDialog :: GetDlgItem( số_hiệu_điều_khiển );   Các lớp tương ứng điều khiển đơn giản: CStatic, CEdit, CButton, CListBox, CComboBox Cách lập trình hộp thoại điều khiển B1) Xây dựng lớp hộp thoại kế thừa CDialog (nếu cần) B2) Tạo đối tượng hộp thoại đặt vào số hiệu hộp thoại định nghĩa B3) Lập trình phương thức lớp hộp thoại sử dụng biến trỏ lớp ứng với điều khiển để xác định liệu điều khiển hộp thoại 5.4 Hộp thoại & lớp CDialog  Minh họa cho ví dụ Lớp hộp thoại CD (kế thừa CDialog) CString name, pass; void OnOk() { CEdit *edit1 = (CEdit*)GetDlgItem(IDC_EDIT1); CEdit *edit2 = (CEdit*)GetDlgItem(IDC_EDIT2); edit1->GetWindowText(name); edit2->GetWindowText(pass); CDialog::OnOK(); } 5.4 Các lớp xử lý control objects Các thư viện & & CMonthCalCtrl Chọn ngày tháng CButton Nút lệnh, đánh dấu, chọn CListBox Danh sách chọn CComboBox Danh sách chọn CScrollBar Thanh cuộn CSpinButtonCtrl Hộp tăng giảm CProgressCtrl Thanh báo CSliderCtrl Thanh trượt CListCtrl Danh sách mục CTreeCtrl Cây mục CTabCtrl Thẻ chọn CAnimateCtrl Chạy tệp AVI CDateTimeCtrl Chọn ngày tháng 5.? LT biểu tượng khay hệ thống Câu lệnh: Shell_NotifyIcon( NIM_ADD , NOTIFYICONDATA * ); NOTIFYICONDATA { cbSize, hIcon, hWnd, szTip, uCallbackMessage, uFlags, uID } uFlags = NIF_ICON+NIF_MESSAGE+NIF_TIP  Xử lý thông điệp biểu tượng: ánh xạ thông điệp tới hàm lớp cửa sổ ON_MESSAGE( uCallbackMessage, tên_hàm )  Mẫu hàm xử lý cho thông điệp void tên_hàm ( WPARAM t1, LPARAM t2 ) { … }  t2 = thông điệp biểu tượng (WM_RBUTTONDOWN ) 5.5 Đối tượng công cụ  Lớp xử lý CToolBar (hoặc CToolBarCtrl), bước tạo công cụ sau: B1) Tạo tài nguyên nút lệnh ToolBar B2) Khai báo đối tượng lớp CToolBar (thuộc lớp cửa sổ) B3) Tạo công cụ cho đối tượng lệnh CToolBar :: Create( cửa-sổ-chứa ); B4) Nạp nút lệnh từ tài nguyên vào đối tượng toolbar lệnh CToolBar :: LoadToolbar( số-hiệu ); B5) Hiển thị lên cửa sổ lệnh sau: CToolBar :: EnableDocking( kiểu={CBRS_ALIGN_ANY, } ); CFrameWnd :: EnableDocking( kiểu={CBRS_ALIGN_ANY, } ); CFrameWnd :: DockControlBar( đối-tượng-toolbar );  Xử lý thông điệp chọn nút lệnh tương tự thực đơn, ánh xạ xử lý nút lệnh nhiều nút lệnh: ON_COMMAND( id_button, tên-hàm ) ON_COMMAND_RANGE( id_min, id_max, tên-hàm ) 5.6 Đối tượng trạng thái  Lớp xử lý CStatusBar (hoặc CStatusBarCtrl), bước tạo sau: B1) Tạo danh sách xâu ký tự tài nguyên để hiển thị trạng thái (nếu cần) B2) Khai báo đối tượng lớp CStatusBar (thuộc lớp cửa sổ) B3) Tạo công cụ cho đối tượng lệnh CStatusBar :: Create( cửa-sổ-chứa ); B4) Đặt thành phần trạng thái CStatusBar :: SetIndicators( UINT* p, int n ); CStatusBar :: SetPaneText( index, xâu-ký-tự ); CStatusBar :: SetPaneInfo( index, id, style, width ); style = {SBPS_NORMAL, }  Các bước thực sau lệnh Create() tạo cửa sổ trước lệnh hiển thị cửa sổ ...5. 1- Tài nguyên & cách tổ chức  Tài nguyên (resource)?     Là hình ảnh, âm thanh, cung cấp giao diện cho ứng dụng Tài nguyên định nghĩa tệp *.rc dự án chương trình Mỗi tài nguyên định... ID-menu MENU { POPUP “tên-mục” { MENUITEM “tên-mục” , ID-item } MENUITEM “tên-mục” , ID-item } 5. 2- Thực đơn (menu)…  Gắn vào cửa sổ CMenu a; a.LoadMenu( ID-menu );  SetMenu( &a );  Lập. .. *.cur Thiết lập ID cho biểu tượng RC Đặt vào cửa sổ:  B1) Nạp biểu tượng vào chương trình HICON a = AfxGetApp() -> LoadIcon( ID-icon ); HCURSOR b = AfxGetApp() -> LoadCursor( ID-cursor ); 

Ngày đăng: 08/05/2021, 14:05