您的位置:逆风者 VC++ 正文
 添加时间:2007-09-01 原文发表:2007-08-31 人气:132 来源:vckbase.com

编写多文档应用程序
作者:王雪松

下载本文示例代码

逆风编程精品
一、 动态菜单与工具栏


(未登录状态)


(登陆状态)

实现原理:

1.菜单

BOOL SetMenu(

  HWND hWnd,  // handle to window

  HMENU hMenu // handle to menu

); 	

可以改变菜单。

2.工具栏
BOOL CToolBarCtrl::SetState( int nID, UINT nState );
可以改变工具栏按钮状态。
还要调用CFrameWnd::RecalcLayout()函数计算工具栏尺寸。

二、 自制对话条


//创建对话条

if(!m_wndBar.Create(this,IDD_DIALOGBAR,WS_CHILD|WS_VISIBLE|

		CBRS_BOTTOM|CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | 

		CBRS_SIZE_DYNAMIC,IDD_DIALOGBAR))

//操纵对话条上的CTabCtrl控件

CTabCtrl * ptab=(CTabCtrl *)m_wndBar.GetDlgItem(IDC_TAB_INFO);

ptab->InsertItem(0,"操作信息");

ptab->SetImageList(&((CMainFrame *)AfxGetMainWnd())->m_imageList);

……………



//隐藏和显示CListBox控件

CListBox * plistInfo = (CListBox*)m_wndBar.GetDlgItem(IDC_LIST_INFO);

plistInfo->SetWindowPos(NULL,

		0,

		0,

		GetSystemMetrics(SM_CXSCREEN)-11,

		75,

		SWP_NOMOVE|SWP_NOZORDER | SWP_NOACTIVATE|SWP_SHOWWINDOW);
三、 位图按钮与菜单

由于按钮和菜单比较少,没有采用自绘技术,而是采用了
CButton::SetBitmap()和CMenu::SetMenuItemBitmaps()函数,相信读者比作者更清楚这两个函数的用法。

四、 只能运行程序的一个实例

当程序已经运行时,如果再次运行,则激活前一个实例。
实现原理:

1. 只运行一个实例

#define UNIQE_NAME "{1AB792D6-EEF2-4528-9A84-91356811E7A4}"
BOOL CRaclientApp::InitInstance()函数中加入
m_hOneInstance = ::CreateMutex( NULL,FALSE,UNIQE_NAME);

if ( GetLastError() == ERROR_ALREADY_EXISTS )//如果存在前一个

{

//发送消息,激活实例

	DWORD dwRecipients = BSM_APPLICATIONS; 

	::BroadcastSystemMessage( BSF_NOHANG,&dwRecipients,

		ID_RA_MSG, // registered window message

		0,0 ); // user defined parameters

	return FALSE;

}
还要在CRaclientApp::ExitInstance()中
CloseHandle(m_hOneInstance);
2、激活前一个实例
#define ra_MSG "{D48CA923-4925-41cb-8F56-ABAAAFCEF787}"

const UINT ID_RA_MSG =::RegisterWindowMessage(ra_MSG);//注册消息

然后再CmainFrame中添加相应的消息处理函数。

五、 自定义视图类

没有用向导生成的类,因此三个子窗口各自不同,比较简单,不介绍了。
详细代码请参看源程序。还有一个数据库版本的,没有更高的价值,因此没拿出来现丑。
错误和不足请看客们指出,共同研究。
Email:hpxs@hotmail.com

相关文章

COM 组件设计与应用(五)——用 ATL 写第一
MFC程序员的WTL指南: 中文版序言
不重起Windows直接更改IP地址
类似于FlashGet的悬浮框的制作
毫秒定时器
C :使用 Visual C 2005 的现代语言特色
IP Messenger 详细分析
可设置单元格颜色的ClistCtrl类
利用VC++开发ASP图像处理组件(二)
从 ADO 迁移到 ADO.NET(一)
PhotoShop插件开发之选区(Selection)
VC初学者入门系列之二:消息循环
定制调试诊断工具和实用程序——摆脱DLL“地
WMI 的一个实现
自绘按钮的实现
《系统飞狐》系列软件中的“系统监视器”开
定时显示远程计算机的桌面
一个实用的CToolBar扩展类CToolBarEx
简单实用的Xml解析类
SQL Server 索引结构及其使用(三)

相关评论


本文章所属分类:首页 VC++

  热门关键字: