WEB开发网
开发学院软件开发VC 编写多文档应用程序 阅读

编写多文档应用程序

 2010-07-06 20:43:58 来源:WEB开发网   
核心提示:三、位图按钮与菜单由于按钮和菜单比较少,没有采用自绘技术,编写多文档应用程序(2),而是采用了CButton::SetBitmap()和CMenu::SetMenuItemBitmaps()函数,相信读者比作者更清楚这两个函数的用法,因此没拿出来现丑,错误和不足请看客们指出,四、只能运行程序的一个实例当程序已经运行时,

三、位图按钮与菜单

由于按钮和菜单比较少,没有采用自绘技术,而是采用了

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(ra_MSG);//注册消息

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

五、自定义视图类

没有用向导生成的类,因此三个子窗口各自不同,比较简单,不介绍了。

详细代码请参看源程序。还有一个数据库版本的,没有更高的价值,因此没拿出来现丑。

错误和不足请看客们指出,共同研究。

Email:hpxs@hotmail.com.

本文配套源码

上一页  1 2 

Tags:编写 文档 应用程序

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接