精通 VC++ 实效编程280例 - 03 控制栏

Windows 应用程序的控制栏包括工具栏和状态栏等。在工具栏中可以添加按钮和控件,实现快捷操作。在状态栏中可以显示一些提示信息。MFC 中,控制栏中的工具栏和状态栏分别通过 CToolBar 类和 CstatusBar 类实现,它们的父类都为 CContorlBar 类。

33 创建工具栏

创建工具栏,首先创建一个工具栏资源,然后构造一个 CToolBar 类对象,接下来调用 CToolBar::CreateEx 函数创建工具栏窗口,最后调用 CToolBar::LoadToolBar 函数加载工具栏资源。

//创建1个多文档的应用程序,添加1个工具栏资源,ID为IDR_TOOLBAR,在CMainFrame类中添加成员变量

public:

	CToolBar m_wndDemoToolBar;

//在CMainFrame类中添加WM_CREATE消息处理函数

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

	if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)

		return -1;

        //...

	//创建工具栏窗口

	if (!m_wndDemoToolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC))

	{

		return -1;

	}

	//加载工具栏资源

	if (!m_wndDemoToolBar.LoadToolBar(IDR_TOOLBAR))

	{

		return -1;

	}

	return 0;

}

34 设置工具栏标题

设置工具栏的标题可以调用CWnd::SetWindowText函数。

//在CMainFrame类中添加WM_CREATE消息处理函数

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

	if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)

		return -1;

	

	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

	}

	//设置工具栏标题

	CString strText = _T("");

	strText.LoadString(AFX_IDS_APP_TITLE);

	m_wndToolBar.SetWindowText(strText);

        //...

        return 0;

}

35 停靠工具栏

停靠工具栏,首先调用CControlBar::EnableDocking函数和CFrameWnd::EnableDocking函数,然后调用CFrameWnd::DockControlBar函数。

//创建1个多文档的应用程序,添加1个工具栏资源,ID为IDR_TOOLBAR,在CMainFrame类中添加成员变量

public:

	CToolBar m_wndDemoToolBar;

//在CMainFrame类中添加DockBar成员函数

void CMainFrame::DockBar(CControlBar* pDestBar, CControlBar* pSrcBar)

{

	RecalcLayout(TRUE);

	

	//获得工具栏窗口坐标

	CRect rect;

	pDestBar->GetWindowRect(&rect);

	rect.OffsetRect(1, 0);

	

	//获得工具栏风格

	DWORD dwStyle = pDestBar->GetBarStyle();

	

	UINT nDockBarID = 0;

	

	if (dwStyle & CBRS_ALIGN_TOP)

	{

		nDockBarID = AFX_IDW_DOCKBAR_TOP;

	}

	else if (dwStyle & CBRS_ALIGN_BOTTOM)

	{

		nDockBarID = AFX_IDW_DOCKBAR_BOTTOM;

	}

	else if (dwStyle & CBRS_ALIGN_LEFT)

	{

		nDockBarID = AFX_IDW_DOCKBAR_LEFT;

	}

	else if (dwStyle & CBRS_ALIGN_RIGHT)

	{

		nDockBarID = AFX_IDW_DOCKBAR_RIGHT;

	}

	

	//停靠工具栏

	DockControlBar(pSrcBar, nDockBarID, &rect); 

}

//在CMainFrame类中添加WM_CREATE消息处理函数

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

	if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)

		return -1;

        //...

	//创建工具栏窗口

	if (!m_wndDemoToolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC))

	{

		return -1;

	}

	//加载工具栏资源

	if (!m_wndDemoToolBar.LoadToolBar(IDR_TOOLBAR))

	{

		return -1;

	}

	return 0;

}

36 设置工具栏位图

设置工具栏的位图可以调用CToolBar::SetBitmap函数。

//创建1个多文档的应用程序,添加1个工具栏资源,ID为IDR_TOOLBAR,添加1个位图资源,ID为IDB_BITMAP1,在CMainFrame类中添加成员变量

public:

	CToolBar m_wndDemoToolBar;

	CBitmap m_Bitmap;

//在CMainFrame类中添加WM_CREATE消息处理函数

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

	if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)

		return -1;

        //...

	//创建工具栏窗口

	if (!m_wndDemoToolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC))

	{

		return -1;

	}

	//加载工具栏资源

	if (!m_wndDemoToolBar.LoadToolBar(IDR_TOOLBAR))

	{

		return -1;

	}

	//停靠工具栏

	m_wndDemoToolBar.EnableDocking(CBRS_ALIGN_ANY);

	EnableDocking(CBRS_ALIGN_ANY);

	DockBar(&m_wndToolBar,&m_wndDemoToolBar);

	//设置位图

	m_Bitmap.LoadBitmap(IDB_BITMAP1);

	m_wndDemoToolBar.SetBitmap((HBITMAP)m_Bitmap);

	return 0;

}

37 为工具栏按钮添加文本标签

为工具栏按钮添加文本标签可以调用CToolBar::SetButtonText函数。

//创建1个多文档的应用程序,在CMainFrame类中添加WM_CREATE消息处理函数

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

	if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)

		return -1;

	

	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

	}

	for (int n = 0;n < m_wndToolBar.GetCount();n++)

	{

		//获得工具栏按钮ID

		UINT nID = m_wndToolBar.GetItemID(n);

		CString strText = _T("");

		if (!strText.LoadString(nID))

		{

			continue;

		}

		int nIndex = strText.Find(_T('\n'));

		if (nIndex < 0)

		{

			continue;

		}

		strText = strText.Right(strText.GetLength() - nIndex - 1);

		//设置工具栏按钮文本

		m_wndToolBar.SetButtonText(n,strText);

	}

	CRect rect;

	m_wndToolBar.GetItemRect(0,&rect);

	//设置工具栏按钮尺寸

	m_wndToolBar.SetSizes(rect.Size(),CSize(16,15));

        //...

        return 0;

}

38 为工具栏按钮添加下拉箭头

 为工具栏按钮添加下拉箭头,首先调用CToolBarCtrl::SetExtendedStyle函数,设置工具栏的TBSTYLE_EX_DRAWDDARROWS风格;然后调用CToolBar::SetButtonStyle函数,在每一个添加下拉箭头的按钮上设置TBSTYLE_DROPDOWN风格。

//创建1个多文档的应用程序,在CMainFrame类中添加WM_CREATE消息处理函数

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

	if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)

		return -1;

	

	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.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);

	//设置工具栏按钮风格

	int nIndex = m_wndToolBar.CommandToIndex(ID_FILE_NEW);

	UINT nStyle = m_wndToolBar.GetButtonStyle(nIndex);

	nStyle |= TBSTYLE_DROPDOWN;

	m_wndToolBar.SetButtonStyle(nIndex, nStyle);

	//...

	return 0;

}

//在CMainFrame类中为工具栏添加TBN_DROPDOWN消息处理函数

//在MainFrame.h头文件中加入消息处理函数的声明: 

      afx_msg void OnDropDownToolBar(NMHDR* pNMHDR, LRESULT* pResult);

//在MainFrame.cpp中加入下拉箭头的TBN_DROPDOWN消息映射: 

BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)

	//{{AFX_MSG_MAP(CMainFrame)

	ON_NOTIFY(TBN_DROPDOWN, AFX_IDW_TOOLBAR, OnDropDownToolBar)

	//}}AFX_MSG_MAP

END_MESSAGE_MAP()  

//TBN_DROPDOWN消息的实现:

void CMainFrame::OnDropDownToolBar(NMHDR* pNMHDR, LRESULT* pResult)

{

	NMTOOLBAR* pNMToolBar = (NMTOOLBAR*)pNMHDR;



	switch(pNMToolBar->iItem)

	{

	case ID_FILE_NEW:

		::AfxMessageBox(_T("新建"));

		break;

	default:

	    break;

	}

}

39 为工具栏按钮设置热点图像

默认情况下,AppWizard使用工具栏资源来设置按钮的图像。工具栏资源包含一个复合的位图,该位图在调用CToolbar::LoadToolBar函数时将被转换成一个图像列表。

为工具栏按钮设置热点图像,应该首先调用CImageList::Create函数创建一个新的图像列表;然后调用CToolBarCtrl::SetHotImageList函数,将该图像列表设置为工具栏的热点图像列表。

//创建1个多文档的应用程序,在CMainFrame类中添加成员变量和WM_CREATE消息处理函数

private:

	CImageList m_ImageList;



int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

	if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)

		return -1;

	

	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

	}

	//创建图像列表

	if (!m_ImageList.Create(IDB_BITMAP1,16,0,RGB(128,128,128)))

	{

		return -1;

	}

	//设置工具栏图像列表

	m_wndToolBar.GetToolBarCtrl().SetHotImageList(&m_ImageList);

	//...

	return 0;

}

40 启用或禁用工具栏的工具提示

启用和禁用工具栏的工具提示,可以通过调用CControlBar::SetBarStyle函数,添加或删除CBRS_TOOLTIPS风格实现。

//创建1个多文档的应用程序,分别在IDR_MAINFRAME和IDR_DEMOTYPE菜单资源中添加1个子菜单,在子菜单中添加1个菜单项(ID:ID_ENABLE_TOOLTIPS)

//在CMainFrame类中为菜单项添加命令处理函数

void CMainFrame::OnEnableTooltips() 

{

	//获得工具栏风格

	DWORD dwStyle = m_wndToolBar.GetBarStyle();

	

	//启用或禁用工具提示

	if (dwStyle & CBRS_TOOLTIPS) 

	{

		dwStyle &= ~CBRS_TOOLTIPS;

	}

	else

	{

		dwStyle |= CBRS_TOOLTIPS;

	}

	

	//设置工具栏风格

	m_wndToolBar.SetBarStyle(dwStyle);

}



void CMainFrame::OnUpdateEnableTooltips(CCmdUI* pCmdUI) 

{

	//获得工具栏风格

	DWORD dwStyle = m_wndToolBar.GetBarStyle();

	

	if (dwStyle & CBRS_TOOLTIPS) 

	{

		pCmdUI->SetCheck(TRUE);

	}

	else

	{

		pCmdUI->SetCheck(FALSE);

	}

}

41 在工具栏中添加组合框

在工具栏中添加组合框,应该首先调用CToolBar::SetButtonInfo函数,为组合框创建一个空白区域(TBBS_SEPARATOR), 然后调用CToolBar::GetItemRect函数,获得空白区域的大小和位置,最后调用CComboBox::Create函数,在空白区域创建组合框。

//创建1个多文档的应用程序,在CMainFrame类中添加成员变量

CComboBox m_ComboBox;

//在CMainFrame类中添加CreateComboBox成员函数

BOOL CMainFrame::CreateComboBox(UINT nID)

{

	int nIndex = 0;

	CRect rect;



	//查找按钮

	while (m_wndToolBar.GetItemID(nIndex) != nID)

	{

		nIndex++;

	}



    //为组合框创建一个空白区域

	m_wndToolBar.SetButtonInfo(nIndex, nID, TBBS_SEPARATOR, 80);



	//获得空白区域大小和位置

	m_wndToolBar.GetItemRect(nIndex, &rect);



	//组合框大小和位置

	rect.top += 0;

	rect.bottom += 200;



	//在空白区域创建组合框

	if (!m_ComboBox.Create(WS_CHILD | WS_VISIBLE | CBS_AUTOHSCROLL | 

		CBS_DROPDOWNLIST | CBS_HASSTRINGS, rect, &m_wndToolBar, nID))

    {

		TRACE0("Failed to create combo-box\n");

		return FALSE;

    }



	//显示组合框

	m_ComboBox.ShowWindow(SW_SHOW);



	//在组合框中添加字符串

	m_ComboBox.AddString("500%");

	m_ComboBox.AddString("200%");

	m_ComboBox.AddString("150%");

	m_ComboBox.AddString("100%");

	m_ComboBox.AddString("75%");

	m_ComboBox.AddString("50%");

	m_ComboBox.AddString("25%");

	m_ComboBox.AddString("10%");

	m_ComboBox.SetCurSel(3);



	return TRUE;

}

//在CMainFrame类中添加WM_CREATE消息才处理函数

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

	if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)

		return -1;

	

	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

	}



	//创建组合框

	if (!CreateComboBox(ID_COMBOBOX))

	{

		TRACE0("Failed to create combo box\n");

		return -1;

	}

	//...

	return 0;

}

//在CMainFrame类中为组合框添加CBN_SELCHANGE消息处理函数

void CMainFrame::OnSelchangeCombobox() 

{

	CString strText = _T("");

	m_ComboBox.GetWindowText(strText);

	AfxMessageBox(strText);

}

42 创建状态栏

创建状态栏,首先构造一个CStatusBar类对象,然后调用CStatusBar::Create函数创建状态栏窗口,最后调用CStatusBar::SetIndicators函数设置状态栏指示器。

//创建1个多文档的应用程序,在CMainFrame类中添加成员变量

protected:

	CStatusBar m_wndDemoStatusBar;

//在CMainFrame类中添加WM_CREATE消息处理函数

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

	if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)

		return -1;

	//...

	//创建状态栏窗口

	if (!m_wndDemoStatusBar.Create(this))

	{

		return -1;

	}

	

	//ID数组

	UINT IDArray[2];

	for (int n = 0; n < 2; n++)

	{

		IDArray[n] = 10000 + n;

	}

	

	//设置状态栏指示器

	m_wndDemoStatusBar.SetIndicators(IDArray, sizeof(IDArray) / sizeof(UINT));

	

	//设置窗格宽度

	m_wndDemoStatusBar.SetPaneInfo(0, IDArray[0], SBPS_NORMAL, 100);

	m_wndDemoStatusBar.SetPaneInfo(1, IDArray[1], SBPS_STRETCH, 0);

	

	//设置窗格文本

	m_wndDemoStatusBar.SetPaneText(0, _T("状态栏:"));

	m_wndDemoStatusBar.SetPaneText(1, _T(""));

	return 0;

}

43 在状态栏中添加进度条

在状态栏中添加进度条,应该首先调用CProgressCtrl::Create函数,创建进度条,然后调用CStatusBar::GetItemRect函数,获得指示器大小和位置,最后调用CWnd::MoveWindow函数移动进度条窗口。

//创建1个多文档的应用程序,添加1个基类为CStatusBar的类CProgressStatusBar

//在CProgressStatusBar类中添加成员变量

public:

	CProgressCtrl m_Progress;

//在CProgressStatusBar类中添加WM_CREATE和WM_SIZE消息处理函数

int CProgressStatusBar::OnCreate(LPCREATESTRUCT lpCreateStruct) 

{

	if (CStatusBar::OnCreate(lpCreateStruct) == -1)

		return -1;

	

	//创建进度条

	m_Progress.Create(WS_CHILD | WS_VISIBLE, CRect(0, 0, 0, 0), 

		this, 1);

	

	return 0;

}



void CProgressStatusBar::OnSize(UINT nType, int cx, int cy) 

{

	CStatusBar::OnSize(nType, cx, cy);



	//获得指示器大小和位置

	CRect rect;

	GetItemRect(0, &rect);

	

	//移动进度条窗口

	m_Progress.MoveWindow(rect.left + 1, rect.top, rect.Width() - 2, rect.Height());	

}

//在CMainFrame类中添加成员变量

protected:

	CProgressStatusBar m_wndProgressStatusBar;

//在CMainframe类中添加WM_CREATE消息处理函数

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

	if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)

		return -1;

	//...

        //创建状态栏窗口

	if (!m_wndProgressStatusBar.Create(this))

	{

		return -1;

	}

	

	//ID数组

	UINT IDArray[2];

	for (int n = 0; n < 2; n++)

	{

		IDArray[n] = 10000 + n;

	}

	

	//设置状态栏指示器

	m_wndProgressStatusBar.SetIndicators(IDArray, sizeof(IDArray) / sizeof(UINT));

	

	//设置窗格宽度

	m_wndProgressStatusBar.SetPaneInfo(0, IDArray[0], SBPS_NORMAL, 200);

	m_wndProgressStatusBar.SetPaneInfo(1, IDArray[1], SBPS_STRETCH, 0);

	

	//设置窗格文本

	m_wndProgressStatusBar.SetPaneText(0, _T(""));

	m_wndProgressStatusBar.SetPaneText(1, _T(""));

	

	//设置进度条

	m_wndProgressStatusBar.m_Progress.SetRange(0, 100);

	m_wndProgressStatusBar.m_Progress.SetStep(10);

	m_wndProgressStatusBar.m_Progress.SetPos(50);

	return 0;

}

44 显示或隐藏工具栏和状态栏

显示或隐藏工具栏和状态栏,可以调用CFrameWnd::ShowControlBar函数。

//创建1个多文档的应用程序,分别在IDR_MAINFRAME和IDR_DEMOTYPE菜单资源中添加1个子菜单,在子菜单中添加2个菜单项(显示工具栏:ID_SHOW_TOOLBAR,显示状态栏:ID_SHOW_STATUSBAR)

void CMainFrame::OnShowToolbar() 

{

	if (m_wndToolBar.GetStyle() & WS_VISIBLE)

	{

		//隐藏工具栏

		ShowControlBar(&m_wndToolBar, FALSE, FALSE);

	}

	else

	{

		//显示工具栏

		ShowControlBar(&m_wndToolBar, TRUE, FALSE);

	}	

}



void CMainFrame::OnUpdateShowToolbar(CCmdUI* pCmdUI) 

{

	if (m_wndToolBar.GetStyle() & WS_VISIBLE)

	{

		pCmdUI->SetCheck(TRUE);

	}

	else

	{

		pCmdUI->SetCheck(FALSE);

	}	

}



void CMainFrame::OnShowStatusbar() 

{

	if (m_wndStatusBar.GetStyle() & WS_VISIBLE)

	{

		//隐藏状态栏

		ShowControlBar(&m_wndStatusBar, FALSE, FALSE);

	}

	else

	{

		//显示状态栏

		ShowControlBar(&m_wndStatusBar, TRUE, FALSE);

	}	

}



void CMainFrame::OnUpdateShowStatusbar(CCmdUI* pCmdUI) 

{

	if (m_wndStatusBar.GetStyle() & WS_VISIBLE)

	{

		pCmdUI->SetCheck(TRUE);

	}

	else

	{

		pCmdUI->SetCheck(FALSE);

	}

}

45 使用组合栏

首先调用 CReBar::Create 函数创建组合栏,然后调用 CReBar::AddBar 函数在组合栏中添加带区。

//在resource.h头文件中添加宏定义

#define IDC_COMBOBOX                    1000

#define IDC_TEST                               1001

//在CMainFrame类中添加成员变量

protected: 

	CReBar m_wndReBar;

	CComboBox m_ComboBox;

	CButton m_Button;

//在CMainFrame类中添加WM_CREATE消息处理函数

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

	if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)

		return -1;

        //...

	//创建组合框

	if (!m_ComboBox.Create(WS_CHILD | WS_VISIBLE | WS_VSCROLL | 

		CBS_DROPDOWN, CRect(0, 0, 100, 200), this, IDC_COMBOBOX))

    {

		return FALSE;

    }

	

	//创建按钮

	m_Button.Create(_T("确定"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, 

		CRect(0, 0, 50, 20), this, IDC_TEST);

	

	//创建Rebar

	if (!m_wndReBar.Create(this))

	{

		return -1;

	}

	

	//添加工具栏、组合框、按钮添加到Rebar中

	m_wndReBar.AddBar(&m_wndToolBar);

	m_wndReBar.AddBar(&m_ComboBox, NULL, NULL,  

		RBBS_NOGRIPPER | RBBS_BREAK);

	m_wndReBar.AddBar(&m_Button, NULL, NULL, RBBS_NOGRIPPER);

        return 0;

}

//在CMainFrame类中为Button控件添加BN_CLICKED消息处理函数

void CMainFrame::OnTest()

{

	CString strText = _T("");

	m_ComboBox.GetWindowText(strText);



	if ((!strText.IsEmpty()) && (CB_ERR == m_ComboBox.FindString(-1, strText)))

	{

		m_ComboBox.AddString(strText);

	}



	AfxMessageBox(strText);

}

 

你可能感兴趣的:(vc++)