ÿþ// MainDlg.cpp : implementation of the CMainDlg class // ///////////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "MainDlg.h" #include "mbhotkeydef.h" #include "MBExitTipDlg.h" #include "MBModifyPasswordDlg.h" // 6e)!j_ #define HM_NONE 0 // N6e) #define HM_TOP 1 // T N6e) #define HM_BOTTOM 2 // T N6e) #define HM_LEFT 3 // Tæ]6e) #define HM_RIGHT 4 // TóS6e) #define CM_ELAPSE 200 // ÀhKm Ÿh/f&T»y_—zãS„vöeô•ô•”– #define HS_ELAPSE 4 // –Ï…b>f:yǏ zÏkek„vöeô•ô•”– #define HS_STEPS 1 // –Ï…b>f:yǏ zRbY\ek #define TRIGGER_AFFIX_INTERVAL 20 // —zãS˜|D–æ‰ÑSô•”– #define TRIGGER_FLEX_INTERVAL 10 // —zãS6e)æ‰ÑSô•”– #define TIME_UPDATESTKAPPPACK 20 * 1000 // 20s CMainDlg::CMainDlg() : SHostWnd(_T("LAYOUT:XML_MAINWND")) { m_bLayoutInited = FALSE; m_pSvrMgr = NULL; m_pCtlSelRadio = NULL; m_pTransSvrMgr = new CMBTransSvrMgr(); m_pThreadInit = new CMBThreadInit(); m_pThreadShareMemory = new CMBThreadShareMemory(); m_bFinished = TRUE; m_bHiding = FALSE; m_hideMode = HM_NONE; m_bIsHideState = FALSE; m_bSizeChanged = FALSE; m_nOldWndHeight = 100; m_bSetTimer = FALSE; m_nTaskBarPos = TB_POS_NONE; m_bExit = FALSE; m_bCleanWebCache = FALSE; m_pMBSettingWnd = NULL; m_pMBAboutWnd = NULL; } CMainDlg::~CMainDlg() { MBSAFE_DELETE(m_pTransSvrMgr); MBSAFE_DELETE(m_pThreadInit); MBSAFE_DELETE(m_pThreadShareMemory); } int CMainDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) { /*DWORD dwStyle = GetClassLong(m_hWnd, GCL_STYLE); SetClassLong(m_hWnd, GCL_STYLE, dwStyle | CS_DROPSHADOW);*/ SetMsgHandled(FALSE); return 0; } BOOL CMainDlg::OnInitDialog(HWND hWnd, LPARAM lParam) { m_bLayoutInited = TRUE; m_bExit = FALSE; // h°‹{vU_(u7b CString strPropName; HANDLE hValue = (HANDLE)1; strPropName.Format( _T("MBC_%s-%s-%s"), m_pSvrMgr->GetUserLogin()->m_strServerName, m_pSvrMgr->GetUserLogin()->m_strPort, m_pSvrMgr->GetUserLogin()->m_strLoginName ); strPropName.MakeLower(); SetProp(m_hWnd, strPropName, hValue); // û‹—zãS„vMOn ReadWndPosition(); // ؚdpi AutoScale(); // èlŒQíp.• //RegisterHotkey(); // èlŒQÖbýb HRESULT hr=::RegisterDragDrop(m_hWnd,GetDropTarget()); m_pSvrMgr->GetOrgWebCMgr()->SetMainWnd(m_hWnd); m_pSvrMgr->GetExtWebCMgr()->SetMainWnd(m_hWnd); // RËYS(u7báOo` InitUserInfo( ); CString strDownloadPath = _T(""); CString strLoginName = _T(""); CString strServerID = _T(""); if(m_pSvrMgr) { strLoginName = m_pSvrMgr->GetUserLogin()->m_strLoginName; strServerID = m_pSvrMgr->GetUserLogin()->m_strOrgServerID; } CMBUserProFun::LoadDefaultDwonloadPath(strDownloadPath, strLoginName,strServerID); m_pSvrMgr->GetUserLogin()->GetUserPro()->SetWndHandle(m_hWnd); m_pSvrMgr->GetUserLogin()->GetUserPro()->Logined(strLoginName,strServerID); SGroup *pHeaderGroup = FindChildByName2<SGroup>("group_tabheader"); SGroup *pTailGroup = FindChildByName2<SGroup>("group_tatail"); if( pHeaderGroup && pTailGroup){ InitUI( pHeaderGroup,pTailGroup); // S_MR éb m_pCtlSelRadio = pHeaderGroup->FindChildByID2<SRadioEx>(10000); } // RËYS¿~ z if(m_pThreadInit){ m_pThreadInit->SetSvrMgr(m_pSvrMgr ); m_pThreadInit->SetHwnd( m_hWnd ); m_pThreadInit->StartThread(); } // *g_QØv if( !m_pSvrMgr->GetUserNetDiskInfo()->m_strNDState.IsEmpty() ) { } //if(m_pSvrMgr->GetUserLogin()->m_nMBCShowMode == 1) { STabCtrl *pTab = FindChildByName2<STabCtrl>(L"tab_main"); if(pTab) { pTab->SetCurSel(0); } } RegDragDrop(); // RËYS ÿ2–bkaSLub— SetTimer(WM_TIMER_INIT,50); // ·ƒÖSۏ zô•qQ«N…QX[¿~ z if(m_pThreadShareMemory){ m_pThreadShareMemory->SetHwnd( m_hWnd ); m_pThreadShareMemory->StartThread(); } m_cxFrame = 2; m_cyFrame = 2; GetTaskBarHeight( ); m_pSvrMgr->GetUserLogin()->GetUserPro()->DoRegisterHotKey( ); int nLogoVer = 0; CString strTempLogoPath; strTempLogoPath.Format(_T("%s\\%s.png"),CBaseCommFun::GetWorkTempFolder(), CBaseCommFun::GenStringID( )); m_pSvrMgr->GetExtWebCMgr()->GetLoginUI(NULL,strTempLogoPath,nLogoVer ); SetTimer(TIMER_UPDATESTKAPPPACK,TIME_UPDATESTKAPPPACK); return 0; } // èlŒQíp.• //void CMainDlg::RegisterHotkey() //{ // //RegisterHotKey(m_hWnd,ID_HOTKEY_CTRL_V,MOD_CONTROL,'V'); // //} // //void CMainDlg::UnRegisterHotkey() //{ // // UnregisterHotKey(m_hWnd,ID_HOTKEY_CTRL_V); //} // // RËYSui>f:y„vtab void CMainDlg::InitUI( SGroup *pHeaderGroup,SGroup *pTailGroup ) { CStringArray arTabUI; CString strHeadGroupUI, strTailGroupUI,strTabUI; STabCtrl *pTabMain = NULL; CMBAuthInfo *pAuthInfo = m_pSvrMgr->GetUserLogin()->GetAuthInfo(); if( pAuthInfo == NULL ) return ; pTabMain = FindChildByName2<STabCtrl>(L"tab_main"); if( NULL == pTabMain ) return ; // ·ƒÖSLub—CgP– if( !m_pSvrMgr->GetUserLogin()->m_bIsOffline ) { pAuthInfo->GetUIAuth(strHeadGroupUI,strTailGroupUI,arTabUI); } else { pAuthInfo->GetUIOffline(strHeadGroupUI,strTailGroupUI,arTabUI); } if( strHeadGroupUI.IsEmpty() ) return ; pHeaderGroup->CreateChildren(strHeadGroupUI); // page for( int i = 0;i< arTabUI.GetCount();i++ ) { strTabUI = arTabUI.GetAt(i); pTabMain->InsertItem(strTabUI); } pTailGroup->CreateChildren(strTailGroupUI); if(strTailGroupUI.IsEmpty()) { m_pSvrMgr->GetUserLogin()->m_nMBCShowMode = 0; SImageButton *pBtn = FindChildByName2<SImageButton>(L"btn_smallwindow"); if(pBtn) { pBtn->SetVisible(false); } pBtn = FindChildByName2<SImageButton>(L"btn_bigwindow"); if(pBtn) { pBtn->SetVisible(false); } } if(m_pSvrMgr->GetUserLogin()->m_nMBCShowMode == 1) { DWORD dwStyle = WS_MAXIMIZEBOX; ModifyStyle(dwStyle,0); pHeaderGroup->SetVisible(false); if(m_pSvrMgr->GetUserLogin()->GetAuthInfo()->HasAmAuth() && m_pSvrMgr->GetUserLogin()->GetAuthInfo()->HasDocAuth()) { STabCtrl *pTab = FindChildByName2<STabCtrl>(L"tab_main"); if(pTab) { pTab->SetCurSel(0); pTab->SetAttribute(_T("pos"),_T("1,[0,-1,-64")); } SWindow *pWnd = FindChildByName2<SWindow>(L"wnd_tail"); if(pWnd) { pWnd->SetVisible(true); pWnd->SetAttribute(_T("pos"),_T("1,-64,-1,-1")); } } else { STabCtrl *pTab = FindChildByName2<STabCtrl>(L"tab_main"); if(pTab) { pTab->SetCurSel(0); pTab->SetAttribute(_T("pos"),_T("1,[0,-1,-1")); } SWindow *pWnd = FindChildByName2<SWindow>(L"wnd_tail"); if(pWnd) { pWnd->SetVisible(false); } } SOUI::CRect rcWnd = this->GetWindowRect(); m_hostAttr.SetAttribute(_T("minsize"),_T("368,750")); MoveWindow(rcWnd.right - 375,rcWnd.top,375,rcWnd.Height()); SImageButton * pBtn = FindChildByName2<SImageButton>(L"btn_max"); if(pBtn) pBtn->SetVisible(false); pBtn = FindChildByName2<SImageButton>(L"btn_restore"); if(pBtn) pBtn->SetVisible(false); pBtn = FindChildByName2<SImageButton>(L"btn_min"); if(pBtn) pBtn->SetAttribute(_T("pos"),_T("-64,0")); pBtn = FindChildByName2<SImageButton>(L"btn_set"); if(pBtn) pBtn->SetAttribute(_T("pos"),_T("-96,0")); pBtn = FindChildByName2<SImageButton>(L"btn_smallwindow"); if(pBtn) { pBtn->SetVisible(false); } pBtn = FindChildByName2<SImageButton>(L"btn_bigwindow"); if(pBtn) { pBtn->SetVisible(true); pBtn->SetAttribute(_T("pos"),_T("-128,0")); } } else { SWindow *pWnd = FindChildByName2<SWindow>(L"wnd_tail"); if(pWnd) { pWnd->SetVisible(false); } } SWindow *pWndMainSearch = FindChildByName2<SWindow>("wnd_main_search"); if( NULL == pWndMainSearch ) return ; // g‡echCgP– if( pAuthInfo->HasDocAuth() ) { pWndMainSearch->SetVisible(TRUE,TRUE); }else{ pWndMainSearch->SetVisible(FALSE,TRUE); } return ; } CString CMainDlg::GetLoginUserPicture() { CString strFileDir = _T(""); CString strImgPath = _T(""); CString strServerID = _T(""); CString strLogin = _T(""); strServerID = m_pSvrMgr->GetUserLogin()->m_strOrgServerID; strLogin = m_pSvrMgr->GetUserLogin()->m_strLoginName; strFileDir = CBaseCommFun::GetAMUserDataDir(strLogin, strServerID); strFileDir += _T("\\UserPicture"); strImgPath.Format(_T("%s\\%s.png"),strFileDir, strLogin); if ( GetFileAttributes( strImgPath ) == -1 ) { CString strFileName; strFileName.Format(_T("%s\\%s"),CBaseCommFun::GetWorkTempFolder(),CBaseCommFun::GenStringID( ) );// = CSTKCommFun::GetWorkTempFolder(); m_pSvrMgr->GetOrgWebCMgr()->GetUserPhoto_Asyn( m_hWnd, strLogin, _T(""),strFileName, 0 ); return _T(""); } return strImgPath; } void CMainDlg::InitUserInfo( ) { SRoundImage *pRImgAvatar = FindChildByName2<SRoundImage>(L"btn_avatar"); CString strLogin = m_pSvrMgr->GetUserLogin()->m_strLoginName; CString strUserName = m_pSvrMgr->GetUserLogin()->m_strUserName; if( pRImgAvatar ) { IBitmap * pBmp =NULL; if ( m_pSvrMgr->GetOrgListMgr()->LookupUserPhoto(strLogin,pBmp)) { pRImgAvatar->SetImage(pBmp,FilterLevel::kHigh_FilterLevel); } else { SStringW strPhotoFile = GetLoginUserPicture(); if(strPhotoFile.IsEmpty()) { if ( !m_pSvrMgr->GetOrgListMgr()->LookupDeaultUserPhoto(pBmp,_T("0"))) { pBmp =NULL; } } else { SStringT strFile; strFile.Format(_T("file:%s"),strPhotoFile); IBitmap* pBmpTemp = LOADIMAGE2(strFile); pBmp = NULL; if(pBmpTemp) { pBmp= CMBOrgFunc::GetFixSizeImage(pBmpTemp,40, 40); pBmpTemp->Release(); } if(pBmp) m_pSvrMgr->GetOrgListMgr()->AddUserPhoto(strLogin,pBmp); } if( NULL != pBmp ) pRImgAvatar->SetImage(pBmp,FilterLevel::kHigh_FilterLevel); } } CMBOrgUser* pUser = NULL; m_pSvrMgr->GetOrgListMgr()->LookupUser(strLogin,pUser); if( pUser) { strUserName = pUser->m_strUserName; SStatic *pLinkUserSign = FindChildByName2<SStatic>(L"link_usersign"); if( pLinkUserSign ) { pLinkUserSign->SetWindowText(pUser->m_strSign); pLinkUserSign->SetToolTipText(pUser->m_strSign); } } else { m_pSvrMgr->GetOrgWebCMgr()->GetUserInfo_Asyn(NULL,strLogin, 0); } SStatic *pTextUserName = FindChildByName2<SStatic>(L"text_username"); if( pTextUserName ) { pTextUserName->SetWindowText(strUserName); } } void CMainDlg::UpdateUserInfo( ) { CMBOrgUser* pUser = NULL; CString strLogin = m_pSvrMgr->GetUserLogin()->m_strLoginName; m_pSvrMgr->GetOrgListMgr()->LookupUser(strLogin,pUser); if( !pUser) { return; } SStatic *pTextUserName = FindChildByName2<SStatic>(L"text_username"); if( pTextUserName ) { pTextUserName->SetWindowText(pUser->m_strUserName); } SStatic *pLinkUserSign = FindChildByName2<SStatic>(L"link_usersign"); if( pLinkUserSign ) { pLinkUserSign->SetWindowText(pUser->m_strSign); pLinkUserSign->SetToolTipText(pUser->m_strSign); } } // peekN N void CMainDlg::DoMessageLoop() { MSG msg; while ( ::PeekMessage( &msg, m_hWnd, 0, 0, PM_REMOVE ) ) { ::TranslateMessage( &msg ); ::DispatchMessage( &msg ); } } void CMainDlg::ShowTabPage( SGroup *pGroup ) { if( pGroup == NULL ) return ; CString strWebHeaderXml; strWebHeaderXml = _T("<radioex pos=\"[0,0\" id=\"10006\" name=\"radioex_webtabheader\" skin=\"skin_tab_bkg\"><text pos=\"22,17\" font=\"face:mobox_userfont,adding:28\" text=\"\xe97b\" colorText='#FFFFFF' /><text pos=\"0,60,-0,-0\" font='adding:-1' class=\"cls_titlebar_tab\">å]\O</text></radioex>"); pGroup->CreateChildren(strWebHeaderXml); } // tabu˜„v>f:y // ‡ech 10000 // O“ 10001 // å]\O:S10002 // OS T 10003 // penc 10004 // ¨R` 10005 // Qu˜ 10006 void CMainDlg::OnTabPageRadioSwitch(int nID) { // S_MR éb SGroup *pGroup = FindChildByName2<SGroup>("group_tabheader"); if( pGroup ){ m_pCtlSelRadio = pGroup->FindChildByID2<SRadioEx>(nID); } // Rbc0Rtabu˜ if(m_bLayoutInited) { EventCloseGungHoDetailWnd *pTmpEvt = new EventCloseGungHoDetailWnd(NULL); SNotifyCenter::getSingleton().FireEventAsync(pTmpEvt); pTmpEvt->Release(); STabCtrl *pTab = FindChildByName2<STabCtrl>(L"tab_main"); if(pTab) { switch (nID){ case 10000: case 10008: pTab->SetCurSel(_T("‡ech")); break; case 10001: pTab->SetCurSel(_T(" O“")); break; case 10002: case 10009: //pTab->SetCurSel(_T("å]\O:S")); pTab->SetCurSel(_T("AM")); m_AMWnd.ShowWnd(); break; case 10003: pTab->SetCurSel(_T("OS T")); break; case 10004: { pTab->SetCurSel(_T("”^(u")); } break; case 10005:{ pTab->SetCurSel(_T("¨R`")); } break; case 10006:{ pTab->SetCurSel(_T("å]\O")); SRealWnd * pRealWnd = FindChildByName2<SRealWnd>(_T("wke_web")); if(pRealWnd->GetRealWndParam().m_strClassName.CompareNoCase(_T("cef_cls"))==0) { SWebViewWnd *pWnd=(SWebViewWnd *)pRealWnd->GetUserData(); if(pWnd) { SStringT strTmpUrl; SStringT strUrl; strTmpUrl = m_pSvrMgr->GetUserNetDiskInfo()->m_strGungHoWebSiteUrl; strUrl.Format(_T("%s/account/loginmbc?account=%s&password=%s"), strTmpUrl,m_pSvrMgr->GetUserLogin()->m_strLoginName,m_pSvrMgr->GetUserLogin()->m_strPwd); //strUrl = _T("http://116.62.155.124:5030/work"); if( pWnd->GetURL().IsEmpty() ) { pWnd->LoadURL(strUrl); } pWnd->ReDraw(); } } }// end case 10006 break; } } } } //void CMainDlg::OnBtnTbSettingWeb() //{ // SGroup *pGroup = FindChildByName2<SGroup>("group_tabheader"); // if( pGroup ){ // SRadioEx *pRadio = pGroup->FindChildByName2<SRadioEx>("radioex_webtabheader"); // if( pRadio == NULL ){ // ShowTabPage( pGroup ); // } // STabCtrl *pTab = FindChildByName2<STabCtrl>(L"tab_main"); // if(pTab) // { // pRadio = pGroup->FindChildByName2<SRadioEx>("radioex_webtabheader"); // if( pRadio != NULL ){ // pRadio->SetCheck(TRUE); // m_pCtlSelRadio = pRadio; // pTab->SetCurSel(_T("Qu˜")); // // SRealWnd * pRealWnd = FindChildByName2<SRealWnd>(_T("wke_web")); // if(pRealWnd->GetRealWndParam().m_strClassName.CompareNoCase(_T("cef_cls"))==0) // { // SWebViewWnd *pWnd=(SWebViewWnd *)pRealWnd->GetUserData(); // if(pWnd) // { // SStringT strUrl; // strUrl.Format(_T("http://115.29.185.26:1000/web/dms/mbc/13DEDB5B-AF95-4CE0-A94D-A4EE3FD3CA13/0/‹s‰[½_/wah/%s"),m_pSvrMgr->GetUserLogin()->m_strPwd); // if( pWnd->GetURL().IsEmpty() ) // { // pWnd->LoadURL(strUrl); // } // pWnd->ReDraw(); // } // } // } // } // } //} //TODO:ˆmo` f\ void CMainDlg::OnClose() { if( !m_bExit) { BOOL bIsNoHintClose; BOOL bIsCloseIdExit; CString strLoginName = _T(""); CString strServerID = _T(""); if(m_pSvrMgr) { strLoginName = m_pSvrMgr->GetUserLogin()->m_strLoginName; strServerID = m_pSvrMgr->GetUserLogin()->m_strOrgServerID; } CMBUserProFun::GetCloseHint(bIsNoHintClose, bIsCloseIdExit, strLoginName,strServerID ); if( !bIsNoHintClose) { CMBExitTipDlg dlgExitTip; dlgExitTip.SetServerMgrPtr(m_pSvrMgr); if ( dlgExitTip.DoModal() != IDOK) { return; } if( !dlgExitTip.IsExit() ) { ShowWindow(SW_HIDE); return; } } else { if( !bIsCloseIdExit) { ShowWindow(SW_HIDE); return; } } } CString strPropName; strPropName.Format( _T("MBC_%s-%s-%s"), m_pSvrMgr->GetUserLogin()->m_strServerName, m_pSvrMgr->GetUserLogin()->m_strPort, m_pSvrMgr->GetUserLogin()->m_strLoginName ); strPropName.MakeLower(); RemoveProp( m_hWnd, strPropName ); EventCloseGungHoDetailWnd *pTmpEvt = new EventCloseGungHoDetailWnd(NULL); SNotifyCenter::getSingleton().FireEventAsync(pTmpEvt); pTmpEvt->Release(); if(m_pMBSettingWnd && m_pMBSettingWnd->IsWindow()) { m_pMBSettingWnd->DestroyWindow(); } m_pMBSettingWnd = NULL; if(m_pMBAboutWnd && m_pMBAboutWnd->IsWindow()) { m_pMBAboutWnd->DestroyWindow(); } m_pMBAboutWnd = NULL; // °‹U_N N—zãSMOn WriteWndPosition(); //UnRegisterHotkey(); // N¡{`HN7h ÿ(u7b¹pûQclose ÿHQŠbLub—–Ï…†N ÿُ7hO©‹(u7baɉ z^úQ„vˆ_ë_.... ShowWindow(SW_HIDE); // g›NDnÅ_{˜(Wclose-Nʑ>e m_DocWnd.OnClose(); m_TransWnd.OnClose(); m_DataWnd.OnClose(); m_SearchWnd.OnClose(); m_AMWnd.OnClose(); // \PbkRËYS¿~ z if(m_pThreadInit) m_pThreadInit->OverThread(); // \Pbk·ƒÖSۏ zô•qQ«N…QX[¿~ z if(m_pThreadShareMemory) m_pThreadShareMemory->OverThread(); //////////////////////// UnRegDragDrop();// ʑ>eÖbýb CSimpleWnd::DestroyWindow(); } void CMainDlg::OnMaximize() { SendMessage(WM_SYSCOMMAND, SC_MAXIMIZE); } void CMainDlg::OnRestore() { SendMessage(WM_SYSCOMMAND, SC_RESTORE); } void CMainDlg::OnMinimize() { EventCloseGungHoDetailWnd *pTmpEvt = new EventCloseGungHoDetailWnd(NULL); SNotifyCenter::getSingleton().FireEventAsync(pTmpEvt); pTmpEvt->Release(); SendMessage(WM_SYSCOMMAND, SC_MINIMIZE); } void CMainDlg::OnSize(UINT nType, SOUI::CSize size) { SetMsgHandled(FALSE); if(!m_bLayoutInited) { return; } m_AMWnd.OnSize(nType, size); if( m_pSvrMgr->GetUserLogin()->m_nMBCShowMode != 1 ) { SWindow *pBtnMax = FindChildByName(L"btn_max"); SWindow *pBtnRestore = FindChildByName(L"btn_restore"); if(!pBtnMax || !pBtnRestore) { return; } if(nType == SIZE_MAXIMIZED) { pBtnRestore->SetVisible(TRUE); pBtnMax->SetVisible(FALSE); } else if(nType == SIZE_RESTORED) { pBtnRestore->SetVisible(FALSE); pBtnMax->SetVisible(TRUE); } } } void CMainDlg::OnSizing(UINT fwSide, LPRECT lpRect) { if(m_pSvrMgr) { if( m_pSvrMgr->GetUserLogin()->m_nMBCShowMode == 1) { if(lpRect->right - lpRect->left > 540) { lpRect->right = lpRect->left + 540; } } } SetMsgHandled(FALSE); } void CMainDlg::OnMove( SOUI::CPoint pt) { if(!m_bLayoutInited) { return; } SetMsgHandled(FALSE); m_AMWnd.OnMove(pt); } void CMainDlg::OnMoving(UINT fwSide, LPRECT pRect) { if(!m_bLayoutInited) { return; } FixMoving( fwSide, pRect ); // Œte—zãSMOn SetMsgHandled(FALSE); } void CMainDlg::SetSvrMgr( CMBServerMgr *pSvrMgr ) { m_pSvrMgr = pSvrMgr; // ¾‹n O“ g¡R¡{thV m_SearchWnd.SetTransSvrMgr( m_pTransSvrMgr); m_DocWnd.SetTransSvrMgr( m_pTransSvrMgr); m_TransWnd.SetTransSvrMgr( m_pTransSvrMgr); m_AMWnd.SetTransSvrMgr( m_pTransSvrMgr); // RËYS m_DocWnd.SetSvrMgr(pSvrMgr); m_TransWnd.SetSvrMgr(pSvrMgr); m_DataWnd.SetSvrMgr(pSvrMgr); m_DocWnd.SetTransWnd(&m_TransWnd); m_SearchWnd.SetSvrMgr(pSvrMgr); m_AMWnd.SetServerMgrPtr(pSvrMgr); } void CMainDlg::OnTimer(UINT_PTR nIDEvent) { m_DocWnd.OnTimer(nIDEvent); m_DataWnd.OnTimer(nIDEvent); m_TransWnd.OnTimer(nIDEvent); m_AMWnd.OnTimer(nIDEvent); // m_TransWnd.OnTimer(nIDEvent); switch (nIDEvent) { case WM_TIMER_INIT: { KillTimer(WM_TIMER_INIT); CString strErrInfo; // ޏ¥cۏ z g¡R if(!ConnetExeSvr(strErrInfo)) { MBMessageBox( m_hWnd,strErrInfo,_T("•ï‹"),MB_OK ); return ; } // —_0RïzãS m_strCdnPort = GetCdnPort(); /////////////////////////////////// InitDocUISkin(); m_DocWnd.SetCdnPort(m_strCdnPort); m_DocWnd.OnInit(this); //m_DocWnd.InitDataGroupNav(); // RËYS”^(uáOo` m_DataWnd.SetCdnPort(m_strCdnPort); m_DataWnd.OnInit(this); m_TransWnd.OnInit(this); m_SearchWnd.OnInit(this); //SendMessage(WM_DOCCOVERMODE); /* REQLOADSERVER_ITEM reqLoadServerItem; reqLoadServerItem.hWnd = GetHostHwnd(); */ //m_pSvrMgr->GetMoboxWebCMgr()->AppGetAreaFuncTree2_Asyn( reqLoadServerItem,_T("‡ech¡{t")); //m_pSvrMgr->GetMoboxWebCMgr()->AppGetAreaFuncTree2_Asyn( reqLoadServerItem,_T("QØvKmՋ")); m_AMWnd.OnInit(this); }break; case WM_TIMER_EVENT_IS_MOUSE_OUT: { POINT ptCursor; SOUI::CRect rcWnd; GetCursorPos( &ptCursor ); rcWnd = GetWindowRect( ); //¨À€rcWnd,O Ÿh»y_—zãSNš[ݍ»yMbæ‰ÑS‹NöN rcWnd.InflateRect( TRIGGER_FLEX_INTERVAL, TRIGGER_FLEX_INTERVAL ); if( !rcWnd.PtInRect( ptCursor ) ) { KillTimer( WM_TIMER_EVENT_IS_MOUSE_OUT ); m_bSetTimer = FALSE; m_bFinished = FALSE; m_bHiding = TRUE; if( m_pSvrMgr->GetUserLogin()->m_nMBCShowMode == 1 ) { GetTaskBarHeight(); SetTimer( WM_TIMER_EVENT_FLEX, HS_ELAPSE); } else { m_bFinished = FALSE; m_bHiding = FALSE; KillTimer( WM_TIMER_EVENT_FLEX ); } } } break; case WM_TIMER_EVENT_FLEX: { if( m_bFinished ) KillTimer( WM_TIMER_EVENT_FLEX ); else m_bHiding ? DoHide() : DoShow(); } break; case TIMER_UPDATESTKAPPPACK: { KillTimer(TIMER_UPDATESTKAPPPACK); UpdateSTKAppPack(); } break; default: SetMsgHandled(FALSE); break; } } LRESULT CMainDlg::OnOrgWebResponse(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL & bHandled) { CString strResBody= *(CString*)wParam; CString strParam= *(CString*)lParam; long nTrID = 0; CString strData; CString strName; CString strValue; CString strAppType = _T(""); CString strMethod = _T(""); CString strErrInfo; CString strListXML; int nVer = 0; CString strXML; int nPhotoVer = 0; CMBParseServerXml::ParseParamInfo( strParam,nTrID, strAppType,strMethod ); if( strMethod.CompareNoCase(CMD_MFLG) == 0 || strMethod.CompareNoCase(CMD_MFGU) == 0 ) { CString strParam1; CString strID; int nMemberType; int nVer = 0; CMBOrgView *pView = NULL; CMBOrgGroup *pGroup = NULL; POSITION pos = NULL; CMBOrgMember *pMember = NULL; BOOL bNewVer = FALSE; CString strUsers = _T(""); CString strXml =_T(""); CString strBody =_T(""); REQLOADSERVER_ITEM reqItem; m_pSvrMgr->GetOrgWebCMgr()->LookupOrgTrID(nTrID,reqItem); m_pSvrMgr->GetOrgWebCMgr()->RemoveOrgTrID(nTrID); CMBOrgFunc::GetElementItem( strResBody, strParam1, _T("\n") ); strBody = strResBody; nVer = _tstol(strParam1); if(strMethod.CompareNoCase(CMD_MFLG) == 0) { strID = SUBVIEW_CONTACTSTOOT ; nMemberType = AM_VIEWITEMTYPE_VIEW; if ( !m_pSvrMgr->GetOrgListMgr()->LookupView(strID,pView) ) return S_OK; if ( !pView ) return S_OK; pView->SetLoaded(true); for ( pos =pView->m_listMember.GetHeadPosition(); pos; ) { pMember = (CMBOrgMember *)pView->m_listMember.GetNext( pos ); if(pMember ) { if(pMember->m_strID.CompareNoCase(SUBVIEW_TOPCONTACTS) == 0) continue; if(pMember->m_strID.CompareNoCase(m_pSvrMgr->GetUserLogin()->m_strDepartGuid) == 0) continue; if(pMember->m_strID.CompareNoCase(m_pSvrMgr->GetUserLogin()->m_strUnitGuid) == 0) continue; pMember->m_bIsDelete = TRUE; } } if( !strBody.IsEmpty())// { m_pSvrMgr->GetOrgListMgr()->ParseOrgXml(nMemberType,strID,strMethod,strBody ); } pView->SetLoaded(true); m_AMWnd.ResponseOrgContactGroupList(reqItem); } else { strID = reqItem.strItemGUID; if(strID.IsEmpty()) strID = SUBVIEW_TOPCONTACTS ; nMemberType = AM_VIEWITEMTYPE_CUSTGROUP; if ( !m_pSvrMgr->GetOrgListMgr()->LookupGroup(strID, pGroup) ) return S_OK; if ( !pGroup ) return S_OK; pGroup->SetLoaded(true); for ( pos =pGroup->m_listMember.GetHeadPosition(); pos; ) { pMember = (CMBOrgMember *)pGroup->m_listMember.GetNext( pos ); pMember->m_bIsDelete = TRUE; } m_pSvrMgr->GetOrgListMgr()->ParseOrgXml(nMemberType,strID,strMethod,strBody ); pGroup->m_nMUserCount = pGroup->GetUserMemberCount(); m_AMWnd.ResponseOrgContactGroupMemeber(reqItem); } return S_OK; } else if( strMethod.CompareNoCase(CMD_OBGL) == 0 || strMethod.CompareNoCase(CMD_UAGO) == 0 || strMethod.CompareNoCase(CMD_OMGU) == 0 ) { CString strParam1; CString strID; int nMemberType; int nVer = 0; CMBOrgView *pView = NULL; CMBOrgGroup *pGroup = NULL; POSITION pos = NULL; CMBOrgMember *pMember = NULL; BOOL bNewVer = FALSE; CString strUsers = _T(""); CString strXml =_T(""); CString strBody =_T(""); REQLOADSERVER_ITEM reqItem; m_pSvrMgr->GetOrgWebCMgr()->LookupOrgTrID(nTrID,reqItem); m_pSvrMgr->GetOrgWebCMgr()->RemoveOrgTrID(nTrID); if(strMethod.CompareNoCase(CMD_UAGO) == 0) { strBody = strResBody; strID = ROOTVIEW_SYSORGID ; nMemberType = AM_VIEWITEMTYPE_VIEW; if ( !m_pSvrMgr->GetOrgListMgr()->LookupView(strID,pView) ) return S_OK; if ( !pView ) return S_OK; pView->SetLoaded(true); for ( pos =pView->m_listMember.GetHeadPosition(); pos; ) { pMember = (CMBOrgMember *)pView->m_listMember.GetNext( pos ); pMember->m_bIsDelete = TRUE; } if( !strBody.IsEmpty())// { m_pSvrMgr->GetOrgListMgr()->ParseOrgXml(nMemberType,strID,strMethod,strBody ); } m_AMWnd.ResponseOrgUserAccessibleList(reqItem); } else if(strMethod.CompareNoCase(CMD_OBGL) == 0) { CMBOrgFunc::GetElementItem( strResBody, strParam1, _T("\n") ); strBody = strResBody; nVer = _tstol(strParam1); strID = reqItem.strItemGUID; nMemberType = _tstol(reqItem.strItemType); if(nMemberType == AM_VIEWITEMTYPE_VIEW) { if ( !m_pSvrMgr->GetOrgListMgr()->LookupView(strID,pView) ) return S_OK; if ( !pView ) return S_OK; pView->SetLoaded(true); for ( pos =pView->m_listMember.GetHeadPosition(); pos; ) { pMember = (CMBOrgMember *)pView->m_listMember.GetNext( pos ); if(pMember && pMember->m_nType != AM_VIEWITEMTYPE_USER) pMember->m_bIsDelete = TRUE; } } else { if ( !m_pSvrMgr->GetOrgListMgr()->LookupGroup(strID, pGroup) ) return S_OK; if ( !pGroup ) return S_OK; pGroup->SetLoaded(true); for ( pos =pGroup->m_listMember.GetHeadPosition(); pos; ) { pMember = (CMBOrgMember *)pView->m_listMember.GetNext( pos ); if(pMember && pMember->m_nType != AM_VIEWITEMTYPE_USER) pMember->m_bIsDelete = TRUE; } } if( !strBody.IsEmpty())// { m_pSvrMgr->GetOrgListMgr()->ParseOrgXml(nMemberType,strID,strMethod,strBody ); } m_AMWnd.ResponseOrgList(reqItem); } else { CMBOrgFunc::GetElementItem( strResBody, strParam1, _T("\n") ); strBody = strResBody; nVer = _tstol(strParam1); strID = reqItem.strItemGUID; nMemberType = _tstol(reqItem.strItemType); if(nMemberType == AM_VIEWITEMTYPE_VIEW) { if ( !m_pSvrMgr->GetOrgListMgr()->LookupView(strID,pView) ) return S_OK; if ( !pView ) return S_OK; pView->SetLoaded(true); for ( pos =pView->m_listMember.GetHeadPosition(); pos; ) { pMember = (CMBOrgMember *)pView->m_listMember.GetNext( pos ); if(pMember && pMember->m_nType == AM_VIEWITEMTYPE_USER) pMember->m_bIsDelete = TRUE; } } else { if ( !m_pSvrMgr->GetOrgListMgr()->LookupGroup(strID, pGroup) ) return S_OK; if ( !pGroup ) return S_OK; pGroup->SetLoaded(true); for ( pos =pGroup->m_listMember.GetHeadPosition(); pos; ) { pMember = (CMBOrgMember *)pView->m_listMember.GetNext( pos ); if(pMember && pMember->m_nType == AM_VIEWITEMTYPE_USER) pMember->m_bIsDelete = TRUE; } } if( !strBody.IsEmpty())// { m_pSvrMgr->GetOrgListMgr()->ParseOrgXml(nMemberType,strID,strMethod,strBody ); } m_AMWnd.ResponseOrgMemeber(reqItem); } } else if( strMethod.CompareNoCase(CMD_UQCR) == 0 ) { CString strParam1; CString strID; int nMemberType; CMBOrgView *pView = NULL; POSITION pos = NULL; CMBOrgMember *pMember = NULL; CString strUsers = _T(""); REQLOADSERVER_ITEM reqItem; m_pSvrMgr->GetOrgWebCMgr()->LookupOrgTrID(nTrID,reqItem); m_pSvrMgr->GetOrgWebCMgr()->RemoveOrgTrID(nTrID); strID = reqItem.strParam; nMemberType = AM_VIEWITEMTYPE_VIEW; if ( !m_pSvrMgr->GetOrgListMgr()->LookupView(strID,pView) ) return S_OK; if ( !pView ) return S_OK; pView->SetLoaded(true); for ( pos =pView->m_listMember.GetHeadPosition(); pos; ) { pMember = (CMBOrgMember *)pView->m_listMember.GetNext( pos ); if(pMember) pMember->m_bIsDelete = TRUE; } if( !strResBody.IsEmpty())// { m_pSvrMgr->GetOrgListMgr()->ParseOrgXml(nMemberType,strID,strMethod,strResBody ); } m_AMWnd.ResponseOrgUserQuery(reqItem); } else if( strMethod.CompareNoCase(CMD_UBGI) == 0 ) { REQLOADSERVER_ITEM reqItem; m_pSvrMgr->GetOrgWebCMgr()->LookupOrgTrID(nTrID,reqItem); m_pSvrMgr->GetOrgWebCMgr()->RemoveOrgTrID(nTrID); int nVer; CString strParam1 = _T(""); CString strBody = _T(""); CMBOrgFunc::GetElementItem( strResBody, strParam1, _T("\n") ); strBody = strResBody; nVer = _tstol(strParam1); CString strID = reqItem.strItemGUID; if( strBody.IsEmpty() || strID.IsEmpty()) return S_OK; m_pSvrMgr->GetOrgListMgr()->ParseOrgXml(AM_VIEWITEMTYPE_USER,_T(""),CMD_UBGI,strBody ); CString strLoginName = m_pSvrMgr->GetUserLogin()->m_strLoginName ; if(strLoginName.CompareNoCase(strID) == 0) UpdateUserInfo(); m_AMWnd.ResponseOrgUserInfo(strID,strBody,nVer ); } else if( strMethod.CompareNoCase(CMD_FUGP) == 0 ) { REQLOADSERVER_ITEM reqItem; m_pSvrMgr->GetOrgWebCMgr()->LookupOrgTrID(nTrID,reqItem); m_pSvrMgr->GetOrgWebCMgr()->RemoveOrgTrID(nTrID); int nOldPhotoVer = 0; int nPhotoVer; CString strFileName; CString strUser; CString strParam1 = _T(""); CMBOrgFunc::GetElementItem( strResBody, strParam1, _T("\n") ); nPhotoVer = _tstol(strParam1); strFileName = strResBody; strUser = reqItem.strItemGUID; nOldPhotoVer = _tstol(reqItem.strParam); if(nOldPhotoVer == nPhotoVer ) return S_OK; if(strFileName.IsEmpty() || strUser.IsEmpty()) return S_OK; if( !CBaseCommFun::ExistFile(strFileName)) return S_OK; CString strImgPath; CString strLoginName = m_pSvrMgr->GetUserLogin()->m_strLoginName ; CString strServerID = m_pSvrMgr->GetUserLogin()->m_strOrgServerID ; CBaseCommFun::MoveUserPhotoToUserDir(strLoginName,strServerID,strUser,strFileName, strImgPath); m_pSvrMgr->GetOrgListMgr()->SetUserVer(strUser, 0, nVer); SStringT strPhotoFile; strPhotoFile.Format(_T("file:%s"),strImgPath); IBitmap* pBmpTemp = LOADIMAGE2(strPhotoFile); IBitmap* pBmp = NULL; if(pBmpTemp) { pBmp= CMBOrgFunc::GetFixSizeImage(pBmpTemp,40, 40); pBmpTemp->Release(); } if(pBmp) m_pSvrMgr->GetOrgListMgr()->AddUserPhoto(strUser,pBmp); if(strUser.CompareNoCase(strLoginName) == 0) { SRoundImage *pRImgAvatar = FindChildByName2<SRoundImage>(L"btn_avatar"); if( pRImgAvatar ) { if(pBmp) { pRImgAvatar->SetImage(pBmp,FilterLevel::kHigh_FilterLevel); } } } m_AMWnd.ResponseOrgUserPhoto(strUser,strImgPath,nPhotoVer ); } return TRUE; } LRESULT CMainDlg::OnOrgWebError(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL & bHandled) { CString strXml= *(CString*)wParam; CString strParam= *(CString*)lParam; return TRUE; } LRESULT CMainDlg::OnNetDiskResponse(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL & bHandled) { CString strXml= *(CString*)wParam; CString strParam= *(CString*)lParam; long nTrID = 0; CString strAppType,strMethod,strErrInfo; REQLOADSERVER_ITEM reqLoadServerItem; CMBParseServerXml::ParseParamInfo( strParam,nTrID, strAppType,strMethod ); if ( nTrID <= 0 ) return 1L; // peek DoMessageLoop(); // _N¸‹O㉳QaS„v˜... if(!m_pSvrMgr->GetNetDiskWebCMgr()->GetServerTrID(nTrID,reqLoadServerItem)) { //MBMessageBox(GetHostHwnd(),_T("NetDisk:¡l g~b0Ræ‰ÑS„v¥cãS!"),_T("•ï‹Ðc:y"),MB_OK); FireErrorEventAsyncToNotifyCenter(_T("NetDisk:¡l g~b0Ræ‰ÑS„v¥cãS!")); return TRUE; } if( reqLoadServerItem.strMethod == ASYNNETDISK_DMSGETCABINETLIST2 ) // —_0R‡echÜg { if( !m_DocWnd.ResponseDMSGetCabinetList2(reqLoadServerItem,strXml,strErrInfo) ) { //MBMessageBox(GetHostHwnd(),strErrInfo,_T("•ï‹Ðc:y"),MB_OK); FireErrorEventAsyncToNotifyCenter(_T("OnNetDiskResponse(ASYNNETDISK_DMSGETCABINETLIST2):") + strErrInfo); return FALSE; } } else if( reqLoadServerItem.strMethod == ASYNNETDISK_DMSGETDOCLIST ) { if(!m_DocWnd.ResponseDMSGetDocList(reqLoadServerItem,strXml,strErrInfo)) { FireErrorEventAsyncToNotifyCenter(_T("OnNetDiskResponse(ASYNNETDI0SK_DMSGETDOCLIST):") + strErrInfo); //MBMessageBox(GetHostHwnd(),strErrInfo,_T("•ï‹Ðc:y"),MB_OK); return FALSE; } } //else if( reqLoadServerItem.strMethod == ASYNNETDISK_DMSGETDOCLIST_DEAL1 ) //{ // if(!m_DocWnd.ResponseDMSGetDocList1(reqLoadServerItem,strXml,strErrInfo)) // { // MBMessageBox(GetHostHwnd(),strErrInfo,_T("•ï‹Ðc:y"),MB_OK); // return FALSE; // } //} //else if( reqLoadServerItem.strMethod == ASYNNETDISK_DMSGETDOCLIST_DEAL2 ) //{ // if(!m_DocWnd.ResponseDMSGetDocList2(reqLoadServerItem,strXml,strErrInfo)) // { // MBMessageBox(GetHostHwnd(),strErrInfo,_T("•ï‹Ðc:y"),MB_OK); // return FALSE; // } //} else if( reqLoadServerItem.strMethod == ASYNNETDISK_DMSCREATECATALOG ) { if( !m_DocWnd.ResponseNDDMSCreateCatalog(reqLoadServerItem,strXml,strErrInfo) ) { FireErrorEventAsyncToNotifyCenter(_T("OnNetDiskResponse(ASYNNETDISK_DMSCREATECATALOG):") +strErrInfo); //MBMessageBox(GetHostHwnd(),strErrInfo,_T("•ï‹Ðc:y"),MB_OK); return FALSE; } } else if( reqLoadServerItem.strMethod == ASYNNETDISK_DMSCREATEDOC ) { if( !m_DocWnd.ResponseNDDMSCreateDoc(reqLoadServerItem,strXml,strErrInfo) ) { FireErrorEventAsyncToNotifyCenter(_T("OnNetDiskResponse(ASYNNETDISK_DMSCREATEDOC):") +strErrInfo); return FALSE; } } else if( reqLoadServerItem.strMethod == ASYNNETDISK_DMSEXITCATALOG ) // îvU_/f&TX[(W { if( !m_DocWnd.ResponseNDDMSExitCatalog(reqLoadServerItem,strXml,strErrInfo) ) { FireErrorEventAsyncToNotifyCenter(_T("OnNetDiskResponse(ASYNNETDISK_DMSEXITCATALOG):") + strErrInfo); //MBMessageBox(GetHostHwnd(),strErrInfo,_T("•ï‹Ðc:y"),MB_OK); return FALSE; } } else if( reqLoadServerItem.strMethod == ASYNNETDISK_DMSEXITDOC) // ‡ech/f&TX[(W { if( !m_DocWnd.ResponseNDDMSExitDoc(reqLoadServerItem,strXml,strErrInfo) ) { FireErrorEventAsyncToNotifyCenter(_T("OnNetDiskResponse(ASYNNETDISK_DMSEXITDOC):") + strErrInfo); //MBMessageBox(GetHostHwnd(),strErrInfo,_T("•ï‹Ðc:y"),MB_OK); return FALSE; } } else if( reqLoadServerItem.strMethod == ASYNNEDISK_DMSGETDOCINFO ) { } else if( reqLoadServerItem.strMethod == ASYNNETDISK_NDGETCATALOGLIST ) { } else if( reqLoadServerItem.strMethod == ASYNNETDISK_NDGETDOCLIST ) { if(!m_DocWnd.ResponseNDGetDocList(reqLoadServerItem,strXml,strErrInfo)) { FireErrorEventAsyncToNotifyCenter(_T("OnNetDiskResponse(ASYNNETDISK_NDGETDOCLIST):") + strErrInfo); //MBMessageBox(GetHostHwnd(),strErrInfo,_T("•ï‹Ðc:y"),MB_OK); return FALSE; } } else if( reqLoadServerItem.strMethod == ASYNNETDISK_DMSRECYCLEBINGETLIST ) { if(!m_DocWnd.ResponseDMSRecyleBinList(reqLoadServerItem,strXml,strErrInfo)) { FireErrorEventAsyncToNotifyCenter(_T("OnNetDiskResponse(ASYNNETDISK_DMSRECYCLEBINGETLIST):") + strErrInfo); //MBMessageBox(GetHostHwnd(),strErrInfo,_T("•ï‹Ðc:y"),MB_OK); return FALSE; } } else if( reqLoadServerItem.strMethod == ASYNNETDISK_NDRECYCLEBINGETLIST ) { if(!m_DocWnd.ResponseNDRecyleBinList(reqLoadServerItem,strXml,strErrInfo)) { FireErrorEventAsyncToNotifyCenter(_T("OnNetDiskResponse(ASYNNETDISK_NDRECYCLEBINGETLIST):") + strErrInfo); //MBMessageBox(GetHostHwnd(),strErrInfo,_T("•ï‹Ðc:y"),MB_OK); return FALSE; } } m_pSvrMgr->GetNetDiskWebCMgr()->RemoveServerTrID( nTrID ); return TRUE; } LRESULT CMainDlg::OnNetDiskError(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL & bHandled) { CString strXml= *(CString*)wParam; CString strParam= *(CString*)lParam; int nErrCode = 0; CString strErrInfo; //CMBParseServerXml::ParseErrInfo( strXml, nErrCode,strErrInfo); if( nErrCode == -1 ) { FireErrorEventAsyncToNotifyCenter(_T("NetDisk:àeÕlޏ¥c g¡RhV!")); //MBMessageBox(GetHostHwnd(),_T("NetDisk:àeÕlޏ¥c g¡RhV!"),_T("•ï‹Ðc:y"),MB_OK); }else{ FireErrorEventAsyncToNotifyCenter(_T("OnNetDiskError:") + strXml + _T(" Param:") + strParam ); //MBMessageBox(GetHostHwnd(),strErrInfo,_T("•ï‹Ðc:y"),MB_OK); } return TRUE; } LRESULT CMainDlg::OnMoboxResponse(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL & bHandled) { CString strXml= *(CString*)wParam; CString strParam= *(CString*)lParam; long nTrID = 0; CString strAppType,strMethod,strErrInfo; REQLOADSERVER_ITEM reqLoadServerItem; CMBParseServerXml::ParseParamInfo( strParam,nTrID, strAppType,strMethod ); if(!m_pSvrMgr->GetMoboxWebCMgr()->GetServerTrID(nTrID,reqLoadServerItem)) { FireErrorEventAsyncToNotifyCenter(_T("NetDisk:¡l g~b0Ræ‰ÑS„v¥cãS!")); //MBMessageBox(GetHostHwnd(),_T("NetDisk:¡l g~b0Ræ‰ÑS„v¥cãS!"),_T("•ï‹Ðc:y"),MB_OK); return FALSE; } if( reqLoadServerItem.strMethod == MOBOXWEB_APPGETAREAFUNCTREE2 ) { //if( !m_DocWnd.ResponseAppGetReaFuncTree2(reqLoadServerItem,strXml,strErrInfo) ) //{ // FireErrorEventAsyncToNotifyCenter(_T("OnMoboxResponse:") + strErrInfo); // //MBMessageBox(GetHostHwnd(),strErrInfo,_T("•ï‹Ðc:y"),MB_OK); // return FALSE; //} } return TRUE; } LRESULT CMainDlg::OnMoboxError(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL & bHandled) { CString strXml= *(CString*)wParam; CString strParam= *(CString*)lParam; int nErrCode = 0; CString strErrInfo; CMBParseServerXml::ParseErrInfo( strXml, nErrCode,strErrInfo); if( nErrCode == -1 ) { FireErrorEventAsyncToNotifyCenter(_T("MoboxWeb:àeÕlޏ¥c g¡RhV!")); //MBMessageBox(GetHostHwnd(),_T("MoboxWeb:àeÕlޏ¥c g¡RhV!"),_T("•ï‹Ðc:y"),MB_OK); }else{ FireErrorEventAsyncToNotifyCenter(_T("OnMoboxError:") + strErrInfo); //MBMessageBox(GetHostHwnd(),strErrInfo,_T("•ï‹Ðc:y"),MB_OK); } return TRUE; } LRESULT CMainDlg::OnFileClientConnectError(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL & bHandled) { return TRUE; } LRESULT CMainDlg::OnFileClientResponseError(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL & bHandled) { // peek DoMessageLoop(); CString strErrInfo; REQLOADSERVER_ITEM reqLoadServerItem; int nTrID = wParam; CString strParam = *(CString*)lParam; if ( nTrID <= 0 ) return 1L; CMBParamErrInfoMap mapParam; CMBParseServerXml::ParseParamErrInfo( mapParam,strParam ); CString strConnectType = mapParam[_T("ConnectType")]; CMBFileClientMgr *pClientMgr = m_pSvrMgr->GetFileSvrClientMgr()->GetFileClientMgr(strConnectType); if( pClientMgr) { if ( pClientMgr->TransferFileResErrorToWnd(nTrID,wParam,lParam)) { return TRUE; } } if(!m_pSvrMgr->GetFileSvrClientMgr()->GetSvrTrID( strConnectType,nTrID,reqLoadServerItem )) { return FALSE; } m_AMWnd.ResponseFileClientError(reqLoadServerItem,strParam,strErrInfo) ; m_DocWnd.ResponseFileClientError(reqLoadServerItem,strParam,strErrInfo); if( pClientMgr) pClientMgr->RemoveServerTrID(nTrID); return TRUE; } LRESULT CMainDlg::OnFileClientResponseReceive(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL & bHandled) { // peek DoMessageLoop(); REQLOADSERVER_ITEM reqLoadServerItem; CString strErrInfo; COISysMsg *pSMsg = NULL; int nTrID = (long)wParam; pSMsg = (COISysMsg*)lParam; if ( nTrID <= 0 || !pSMsg ) return 1L; CString strMethod = pSMsg->GetMethod(); CString strConnectType = pSMsg->GetProp( _T("ConnectType") ); CMBFileClientMgr *pClientMgr = m_pSvrMgr->GetFileSvrClientMgr()->GetFileClientMgr(strConnectType); if( pClientMgr) { if ( pClientMgr->TransferFileResReceiveToWnd(nTrID,wParam,lParam)) { return TRUE; } } if( m_pSvrMgr->GetFileSvrClientMgr()->GetSvrTrID( strConnectType,nTrID,reqLoadServerItem )) { m_AMWnd.ResponseFileClientReceive(reqLoadServerItem,pSMsg,strErrInfo); if( reqLoadServerItem.strMethod == FILECLIENT_DOWNLOADFILEASYN ) { CString strIsOk = pSMsg->GetProp( _T( "IsOk") ); if( _T("1") == strIsOk )//¤‹:N‡eöN N}Œ[b { CString strFileName = pSMsg->GetProp(_T("localpath")); if( !m_DocWnd.ResponseFileClientDownloadFinish(reqLoadServerItem,strFileName,strErrInfo) ) { FireErrorEventAsyncToNotifyCenter(_T("OnFileClientResponseDownloadFinish:") + strErrInfo); //MBMessageBox(GetHostHwnd(),_T("OnFileClientResponseDownloadFinish:") + strErrInfo,_T("•ï‹Ðc:y"),MB_OK); } } else { if( !m_DocWnd.ResponseFileClientDownloadProgress(reqLoadServerItem,pSMsg,strErrInfo) ) { FireErrorEventAsyncToNotifyCenter(_T("OnFileClientResponseDownloadProgress:") + strErrInfo); //MBMessageBox(GetHostHwnd(),_T("ResponseFileClientDownloadFinish:") + strErrInfo,_T("•ï‹Ðc:y"),MB_OK); } } } else if( reqLoadServerItem.strMethod == FILECLIENT_UPLOADFILEASYN ) { if ( pSMsg->GetParamCount() < 2 ) // ¤‹:N‡eöN N OŒ[b { CString strFileID = pSMsg->GetParam(0); if( !m_DocWnd.ResponseFileClientUploadFileFinish(reqLoadServerItem,strFileID,strErrInfo) ) { FireErrorEventAsyncToNotifyCenter(_T("OnFileClientResponseUploadFinish:") + strErrInfo); } } else { if( !m_DocWnd.ResponseFileClientUploadFileProgress(reqLoadServerItem,pSMsg,strErrInfo) ) { FireErrorEventAsyncToNotifyCenter(_T("OnFileClientResponseDownloadProgress:") + strErrInfo); //MBMessageBox(GetHostHwnd(),_T("ResponseFileClientDownloadFinish:") + strErrInfo,_T("•ï‹Ðc:y"),MB_OK); } } } } //cyy 2020-01-17ŠbvQÖN„vۏ¦^Œ[b„vˆmo`ýûy0Rُ*Nˆmo`¥cãSeg if( strMethod == CMD_FILE_DOWNLOAD ) { CString strIsOk = pSMsg->GetProp( _T( "IsOk") ); if( _T("1") == strIsOk )//¤‹:N‡eöN N}Œ[b { if( pClientMgr) pClientMgr->RemoveServerTrID(nTrID); } } else if( strMethod == CMD_FILE_UPLOAD ) { if ( pSMsg->GetParamCount() < 2 ) // ¤‹:N‡eöN N OŒ[b { if( pClientMgr) pClientMgr->RemoveServerTrID(nTrID); } } return TRUE; } LRESULT CMainDlg::OnFileMD5Finish(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL & bHandled) { CString strwParam = *(CString*)wParam; CString strlParam = *(CString*)lParam; m_DocWnd.ResponseFileMD5Finish(strwParam,strlParam); m_AMWnd.ResponseFileMD5Finish(strwParam,strlParam); return TRUE; } LRESULT CMainDlg::OnFileMD5Error(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL & bHandled) { CString strwParam = *(CString*)wParam; CString strErrInfo; strErrInfo.Format(_T("‡eöN %s ubmd5úQ•ÿ"),strwParam); //MBMessageBox(GetHostHwnd(),_T("OnFileMD5Error:") + strErrInfo,_T("•ï‹Ðc:y"),MB_OK); FireErrorEventAsyncToNotifyCenter(_T("OnFileMD5Error:") + strErrInfo); m_AMWnd.ResponseFileMD5Error(strwParam); return TRUE; } LRESULT CMainDlg::OnDocCoverMode(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL & bHandled) { m_DocWnd.ResponseCoverMode( wParam,lParam,bHandled); return TRUE; } LRESULT CMainDlg::OnDocCoverMode2(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL & bHandled) { m_DocWnd.ResponseCoverMode2( wParam,lParam,bHandled); return TRUE; } bool CMainDlg::FireErrorEventAsyncToNotifyCenter(CString strErrInfo) { // ُ*Nˆmo`(Wdoc-NÍT”^†N EventReponseError *pEvt = new EventReponseError(NULL); pEvt->m_strErrInfo = strErrInfo; SNotifyCenter::getSingleton().FireEventAsync(pEvt); pEvt->Release(); // êÊ‘>e return true; } //// DropTarget „v͑} ýQpe //HRESULT CMainDlg::OnDragEnter(IDataObject* pDataObject, DWORD dwKeyState, const POINT& point) //{ // return S_OK; //} // //DROPEFFECT CMainDlg::OnDragOver(IDataObject* pDataObject, // DWORD dwKeyState, // const POINT& point, // std::wstring& szMessage, // std::wstring& szInsert) //{ // DROPEFFECT dwEffect = DROPEFFECT_NONE; // szMessage = _T("ûy¨R"); // szInsert = _T("MBC"); // dwEffect = DROPEFFECT_COPY; // return dwEffect; //} // //BOOL CMainDlg::OnDrop(IDataObject* pDataObject, DWORD dwKeyState, const POINT& point) //{ // POINT pt = point; // ScreenToClient(&pt); // // SWND s = SwndFromPoint(point, FALSE); // // STabCtrl *pTab = FindChildByName2<STabCtrl>(L"tab_main"); // if( !pTab) // return FALSE; // int nSel = -1; // nSel = pTab->GetCurSel(); // if(nSel < 0) // return FALSE; // if(nSel == 0) // { // if(!m_DocWnd.IsAcceptDrapFile()) // return FALSE; // //YRlistview // SMCListViewEx *pDocMcListView = FindChildByName2<SMCListViewEx>("mclv_file"); // //tileView // STileViewEx *pDocTileView = FindChildByName2<STileViewEx>("tileex_file"); // if( pDocMcListView && pDocTileView ) // { // if(s == pDocMcListView->GetSwnd() || s == pDocTileView->GetSwnd()) // { // HGLOBAL hg = DragDropHelper::GetGlobalData(pDataObject, CF_HDROP ); // if (NULL != hg) // { // TCHAR lpFilePath[MAX_PATH]; // CStringArray arFileLst; // CString strRootPath; // CString strDir; // HDROP hdrop = (HDROP) GlobalLock ( hg ); // // if (NULL != hdrop) // { // UINT nFileNum = DragQueryFile(hdrop, 0xFFFFFFFF, NULL, 0); // if( 0 == nFileNum ) // return TRUE; // // for (int i = 0; i < nFileNum; i++) // { // //2.2 ÂSpe i ÿ\·ƒ—_Öbýb„v,{i*N‡eöN T // DragQueryFile(hdrop, i, lpFilePath, MAX_PATH); // //b _NïS\·ƒ—_„v‡eöN Tðy ÿ>eeQvector-N // arFileLst.Add(lpFilePath); // } // strDir = CStrFileUtils::GetDir( arFileLst[0] ); // strRootPath = CStrFileUtils::GetRootDir(strDir); // m_DocWnd.AddUploadFileLst(arFileLst,strRootPath); // >eeQ N O‡eöNRhˆ // } // GlobalUnlock(hg); // } // else // OutputDebugString(_T("not file")); // } // } // return FALSE; // } // STabPage *pPage = pTab->GetItem(nSel); // CString strTitle = pPage->GetTitle(); // if(strTitle.CompareNoCase( _T("AM")) == 0) // { // if(m_AMWnd.IsThisWndAcceptDropFile(s)) // { // return m_AMWnd.OnDropFile(pDataObject); // } // return FALSE; // } // return TRUE; //} // èlŒQÖbýb void CMainDlg::RegDragDrop() { //YRlistview CMBMcListViewEx *pDocMcListView = FindChildByName2<CMBMcListViewEx>("mclv_file"); //tileView STileViewEx *pDocTileView = FindChildByName2<STileViewEx>("tileex_file"); if( pDocMcListView && pDocTileView ) { RegisterDragDrop(pDocMcListView->GetSwnd(),new CMBDocDropTargetImpl(&m_DocWnd)); RegisterDragDrop(pDocTileView->GetSwnd(),new CMBDocDropTargetImpl(&m_DocWnd)); } /*SChatEditMsg *pInputRichEdit = FindChildByName2<SChatEditMsg>("chat_input"); if( pInputRichEdit ) { RegisterDragDrop(pInputRichEdit->GetSwnd(),new CMBChatDropTargetImpl(&m_AMWnd)); }*/ } // ʑ>eÖbýb void CMainDlg::UnRegDragDrop() { CMBMcListViewEx *pDocMcListView = FindChildByName2<CMBMcListViewEx>("mclv_file"); STileViewEx *pDocTileView = FindChildByName2<STileViewEx>("tileex_file"); if( pDocMcListView && pDocTileView ) { RevokeDragDrop(pDocMcListView->GetSwnd()); RevokeDragDrop(pDocTileView->GetSwnd()); } } void CMainDlg::OnHotKey(int nHotKeyID, UINT uModifiers, UINT uVirtKey) { int nIndex = nHotKeyID - ID_HOTKEY_BEGIN; HOTKEYITEM item; CString strOpenSendMsg; CString strOpenReadMsg; CString strOpenCapture; strOpenSendMsg = _T("Sb_ˆmo`ÑS—zãS"); strOpenReadMsg = _T("Sb_û‹ÖSˆmo`—zãS"); strOpenCapture = _T("/T¨RO\U^UcIcŸRý€"); if ( nIndex < 0 || nIndex > ID_HOTKEY_END - ID_HOTKEY_BEGIN ) return ; if ( !m_pSvrMgr->GetUserLogin()->GetUserPro()->GetHotKeyItem( nIndex, item ) ) return ; if ( item.strName.CompareNoCase( strOpenSendMsg ) == 0 ) m_AMWnd.NewSendMsg( ); else if ( item.strName.CompareNoCase( strOpenReadMsg ) == 0 ) m_AMWnd.OnMsgTooltipPop( ); else if ( item.strName.CompareNoCase( strOpenCapture ) == 0 ) m_AMWnd.OpenCapture( ); } // û|ß~íp.• void CMainDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { SetMsgHandled(FALSE); // ctrl + v Ä~T.•„vž[°s if(nChar == 'V' && ((::GetAsyncKeyState( VK_LCONTROL ) & 0x8000))) { OnKeyDownCtrlV(); } } // d"} void CMainDlg::OnBtnMainSearch() { // Rbc0Rd"}u˜ SelPageSearch(); // åg⋠m_SearchWnd.QueryDmsDoc(); } // d"} void CMainDlg::OnEventKeyDownMainSearch(EventArgs *pEvt) { EventKeyDown *pKeyDown = (EventKeyDown *)pEvt; if( pKeyDown->nChar == VK_RETURN ) { OnBtnMainSearch(); } } // ctrl+v void CMainDlg::OnKeyDownCtrlV() { CStringArray arFileLst; CString strRootPath; CString strDir; POINT point; ::GetCursorPos(&point); POINT pt = point; ScreenToClient(&pt); SWND s = SwndFromPoint(pt, FALSE); if(!m_DocWnd.IsAcceptDrapFile()) return ; //YRlistview CMBMcListViewEx *pDocMcListView = FindChildByName2<CMBMcListViewEx>("mclv_file"); //tileView STileViewEx *pDocTileView = FindChildByName2<STileViewEx>("tileex_file"); if( pDocMcListView && pDocTileView ) { if(s == pDocMcListView->GetSwnd() || s == pDocTileView->GetSwnd()) { IDataObject *pDataObject; if (OleGetClipboard(&pDataObject) == S_OK) { if( GetFileLstDataObject(pDataObject,arFileLst) ) { if(0 != arFileLst.GetCount()){ strDir = CStrFileUtils::GetDir( arFileLst[0] ); strRootPath = CStrFileUtils::GetRootDir(strDir); m_DocWnd.AddUploadFileLst(arFileLst,strRootPath); // >eeQ N O‡eöNRhˆ } } pDataObject->Release(); }// if (OleGetClipboard(&pDataObject) == S_OK) }// if(s == pDocMcListView->GetSwnd() || s == pDocTileView->GetSwnd()) } // if( pDocMcListView && pDocTileView ) } bool CMainDlg::GetFileLstDataObject(IDataObject *pDataObject,CStringArray & arFileLst) { FORMATETC fmtetc = {CF_HDROP, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL}; STGMEDIUM stgmedium; if (pDataObject->GetData(&fmtetc, &stgmedium) == S_OK) { HDROP hdrop = (HDROP)GlobalLock(stgmedium.hGlobal); int count = DragQueryFile(hdrop, 0xFFFFFFFF, NULL, 0); for(int i = 0; i < count; ++i) { TCHAR path[_MAX_PATH]; DragQueryFile(hdrop, i, path, _MAX_PATH); arFileLst.Add(path); } GlobalUnlock(stgmedium.hGlobal); ReleaseStgMedium(&stgmedium); } else { return false; //cout<<"Error! jRRgpenc 1900 ) { nID = 125; } int nScale = 100; switch(nID) { case 100: nScale = 100; break; case 125: nScale = 125; break; case 150: nScale = 150; break; case 200: nScale = 200; break; } int nCurScale = GetScale(); SOUI::CRect rcWnd = GetWindowRect(); int OriWid = rcWnd.Width() * 100 / nCurScale; int OriHei = rcWnd.Height() * 100/ nCurScale; int nNewWid = OriWid * nScale / 100; int nNewHei = OriHei * nScale / 100; SDispatchMessage(UM_SETSCALE,nScale,0); if(!CSimpleWnd::IsZoomed()){ SetWindowPos(0, 0, 0, nNewWid, nNewHei, SWP_NOZORDER | SWP_NOMOVE); } } bool CMainDlg::ConnetExeSvr(CString &strErrInfo) { //////////////////// ޏ¥cmbcdn.exe ///////////////////// CString strModulePath = CBaseCommFun::GetModulePath(); HWND hSvrCdn = CMBProcessOpt::CreateJobProcess( strModulePath + _T("\\mbcdn.exe"),_T("mbcdn"),_T("mbcdn"),_T("mbc"), _T("mbcdnEventInit") ); if( NULL == hSvrCdn ) { strErrInfo = _T("*g~b0Rmbcn„v—zãSåSÄgÿ"); return false; } HRESULT hr = m_conn.GetIpcHandle()->ConnectTo((ULONG_PTR)m_hWnd, (ULONG_PTR)hSvrCdn); if( S_OK != hr ) { strErrInfo = _T("ޏ¥cmbcdn.exe z^1Y%ÿ"); return false; } return true; } CString CMainDlg::GetCdnPort() { CString strTmpPort; std::string strPort = m_conn.GetCdnPort(); strTmpPort = strPort.c_str(); return strTmpPort; } void CMainDlg::InitDocUISkin() { CMBSkin *pSkin = (CMBSkin *)GETSKIN(L"mbdocskinbg",GetScale()); if (pSkin) { SStringT strFileName; strFileName.Format(_T("%s\\skin\\fire_bg.png"),CBaseCommFun::GetWorkDir()); pSkin->SetImage(strFileName); } } void CMainDlg::SelPageSearch() { STabCtrl *pTab = FindChildByName2<STabCtrl>(L"tab_main"); if(pTab) { pTab->SetCurSel(_T("d"}")); } if( m_pCtlSelRadio ) { m_pCtlSelRadio->SetCheck(FALSE); } } LRESULT CMainDlg::OnAMLoginStatueRes(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL & bHandled) { int nUserStatus = (int)wParam; UpdateUserStatusShow( nUserStatus ); SetTrayIcon( nUserStatus ); return S_OK; } LRESULT CMainDlg::OnMsgShareMemoryUploadFiles(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL & bHandled) { CString strData; if(wParam) { strData.Format(_T("%s"),(LPTSTR)wParam); } if(strData.IsEmpty()) return S_OK; COIXMLParser xmlParser; IXMLDOMElementPtr ptrBody; IXMLDOMNodePtr ptrNode,ptrNext; CString strNodeName,strNodeValue,strAttrValue; CStringArray arFileist; int nType; CString strAddinName; arFileist.RemoveAll(); if( !xmlParser.ParseXMLStr(strData, ptrBody) ) { return S_OK; } COIXMLParser::GetNodeAttrValue(ptrBody, _T("type"),strAttrValue ); nType = _tstol(strAttrValue); COIXMLParser::GetNodeAttrValue(ptrBody, _T("addin"),strAttrValue ); strAddinName = strAttrValue; ptrBody->get_firstChild( &ptrNode); while(ptrNode) { COIXMLParser::GetNodeContent(ptrNode, strNodeName, strNodeValue); if ( strNodeName.CompareNoCase( _T("file") ) == 0 ) { arFileist.Add(strNodeValue); } ptrNode->get_nextSibling(&ptrNext); ptrNode = ptrNext; } if( !strAddinName.IsEmpty()) { m_AMWnd.SendFileList(arFileist,strAddinName); } else { if(nType == 0) m_AMWnd.SendFileList(arFileist); else if(nType ==1) m_DocWnd.AddUploadFileLst(arFileist,_T("")); } return S_OK; } bool CMainDlg::SetTrayIcon( int nUserStatus ) { int nIco = 0; switch( nUserStatus ) { case AM_USERSTATUS_NLN: nIco = 1; break; case AM_USERSTATUS_HDN: nIco = 2; break; case AM_USERSTATUS_AWY: case AM_USERSTATUS_AAY: nIco = 3; break; case AM_USERSTATUS_BSY: nIco = 4; break; case AM_USERSTATUS_AWM: case AM_USERSTATUS_AWP: case AM_USERSTATUS_AWO: nIco = 5; break; case AM_USERSTATUS_FLN: nIco = 0; break; default: break; } SShellNotifyIcon* notify = FindChildByID2<SShellNotifyIcon>(110); notify->SetDefIconIdx(nIco); return true; } void CMainDlg::UpdateUserStatusShow(int nStatus) { SStringW strStatusSkin= CMBAMUIBaseFun::GetContactStatusSkin(nStatus); if( nStatus == AM_USERSTATUS_NLN) strStatusSkin = _T("skin_userstatus_online"); SImageWndEx *pImg = FindChildByName2<SImageWndEx>(_T("img_userstatus")); if( !strStatusSkin.IsEmpty()) { if(pImg) pImg->SetSkin(GETSKIN(strStatusSkin, pImg->GetScale())); } } //o:y‚YUOÍT”^܃US‹NöN void CMainDlg::OnCommand(UINT uNotifyCode, int nID, HWND wndCtl) { if (uNotifyCode == 0) { switch (nID) { case 5://͑°e{vF– { CString strFileName; GetModuleFileName( NULL, strFileName.GetBuffer( MAX_PATH ), MAX_PATH ); strFileName.ReleaseBuffer(); PostMessage(WM_CLOSE); ShellExecute(NULL, _T("open"), strFileName, NULL, NULL, SW_SHOW); break; } case 6://úQ PostMessage(WM_CLOSE); break; default: break; } } } BOOL CMainDlg::ReadWndBigWindowSize() { SOUI::CRect rcWnd = this->GetWindowRect(); if( NULL == m_pSvrMgr ) { if(rcWnd.right - 1200 < 0) MoveWindow(0,rcWnd.top,1200,rcWnd.Height()); else MoveWindow(rcWnd.right - 1200,rcWnd.top,1200,rcWnd.Height()); return TRUE; } CString strMyPosition,strMyCfgPath; CFile file; WINDOWPLACEMENT wp = { sizeof(wp) }; int nWidth = 1200; int nHeight = 750; strMyCfgPath = m_pSvrMgr->GetUserLogin()->m_strMyCfgPath; strMyPosition.Format(_T("%s//mbcb.pos"),strMyCfgPath); // û‹ÖSMOn if (!file.Open(strMyPosition, CFile::modeRead)) { if(rcWnd.right - 1200 < 0) MoveWindow(0,rcWnd.top,1200,rcWnd.Height()); else MoveWindow(rcWnd.right - 1200,rcWnd.top,1200,rcWnd.Height()); return FALSE; } UINT nByteRead = file.Read(&wp, sizeof(wp)); file.Close(); if (sizeof(wp) != nByteRead) { if(rcWnd.right - 1200 < 0) MoveWindow(0,rcWnd.top,1200,rcWnd.Height()); else MoveWindow(rcWnd.right - 1200,rcWnd.top,1200,rcWnd.Height()); return FALSE; } nHeight= wp.rcNormalPosition.bottom - wp.rcNormalPosition.top; nWidth = wp.rcNormalPosition.right - wp.rcNormalPosition.left; wp.rcNormalPosition.top = rcWnd.top; wp.rcNormalPosition.right = rcWnd.right; if ( nHeight < 750) nHeight = rcWnd.Height(); wp.rcNormalPosition.bottom= rcWnd.top + nHeight ; if ( nWidth < 1200 ) nWidth = 1200; wp.rcNormalPosition.left = rcWnd.right - nWidth ; if(wp.rcNormalPosition.left < 0) { wp.rcNormalPosition.left = 0; wp.rcNormalPosition.right = nWidth; } if(!::SetWindowPlacement(m_hWnd, &wp)) return FALSE; return TRUE; } BOOL CMainDlg::WriteWndBigWindowSize() { if( NULL == m_pSvrMgr ) return TRUE; CString strMyPosition,strMyCfgPath; CFile file; WINDOWPLACEMENT wp = { sizeof(wp) }; strMyCfgPath = m_pSvrMgr->GetUserLogin()->m_strMyCfgPath; strMyPosition.Format(_T("%s//mbcb.pos"),strMyCfgPath); // ™QMOn ::GetWindowPlacement(m_hWnd, &wp); if (!file.Open(strMyPosition, CFile::modeCreate | CFile::modeWrite)) return FALSE; file.Write(&wp, sizeof(wp)); file.Close(); return TRUE; } // —zãSMOn°‹U_ BOOL CMainDlg::ReadWndPosition() { if( NULL == m_pSvrMgr ) return TRUE; CString strMyPosition,strMyCfgPath; CFile file; WINDOWPLACEMENT wp = { sizeof(wp) }; strMyCfgPath = m_pSvrMgr->GetUserLogin()->m_strMyCfgPath; strMyPosition.Format(_T("%s//mbc.pos"),strMyCfgPath); // û‹ÖSMOn if (!file.Open(strMyPosition, CFile::modeRead)) return FALSE; UINT nByteRead = file.Read(&wp, sizeof(wp)); file.Close(); if (sizeof(wp) != nByteRead) return FALSE; if(!::SetWindowPlacement(m_hWnd, &wp)) return FALSE; return TRUE; } BOOL CMainDlg::WriteWndPosition() { if( NULL == m_pSvrMgr ) return TRUE; CString strMyPosition,strMyCfgPath; CFile file; WINDOWPLACEMENT wp = { sizeof(wp) }; strMyCfgPath = m_pSvrMgr->GetUserLogin()->m_strMyCfgPath; strMyPosition.Format(_T("%s//mbc.pos"),strMyCfgPath); // ™QMOn ::GetWindowPlacement(m_hWnd, &wp); if (!file.Open(strMyPosition, CFile::modeCreate | CFile::modeWrite)) return FALSE; file.Write(&wp, sizeof(wp)); file.Close(); return TRUE; } void CMainDlg::OnBtnSmallWindow() { DWORD dwStyle = WS_MAXIMIZEBOX ; ModifyStyle(dwStyle,0); m_pSvrMgr->GetUserLogin()->m_nMBCShowMode = 1; m_pSvrMgr->GetCfgInfo()->m_iniFile.SetProfileInt(_T("MBC_BASE"),_T("ShowMode"),1); SGroup *pHeaderGroup = FindChildByName2<SGroup>("group_tabheader"); if(pHeaderGroup) pHeaderGroup->SetVisible(false); if(m_pSvrMgr->GetUserLogin()->GetAuthInfo()->HasAmAuth() && m_pSvrMgr->GetUserLogin()->GetAuthInfo()->HasDocAuth()) { STabCtrl *pTab = FindChildByName2<STabCtrl>(L"tab_main"); if(pTab) { pTab->SetCurSel(0); pTab->SetAttribute(_T("pos"),_T("1,[0,-1,-64")); } SWindow *pWnd = FindChildByName2<SWindow>(L"wnd_tail"); if(pWnd) { pWnd->SetVisible(true); pWnd->SetAttribute(_T("pos"),_T("1,-64,-1,-1")); } } else { STabCtrl *pTab = FindChildByName2<STabCtrl>(L"tab_main"); if(pTab) { pTab->SetCurSel(0); pTab->SetAttribute(_T("pos"),_T("1,[0,-1,-1")); } SWindow *pWnd = FindChildByName2<SWindow>(L"wnd_tail"); if(pWnd) { pWnd->SetVisible(false); } } WriteWndBigWindowSize(); SOUI::CRect rcWnd = this->GetWindowRect(); m_hostAttr.SetAttribute(_T("minsize"),_T("368,750")); MoveWindow(rcWnd.right - 375,rcWnd.top,375,rcWnd.Height()); m_AMWnd.SetMBCShowMode(); m_DocWnd.SetMBCShowMode(); SImageButton * pBtn = FindChildByName2<SImageButton>(L"btn_max"); if(pBtn) pBtn->SetVisible(false); pBtn = FindChildByName2<SImageButton>(L"btn_restore"); if(pBtn) pBtn->SetVisible(false); pBtn = FindChildByName2<SImageButton>(L"btn_min"); if(pBtn) pBtn->SetAttribute(_T("pos"),_T("-64,0")); pBtn = FindChildByName2<SImageButton>(L"btn_set"); if(pBtn) pBtn->SetAttribute(_T("pos"),_T("-96,0")); /* pBtn = FindChildByName2<SImageButton>(L"btn_msg"); if(pBtn) pBtn->SetAttribute(_T("pos"),_T("-96,0"));*/ pBtn = FindChildByName2<SImageButton>(L"btn_smallwindow"); if(pBtn) { pBtn->SetVisible(false); } pBtn = FindChildByName2<SImageButton>(L"btn_bigwindow"); if(pBtn) { pBtn->SetVisible(true); pBtn->SetAttribute(_T("pos"),_T("-128,0")); } } void CMainDlg::OnBtnBigWindow() { DWORD dwStyle = WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_THICKFRAME; ModifyStyle(0,dwStyle); m_pSvrMgr->GetUserLogin()->m_nMBCShowMode = 0; m_pSvrMgr->GetCfgInfo()->m_iniFile.SetProfileInt(_T("MBC_BASE"),_T("ShowMode"),0); /* m_hostAttr.SetAttribute(_T("minsize"),_T("1200,750")); m_hostAttr.SetAttribute(_T("resizable"),_T("1"));*/ SGroup *pHeaderGroup = FindChildByName2<SGroup>("group_tabheader"); if(pHeaderGroup) pHeaderGroup->SetVisible(true); /* int cx = ::GetSystemMetrics(SM_CXSCREEN); int cy = ::GetSystemMetrics(SM_CYSCREEN); int nTop = (cy - 680)/2; if(nTop > 10) nTop = 10;*/ STabCtrl *pTab = FindChildByName2<STabCtrl>(L"tab_main"); if(pTab) { pTab->SetAttribute(_T("pos"),_T("1,[0,-1,-1")); } SWindow *pWnd = FindChildByName2<SWindow>(L"wnd_tail"); if(pWnd) { pWnd->SetVisible(false); } //SOUI::CRect rcWnd = this->GetWindowRect(); m_hostAttr.SetAttribute(_T("minsize"),_T("1200,750")); /*if(rcWnd.right - 1205 < 0) MoveWindow(0,rcWnd.top,1205,rcWnd.Height()); else MoveWindow(rcWnd.right - 1205,rcWnd.top,1205,rcWnd.Height());*/ ReadWndBigWindowSize(); //MoveWindow((cx - 1205)/2,nTop,1205,680); m_AMWnd.SetMBCShowMode(); m_DocWnd.SetMBCShowMode(); SImageButton *pBtn = FindChildByName2<SImageButton>(L"btn_max"); if(pBtn) { pBtn->SetVisible(true); pBtn->SetAttribute(_T("pos"),_T("-64,0")); } pBtn = FindChildByName2<SImageButton>(L"btn_restore"); if(pBtn) { pBtn->SetVisible(false); pBtn->SetAttribute(_T("pos"),_T("-64,0")); } pBtn = FindChildByName2<SImageButton>(L"btn_min"); if(pBtn) { pBtn->SetVisible(true); pBtn->SetAttribute(_T("pos"),_T("-96,0")); } pBtn = FindChildByName2<SImageButton>(L"btn_set"); if(pBtn) pBtn->SetAttribute(_T("pos"),_T("-128,0")); /* pBtn = FindChildByName2<SImageButton>(L"btn_msg"); if(pBtn) pBtn->SetAttribute(_T("pos"),_T("-160,0"));*/ pBtn = FindChildByName2<SImageButton>(L"btn_bigwindow"); if(pBtn) { pBtn->SetVisible(false); } pBtn = FindChildByName2<SImageButton>(L"btn_smallwindow"); if(pBtn) { pBtn->SetVisible(true); pBtn->SetAttribute(_T("pos"),_T("-160,0")); } } void CMainDlg::OnBtnSet() { SOUI::CPoint pt; GetCursorPos(&pt); MenuWrapper menu(L"menuex_template", L"SMENU"); menu.AddMenu(_T("sQŽN"),1); menu.AddMenu(_T("¾‹n"),2); menu.AddMenu(_T("nd–OmȉhVX["),7); menu.AddMenu(_T("îO9eÆ[x"),3); menu.AddMenu(_T("͑°e{vU_"),5); menu.AddMenu(_T("úQ"),6); int ret = menu.ShowMenu(TPM_RETURNCMD, pt.x, pt.y, m_hWnd); if (ret == 1 ) { if( !m_pMBAboutWnd || !m_pMBAboutWnd->IsWindow() ) { m_pMBAboutWnd = new CMBAboutWnd(); m_pMBAboutWnd->Create(NULL); m_pMBAboutWnd->CenterWindow(GetDesktopWindow()); m_pMBAboutWnd->SendMessage(WM_INITDIALOG); m_pMBAboutWnd->ShowWindow(SW_SHOWDEFAULT); m_pMBAboutWnd->CenterWindow(); } else { if(m_pMBAboutWnd->IsIconic()) m_pMBAboutWnd->ShowWindow(SW_SHOWNORMAL); else m_pMBAboutWnd->ShowWindow(SW_SHOW); } } else if (ret == 2 ) { if( !m_pMBSettingWnd || !m_pMBSettingWnd->IsWindow() ) { m_pMBSettingWnd = new CMBSettingWnd(); m_pMBSettingWnd->SetServerMgrPtr(m_pSvrMgr); m_pMBSettingWnd->Create(NULL); m_pMBSettingWnd->CenterWindow(GetDesktopWindow()); m_pMBSettingWnd->SendMessage(WM_INITDIALOG); m_pMBSettingWnd->ShowWindow(SW_SHOWDEFAULT); m_pMBSettingWnd->CenterWindow(); } else { if(m_pMBSettingWnd->IsIconic()) m_pMBSettingWnd->ShowWindow(SW_SHOWNORMAL); else m_pMBSettingWnd->ShowWindow(SW_SHOW); } } else if (ret == 3 ) { CMBModifyPasswordDlg dlgPassword; dlgPassword.SetServerMgrPtr(m_pSvrMgr); dlgPassword.DoModal(); } else if (ret == 5) { CString strFileName; GetModuleFileName( NULL, strFileName.GetBuffer( MAX_PATH ), MAX_PATH ); strFileName.ReleaseBuffer(); m_bExit = TRUE; PostMessage(WM_CLOSE); ShellExecute(NULL, _T("open"), strFileName, _T(""), NULL, SW_SHOW); } else if (ret == 6) { m_bExit = TRUE; PostMessage(WM_CLOSE); } else if (ret == 7) { if(MBMessageBox(m_hWnd,_T("nd–X[ ÿû|ß~\sQí• z^ ÿnxš[‰nd–X[Tÿ"),_T("â‹î•"),MB_OKCANCEL) == IDOK) { ShowWindow(SW_HIDE); m_bExit = TRUE; m_bCleanWebCache = TRUE; PostMessage(WM_CLOSE); } } } BOOL CMainDlg::IsCleanWebCache() { return m_bCleanWebCache; } void CMainDlg::OnUserInfoSet() { m_AMWnd.OnUserInfoSet(); } void CMainDlg::OnUserStatusSet() { SOUI::CPoint pt; GetCursorPos(&pt); MenuWrapper menu(L"menuex_template", L"SMENU"); menu.AddMenu(_T("(W¿~"), 1); menu.AddMenu(_T("–«Ž"), 2); menu.AddMenu(_T("»y_"), 3); menu.AddMenu(_T("Ù_Œx"), 4); menu.AddMenu(_T("YúQ"), 5); menu.AddMenu(_T("»y¿~"), 6); int ret = menu.ShowMenu(TPM_RETURNCMD, pt.x, pt.y, m_hWnd); if (ret > 0) //(W¿~ { int nStatus = AM_USERSTATUS_NLN; if (ret == 1) //(W¿~ { nStatus = AM_USERSTATUS_NLN; } else if (ret == 2) //–«Ž { nStatus = AM_USERSTATUS_HDN; } else if (ret == 3) //»y_ { nStatus = AM_USERSTATUS_AWY; } else if (ret == 4) //Ù_Œx { nStatus = AM_USERSTATUS_BSY; } else if (ret == 5) //YúQ { nStatus = AM_USERSTATUS_AWO; } else if (ret == 6) //»y¿~ { nStatus = AM_USERSTATUS_FLN; } m_AMWnd.ChangeStatus(nStatus); SStringW strStatusSkin= CMBAMUIBaseFun::GetContactStatusSkin(nStatus); if( nStatus == AM_USERSTATUS_NLN) strStatusSkin = _T("skin_userstatus_online"); SImageWndEx *pImg = FindChildByName2<SImageWndEx>(_T("img_userstatus")); if( !strStatusSkin.IsEmpty()) { if(pImg) pImg->SetSkin(GETSKIN(strStatusSkin, pImg->GetScale())); } } } UINT CMainDlg::OnWndNcHitTest(SOUI::CPoint point) { // TODO: (Wdkûm Rˆmo`Yt z^ãNxŒT/bŒ(u؞¤‹

f:yǏ z if( m_bSizeChanged ) { rcWnd.bottom = rcWnd.top + m_nOldWndHeight; m_bSizeChanged = FALSE; } break; case HM_TOP: nSteps = nHeight / HS_STEPS; ptWndPos.x = rcWnd.left + 2; ptWndPos.y = rcWnd.bottom - 2; rcWnd.bottom -= nSteps; if(nMonitorCnt == 2) { if( rcExtrenMonitor.PtInRect(ptWndPos)) { rcMouseMonitor = rcExtrenMonitor; } else { rcMouseMonitor = rcPrimaryMonitor; } } else { rcMouseMonitor = rcPrimaryMonitor; } if( rcWnd.bottom <= rcMouseMonitor.top + cyFrame )//m_cyFrame { rcWnd.bottom = rcMouseMonitor.top + cyFrame ; m_bFinished = TRUE; } rcWnd.top = rcWnd.bottom - nHeight; if( m_bSizeChanged ) { rcWnd.top = rcWnd.bottom - m_nOldWndHeight; m_bSizeChanged = FALSE; } break; case HM_BOTTOM: nSteps = nHeight / HS_STEPS; ptWndPos.x = rcWnd.left + 2; ptWndPos.y = rcWnd.top + 2; rcWnd.top += nSteps; if(nMonitorCnt == 2) { if( rcExtrenMonitor.PtInRect(ptWndPos)) { rcMouseMonitor = rcExtrenMonitor; } else { rcMouseMonitor = rcPrimaryMonitor; } } else { rcMouseMonitor = rcPrimaryMonitor; } if(rcWnd.top >= ( rcMouseMonitor.bottom - cxFrame)) { rcWnd.top = rcMouseMonitor.bottom - cxFrame; m_bFinished = TRUE; } rcWnd.bottom = rcWnd.top + nHeight; if( m_bSizeChanged ) { rcWnd.bottom = rcWnd.top + m_nOldWndHeight; m_bSizeChanged = FALSE; } break; case HM_LEFT: nSteps = nWidth / HS_STEPS; ptWndPos.x = rcWnd.right -2; ptWndPos.y = rcWnd.top + 2; rcWnd.right -= nSteps; if(nMonitorCnt == 2) { if( rcExtrenMonitor.PtInRect(ptWndPos)) { rcMouseMonitor = rcExtrenMonitor; } else { rcMouseMonitor = rcPrimaryMonitor; } } else { rcMouseMonitor = rcPrimaryMonitor; } if(rcWnd.right <= rcMouseMonitor.left + cxFrame) { rcWnd.right = rcMouseMonitor.left + cxFrame + 2; m_bFinished = TRUE; } if( !m_bSizeChanged ) { m_nOldWndHeight = nHeight; m_bSizeChanged = TRUE; } rcWnd.left = rcWnd.right - nWidth; rcWnd.top = rcMouseMonitor.top -cyFrame; rcWnd.bottom = rcMouseMonitor.bottom; if( TB_POS_TOP == m_nTaskBarPos || TB_POS_EXTOP == m_nTaskBarPos) { SOUI::CRect rcUnion; rcUnion.UnionRect(m_rcTaskBar,rcWnd); if( !rcUnion.IsRectEmpty()) { rcWnd.top = m_rcTaskBar.bottom; } } else if( TB_POS_BOTTOM == m_nTaskBarPos|| TB_POS_EXBOTTOM == m_nTaskBarPos) { SOUI::CRect rcUnion; rcUnion.UnionRect(m_rcTaskBar,rcWnd); if( !rcUnion.IsRectEmpty()) { rcWnd.bottom = m_rcTaskBar.top; } } break; case HM_RIGHT: nSteps = nWidth / HS_STEPS; ptWndPos.x = rcWnd.left+ 2; ptWndPos.y = rcWnd.top + 2; rcWnd.left += nSteps; if(nMonitorCnt == 2) { if( rcExtrenMonitor.PtInRect(ptWndPos)) { rcMouseMonitor = rcExtrenMonitor; } else { rcMouseMonitor = rcPrimaryMonitor; } } else { rcMouseMonitor = rcPrimaryMonitor; } if( rcWnd.left >= rcMouseMonitor.right - cxFrame ) { rcWnd.left = rcMouseMonitor.right - cxFrame; m_bFinished = TRUE; } if( !m_bSizeChanged ) { m_nOldWndHeight = nHeight; m_bSizeChanged = TRUE; } rcWnd.right = rcWnd.left + nWidth; rcWnd.top = rcMouseMonitor.top -cyFrame; rcWnd.bottom = rcMouseMonitor.bottom; if( TB_POS_TOP == m_nTaskBarPos || TB_POS_EXTOP == m_nTaskBarPos) { SOUI::CRect rcUnion; rcUnion.UnionRect(m_rcTaskBar,rcWnd); if( !rcUnion.IsRectEmpty()) { rcWnd.top = m_rcTaskBar.bottom; } } else if( TB_POS_BOTTOM == m_nTaskBarPos|| TB_POS_EXBOTTOM == m_nTaskBarPos) { SOUI::CRect rcUnion; rcUnion.UnionRect(m_rcTaskBar,rcWnd); if( !rcUnion.IsRectEmpty()) { rcWnd.bottom = m_rcTaskBar.top; } } break; default: break; } MoveWindow(&rcWnd); if(m_bFinished) { m_bIsHideState = TRUE; ::SetWindowPos(m_hWnd, HWND_TOPMOST,rcWnd.left,rcWnd.top,rcWnd.Width(),rcWnd.Height(), SWP_NOMOVE | SWP_NOSIZE ); } } void CMainDlg::DoShow() { SOUI::CRect rcWnd; rcWnd = GetWindowRect(); int nHeight = rcWnd.Height(); int nWidth = rcWnd.Width(); int nSteps = 0; POINT ptWndPos; SOUI::CRect rcMouseMonitor; SOUI::CRect rcPrimaryMonitor; SOUI::CRect rcExtrenMonitor; int nMonitorCnt = CBaseCommFun::GetSTKMonitorInfo(&rcPrimaryMonitor,&rcExtrenMonitor); switch( m_hideMode ) { case HM_NONE: m_bFinished = TRUE; //Œ[b>f:yǏ z if( m_bSizeChanged ) { rcWnd.bottom = rcWnd.top + m_nOldWndHeight; m_bSizeChanged = FALSE; } break; case HM_TOP: nSteps = nHeight / HS_STEPS; ptWndPos.x = rcWnd.left + 5; ptWndPos.y = rcWnd.bottom -1; rcWnd.top += nSteps; if(nMonitorCnt == 2) { if( rcExtrenMonitor.PtInRect(ptWndPos)) { rcMouseMonitor = rcExtrenMonitor; } else { rcMouseMonitor = rcPrimaryMonitor; } } else { rcMouseMonitor = rcPrimaryMonitor; } if( rcWnd.top >= rcMouseMonitor.top-m_cyFrame ) { rcWnd.top = rcMouseMonitor.top -m_cyFrame; m_bFinished = TRUE; //Œ[b>f:yǏ z } rcWnd.bottom = rcWnd.top + nHeight; if( m_bSizeChanged ) { rcWnd.bottom = rcWnd.top + m_nOldWndHeight; m_bSizeChanged = FALSE; } break; case HM_BOTTOM: nSteps = nHeight / HS_STEPS; ptWndPos.x = rcWnd.left + 5; ptWndPos.y = rcWnd.top + 1; rcWnd.top -= nSteps; if(nMonitorCnt == 2) { if( rcExtrenMonitor.PtInRect(ptWndPos)) { rcMouseMonitor = rcExtrenMonitor; } else { rcMouseMonitor = rcPrimaryMonitor; } } else { rcMouseMonitor = rcPrimaryMonitor; } if( rcWnd.top <= rcMouseMonitor.bottom - nHeight ) { rcWnd.top = rcMouseMonitor.bottom - nHeight; m_bFinished = TRUE; } rcWnd.bottom = rcWnd.top + nHeight; if( m_bSizeChanged ) { rcWnd.bottom = rcWnd.top + m_nOldWndHeight; m_bSizeChanged = FALSE; } break; case HM_LEFT: nSteps = nWidth / HS_STEPS; ptWndPos.x = rcWnd.right- 1; ptWndPos.y = rcWnd.top+ 5; rcWnd.right += nSteps; if(nMonitorCnt == 2) { if( rcExtrenMonitor.PtInRect(ptWndPos)) { rcMouseMonitor = rcExtrenMonitor; } else { rcMouseMonitor = rcPrimaryMonitor; } } else { rcMouseMonitor = rcPrimaryMonitor; } if(rcWnd.right>= rcMouseMonitor.left + nWidth) { rcWnd.right = rcMouseMonitor.left +nWidth; rcWnd.left = rcMouseMonitor.left; m_bFinished = TRUE; } if( !m_bSizeChanged ) { m_nOldWndHeight = nHeight; m_bSizeChanged = TRUE; } rcWnd.left = rcWnd.right - nWidth; rcWnd.top = rcMouseMonitor.top-m_cyFrame; rcWnd.bottom = rcMouseMonitor.bottom; if( TB_POS_TOP == m_nTaskBarPos || TB_POS_EXTOP == m_nTaskBarPos) { SOUI::CRect rcUnion; rcUnion.UnionRect(m_rcTaskBar,rcWnd); if( !rcUnion.IsRectEmpty()) { rcWnd.top = m_rcTaskBar.bottom; } } else if( TB_POS_BOTTOM == m_nTaskBarPos|| TB_POS_EXBOTTOM == m_nTaskBarPos) { SOUI::CRect rcUnion; rcUnion.UnionRect(m_rcTaskBar,rcWnd); if( !rcUnion.IsRectEmpty()) { rcWnd.bottom = m_rcTaskBar.top; } } break; case HM_RIGHT: nSteps = nWidth / HS_STEPS; ptWndPos.x = rcWnd.left+ 1; ptWndPos.y = rcWnd.top+ 5; rcWnd.left -= nSteps; if(nMonitorCnt == 2) { if( rcExtrenMonitor.PtInRect(ptWndPos)) { rcMouseMonitor = rcExtrenMonitor; } else { rcMouseMonitor = rcPrimaryMonitor; } } else { rcMouseMonitor = rcPrimaryMonitor; } if( rcWnd.left <= ( rcMouseMonitor.right - nWidth ) ) { rcWnd.left = rcMouseMonitor.right - nWidth; rcWnd.right = rcMouseMonitor.right; m_bFinished = TRUE; } if( !m_bSizeChanged ) { m_nOldWndHeight = nHeight; m_bSizeChanged = TRUE; } rcWnd.right = rcWnd.left + nWidth; rcWnd.top = rcMouseMonitor.top-m_cyFrame; rcWnd.bottom = rcMouseMonitor.bottom; if( TB_POS_TOP == m_nTaskBarPos || TB_POS_EXTOP == m_nTaskBarPos) { SOUI::CRect rcUnion; rcUnion.UnionRect(m_rcTaskBar,rcWnd); if( !rcUnion.IsRectEmpty()) { rcWnd.top = m_rcTaskBar.bottom; } } else if( TB_POS_BOTTOM == m_nTaskBarPos|| TB_POS_EXBOTTOM == m_nTaskBarPos) { SOUI::CRect rcUnion; rcUnion.UnionRect(m_rcTaskBar,rcWnd); if( !rcUnion.IsRectEmpty()) { rcWnd.bottom = m_rcTaskBar.top; } } break; default: break; } ::SetWindowPos(m_hWnd, HWND_TOPMOST,rcWnd.left,rcWnd.top,rcWnd.Width(),rcWnd.Height(), SWP_SHOWWINDOW); if(m_bFinished) { m_bIsHideState = FALSE; ::SetWindowPos(m_hWnd, HWND_NOTOPMOST,rcWnd.left,rcWnd.top,rcWnd.Width(),rcWnd.Height(), SWP_SHOWWINDOW ); } rcWnd = GetWindowRect(); } void CMainDlg::GetTaskBarHeight( ) { // —_0RûN¡Rh'Y\ HWND hTrayWnd= ::FindWindow( _T("Shell_TrayWnd"), NULL ); if( hTrayWnd == NULL || !::IsWindow(hTrayWnd)) { m_rcTaskBar.left = 0; m_rcTaskBar.top = 0; m_rcTaskBar.right = 0; m_rcTaskBar.bottom = 0; m_nTaskBarPos = TB_POS_NONE; return; } m_nTaskBarPos = TB_POS_NONE; ::GetWindowRect(hTrayWnd,&m_rcTaskBar); SOUI::CRect rcPrimaryMonitor; SOUI::CRect rcExtrenMonitor; int nMonitorCnt = CBaseCommFun::GetSTKMonitorInfo(&rcPrimaryMonitor,&rcExtrenMonitor); if(nMonitorCnt == 2) { if(rcExtrenMonitor.left < 0 || rcExtrenMonitor.top < 0) { if( (m_rcTaskBar.left < 0 && m_rcTaskBar.right <= 0) || (m_rcTaskBar.top < 0 && m_rcTaskBar.bottom <= 0)) { if( m_rcTaskBar.Height() >= rcExtrenMonitor.Height() ) { if( m_rcTaskBar.left <= rcExtrenMonitor.left+ 2 ) // ûN¡Rh(Wæ]¹ { m_nTaskBarPos = TB_POS_EXLEFT; } else { m_nTaskBarPos = TB_POS_EXRIGHT; } } else if( m_rcTaskBar.Width() >= rcExtrenMonitor.Width() ) { if( m_rcTaskBar.top <= rcExtrenMonitor.top + 2 ) // ûN¡Rh(W N¹ { m_nTaskBarPos = TB_POS_EXTOP; } else { m_nTaskBarPos = TB_POS_EXBOTTOM; } } } else { if( m_rcTaskBar.Height() >= rcPrimaryMonitor.Height() ) { if( m_rcTaskBar.left <= rcPrimaryMonitor.left+ 2 ) // ûN¡Rh(Wæ]¹ { m_nTaskBarPos = TB_POS_LEFT; } else { m_nTaskBarPos = TB_POS_RIGHT; } } else if( m_rcTaskBar.Width() >= rcPrimaryMonitor.Width() ) { if( m_rcTaskBar.top <= rcPrimaryMonitor.top + 2 ) // ûN¡Rh(W N¹ { m_nTaskBarPos = TB_POS_TOP; } else { m_nTaskBarPos = TB_POS_BOTTOM; } } else if( m_rcTaskBar.Height() >= rcExtrenMonitor.Height() ) { if( m_rcTaskBar.left <= rcExtrenMonitor.left+ 2 ) // ûN¡Rh(Wæ]¹ { m_nTaskBarPos = TB_POS_EXLEFT; } else { m_nTaskBarPos = TB_POS_EXRIGHT; } } else if( m_rcTaskBar.Width() >= rcExtrenMonitor.Width() ) { if( m_rcTaskBar.top <= rcExtrenMonitor.top + 2 ) // ûN¡Rh(W N¹ { m_nTaskBarPos = TB_POS_EXTOP; } else { m_nTaskBarPos = TB_POS_EXBOTTOM; } } } } else { if( (m_rcTaskBar.left >=rcExtrenMonitor.left && m_rcTaskBar.right > rcExtrenMonitor.right && rcPrimaryMonitor.right == rcExtrenMonitor.left) || ( rcPrimaryMonitor.bottom == rcExtrenMonitor.top && m_rcTaskBar.top >= rcExtrenMonitor.top && m_rcTaskBar.bottom > rcExtrenMonitor.top)) { if( m_rcTaskBar.Height() >= rcExtrenMonitor.Height() ) { if( m_rcTaskBar.left <= rcExtrenMonitor.left+ 2 ) // ûN¡Rh(Wæ]¹ { m_nTaskBarPos = TB_POS_EXLEFT; } else { m_nTaskBarPos = TB_POS_EXRIGHT; } } else if( m_rcTaskBar.Width() >= rcExtrenMonitor.Width() ) { if( m_rcTaskBar.top <= rcExtrenMonitor.top + 2 ) // ûN¡Rh(W N¹ { m_nTaskBarPos = TB_POS_EXTOP; } else { m_nTaskBarPos = TB_POS_EXBOTTOM; } } } else { if( m_rcTaskBar.Height() >= rcPrimaryMonitor.Height() ) { if( m_rcTaskBar.left <= rcPrimaryMonitor.left+ 2 ) // ûN¡Rh(Wæ]¹ { m_nTaskBarPos = TB_POS_LEFT; } else { m_nTaskBarPos = TB_POS_RIGHT; } } else if( m_rcTaskBar.Width() >= rcPrimaryMonitor.Width() ) { if( m_rcTaskBar.top <= rcPrimaryMonitor.top + 2 ) // ûN¡Rh(W N¹ { m_nTaskBarPos = TB_POS_TOP; } else { m_nTaskBarPos = TB_POS_BOTTOM; } } } } } else { if(nMonitorCnt > 2) { if( m_rcTaskBar.right <= 0 || m_rcTaskBar.bottom <= 0 || m_rcTaskBar.left > rcPrimaryMonitor.right || m_rcTaskBar.top > rcPrimaryMonitor.bottom) { m_nTaskBarPos = TB_POS_NONE; } else { if( m_rcTaskBar.Height() >= rcPrimaryMonitor.Height() ) { if( m_rcTaskBar.left <= rcPrimaryMonitor.left+ 2 ) // ûN¡Rh(Wæ]¹ { m_nTaskBarPos = TB_POS_LEFT; } else { m_nTaskBarPos = TB_POS_RIGHT; } } else if( m_rcTaskBar.Width() >= rcPrimaryMonitor.Width() ) { if( m_rcTaskBar.top <= rcPrimaryMonitor.top + 2 ) // ûN¡Rh(W N¹ { m_nTaskBarPos = TB_POS_TOP; } else { m_nTaskBarPos = TB_POS_BOTTOM; } } } } else { if( m_rcTaskBar.Height() >= rcPrimaryMonitor.Height() ) { if( m_rcTaskBar.left <= rcPrimaryMonitor.left+ 2 ) // ûN¡Rh(Wæ]¹ { m_nTaskBarPos = TB_POS_LEFT; } else { m_nTaskBarPos = TB_POS_RIGHT; } } else if( m_rcTaskBar.Width() >= rcPrimaryMonitor.Width() ) { if( m_rcTaskBar.top <= rcPrimaryMonitor.top + 2 ) // ûN¡Rh(W N¹ { m_nTaskBarPos = TB_POS_TOP; } else { m_nTaskBarPos = TB_POS_BOTTOM; } } } } } void CMainDlg::FixMoving(UINT fwSide, LPRECT pRect) { POINT ptCursor; int nHeight; int nWidth; GetCursorPos( &ptCursor ); nHeight = pRect->bottom - pRect->top; nWidth = pRect->right - pRect->left; GetTaskBarHeight(); if(TB_POS_NONE == m_nTaskBarPos) { m_hideMode = HM_NONE; return; } SOUI::CRect rcMouseMonitor; SOUI::CRect rcPrimaryMonitor; SOUI::CRect rcExtrenMonitor; int nMonitorCnt = CBaseCommFun::GetSTKMonitorInfo(&rcPrimaryMonitor,&rcExtrenMonitor); if(nMonitorCnt == 2) { if( rcPrimaryMonitor.PtInRect(ptCursor)) { rcMouseMonitor = rcPrimaryMonitor; } else if( rcExtrenMonitor.PtInRect(ptCursor)) { rcMouseMonitor = rcExtrenMonitor; } else { m_hideMode = HM_NONE; return; } } else { rcMouseMonitor = rcPrimaryMonitor; } if( ptCursor.x >= (rcMouseMonitor.right - TRIGGER_AFFIX_INTERVAL) ) // ˜|D–(WóS¹ { if(nMonitorCnt == 2) { if( TB_POS_RIGHT == m_nTaskBarPos || TB_POS_EXRIGHT == m_nTaskBarPos ) { m_hideMode = HM_NONE; return; } if(rcPrimaryMonitor.left >= rcMouseMonitor.right || rcExtrenMonitor.left >= rcMouseMonitor.right) { m_hideMode = HM_NONE; return; } m_hideMode = HM_RIGHT; } else { if( TB_POS_RIGHT == m_nTaskBarPos ) { m_hideMode = HM_NONE; return; } m_hideMode = HM_RIGHT; } } else if ( ptCursor.x < rcMouseMonitor.left + TRIGGER_AFFIX_INTERVAL ) // ˜|D–(Wæ]¹ { if(nMonitorCnt == 2) { if( TB_POS_LEFT == m_nTaskBarPos || TB_POS_EXLEFT == m_nTaskBarPos ) { m_hideMode = HM_NONE; return; } if(rcPrimaryMonitor.right <= rcMouseMonitor.left || rcExtrenMonitor.right <= rcMouseMonitor.left) { m_hideMode = HM_NONE; return; } m_hideMode = HM_LEFT; } else { if( TB_POS_LEFT == m_nTaskBarPos ) { m_hideMode = HM_NONE; return; } m_hideMode = HM_LEFT; } } else if ( ptCursor.y <= rcMouseMonitor.top + TRIGGER_AFFIX_INTERVAL ) // ˜|D–(W N¹ { if(nMonitorCnt == 2) { if( TB_POS_TOP == m_nTaskBarPos || TB_POS_EXTOP == m_nTaskBarPos ) { m_hideMode = HM_NONE; return; } if(rcPrimaryMonitor.bottom <= rcMouseMonitor.top || rcExtrenMonitor.bottom <= rcMouseMonitor.top) { m_hideMode = HM_NONE; return; } m_hideMode = HM_TOP; } else { if( TB_POS_TOP == m_nTaskBarPos ) { m_hideMode = HM_NONE; return; } m_hideMode = HM_TOP; } } else if( ptCursor.y >= (rcMouseMonitor.bottom - TRIGGER_AFFIX_INTERVAL) ) // ˜|D–(W N¹ { if(nMonitorCnt == 2) { if( TB_POS_BOTTOM == m_nTaskBarPos || TB_POS_EXBOTTOM == m_nTaskBarPos ) { m_hideMode = HM_NONE; return; } if(rcPrimaryMonitor.top >= rcMouseMonitor.bottom || rcExtrenMonitor.top >= rcMouseMonitor.bottom) { m_hideMode = HM_NONE; return; } m_hideMode = HM_BOTTOM; } else { if( TB_POS_BOTTOM == m_nTaskBarPos ) { m_hideMode = HM_NONE; return; } m_hideMode = HM_BOTTOM; } } else // N˜|D– { if( m_bSizeChanged ) { m_bFinished = FALSE; m_bHiding = FALSE; SetTimer( WM_TIMER_EVENT_FLEX, HS_ELAPSE ); } if( m_bSetTimer ) { KillTimer( WM_TIMER_EVENT_IS_MOUSE_OUT ); m_bSetTimer = FALSE; } m_hideMode = HM_NONE; } return; } //==================================== // 8^(uûN¡Rh N„vóS.•‹NöN(Sb_—zãS) //==================================== LRESULT CMainDlg::OnTrayRClick( UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL & bHandled ) { SOUI::CPoint pt; GetCursorPos(&pt); MenuWrapper menu(L"menuex_template", L"SMENU"); menu.AddMenu(_T("sQŽN"),1); menu.AddMenu(_T("¾‹n"),2); menu.AddMenu(_T("îO9eÆ[x"),3); menu.AddMenu(_T("͑°e{vU_"),5); menu.AddMenu(_T("úQ"),6); int ret = menu.ShowMenu(TPM_RETURNCMD, pt.x, pt.y, m_hWnd); if (ret == 1 ) { if( !m_pMBAboutWnd || !m_pMBAboutWnd->IsWindow() ) { m_pMBAboutWnd = new CMBAboutWnd(); m_pMBAboutWnd->Create(NULL); m_pMBAboutWnd->CenterWindow(GetDesktopWindow()); m_pMBAboutWnd->SendMessage(WM_INITDIALOG); m_pMBAboutWnd->ShowWindow(SW_SHOWDEFAULT); m_pMBAboutWnd->CenterWindow(); } else { if(m_pMBAboutWnd->IsIconic()) m_pMBAboutWnd->ShowWindow(SW_SHOWNORMAL); else m_pMBAboutWnd->ShowWindow(SW_SHOW); } } else if (ret == 2 ) { if( !m_pMBSettingWnd || !m_pMBSettingWnd->IsWindow() ) { m_pMBSettingWnd = new CMBSettingWnd(); m_pMBSettingWnd->SetServerMgrPtr(m_pSvrMgr); m_pMBSettingWnd->Create(NULL); m_pMBSettingWnd->CenterWindow(GetDesktopWindow()); m_pMBSettingWnd->SendMessage(WM_INITDIALOG); m_pMBSettingWnd->ShowWindow(SW_SHOWDEFAULT); m_pMBSettingWnd->CenterWindow(); } else { if(m_pMBSettingWnd->IsIconic()) m_pMBSettingWnd->ShowWindow(SW_SHOWNORMAL); else m_pMBSettingWnd->ShowWindow(SW_SHOW); } } else if (ret == 3 ) { CMBModifyPasswordDlg dlgPassword; dlgPassword.SetServerMgrPtr(m_pSvrMgr); dlgPassword.DoModal(); } else if (ret == 5) { CString strFileName; GetModuleFileName( NULL, strFileName.GetBuffer( MAX_PATH ), MAX_PATH ); strFileName.ReleaseBuffer(); m_bExit = TRUE; PostMessage(WM_CLOSE); ShellExecute(NULL, _T("open"), strFileName, NULL, NULL, SW_SHOW); } else if (ret == 6) { m_bExit = TRUE; PostMessage(WM_CLOSE); } return S_OK; } //==================================== // 8^(uûN¡Rh N„vUSûQ‹NöN(Sb_—zãS) //==================================== LRESULT CMainDlg::OnTrayLClick( UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL & bHandled ) { if ( !IsWindowVisible()) { ShowWindow(SW_SHOWNORMAL); ShowWindow( SW_SHOW ); m_AMWnd.OnWndHideToShow(); } else if ( IsIconic() ) { ShowWindow(SW_SHOWNORMAL); ShowWindow( SW_SHOW ); } if( m_bHiding) { m_bSetTimer = TRUE; m_bFinished = FALSE; m_bHiding = FALSE; ShowWindow( SW_SHOW ); ::SetWindowPos(m_hWnd, HWND_TOPMOST,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE ); ::SetWindowPos(m_hWnd, HWND_NOTOPMOST,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE ); GetTaskBarHeight(); SetTimer( WM_TIMER_EVENT_FLEX, HS_ELAPSE); } else { ::SetWindowPos(m_hWnd, HWND_TOPMOST,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE ); ::SetWindowPos(m_hWnd, HWND_NOTOPMOST,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE ); ::SetForegroundWindow(m_hWnd); } return S_OK; } //==================================== // 8^(uûN¡Rh N„vÌSûQ‹NöN(Sb_—zãS) //==================================== LRESULT CMainDlg::OnTrayLDbClick( UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL & bHandled ) { if ( !IsWindowVisible()) { ShowWindow(SW_SHOWNORMAL); ShowWindow( SW_SHOW ); m_AMWnd.OnWndHideToShow(); } else if ( IsIconic() ) { ShowWindow(SW_SHOWNORMAL); ShowWindow( SW_SHOW ); } if( m_bHiding) { m_bSetTimer = TRUE; m_bFinished = FALSE; m_bHiding = FALSE; ShowWindow( SW_SHOW ); ::SetWindowPos(m_hWnd, HWND_TOPMOST,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE ); ::SetWindowPos(m_hWnd, HWND_NOTOPMOST,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE ); GetTaskBarHeight(); SetTimer( WM_TIMER_EVENT_FLEX, HS_ELAPSE); } else { ::SetWindowPos(m_hWnd, HWND_TOPMOST,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE ); ::SetWindowPos(m_hWnd, HWND_NOTOPMOST,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE ); ::SetForegroundWindow(m_hWnd); } m_AMWnd.OnMsgTooltipPop(); return S_OK; } LRESULT CMainDlg::OnMsgExtWebResReceive( UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL & bHandled ) { CString strBody; CString strResBody= *(CString*)wParam; CString strParam= *(CString*)lParam; long nTrID; CString strData; CString strName; CString strValue; CString strAppType = _T(""); CString strMethod = _T(""); CString strParam1; CString strParam2; REQLOADSERVER_ITEM reqItem; CMBParseServerXml::ParseParamInfo( strParam,nTrID, strAppType,strMethod ); m_pSvrMgr->GetExtWebCMgr()->LookupOrgTrID(nTrID,reqItem); m_pSvrMgr->GetExtWebCMgr()->RemoveOrgTrID(nTrID); reqItem.strMethod = strMethod; m_AMWnd.OnMsgExtWebResReceive(reqItem, strResBody ); if( strMethod.Compare(_T("GetLoginUI")) == 0 ) { CString strFileName; CString strParam2; int nLogoVer = 0; CMBOrgFunc::GetElementItem( strResBody, strParam2, _T("\n") ); nLogoVer = _tstol(strParam2); strFileName = strResBody; if( !strFileName.IsEmpty() ) { CString strFileLogPic; CString strFileDir; CString strTempPath; strFileDir.Format( _T("%s\\Users"),CBaseCommFun::GetWorkDir()); ::CreateDirectory(strFileDir, NULL); strTempPath.Format( _T("%s\\LoginImage"),strFileDir ); ::CreateDirectory(strTempPath, NULL); strFileLogPic.Format( _T("%s\\%s_LoginUI.png"), strTempPath, m_pSvrMgr->GetUserLogin()->m_strOrgServerID ); CopyFile(strFileName, strFileLogPic, FALSE); DeleteFile(strFileName); } return S_OK; } return S_OK; } LRESULT CMainDlg::OnMsgExtWebResError( UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL & bHandled ) { int nErrCode; CString strErrInfo; CString strErr; CString strSubject; CString strTip; REQLOADSERVER_ITEM reqItem; CString strXml= *(CString*)wParam; CString strParam= *(CString*)lParam; long nTrID; CString strData; CString strName; CString strValue; CString strAppType = _T(""); CString strMethod = _T(""); CMBParseServerXml::ParseParamInfo( strParam,nTrID, strAppType,strMethod ); m_pSvrMgr->GetExtWebCMgr()->LookupOrgTrID(nTrID,reqItem); m_pSvrMgr->GetExtWebCMgr()->RemoveOrgTrID(nTrID); reqItem.strMethod = strMethod; CMBParseServerXml::ParseErrInfo( strXml, nErrCode,strErrInfo); m_AMWnd.OnMsgExtWebResError(reqItem,nErrCode ); return S_OK; } CMBServerMgr* CMainDlg::GetMBServerMgr() { return m_pSvrMgr; } unsigned int _stdcall CMainDlg::ThreadFunctionCheckUpdate(void *pV) { CMainDlg *pItem = NULL; CString *pstrUpsUpdateFilePath = NULL; CString *pstrUpsUpdateFileDir = NULL; CString *pstrParam = NULL; CMBServerMgr *pSvrMgr= NULL; pItem = (CMainDlg *)pV; if ( pItem ) pSvrMgr = pItem->GetMBServerMgr(); if ( pSvrMgr ) { ::Sleep( 1 * 1000); try { CMBFileSvrInfo *pFileSvrInfo= pSvrMgr->GetFileSvrMgr()->GetFileSvrInfo(pSvrMgr->GetUserLogin()->m_strFileSFlag); if(pFileSvrInfo) { pstrUpsUpdateFilePath = new CString ; pstrUpsUpdateFilePath->Format( _T("%s\\mbupdate.exe"),CBaseCommFun::GetModulePath( ) ); if ( GetFileAttributes( *pstrUpsUpdateFilePath ) != -1 ) { pstrParam = new CString ; pstrParam->Format( _T("AppProcName=mbcU.exe;Server=%s;Port=%d;AppFlag=%s;CurVer=%s;FileSFlag=%s;FileS=%s;FileSPort=%s"), pSvrMgr->GetUserLogin()->m_strUpsServer, pSvrMgr->GetUserLogin()->m_nUpsServerPort, APPFLAG_MBC, GETSTRING(_T("@string/releasever")),pSvrMgr->GetUserLogin()->m_strFileSFlag,pFileSvrInfo->m_strValidIP,pFileSvrInfo->m_strValidPort ); #ifndef _DEBUG pstrUpsUpdateFileDir = new CString ; *pstrUpsUpdateFileDir = CBaseCommFun::GetPathName( *pstrUpsUpdateFilePath ); ::ShellExecute( NULL, _T("open"),* pstrUpsUpdateFilePath, *pstrParam, *pstrUpsUpdateFileDir, SW_SHOWNORMAL ); delete pstrUpsUpdateFileDir; pstrUpsUpdateFileDir = NULL; #endif delete pstrParam; pstrParam = NULL; } delete pstrUpsUpdateFilePath; pstrUpsUpdateFilePath = NULL; } } catch(...) { } } _endthreadex( 0 ); return 0; } void CMainDlg::UpdateSTKAppPack( ) { /*if(m_bUpdateAppPackFlag) return; m_bUpdateAppPackFlag = true;*/ unsigned int nThreadID2; ::_beginthreadex(0, 0, ThreadFunctionCheckUpdate, (void*)this, 0, &nThreadID2); //::_beginthreadex(0, 0, ThreadFunctionCalendarData, (void*)this, 0, &nThreadID2); }