1. Trang chủ
  2. » Giáo án - Bài giảng

Chương 5 Lập trình tài nguyên

16 356 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 243 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

5.3- Ảnh & biểu tượngB1 Nạp biểu tượng vào chương trình B2 Thay đổi tham số lớp cửa sổ AfxGetApp là lệnh lấy đối tượng chương trình HICON a = AfxGetApp -> LoadIcon ID-icon ; HCURSOR b

Trang 1

Chương 5- Lập trình tài nguyên

Trang 2

5.1- Tài nguyên & cách tổ chức

ứng dụng.

án chương trình.

có thể dùng tệp resource.h để định nghĩa.

#define NAME

resource.h

5

Use

*.cpp

tài nguyên

*.rc

Trang 3

5.2- Thực đơn (menu)

 Cách tạo: VC tool / script

language

có ID, Popup,

Caption,…

đối tượng Cmenu, gồm

các 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

}

Trang 4

5.2- Thực đơn (menu)…

thông điệp, mỗi item là một hàm xử lý & được ánh

xạ bằng:

CMenu a;

a.LoadMenu( ID-menu );

 SetMenu( &a );

ON_COMMAND( ID-item, tên-hàm )

CMenu :: TrackPopupMenu( flags, x,y, parent );

flags = { TPM_LEFTALIGN, }

Trang 5

5.2- Thực đơn (menu)…

CMenu * CWnd :: GetSystemMenu( 0 );

Trang 6

5.3- Ảnh & biểu tượng

B1) Nạp biểu tượng vào chương trình

B2) Thay đổi tham số lớp cửa sổ

AfxGetApp() là lệnh lấy đối tượng chương trình

HICON a = AfxGetApp() -> LoadIcon( ID-icon );

HCURSOR b = AfxGetApp() -> LoadCursor( ID-cursor );

SetClassLong( HWND , kiểu , (long) định-danh );

where : kiểu là GCL_HICON/HCURSOR; định-danh từ bước 1

Trang 7

5.3- Ảnh & biểu tượng…

CBitmap a ;

a LoadBitmap( ID-bitmap );

CDC b ; b.CreateCompatibleDC(  );

b.SelectObject( &a );

 BitBlt (x,y,w,h, &b, x’, y’, mode );

CImageList :: Create( bitmapID, cx, num_Img, mask_color );

CImageList :: Draw( CDC *dc, int img, POINT pt, UINT style);

where : style=ILD_NORMAL,

Trang 8

5.3- Ảnh & biểu tượng…

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

Trang 9

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:

Các điều khiển có thể tạo Hộp thoại đã được tạo

Số hiệu hộp thoại

Trang 10

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,

Trang 11

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.

Trang 12

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();

}

Trang 13

5.4 Các lớp xử lý control objects

Các thư viện <afxext.h> & <afxcmn.h> & <afxdtctl.h>

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

Trang 14

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 )

Trang 15

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:

Trang 16

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ổ.

Ngày đăng: 13/05/2014, 11:39

TỪ KHÓA LIÊN QUAN