编写多文档应用程序,编写多文档应用程序
【 tulaoshi.com - C语言心得技巧 】
编写多文档应用程序
        作者:王雪松
下载本文示例代码
        
         一、 动态菜单与工具栏
 一、 动态菜单与工具栏
        
        
        (未登录状态)
        
         
         
        (登陆状态)
        
        实现原理:
        
        1.菜单 
BOOL SetMenu( HWND hWnd, // handle to window HMENU hMenu // handle to menu);可以改变菜单。
BOOL CToolBarCtrl::SetState( int nID, UINT nState );可以改变工具栏按钮状态。
 二、 自制对话条
         二、 自制对话条
        
         
         
            
//创建对话条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);
 三、 位图按钮与菜单
 三、 位图按钮与菜单 四、 只能运行程序的一个实例
         四、 只能运行程序的一个实例
        
        当程序已经运行时,如果再次运行,则激活前一个实例。
        实现原理:
        
        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 message0,0 ); // user defined parametersreturn FALSE;}还要在CRaclientApp::ExitInstance()中CloseHandle(m_hOneInstance);2、激活前一个实例
#define ra_MSG "{D48CA923-4925-41cb-8F56-ABAAAFCEF787}"const UINT ID_RA_MSG =::RegisterWindowMessage(ra_MSG);//注册消息      然后再CmainFrame中添加相应的消息处理函数。 五、 自定义视图类
 五、 自定义视图类来源:http://www.tulaoshi.com/n/20160129/1483769.html