⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 teach_road_4d.htm

📁 教程资料编程c语言编程教程资料编程c语言编程
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb_2312-80">
<meta name="GENERATOR" content="闻怡洋 wyy_cq@21cn.com">
<title>Visual C++/MFC开发指南</title>
<SCRIPT LANGUAGE='JavaScript' SRC='../navigate_bar.js'></SCRIPT>
<link REL="stylesheet" HREF="../main.css">


</head>
<SCRIPT LANGUAGE='JavaScript'>write_body();</SCRIPT>
<SCRIPT LANGUAGE='JavaScript'>write_bar();</SCRIPT>

<p align="center"><a
HREF="http://www.0828.com/pay/cgi-bin/random.cgi?job=go&id=820"
target="_blank">
<img SRC="http://www.0828.com/pay/cgi-bin/random.cgi?id=820" BORDER="0"
width="468" height="60"></a><br>
<font size="2"><a href="http://www.0828.com/pay/index.html"><img border="0"
src="http://www.0828.com/pay/code.gif" width="468" height="15"></a><br>
<small>你每点一下上面的广告我就能有更多的上网时间为大家寻找资料</small></font>
</p>

<table width=98% cellspacing="0" cellpadding="0" align=center><!--整体框架-->
<tr><td>

<table border=0 width="100%" cellspacing="0" cellpadding="2"><!--标记放置区域-->
<tr>
	<td width="30%" align="center" bgcolor="#003D84" valign=middle><img src=../img/brand_200_60.gif width=200 height=60 alt="LOGO1"></td>
	<td width="70%" align="center" bgcolor="#003D84" valign=middle><img src=../img/logo_400_60.gif width=400 height=60 alt="LOGO2"></td>
</tr>
<tr>
	<td colspan="2" bgcolor="#0080C0" align=center><font color=white>您当前位置</font> <a href=../index.htm><font color=white>首页</font></a> <a href=index.htm><font color=white>开发教程</font></a> <font color=white>4.D 利用<font class=eng color=white>AppWizard</font>创建并使用<font class=eng color=white>ToolBar StatusBar Dialog Bar</font></font><SCRIPT LANGUAGE='JavaScript'>write_command();</SCRIPT></font></td>
</tr>
</table><!--标记放置区域 END-->

<table border=0 width=100% cellspacing="0" cellpadding="0">
<tr>
<td><!--begin-->

<br>
<p align=center><big>4.D 利用<font class=eng>AppWizard</font>创建并使用<font class=eng>ToolBar StatusBar Dialog Bar</font></big></p>
<table border=0 align=center width=100%>
<tr><td>
<small>
<p>运行时程序界面如<a href=4d_g1.gif target=_blank>界面图</a>,该程序拥有一个工具条用于显示两个命令按钮,一个用于演示如何使按钮处于检查状态,另一个根据第一个按钮的状态来禁止/允许自身。(设置检查状态和允许状态都通过OnUpdateCommand实现)此外Dialog Bar上有一个输入框和按钮,这两个子窗口的禁止/允许同样是根据工具条上的按钮状态来确定,当按下Dialog Bar上的按钮时将显示输入框中的文字内容。状态条的第一部分用于显示各种提示,第二部分用于利用OnUpdateCommand显示当前时间。同时在程序中演示了如何设置菜单项的命令解释字符(将在状态条的第一部分显示)和如何设置工具条的提示字符(利用一个小的ToolTip窗口显示)。</p>
<p><b>生成应用:</b>利用AppWizard生成一个MFC工程,<a href=4d_g2.gif target=_blank>图例</a>,并设置为单文档界面<a href=4d_g3.gif target=_blank>图例</a>,最后选择工具条,状态条和ReBar支持,<a href=4d_g4.gif target=_blank>图例</a></p>
<p><b>修改菜单:</b>利用资源编辑器删除多余的菜单并添加一个新的弹出菜单和三个子菜单,<a href=4d_g5.gif target=_blank>图例</a>,分别是:
<table border=1 width=100% align=center cellspacing="0">
<tr><td width=30%>名称</td><td width=10%>ID</td><td width=50%>说明字符</td></tr>
<tr><td>Check</td><td>IDM_CHECK</td><td>SetCheck Demo\nSetCheck Demo</td></tr>
<tr><td>Disable</td><td>IDM_DISABLE</td><td>Disable Demo\nDisable Demo</td></tr>
<tr><td>ShowText on DialogBar</td><td>IDM_SHOW_TXT</td><td>ShowText on DialogBar Demo\nShowText on DialogBar</td></tr>
</table>
</p>
<p>
\n前的字符串将显示在状态条中作为命令解释,\n后的部分将作为具有相同ID的工具条按钮的提示显示在ToolTip窗口中。
</p>
<p><b>修改Dialog Bar:</b>在Dialog Bar中添加一个输入框和按钮,按钮的ID为IDM_SHOW_TXT与一个菜单项具有相同的ID,这样可以利用映射菜单消息来处理按钮消息(<font color=red>当然使用不同ID值也可以利用ON_COMMAND来映射Dialog Bar上的按钮消息,但是ClassWizard没有提供为Dialog Bar上按钮进行映射的途径,只能手工添加消息映射代码</font>)。<a href=4d_g6.gif target=_blank>图例</a></p>
<p><b>修改工具条:</b>在工具条中添加两个按钮,ID值为IDM_CHECK和IDM_DISABLE和其中两个菜单项具有相同的ID值。<a href=4d_g7.gif target=_blank>图例</a></p>
<p>利用ClassWizard为三个菜单项添加消息映射和更新命令。<a href=4d_g8.gif target=_blank>图例</a></p>

<p>修改MainFrm.h文件
<pre>
//添加一个成员变量来记录工具条上Check按钮的检查状态。
protected:<font color=red>
	BOOL m_fCheck;</font>
//手工添加状态条第二部分用于显示时间的更新命令,和用于禁止/允许输入框的更新命令
	//{{AFX_MSG(CMainFrame)
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnCheck();
	afx_msg void OnUpdateCheck(CCmdUI* pCmdUI);
	afx_msg void OnDisable();
	afx_msg void OnUpdateDisable(CCmdUI* pCmdUI);
	afx_msg void OnShowTxt();
	afx_msg void OnUpdateShowTxt(CCmdUI* pCmdUI);
	//}}AFX_MSG
	//上面的部分为ClassWizard自动产生的代码<font color=red>
	afx_msg void OnUpdateTime(CCmdUI* pCmdUI); //显示时间
	afx_msg void OnUpdateInput(CCmdUI* pCmdUI); //禁止/允许输入框</font>
</pre></p>
<p>修改MainFrm.cpp文件
<pre>
//修改状态条上各部分ID<font color=red>
#define ID_TIME			0x705	//作为状态条上第二部分ID</font>
static UINT indicators[] =
{
	ID_SEPARATOR,           // status line indicator<font color=red>
	ID_SEPARATOR,			//先设置为ID_SEPARATOR,在状态条创建后再进行修改</font>
};
//修改消息映射
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_COMMAND(IDM_CHECK, OnCheck)
	ON_UPDATE_COMMAND_UI(IDM_CHECK, OnUpdateCheck)
	ON_COMMAND(IDM_DISABLE, OnDisable)
	ON_UPDATE_COMMAND_UI(IDM_DISABLE, OnUpdateDisable)
	ON_COMMAND(IDM_SHOW_TXT, OnShowTxt)
	ON_UPDATE_COMMAND_UI(IDM_SHOW_TXT, OnUpdateShowTxt)
	//}}AFX_MSG_MAP
	//以上部分为ClassWizard自动生成代码<font color=red>
	ON_UPDATE_COMMAND_UI(ID_TIME, OnUpdateTime) ////显示时间
	ON_UPDATE_COMMAND_UI(IDC_INPUT_TEST, OnUpdateInput) //禁止/允许输入框</font>
//修改OnCreate函数,重新设置状态条第二部分ID值
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
....<font color=red>
	// by wenyy 修改状态条上第二部分信息
	m_wndStatusBar.SetPaneInfo(1,ID_TIME,SBPS_NORMAL,60);//set the width</font>
	return 0;
}
//修改经过映射的消息处理函数代码
void CMainFrame::OnCheck() 
{<font color=red>
	//在Check按钮被按下时改变并保存状态
	m_fCheck=!m_fCheck;</font>
}

void CMainFrame::OnUpdateCheck(CCmdUI* pCmdUI) 
{<font color=red>
	//Check按钮是否设置为检查状态
	pCmdUI->SetCheck(m_fCheck);</font>
}

void CMainFrame::OnDisable() 
{<font color=red>
	//Disable按钮被按下
	AfxMessageBox("you press disable test");</font>
}

void CMainFrame::OnUpdateDisable(CCmdUI* pCmdUI) 
{<font color=red>
	//根据Check状态决定自身禁止/允许状态
	pCmdUI->Enable(m_fCheck);</font>
}

void CMainFrame::OnShowTxt() 
{<font color=red>
	//得到Dialog Bar上输入框中文字并显示
	CEdit* pE=(CEdit*)m_wndDlgBar.GetDlgItem(IDC_INPUT_TEST);
	CString szO;
	pE->GetWindowText(szO);
	AfxMessageBox(szO);</font>
}

void CMainFrame::OnUpdateShowTxt(CCmdUI* pCmdUI) 
{<font color=red>
	//Dialog Bar上按钮根据Check状态决定自身禁止/允许状态
	pCmdUI->Enable(m_fCheck);</font>
}

void CMainFrame::OnUpdateInput(CCmdUI* pCmdUI) 
{<font color=red>
	//Dialog Bar上输入框根据Check状态决定自身禁止/允许状态
	pCmdUI->Enable(m_fCheck);</font>
}

void CMainFrame::OnUpdateTime(CCmdUI* pCmdUI) 
{<font color=red>
	//根据当前时间设置状态条上第二部分文字
	CTime timeCur=CTime::GetCurrentTime();
	char szOut[20];
	sprintf( szOut, "%02d:%02d:%02d", timeCur.GetHour(), timeCur.GetMinute(),timeCur.GetSecond());
	pCmdUI->SetText(szOut);</font>
}

</pre>
</p>

</p>
<p ><a href=4d_s1.zip>下载演示代码 17K</a></p>

</small>
</td>
</tr>
<tr><td>
<small>
<p align=center><a href=index.htm#charpter4>返回</a></p>
</small>
</td></tr>
</table>
<p align=center><small>版权所有 闻怡洋 <a href=http://www.vchelp.net/>http://www.vchelp.net/</a></small></p>

</td><!--end-->
</tr>
</table>

</td></tr></table><!--整体框架 END-->




<SCRIPT LANGUAGE='JavaScript'>write_tail();</SCRIPT>

</body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -