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

Tạo và xử lý Toolbar - Tạo và xử lý Menubar potx

86 541 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

Tiêu đề Tạo và xử lý Toolbar - Tạo và xử lý Menubar
Tác giả Trần Ngọc Bảo
Trường học Đại Học Sư Phạm Tp. Hồ Chí Minh
Chuyên ngành Khoa Toán – Tin Học
Thể loại Bài tập lớn
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 86
Dung lượng 2,41 MB

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

Nội dung

Tool bar - Tạo ứng dụng bằng AppWizard™ Chọn menu File Æ New ™ Chọn Tab Projects ™ Chọn loại project “MFC AppWizard exe” ™ Đặt tên project trong ô “Project name” ™ Xác định đường dẫn thư

Trang 1

Đại Học Sư Phạm Tp Hồ Chí Minh

Toolbar - Menubar

DialogBar

™ Tạo và xử lý Toolbar

Trang 2

Đại Học Sư Phạm Tp Hồ Chí Minh

Toolbar - Menubar

DialogBar

Trang 3

NỘI DUNG

™ Giới thiệu về Tool bar và Dialog bar

™ Tạo và xử lý tool bar

™ Radio & Check Box buttons trên tool bar

™ Dialog bar

Trang 4

Tool bar – Dialog bar

Trang 5

Tool bar – Dialog bar

Tool bar (Docked to Top)

Tool bar (Floated)

Trang 6

C ác thành phần trên Tool bar

Bitmap button

Separator

Tool bar Caption

Close button Radio button

Push button

Radio button

Check box button

Separator

Trang 7

T ạo và xử lý Tool bar

AppWizard

Trang 8

Tool bar - Tạo ứng dụng bằng AppWizard

™ Chọn menu File Æ New

™ Chọn Tab Projects

™ Chọn loại project “MFC AppWizard (exe)”

™ Đặt tên project trong ô “Project name”

™ Xác định đường dẫn thư mục trong “Location”

™ Step 1: Chọn loại ứng dụng “Single Document”, bỏ

option “Document/View architecture support”

Trang 9

Tool bar - Tạo ứng dụng bằng AppWizard

Trang 10

Tool bar - Tạo ứng dụng bằng AppWizard

Tool bar mặc định

Trang 11

™ Khai báo biến CToolBar

Tool bar - Các xử lý trong lớp CMainFrame

class CMainFrame : public CFrameWnd

ƒ Bước 1: Gọi hàm tạo lập cửa sổ tool bar CToolBar::Create(…)

ƒ Bước 2: Load resource tool bar CToolBar::LoadToolBar(…)

ƒ Bước 3: Thiết lập thuộc tính tool bar CToolBar::SetBarStyle(…)

Trang 12

Tool bar - Các xử lý trong hàm OnCreate

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

if (!m_wndToolBar. CreateEx (this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE |

CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY |

CBRS_SIZE_DYNAMIC) ||

!m_wndToolBar. LoadToolBar (IDR_MAINFRAME)) {

TRACE0("Failed to create toolbar\n");

return -1; // fail to create }

m_wndToolBar. EnableDocking (CBRS_ALIGN_ANY);

EnableDocking (CBRS_ALIGN_ANY);

DockControlBar (&m_wndToolBar);

Trang 13

Th êm Tool bar v ào ứng dụng

™ Khai b áo biến CToolBar

™ T ạo tool bar

™ Thi ết lập thuộc tính tool bar

™ G ắn tool bar

Trang 14

Thêm mới tool bar resource

Tool bar resource

Trang 15

Thêm mới tool bar resource (tt)

Chọn mục Insert Toolbar để thêm mới tool bar

resource vào ứng dụng

Trang 16

Thêm mới tool bar resource (tt)

New tool bar resource

Trang 17

Thêm mới tool bar resource (tt)

Trang 18

Thêm mới tool bar resource (tt)

Resource editor

Trang 19

Thêm mới tool bar resource (tt)

ID Tool bar Bitmap button

Separator

Current item

Trang 20

Khai báo biến quản lý tool bar

class CMainFrame : public CFrameWnd

Trang 21

Tạo & xác lập thuộc tính cho Toolbar

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

Trang 22

Gắn Toolbar vào cửa sổ chính

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

Trang 23

Gắn Toolbar vào bên trên cửa sổ chính

Toolbar gắn bên trên

Trang 24

Gắn Toolbar vào bên trên cửa sổ chính

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

Trang 25

Gắn Toolbar vào bên trái cửa sổ chính

Toolbar gắn bên trái

Trang 26

Gắn Toolbar vào bên trái cửa sổ chính

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

Trang 27

Gắn Toolbar vào bên dưới cửa sổ chính

Toolbar gắn bên dưới

Trang 28

Gắn Toolbar vào bên dưới cửa sổ chính

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

Trang 29

Gắn Toolbar vào bên phải cửa sổ chính

Toolbar gắn bên phải

Trang 30

Gắn Toolbar vào bên dưới cửa sổ chính

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

Trang 31

Hiển thị ToolBar N cột

ToolBar 2 cột

Trang 32

Hiển thị ToolBar N cột

void CMainFrame::SetColumns(int nCols,CToolBar tbToolBox)

{ int nColumns = nCols;

int nCount = tbToolBox.GetCount();

for(int i = 0; i < nCount; i++) {

UINT nStyle = tbToolBox.GetButtonStyle(i);

BOOL bWrap = (((i + 1) % nColumns) == 0);

Trang 33

Xử lý sự kiện click lên các button trong tool bar

Chọn Add Function

Trang 34

Xử lý sự kiện click lên các button trong tool bar

void CAddNewTooBarView::OnButtonBold()

{

Trang 35

Xử lý button dạng CheckBox và Radio trên Toolbar

Toolbar dạng Radio Toolbar dạng CheckBox

Trang 36

class CAddNewTooBarView : public CView

};

Xử lý CheckBox button (tt)

CAddNewTooBarView ::CAddNewTooBarView

{

m_bBold = TRUE; //Trạng thái button B ban đầu được “Check”

m_bItalic=FALSE;//Trạng thái button I ban đầu không được “Check”

Trang 38

class CAddNewTooBarView : public CView

Trang 41

Enable/Disable button (tt)

Nếu chọn vẽ đường thẳng hoặc đường tròn “rỗng”

thì không cho phép chọn “kiểu tô”

Æ Disable các button chọn “kiểu tô”

Nếu chọn vẽ đường tròn “đặc”

thì cho phép chọn “kiểu tô”

Æ Enable các button chọn “kiểu tô”

Trang 43

Gắn ComboBox vào Toolbar

ComboBox gắn vào Toolbar

Trang 44

Khai báo biến quản lý ComboBox

class CMainFrame : public CFrameWnd

Trang 45

Gắn ComboBox vào Toolbar (tt)

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

return -1;

}

m_wndFontCombox.AddString("Time New Roman");

m_wndFontCombox.AddString("Tahoma");

Trang 46

class CAddNewTooBarView : public CView

{

….

//Khai báo afx_msg void OnButtons(UINT uID);

afx_msg void OnUpdateButtons(CCmdUI* pCmdUI);

};

//Message Map

ON_COMMAND_RANGE(ID_BUTTON_RED,ID_BUTTON_YELLOW, OnButtons)

ON_UPDATE_COMMAND_UI_RANGE(ID_BUTTON_RED,ID_BUTTO

Xử lý dãy buttons trên Toolbar (tt)

Trang 47

void CAddNewTooBarView::OnUpdateButtons(CCmdUI* pCmdUI)

Trang 49

Đại Học Sư Phạm Tp Hồ Chí Minh

Toolbar - Menubar

DialogBar

Trang 50

NỘI DUNG

Trang 51

Giới thiệu Menu

Menu Bar

Trang 52

Các thành phần trên Menu bar

Popup Menu

Popup Menu Menu Bar

Menu Item Separator

Popup Menu

Popup Menu

Trang 53

Tạo và xử lý Menu bar

AppWizard

Trang 54

Menubar - Tạo ứng dụng bằng AppWizard

™ Chọn menu File Æ New

™ Chọn Tab Projects

™ Chọn loại project “MFC AppWizard (exe)”

™ Đặt tên project trong ô “Project name”

™ Xác định đường dẫn thư mục trong “Location”

™ Step 1: Chọn loại ứng dụng “Multiple Document”, bỏ option “Document/View architecture support”

Trang 55

Menubar - Tạo ứng dụng bằng AppWizard

Menubar mặc định (Child Menu)

Trang 56

Menubar - Tạo ứng dụng bằng AppWizard

Menubar mặc định (Main Menu)

Trang 57

pDocTemplate = new CSingleDocTemplate(

IDR_MENU_TOOL,//Menu o cho nay

RUNTIME_CLASS(CMyFirstMenuDoc), RUNTIME_CLASS(CMainFrame), // main SDI frame window RUNTIME_CLASS(CMyFirstMenuView));

AddDocTemplate(pDocTemplate);

// Parse command line for standard shell commands, DDE, file open m_pMainWnd->ShowWindow(SW_SHOW);

m_pMainWnd->UpdateWindow();

Trang 58

Thêm mới Menu resource

Menu resource

Chọn mục Insert Menu để thêm mới Menu resource vào ứng dụng

Trang 59

Thêm mới Menu resource (tt)

New Menu resource

Trang 60

Thêm mới Menu resource (tt)

Trang 61

Thêm mới Menu resource (tt)

Resource editor

Trang 62

Thêm mới Menu resource (tt)

ID Menu

Popup

Separator Menu Item

Trang 63

Xử lý sự kiện click lên các button trong Menu

™ Thông điệp WM_COMMAND

™ Thông điệp UPDATE_COMMAND_UI

™ Bật/tắt MenuItem (Enable/Disable)

™ Thay đổi Caption của MenuItem

Trang 64

Xử lý sự kiện click lên các button trong Menu

Chọn Add Function

Trang 65

Xử lý sự kiện click lên các button trong tool bar

class CAddNewTooBarView : public CView {

afx_msg void OnButtonBold();

void CAddNewTooBarView::OnButtonBold()

{

Trang 66

Xử lý Item dạng CheckBox và Radio trên Menu

™ Xử lý tương tự như button dạng

checkbox và Radio button trong Toolbar

™ Gán ID của MenuItem có cùng ID với

các Item trong Toolbar Æ Click lên MenuItem và Item trên Toolbar sẽ thực hiện cùng một chức năng trong

chương trình

Trang 67

class CAddNewTooBarView : public CView

};

Xử lý CheckBox button (tt)

CAddNewTooBarView ::CAddNewTooBarView

{

m_bBold = TRUE; //Trạng thái button B ban đầu được “Check”

m_bItalic=FALSE;//Trạng thái button I ban đầu không được “Check”

Trang 69

class CAddNewTooBarView : public CView

Trang 70

Thay đổi Menu trong ứng dụng

Yêu cầu

Chương trình cho phép người dùng chọn hiển thị menu Tiếng Anh/Tiếng Việt như hình

Trang 73

Thay đổi Menu trong ứng dụng (tt)

Cách 2:

Thiết kế 2 Menu trong Menu Resource có cùng cấu trúc: cùng số Item và các Item trong 2 Menu resource đôi 1 có cùng ID

Trang 74

Thay đổi Menu trong ứng dụng (tt)

Trang 75

Thay đổi Menu trong ứng dụng (tt)

void CMainFrame::NewMyMenu()

{

if ( m_NN==1 ) {

} else

SetMenu(&m_myMenu);

Trang 76

Gắn menu vào dialog

i Tạo menu resource

ii Tạo dialog reource

iii Gắn menu vào dialog

- Chọn dialog resource trong ResourceView

- Click phải chuột chọn Properties

Trang 77

Context Menu - Right Click Popup Menu

Thực hiện tương tự như thêm menu bình thường

™ Cài đặt Right Click menu

Nhấn chuột phải lên vùng Client hiển thị popup menu

void CMyFirstMenuView::OnRButtonDown(UINT nFlags, CPoint

Trang 78

Xác lập trạng thái của Item trong Popup Menu

void CMyFirstMenuView::OnRButtonDown(UINT nFlags, CPoint point)

Trang 79

Thêm và Huỷ MenuItem

™ Cú pháp

InsertMenu(nPosition, nFlags, NewID, Caption)

MF_BYPOSITION: dựa vào vị trí MF_BYCOMMAND: dựa vào ID, SEPARATOR không có ID

™ Separator:

nFlags = MF_SEPARATOR NewID = ANY

Caption = ANY

™ MenuItem

Trang 80

CMenu *ptrMenu = topMenu->GetSubMenu(0);

UINT nNewID = ID_USER_MENUITEM+m_nItem;

m_nItem = m_nItem+1;

ptrMenu->InsertMenu(1,MF_BYPOSITION,nNewID,"&Menu Caption");

AfxGetMainWnd()->DrawMenuBar();

Trang 81

CMenu *ptrMenu = topMenu->GetSubMenu(0);

//Handle của Sub Menu(0) được lưu vào *ptrMenu topMenu-

>InsertMenu(1,MF_BYPOSITION,(UINT)ptrMenu->GetSafeHmenu(),"&Menu Caption");

AfxGetMainWnd()->DrawMenuBar();

Trang 83

Xóa/Hủy menuItem

void CMyMenuView::OnLButtonDown(UINT nFlags, CPoint point)

{

CMenu *topMenu = AfxGetMainWnd()->GetMenu();

CMenu *ptrMenu = topMenu->GetSubMenu(0);

Trang 84

Đại Học Sư Phạm Tp Hồ Chí Minh

Toolbar - Menubar

DialogBar

Trang 85

Tạo và xử lý Dialog Bar

class CMainFrame : public CFrameWnd

TRACE0("Failed to create toolbar\n");

return -1; // fail to create }

Ngày đăng: 13/08/2014, 07:22

TỪ KHÓA LIÊN QUAN