Bài giảng Lập trình Windows: Chương 5 - Lập trình tài nguyên
lượt xem 3
download
Nội dung của Chương 5 Lập trình tài nguyên trong bài giảng Lập trình Windows nêu 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 & cursorm 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.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lập trình Windows: Chương 5 - Lập trình tài nguyên
- Chương 5- Lập trình tài nguyên 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 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 được định nghĩa trong tệp *.rc của dự án chương trình. Mỗi tài nguyên được định danh bằng một số hiệu, có thể dùng tệp resource.h để định nghĩa. Cách tổ chức tài nguyên resource.h *.cpp *.rc #define NAME 5 ... tài nguyên ... Use 5
- 5.2- Thực đơn (menu) Cách tạo: VC tool / script ID-menu MENU { POPUP “tên-mục” language { MENUITEM “tên-mục” , ID-ite m .............. Mỗi mục chọn (item) } ............. có ID, Popup, MENUITEM “tên-mục” , ID-ite m ............. Caption,… } Cả menu cũng có ID Xử lý menu thông qua đối tượng Cmenu, gồm các thao tác:
- 5.2- Thực đơn (menu)… Gắn vào cửa sổ CMenu a; a.LoadMenu( ID-menu ); . SetM enu( &a ); Lập trình xử lý mục chọn (item): theo quy tăc xử lý thông điệp, mỗi item là một hàm xử lý & được á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( 0 ); Một số hàm trong 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) là ảnh thu nhỏ Cách tạo: VC tools / import từ các tệp *.ico, *.cur Thiết lập ID cho mỗi biểu tượng trong 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 là GCL_HICON/HCURSOR; định-danh từ bước 1 AfxGetApp() là lệnh lấy đối tượng chương trình
- 5.3- Ảnh & biểu tượng… CBitmap là 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 màn hình bằng 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 các CBitmap vào mỗi item bằng lệnh CMenu :: SetMenuItemBitmaps( ID-pos , flag , Cbitmap *b1, Cbitmap *b2); where : ID-pos là ID hoặc vị trí mục chọn, flag = MF_BYCOMMAND/BYPOSITION, b1 là ảnh uncheck, b2 là ảnh check
- 5.4. Hộp thoại & lớp CDialog Hộp thoại là một dạng cửa sổ đặc biệt, nó được tạo sẵn trong tài nguyên chương trình và định danh bằng số hiệu (ID-Dialog). Trên hộp thoại là các đối tượng điều khiển như: static, editbox, button,... Ví dụ một hộp thoại: Số hiệu hộp thoại Hộp thoại đã được tạo Các điều khiển có thể tạo trên hộp thoại
- 5.4. Hộp thoại & lớp CDialog... Hộp thoại được định nghĩa như sau, hoặc tạo bằng 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 bản tĩnh SS_CENTER, SS_ICON,... EDITTEXT Nhập văn bả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 được quản lý bởi đối tượng lớp CDialog, gồm các phương thức xử lý sau: CDialog( số-hiệu-dialog ); int CDialog :: DoModal(); void CDialog :: OnOk(); hoặc OnCancel() Để xác định các đối tượng điều khiển và xử lý ta sử dụng hàm sau, ép kiểu về đố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 các điều khiển đơn giản: CStatic, CEdit, CButton, CListBox, CComboBox Cách lập trình hộp thoại và các điều khiển trê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 và đặt vào số hiệu hộp thoại đã định nghĩa B3) Lập trình các phương thức trong lớp hộp thoại và sử dụng các biến trỏ lớp ứng với các điều khiển để xác định dữ liệu trên các điều khiển của 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 chỉ báo CSliderCtrl Thanh trượt CListCtrl Danh sách các mục CTreeCtrl Cây các 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 trên biểu tượng: ánh xạ thông điệp tới một 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 trên void tên_hàm ( WPARAM t1, LPARAM t2 ) { … } t2 = thông điệp trên biểu tượng (WM_RBUTTONDOWN...)
- 5.5. Đối tượng thanh công cụ Lớp xử lý là CToolBar (hoặc CToolBarCtrl), các bước tạo thanh công cụ như sau: B1) Tạo một tài nguyên các nút lệnh của ToolBar B2) Khai báo một đối tượng lớp CToolBar (thuộc lớp cửa sổ) B3) Tạo một thanh công cụ cho đối tượng trên bằng lệnh CToolBar :: Create( cửa-sổ-chứa ); B4) Nạp các nút lệnh từ tài nguyên vào đối tượng toolbar bằng lệnh CToolBar :: LoadToolbar( số-hiệu ); B5) Hiển thị lên cửa sổ bằng các 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 khi chọn nút lệnh tương tự như thực đơn, có thể ánh xạ xử lý từng nút lệnh hoặc 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 thanh trạng thái Lớp xử lý là CStatusBar (hoặc CStatusBarCtrl), các bước tạo như sau: B1) Tạo danh sách xâu ký tự trong tài nguyên để hiển thị trên trạng thái (nếu cần) B2) Khai báo một đối tượng lớp CStatusBar (thuộc lớp cửa sổ) B3) Tạo một thanh công cụ cho đối tượng trên bằng lệnh CStatusBar :: Create( cửa-sổ-chứa ); B4) Đặt các thành phần trên thanh 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 trên thực hiện sau lệnh Create() tạo cửa sổ và trước lệnh hiển thị cửa sổ.
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình Window: Chương 6 - Phan Trọng Tiến
35 p | 167 | 20
-
Bài giảng Lập trình Windows - Chương 3: Lập trình giao diện
196 p | 102 | 18
-
Bài giảng Lập trình Window: Chương 8 - Phan Trọng Tiến
45 p | 101 | 17
-
Bài giảng Lập trình Window: Chương 5 - Phan Trọng Tiến
42 p | 107 | 11
-
Bài giảng Lập trình Windows: Chương 4 - Lập trình đồ họa với thư viện GDI (Graphics Device Interface)
47 p | 123 | 9
-
Bài giảng Lập trình Window: Chương 4 - Phan Trọng Tiến
26 p | 95 | 8
-
Bài giảng Lập trình Windows - Chương 3: Lập trình C++ trên Windows (2016)
16 p | 74 | 8
-
Bài giảng Lập trình Windows - Chương 2: Lập trình với cửa sổ bằng API (2016)
10 p | 85 | 8
-
Bài giảng Lập trình Windows - Chương 1: Tổng quan lập trình Windows (2016)
6 p | 151 | 8
-
Bài giảng Lập trình Windows: Chương 2 - Giới thiệu về MFC, Visual C++ 6.0
61 p | 114 | 8
-
Bài giảng Lập trình Windows: Chương 1 - Một số khái niệm cơ bản
56 p | 126 | 6
-
Bài giảng Lập trình Windows - Chương 8: Lập trình đa luồng (2016)
9 p | 84 | 6
-
Bài giảng Lập trình Windows - Chương 4: Xử lý đồ họa và văn bản (2016)
13 p | 74 | 5
-
Bài giảng Lập trình Windows - Chương 5: Lập trình tài nguyên (2016)
16 p | 73 | 5
-
Bài giảng Lập trình Windows - Chương 6: Lập trình File & Print (2016)
7 p | 75 | 5
-
Bài giảng Lập trình Windows - Chương 9: Lập trình thư viện động (2016)
9 p | 77 | 5
-
Bài giảng Lập trình Windows - Chương 10: Lập trình Hook (2016)
6 p | 61 | 4
-
Bài giảng Lập trình Windows: Chương 3 - Dialog Box - Common Dialog - Property Sheet
25 p | 76 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn