//************************************ // 函数名称: OnCheckBoxChanged // 返回类型: bool // 参数信息: void * param // 函数说明: //************************************ bool CTreeViewUI::OnCheckBoxChanged( void* param ) { TNotifyUI* pMsg = (TNotifyUI*)param; if(pMsg->sType == _T("selectchanged")) { CCheckBoxUI* pCheckBox = (CCheckBoxUI*)pMsg->pSender; CTreeNodeUI* pItem = (CTreeNodeUI*)pCheckBox->GetParent()->GetParent(); SetItemCheckBox(pCheckBox->GetCheck(),pItem); return true; } return true; }
//************************************ // 函数名称: OnCheckBoxChanged // 返回类型: bool // 参数信息: void * param // 函数说明: //************************************ bool CTreeViewUI::OnCheckBoxChanged( void* param ) { TNotifyUI* pMsg = (TNotifyUI*)param; if(pMsg->sType == DUI_MSGTYPE_SELECTCHANGED) { CCheckBoxUI* pCheckBox = (CCheckBoxUI*)pMsg->pSender; CTreeNodeUI* pItem = (CTreeNodeUI*)pCheckBox->GetParent()->GetParent(); SetItemCheckBox(pCheckBox->GetCheck(),pItem); return TRUE; } return TRUE; }
//************************************ // 函数名称: OnFolderChanged // 返回类型: bool // 参数信息: void * param // 函数说明: //************************************ bool CTreeViewUI::OnFolderChanged( void* param ) { TNotifyUI* pMsg = (TNotifyUI*)param; if(pMsg->sType == DUI_MSGTYPE_SELECTCHANGED) { CCheckBoxUI* pFolder = (CCheckBoxUI*)pMsg->pSender; CTreeNodeUI* pItem = (CTreeNodeUI*)pFolder->GetParent()->GetParent(); pItem->SetVisibleTag(!pFolder->GetCheck()); SetItemExpand(!pFolder->GetCheck(),pItem); return TRUE; } return TRUE; }
//************************************ // 函数名称: OnFolderChanged // 返回类型: bool // 参数信息: void * param // 函数说明: //************************************ bool CTreeViewUI::OnFolderChanged( void* param ) { TNotifyUI* pMsg = (TNotifyUI*)param; if(pMsg->sType == _T("selectchanged")) { CCheckBoxUI* pFolder = (CCheckBoxUI*)pMsg->pSender; CTreeNodeUI* pItem = (CTreeNodeUI*)pFolder->GetParent()->GetParent(); pItem->SetVisibleTag(!pFolder->GetCheck()); SetItemExpand(!pFolder->GetCheck(),pItem); return true; } return true; }
//************************************ // 函数名称: OnDBClickItem // 返回类型: bool // 参数信息: void * param // 函数说明: //************************************ bool CTreeViewUI::OnDBClickItem( void* param ) { TNotifyUI* pMsg = (TNotifyUI*)param; if(_tcsicmp(pMsg->sType, DUI_MSGTYPE_TREEITEMDBCLICK) == 0) { CTreeNodeUI* pItem = static_cast<CTreeNodeUI*>(pMsg->pSender); CCheckBoxUI* pFolder = pItem->GetFolderButton(); pFolder->Selected(!pFolder->IsSelected()); pItem->SetVisibleTag(!pFolder->GetCheck()); SetItemExpand(!pFolder->GetCheck(),pItem); return TRUE; } return FALSE; }
//************************************ // 函数名称: OnDBClickItem // 返回类型: bool // 参数信息: void * param // 函数说明: //************************************ bool CTreeViewUI::OnDBClickItem( void* param ) { TNotifyUI* pMsg = (TNotifyUI*)param; if(pMsg->sType == _T("itemdbclick")) { CTreeNodeUI* pItem = static_cast<CTreeNodeUI*>(pMsg->pSender); CCheckBoxUI* pFolder = pItem->GetFolderButton(); pFolder->Selected(!pFolder->IsSelected()); pItem->SetVisibleTag(!pFolder->GetCheck()); SetItemExpand(!pFolder->GetCheck(),pItem); return true; } return false; }
void CLoginWindow::OnLogin() { CString strUserName,strUserPassword; CControlUI *pEmailEdit,*pPasswordEdit; pEmailEdit = GetPaintMgr()->FindControl(_T("email")); pPasswordEdit = GetPaintMgr()->FindControl(_T("password")); if(!pEmailEdit || !pPasswordEdit) return; strUserName = pEmailEdit->GetText(); strUserPassword = pPasswordEdit->GetText(); if(strUserName.IsEmpty()) { CInfoWindow::ShowInfoWindow(this->m_hWnd,pEmailEdit->GetPos(),_T("Óû§Ãû²»ÄÜΪ¿Õ!!!")); pEmailEdit->SetFocus(); return; } if(strUserPassword.IsEmpty()) { CInfoWindow::ShowInfoWindow(this->m_hWnd,pPasswordEdit->GetPos(),_T("ÃÜÂë²»ÄÜΪ¿Õ!!!")); pPasswordEdit->SetFocus(); return; } bool isChecked = false; CControlUI *pCheckBox = GetPaintMgr()->FindControl(_T("KeepLogin")); CCheckBoxUI *pKeepLogin = static_cast<CCheckBoxUI*>(pCheckBox); if(pCheckBox) { if (pKeepLogin) { isChecked = pKeepLogin->IsSelected(); } } strUserPassword = em_utility::mci::Htmlspecialchars(strUserPassword); this->Login(strUserName,strUserPassword,false,isChecked); }
/* void CLoginWindow::OnWebService(void *pRequest ,void *pProto) { url::CRequest *theRequest = (url::CRequest *)pRequest; LogonUserInfoT * theUser = static_cast<LogonUserInfoT*>(pProto); if(url::WSRT_LOGIN != theRequest->GetRequestType() && url::WSRT_WEBLOGIN != theRequest->GetRequestType()) return; CControlUI *pCtl = GetPaintMgr()->FindControl(_T("login")); CButtonUI *pLoginBtn = static_cast<CButtonUI*>(pCtl); if(theRequest->IsTimeOut()) { if(pLoginBtn) CInfoWindow::ShowInfoWindow(this->m_hWnd,pLoginBtn->GetPos(),_T("µÇ¼³¬Ê±£¬ÇëÖØÊÔ¡£")); EnableWindow(TRUE); return; } spLogonUserInfoT spLogonUserInfo(new LogonUserInfoT(*theUser)); if (!spLogonUserInfo) { if(pLoginBtn) CInfoWindow::ShowInfoWindow(this->m_hWnd,pLoginBtn->GetPos(),_T(" µÇ¼ʧ°Ü£¬Óû§Ãû»òÃÜÂë´íÎó! ")); EnableWindow(TRUE); return ; } { if(url::WSRT_WEBLOGIN != theRequest->GetRequestType()) { spLogonUserInfo->sLogonEmail = m_sUserName; spLogonUserInfo->sPasswordMD5 = m_sPasswordMd5; //spLogonUserInfo->bKeepLogged = !!m_isKeepLogin; }else { assert(!spLogonUserInfo->sLogonEmail.IsEmpty()); assert(!spLogonUserInfo->sPasswordMD5.IsEmpty()); //spLogonUserInfo->bKeepLogged = true; } CControlUI *pCheckBox = GetPaintMgr()->FindControl(_T("KeepLogin")); CCheckBoxUI *pKeepLogin = static_cast<CCheckBoxUI*>(pCheckBox); bool autoLogin = pKeepLogin->GetCheck(); // if (url::WSRT_WEBLOGIN == pRequest->GetRequestType()) // autoLogin = true; theConfigMgr->GetNormalConfig()->EnableAutoLogin(autoLogin); theConfigMgr->GetNormalConfig()->Save(); if(theDbMgr->GetGlobalDBase()->GetUserInfo(mci::unicode_2_utf8(spLogonUserInfo->sUserID).c_str())) theDbMgr->GetGlobalDBase()->UpdateUserInfo(spLogonUserInfo); else theDbMgr->GetGlobalDBase()->AddUserInfo(spLogonUserInfo); theRuntimeState->SetUserInfo(spLogonUserInfo); RECT rtWin; ::GetWindowRect(theMainWin->GetHWND(),&rtWin); POINT rtPos = {rtWin.left+25,rtWin.top+35}; ::ScreenToClient(theMainWin->GetHWND(),&rtPos); CInfoWindow::ShowInfoWindow(theMainWin->GetHWND(),rtPos,_T(" µÇ¼³É¹¦ ")); Close(IDOK); } // CurlData* pdata = (CurlData*)pRequest; // int* nRet = (int*)pProto; } */ void CLoginWindow::OnWebService(void *pRequest ,void *pProto) { CControlUI *pCtl = GetPaintMgr()->FindControl(_T("login")); CButtonUI *pLoginBtn = static_cast<CButtonUI*>(pCtl); CurlData* pdata = (CurlData*)pRequest; int* nRet = (int*)pProto; if (!pdata) { CInfoWindow::ShowInfoWindow(this->m_hWnd,pLoginBtn->GetPos(),_T(" µÇ¼ʧ°Ü£¬´íÎóÀàÐÍ[δ֪]! ")); EnableWindow(TRUE); return; } if(url::WSRT_LOGIN != pdata->n_type && url::WSRT_WEBLOGIN != pdata->n_type) { CInfoWindow::ShowInfoWindow(this->m_hWnd,pLoginBtn->GetPos(),_T(" µÇ¼ʧ°Ü£¬´íÎóÀàÐÍ[·ÇWSRT_LOGIN]! ")); EnableWindow(TRUE); return; } static CResponseParser2 Parser; std::string xmlbuf; xmlbuf.assign(pdata->buffer); // assert(!xmlbuf.empty()); std::string bufLog = mci::utf8_2_ansi(xmlbuf.c_str()); sLogWarn(bufLog.c_str()); //modify by dfn.li 2014-01-17 if(bufLog[0] == '?') { bufLog = bufLog.substr(1); } xmlbuf = mci::ansi_2_utf8(bufLog.c_str()); int t_begin = clock(); void *pResponse = NULL; pResponse = Parser.Parse(pdata->n_type,xmlbuf); int t_time = clock() - t_begin; LogonUserInfoT * theUser = static_cast<LogonUserInfoT*>(pResponse); if (!theUser) { if(pLoginBtn) CInfoWindow::ShowInfoWindow(this->m_hWnd,pLoginBtn->GetPos(),_T(" µÇ¼ʧ°Ü£¬Óû§Ãû»òÃÜÂë´íÎó! ")); EnableWindow(TRUE); return ; } // if(theRequest->IsTimeOut()) // { // if(pLoginBtn) // CInfoWindow::ShowInfoWindow(this->m_hWnd,pLoginBtn->GetPos(),_T("µÇ¼³¬Ê±£¬ÇëÖØÊÔ¡£")); // EnableWindow(TRUE); // return; // } spLogonUserInfoT spLogonUserInfo(new LogonUserInfoT(*theUser)); if (!spLogonUserInfo) { if(pLoginBtn) CInfoWindow::ShowInfoWindow(this->m_hWnd,pLoginBtn->GetPos(),_T(" µÇ¼ʧ°Ü£¬Óû§Ãû»òÃÜÂë´íÎó! ")); EnableWindow(TRUE); return ; } { if(url::WSRT_WEBLOGIN != pdata->n_type) { spLogonUserInfo->sLogonEmail = m_sUserName; spLogonUserInfo->sPasswordMD5 = m_sPasswordMd5; //spLogonUserInfo->bKeepLogged = !!m_isKeepLogin; }else { assert(!spLogonUserInfo->sLogonEmail.IsEmpty()); assert(!spLogonUserInfo->sPasswordMD5.IsEmpty()); //spLogonUserInfo->bKeepLogged = true; } CControlUI *pCheckBox = GetPaintMgr()->FindControl(_T("KeepLogin")); CCheckBoxUI *pKeepLogin = static_cast<CCheckBoxUI*>(pCheckBox); bool autoLogin = pKeepLogin->GetCheck(); // if (url::WSRT_WEBLOGIN == pRequest->GetRequestType()) // autoLogin = true; theConfigMgr->GetNormalConfig()->EnableAutoLogin(autoLogin); theConfigMgr->GetNormalConfig()->Save(); if(theDbMgr->GetGlobalDBase()->GetUserInfo(mci::unicode_2_utf8(spLogonUserInfo->sUserID).c_str())) theDbMgr->GetGlobalDBase()->UpdateUserInfo(spLogonUserInfo); else theDbMgr->GetGlobalDBase()->AddUserInfo(spLogonUserInfo); theRuntimeState->SetUserInfo(spLogonUserInfo); RECT rtWin; ::GetWindowRect(theMainWin->GetHWND(),&rtWin); POINT rtPos = {rtWin.left+25,rtWin.top+35}; ::ScreenToClient(theMainWin->GetHWND(),&rtPos); CInfoWindow::ShowInfoWindow(theMainWin->GetHWND(),rtPos,_T(" µÇ¼³É¹¦ ")); EnableWindow(TRUE); Close(IDOK); } }
LRESULT CLoginWindow::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { sLog("CLoginWindow::OnCreate"); ModifyStyle(WS_CAPTION,WS_CLIPSIBLINGS | WS_CLIPCHILDREN); if(!RegisterSkin(_T("login.xml"))) return 0; GetPaintMgr()->AddNotifier(this); theMainWin->BroadCast(); typedef struct _tagKeyValue_ { const TCHAR* key; CString& svalue; }KeyValue; KeyValue keyValues[] = { {_T("regURL"),m_regURL}, {_T("forGetPasswordURL"),m_forgetURL}, {_T("sinaLoginURL"),m_sinURL}, {_T("qqLoginURL"),m_qqURL}, {_T("webLoginSucceedURL"),m_webLoginSucceedURL} }; for (size_t i = 0;i<sizeof(keyValues)/sizeof(keyValues[0]);++i) theDbMgr->GetGlobalDBase()->GetDictValue(keyValues[i].key,keyValues[i].svalue); if(m_regURL.IsEmpty()) m_regURL.Format(_T("%s/member/register"),XIAMI_HOST); if(m_forgetURL.IsEmpty()) m_forgetURL.Format(_T("%s/member/getpassword"),XIAMI_HOST); if(m_sinURL.IsEmpty()) m_sinURL.Format(_T("%s/app/xiating/weibo"),XIAMI_HOST); if(m_qqURL.IsEmpty()) m_qqURL.Format(_T("%s/app/xiating/qzone"),XIAMI_HOST); if(m_webLoginSucceedURL.IsEmpty()) m_webLoginSucceedURL.Format(_T("%s/login/succeed?t="),XIAMI_HOST); theDbMgr->GetGlobalDBase()->BeginTransaction(); for (size_t i = 0;i<sizeof(keyValues)/sizeof(keyValues[0]);++i) { theDbMgr->GetGlobalDBase()->DeleteDict(keyValues[i].key); theDbMgr->GetGlobalDBase()->InsertDict(keyValues[i].key,keyValues[i].svalue); } theDbMgr->GetGlobalDBase()->Commit(); CControlUI *pCheckBox = GetPaintMgr()->FindControl(_T("KeepLogin")); CCheckBoxUI *pKeepLogin = static_cast<CCheckBoxUI*>(pCheckBox); bool autoLogin = theConfigMgr->GetNormalConfig()->IsEnableAutoLogin(); pKeepLogin->SetCheck(autoLogin); //ÓÃÓÚÌáʾ // CString strs[] = // {_T("@hotmail.com"), // _T("@gamil.com"), // _T("@weibo.com"), // _T("@qq.com"), // _T("@sina.com"), // _T("@xiami.com"), // _T("@163.com"), // _T("@126.com"), // _T("@yahoo.com"), // _T("@yahoo.cn"), // _T("@139.com")}; return 0; }
int main() { Screen::Instance().Open(800, 600, false); //Entity Image * alienImg = ResourceManager::Instance().LoadImage("data/alien.png"); alienImg->SetMidHandle(); CEntity entity(alienImg); entity.GetSprite()->SetPosition(350, 340); CEntity entity2(alienImg); entity2.GetSprite()->SetPosition(700, 300); //Windows Image * backgroundImg = ResourceManager::Instance().LoadImage("data/background.jpg"); Image * windowImg = ResourceManager::Instance().LoadImage("data/window4.png"); //button Imgs Image * buttonImgDefault = ResourceManager::Instance().LoadImage("data/button_default.png"); buttonImgDefault->SetMidHandle(); Image * buttonImgOnClick = ResourceManager::Instance().LoadImage("data/button_onclick.png"); buttonImgOnClick->SetMidHandle(); Image * buttonImgInactive = ResourceManager::Instance().LoadImage("data/button_inactive.png"); buttonImgInactive->SetMidHandle(); //checkbox Imgs Image * checkboxImgDefault = ResourceManager::Instance().LoadImage( "data/checkbox_disabled.png"); checkboxImgDefault->SetMidHandle(); Image * checkboxImgOnClick = ResourceManager::Instance().LoadImage( "data/checkbox_enabled.png"); checkboxImgOnClick->SetMidHandle(); //slider Imgs Image * sliderBallImg = ResourceManager::Instance().LoadImage("data/slider_ball.png"); sliderBallImg->SetHandle( static_cast<float>(sliderBallImg->GetWidth() * sliderBallImg->GetHFrames() / 2), static_cast<float>(sliderBallImg->GetHeight() * sliderBallImg->GetVFrames())); Image * sliderBarImg = ResourceManager::Instance().LoadImage("data/slider_bar.png"); sliderBarImg->SetHandle(0, static_cast<float>(sliderBarImg->GetHeight() * sliderBarImg->GetVFrames())); Image * sliderLeftDefaultImg = ResourceManager::Instance().LoadImage( "data/slider_left_default.png"); sliderLeftDefaultImg->SetMidHandle(); Image * sliderRightDefaultImg = ResourceManager::Instance().LoadImage( "data/slider_right_default.png"); sliderRightDefaultImg->SetMidHandle(); Image * sliderLeftOnClickImg = ResourceManager::Instance().LoadImage( "data/slider_left_onclick.png"); sliderLeftOnClickImg->SetMidHandle(); Image * sliderRightOnClickImg = ResourceManager::Instance().LoadImage( "data/slider_right_onclick.png"); sliderRightOnClickImg->SetMidHandle(); //Input & Control managers CInputManager * inputManager = &CInputManager::Instance(); assert(inputManager != nullptr); CControlManagerUI controlManager; controlManager.Init(); String str; //Controls CWindowUI background; background.Init(0, 0, backgroundImg); background.SetId(0); controlManager.AddControl(&background); CWindowUI windowSlider; windowSlider.Init(100, 0, windowImg); windowSlider.SetId(1); controlManager.AddControl(&windowSlider); CButtonUI button; button.Init(350, 80, buttonImgDefault, buttonImgOnClick, buttonImgInactive); button.SetId(0); str = "Inactive"; button.SetText(str); controlManager.AddControl(&button); button.SetCurrentState(EGUICS_INACTIVE); CButtonUI button2; button2.Init(350, 140, buttonImgDefault, buttonImgOnClick, buttonImgInactive); button2.SetId(1); str = "Click"; button2.SetText(str); controlManager.AddControl(&button2); CSliderUI slider; slider.Init(200, 400, 0, 10, sliderBarImg, sliderBallImg, sliderLeftDefaultImg, sliderLeftOnClickImg, sliderRightDefaultImg, sliderRightOnClickImg); slider.SetId(0); controlManager.AddControl(&slider); CCheckBoxUI checkbox; checkbox.Init(300, 220, checkboxImgDefault, checkboxImgOnClick); checkbox.SetId(0); CCheckBoxUI checkbox2; checkbox2.Init(340, 220, checkboxImgDefault, checkboxImgOnClick); checkbox2.SetId(1); CCheckBoxUI checkbox3; checkbox3.Init(380, 220, checkboxImgDefault, checkboxImgOnClick); checkbox3.SetId(2); CCheckBoxGroup cbGroup; cbGroup.Init(); cbGroup.AddControl(&checkbox); cbGroup.AddControl(&checkbox2); cbGroup.AddControl(&checkbox3); controlManager.AddControl(&cbGroup); cbGroup.AddEventListener(&entity); checkbox.SetCurrentState(EGUICS_ONCLICK); button2.AddEventListener(&entity); slider.AddEventListener(&entity); entity.GetSprite()->SetColor(entity.GetSprite()->GetRed(), entity.GetSprite()->GetGreen(), entity.GetSprite()->GetBlue(), 0); /*entity.Register(EEC_MOUSE, EME_LMB_PRESS); entity.Register(EEC_MOUSE, EME_LMB_RELEASE); entity.Register(EEC_MOUSE, EME_LMB_CLICK); entity.Register(EEC_MOUSE, EME_RMB_PRESS); entity.Register(EEC_KEYBOARD, EKE_SPACE);*/ entity2.Register(EEC_MOUSE, EME_LMB_DRAG); Renderer::Instance().SetBlendMode(Renderer::BlendMode::ALPHA); while (Screen::Instance().IsOpened() && !Screen::Instance().KeyPressed(GLFW_KEY_ESC)) { Renderer::Instance().Clear(); inputManager->Update(); controlManager.Update(); controlManager.Render(); entity.GetSprite()->Update(Screen::Instance().ElapsedTime()); entity.GetSprite()->Render(); entity2.GetSprite()->Update(Screen::Instance().ElapsedTime()); entity2.GetSprite()->Render(); Screen::Instance().Refresh(); } ResourceManager::Instance().FreeResources(); }