SIZE CMenuUI::EstimateSize(SIZE szAvailable) { int cxFixed = 0; int cyFixed = 0; for( int it = 0; it < GetCount(); it++ ) { CControlUI* pControl = static_cast<CControlUI*>(GetItemAt(it)); if( !pControl->IsVisible() ) continue; SIZE sz = pControl->EstimateSize(szAvailable); cyFixed += sz.cy; if( cxFixed < sz.cx ) cxFixed = sz.cx; } return CDuiSize(cxFixed, cyFixed); }
bool CGroupsUI::RemoveAt(int iIndex) { CControlUI* pControl = GetItemAt(iIndex); if (!pControl) return false; if (_tcsicmp(pControl->GetClass(), _T("ListContainerElementUI")) != 0) return false; if (reinterpret_cast<Node*>(static_cast<CListContainerElementUI*>(pControl->GetInterface(_T("ListContainerElement")))->GetTag()) == NULL) return CListUI::RemoveAt(iIndex); else return RemoveNode(reinterpret_cast<Node*>(static_cast<CListContainerElementUI*>(pControl->GetInterface(_T("ListContainerElement")))->GetTag())); }
void CTileLayoutUI::SetPos(RECT rc) { m_rcItem = rc; // Adjust for inset rc.left += m_rcInset.left; rc.top += m_rcInset.top; rc.right -= m_rcInset.right; rc.bottom -= m_rcInset.bottom; if( m_hwndScroll != NULL ) rc.right -= m_pManager->GetSystemMetrics().cxvscroll; // Position the elements int cxWidth = (rc.right - rc.left) / m_nColumns; int cyHeight = 0; int iCount = 0; POINT ptTile = { rc.left, rc.top - m_iScrollPos }; for( int it1 = 0; it1 < m_items.GetSize(); it1++ ) { CControlUI* pControl = static_cast<CControlUI*>(m_items[it1]); if( !pControl->IsVisible() ) continue; // Determine size RECT rcTile = { ptTile.x, ptTile.y, ptTile.x + cxWidth, ptTile.y }; // Adjust with element padding if( (iCount % m_nColumns) == 0 ) rcTile.right -= m_iPadding / 2; else if( (iCount % m_nColumns) == m_nColumns - 1 ) rcTile.left += m_iPadding / 2; else ::InflateRect(&rcTile, -(m_iPadding / 2), 0); // If this panel expands vertically if( m_cxyFixed.cy == 0) { SIZE szAvailable = { rcTile.right - rcTile.left, 9999 }; int iIndex = iCount; for( int it2 = it1; it2 < m_items.GetSize(); it2++ ) { SIZE szTile = static_cast<CControlUI*>(m_items[it2])->EstimateSize(szAvailable); cyHeight = MAX(cyHeight, szTile.cy); if( (++iIndex % m_nColumns) == 0) break; } } // Set position rcTile.bottom = rcTile.top + cyHeight; pControl->SetPos(rcTile); // Move along... if( (++iCount % m_nColumns) == 0 ) { ptTile.x = rc.left; ptTile.y += cyHeight + m_iPadding; cyHeight = 0; } else { ptTile.x += cxWidth; } m_cyNeeded = rcTile.bottom - (rc.top - m_iScrollPos); } // Process the scrollbar ProcessScrollbar(rc, m_cyNeeded); }
LRESULT CRichListWnd::OnMouseHover(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) }; CControlUI* pHover = m_PaintManager.FindControl(pt); if( pHover == NULL ) return 0; /*演示悬停在下载列表的图标上时,动态变换下载图标状态显示*/ if(pHover->GetName() == _T("down_ico")) { MessageBox(NULL, _T("鼠标在某控件例如按钮上悬停后,对目标控件操作,这里改变了状态图标大小"), _T("DUILIB DEMO"), MB_OK); ((CButtonUI *)pHover)->ApplyAttributeList( _T("normalimage=\"file='downlist_pause.png' dest='15,9,32,26'\"")); } return 0; }
CControlUI* CContainerUI::FindControl(LPCTSTR name) { UINT hash = HashKey(name); if(hash == m_name) return static_cast<CControlUI*>(this); else{ for(int i=0; i<m_items.GetSize(); i++){ CControlUI* pControl = static_cast<CControlUI*>(m_items[i]); CControlUI* pSubControl = NULL; pSubControl = pControl->FindControl(name); if(pSubControl) return pSubControl; } } return NULL; }
void CContainerUI::SetVisible( bool bVisible /*= true*/, bool bDispalyed /*= true*/ ) { m_bVisible = bVisible; m_bDisplayed = bDispalyed; m_bEnableUpdate = false; for(int i=0; i<m_items.GetSize(); i++){ CControlUI* pControl = static_cast<CControlUI*>(m_items[i]); pControl->SetVisibleByParent(bVisible, bDispalyed); } m_bEnableUpdate = true; NeedParentUpdate(); }
SIZE CMenuElementUI::EstimateSize(SIZE szAvailable) { SIZE cXY = {0}; for( int it = 0; it < GetCount(); it++ ) { CControlUI* pControl = static_cast<CControlUI*>(GetItemAt(it)); if( !pControl->IsVisible() ) continue; SIZE sz = pControl->EstimateSize(szAvailable); cXY.cy += sz.cy; if( cXY.cx < sz.cx ) cXY.cx = sz.cx; } if(cXY.cy == 0) { TListInfoUI* pInfo = m_pOwner->GetListInfo(); DWORD iTextColor = pInfo->dwTextColor; if( (m_uButtonState & UISTATE_HOT) != 0 ) { iTextColor = pInfo->dwHotTextColor; } if( IsSelected() ) { iTextColor = pInfo->dwSelectedTextColor; } if( !IsEnabled() ) { iTextColor = pInfo->dwDisabledTextColor; } CDuiString sText = GetText(); RECT rcText = { 0, 0, MAX(szAvailable.cx, m_cxyFixed.cx), 9999 }; rcText.left += pInfo->rcTextPadding.left; rcText.right -= pInfo->rcTextPadding.right; if( pInfo->bShowHtml ) { int nLinks = 0; CRenderEngine::DrawHtmlText(m_pManager->GetPaintDC(), m_pManager, rcText, sText, iTextColor, NULL, NULL, nLinks, DT_CALCRECT | pInfo->uTextStyle); } else { CRenderEngine::DrawText(m_pManager->GetPaintDC(), m_pManager, rcText, sText, iTextColor, pInfo->nFont, DT_CALCRECT | pInfo->uTextStyle); } cXY.cx = rcText.right - rcText.left + pInfo->rcTextPadding.left + pInfo->rcTextPadding.right + 20; cXY.cy = rcText.bottom - rcText.top + pInfo->rcTextPadding.top + pInfo->rcTextPadding.bottom; } if( m_cxyFixed.cy != 0 ) cXY.cy = m_cxyFixed.cy; if ( cXY.cx < m_cxyFixed.cx ) cXY.cx = m_cxyFixed.cx; m_cxyFixed.cy = cXY.cy; m_cxyFixed.cx = cXY.cx; return cXY; }
void CMenuWnd::ResizeMenu() { CControlUI* pRoot = m_pm.GetRoot(); #if defined(WIN32) && !defined(UNDER_CE) MONITORINFO oMonitor = {}; oMonitor.cbSize = sizeof(oMonitor); ::GetMonitorInfo(::MonitorFromWindow(*this, MONITOR_DEFAULTTOPRIMARY), &oMonitor); CDuiRect rcWork = oMonitor.rcWork; #else CDuiRect rcWork; GetWindowRect(m_pOwner->GetManager()->GetPaintWindow(), &rcWork); #endif SIZE szAvailable = { rcWork.right - rcWork.left, rcWork.bottom - rcWork.top }; szAvailable = pRoot->EstimateSize(szAvailable); m_pm.SetInitSize(szAvailable.cx, szAvailable.cy); //必须是Menu标签作为xml的根节点 CMenuUI *pMenuRoot = static_cast<CMenuUI*>(pRoot); ASSERT(pMenuRoot); SIZE szInit = m_pm.GetInitSize(); CDuiRect rc; CDuiPoint point = m_BasedPoint; rc.left = point.x; rc.top = point.y; rc.right = rc.left + szInit.cx; rc.bottom = rc.top + szInit.cy; int nWidth = rc.GetWidth(); int nHeight = rc.GetHeight(); if (m_dwAlignment & eMenuAlignment_Right) { rc.right = point.x; rc.left = rc.right - nWidth; } if (m_dwAlignment & eMenuAlignment_Bottom) { rc.bottom = point.y; rc.top = rc.bottom - nHeight; } SetForegroundWindow(m_hWnd); MoveWindow(m_hWnd, rc.left, rc.top, rc.GetWidth(), rc.GetHeight(), FALSE); SetWindowPos(m_hWnd, HWND_TOPMOST, rc.left, rc.top, rc.GetWidth(), rc.GetHeight() + pMenuRoot->GetInset().bottom + pMenuRoot->GetInset().top, SWP_SHOWWINDOW); }
void RedisConfigUI::DoApplyData() { CEditUI exampleEditUI; CComboUI exampleComboUI; RedisClient::TDicConfig::const_iterator it = m_dicConfig.begin(); RedisClient::TDicConfig::const_iterator itend = m_dicConfig.end(); RedisClient::TDicConfig config; for ( ; it!=itend; ++it) { CDuiString name = _T("redisconfig_"); CDuiString key = CharacterSet::ANSIToUnicode(it->first).c_str(); name.Append(key); CControlUI* pCtl = GetPaintMgr()->FindControl(name); string val ; if (pCtl->GetClass() == exampleEditUI.GetClass()) { CEditUI* pEdit = static_cast<CEditUI*> (pCtl); val = CharacterSet::UnicodeToANSI(pEdit->GetText().GetData()); } else if (pCtl->GetClass() == exampleComboUI.GetClass()) { CComboUI* pCombo = static_cast<CComboUI*> (pCtl); int idx = pCombo->GetCurSel(); if (it->first == "loglevel") { if (idx == 0) val = "debug"; else if (idx == 1) val = "verbose"; else if (idx == 2) val = "notice"; else if (idx == 3) val = "warning"; } else { if (idx == 0) val = "yes"; else if (idx == 1) val = "no"; } } if (val != it->second) { config.insert(std::make_pair(it->first, val)); } } if (SetConfig(config) && GetConfig()) { DoFillData(); } }
void CLoginWindow::Login(const CString& email,const CString& pwd,bool isMD5,bool isKeepLogin) { spUserContextT pContext = theRuntimeState->GetCurrentContext(NULL); spLogonUserInfoT theUser = pContext->GetUser(); if(theUser && 0 == theUser->sLogonEmail.CompareNoCase(email)) { CControlUI *pCtl = GetPaintMgr()->FindControl(_T("login")); CButtonUI *pLoginBtn = static_cast<CButtonUI*>(pCtl); assert(pLoginBtn); if(pLoginBtn) CInfoWindow::ShowInfoWindow(this->m_hWnd,pLoginBtn->GetPos(),_T("Óû§ÒѾµÇ¼!!!")); return; } CControlUI *pEmailEdit = GetPaintMgr()->FindControl(_T("email")); if(pEmailEdit) { pEmailEdit->SetText(email); } std::string sUtf8UserName = em_utility::mci::unicode_2_utf8(email); std::string sUtf8Password = em_utility::mci::unicode_2_utf8(pwd); std::string sUtf8PasswordMD5 = (isMD5 ? sUtf8Password : em_utility::md5_checksum::get_md5((const unsigned char*)sUtf8Password.c_str(),(unsigned int)sUtf8Password.length())); m_sUserName = email; m_sPasswordMd5 = em_utility::mci::utf8_2_CString(sUtf8PasswordMD5.c_str()); //m_isKeepLogin = isKeepLogin; EnableWindow(FALSE); // theWebServiceMgr->AsynSendRequest(m_hWnd,url::Requester::MakeLogin2(sUtf8UserName,sUtf8PasswordMD5)); // CurlData* pData = new CurlData; // pData->SetURL("http://localhost/YMusic/login.php"); // pData->n_type = url::WSRT_LOGIN; // std::string sparam; // sparam = "email="; // sparam += sUtf8UserName; // sparam += "&"; // sparam += "password="; // sparam += sUtf8PasswordMD5; // pData->SetData(sparam.c_str()); // HttpManagerProto::Instance()->DoHttpPost(pData); // CHttpThread* pthread = new CHttpThread(pData,m_hWnd,WM_WEB_SERVICE); // pthread->Start(); CHttpCenter::Instance()->MakeLogin(sUtf8UserName,sUtf8PasswordMD5); }
void CColorPicker::Notify(TNotifyUI& msg) { if (_tcsicmp(msg.sType, _T("click")) == 0) { CControlUI* pOne = static_cast<CControlUI*>(paint_manager_.FindControl(msg.ptMouse)); if (_tcsicmp(pOne->GetClass(), _T("ButtonUI")) == 0) { DWORD nColor = pOne->GetBkColor(); CVerticalLayoutUI* pColorContiner = static_cast<CVerticalLayoutUI*>(paint_manager_.FindControl(_T("color"))); pColorContiner->SetBkColor(nColor); UpdateWindow(m_hWnd); Sleep(500); chat_dialog_->SetTextColor(nColor); } } }
void CContainerUI::DoPaint(HDC hDC, const RECT& rcPaint) { RECT rcTemp = { 0 }; if( !::IntersectRect(&rcTemp, &rcPaint, &m_rcItem) ) return; CRenderClip clip; CBlueRenderEngineUI::GenerateClip(hDC, m_rcItem, clip); for( int it = 0; it < m_items.GetSize(); it++ ) { CControlUI* pControl = static_cast<CControlUI*>(m_items[it]); if( !pControl->IsVisible() ) continue; if( !::IntersectRect(&rcTemp, &rcPaint, &pControl->GetPos()) ) continue; if( !::IntersectRect(&rcTemp, &m_rcItem, &pControl->GetPos()) ) continue; pControl->DoPaint(hDC, rcPaint); } }
LRESULT CRichListWnd::OnMouseWheel( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled ) { // 解决ie控件收不到滚动消息的问题 POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) }; ::ScreenToClient(m_PaintManager.GetPaintWindow(), &pt); CControlUI* pControl = static_cast<CControlUI*>(m_PaintManager.FindControl(_T("ie"))); if( pControl && pControl->IsVisible() ) { RECT rc = pControl->GetPos(); if( ::PtInRect(&rc, pt) ) { return CWindowWnd::HandleMessage(uMsg, wParam, lParam); } } bHandled = FALSE; return 0; }
LRESULT WindowImplBase::OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { if (m_bFrameWnd) { bHandled = FALSE; return 0; } POINT pt; pt.x = GET_X_LPARAM(lParam); pt.y = GET_Y_LPARAM(lParam); ::ScreenToClient(*this, &pt); RECT rcClient; ::GetClientRect(*this, &rcClient); if( !::IsZoomed(*this) ) { RECT rcSizeBox = m_PaintManager.GetSizeBox(); if( pt.y < rcClient.top + rcSizeBox.top ) { if( pt.x < rcClient.left + rcSizeBox.left ) return HTTOPLEFT; if( pt.x > rcClient.right - rcSizeBox.right ) return HTTOPRIGHT; return HTTOP; } else if( pt.y > rcClient.bottom - rcSizeBox.bottom ) { if( pt.x < rcClient.left + rcSizeBox.left ) return HTBOTTOMLEFT; if( pt.x > rcClient.right - rcSizeBox.right ) return HTBOTTOMRIGHT; return HTBOTTOM; } if( pt.x < rcClient.left + rcSizeBox.left ) return HTLEFT; if( pt.x > rcClient.right - rcSizeBox.right ) return HTRIGHT; } RECT rcCaption = m_PaintManager.GetCaptionRect(); if( pt.x >= rcClient.left + rcCaption.left && pt.x < rcClient.right - rcCaption.right \ && pt.y >= rcCaption.top && pt.y < rcCaption.bottom ) { CControlUI* pControl = static_cast<CControlUI*>(m_PaintManager.FindControl(pt)); if( pControl && _tcsicmp(pControl->GetClass(), CButtonUI::GetClassStatic()) != 0 && _tcsicmp(pControl->GetClass(), COptionUI::GetClassStatic()) != 0 && _tcsicmp(pControl->GetClass(), CTextUI::GetClassStatic()) != 0 ) return HTCAPTION; } return HTCLIENT; }
void CreateDiscussionGrpDialog::_updateSearchResultList(IN const std::vector<std::string>& nameList) { if (nameList.empty()) { return; } for (std::string sid : nameList) { module::UserInfoEntity userInfo; if (!module::getUserListModule()->getUserInfoBySId(sid, userInfo)) { LOG__(ERR, _T("can't find the userInfo:%s"), util::stringToCString(sid)); return; } CDialogBuilder dlgBuilder; CListContainerElementUI* pListElement = (CListContainerElementUI*)dlgBuilder.Create(_T("CreateDiscussionGrpDialog\\ListGroupMembersItem.xml"), (UINT)0, NULL, &m_PaintManager); if (!pListElement) { LOG__(ERR, _T("群item创建失败")); return; } pListElement->SetName(_T("SearchResultItem")); CControlUI* pLogo = static_cast<CControlUI*>(pListElement->FindSubControl(_T("AvatarInfo"))); if (!pLogo) { return; } pLogo->SetBkImage(util::stringToCString(userInfo.getAvatarPath())); CLabelUI* pNameLable = static_cast<CLabelUI*>(pListElement->FindSubControl(_T("nickname"))); if (!pNameLable) { return; } pNameLable->SetText(userInfo.getRealName()); CButtonUI* pRemoveBtn = static_cast<CButtonUI*>(pListElement->FindSubControl(_T("removebtn"))); if (pRemoveBtn) { pRemoveBtn->SetVisible(false); } pListElement->SetUserData(util::stringToCString(userInfo.sId)); m_pListSearchResult->Add(pListElement); } }
void CDialogDefaultAttribList::OnBnClickedButtonAttribModify() { // TODO: 在此添加控件通知处理程序代码 int nIndex = m_lstDefaultAttrib.GetCurSel(); if(nIndex == -1) return; CString strDefaultAttribName; m_lstDefaultAttrib.GetText(nIndex, strDefaultAttribName); LPCTSTR pstrDefaultAttrib = m_pManager->GetDefaultAttributeList(strDefaultAttribName); CControlUI* pControl = (CControlUI*)m_lstDefaultAttrib.GetItemDataPtr(nIndex); if(pControl == NULL) { int nClass = gGetUIClass(strDefaultAttribName + _T("UI")); if(nClass == classPointer) { MessageBox(_T("无法识别此控件!"), _T("提示"), MB_ICONINFORMATION); return; } pControl = CLayoutManager::NewUI(nClass, CRect(0, 0, 0, 0), NULL, NULL); ASSERT(pControl); pControl->ApplyAttributeList(pstrDefaultAttrib); m_lstDefaultAttrib.SetItemDataPtr(nIndex, pControl); } CControlUI* pCopyControl = CLayoutManager::CloneControl(pControl); CDialogUIAttribEdit dlg(pCopyControl); if(dlg.DoModal() == IDOK) { CString strValue; if(GetDefaultAttrib(pCopyControl, strValue) == FALSE) { MessageBox(_T("修改默认属性失败!"), _T("提示"), MB_ICONINFORMATION); delete pCopyControl; return; } m_pManager->RemoveDefaultAttributeList(strDefaultAttribName); m_pManager->AddDefaultAttributeList(strDefaultAttribName, strValue); delete pControl; m_lstDefaultAttrib.SetItemDataPtr(nIndex, pCopyControl); m_wndUIProperties.ShowProperty(pCopyControl); g_pMainFrame->GetActiveUIView()->SetModifiedFlag(); } else delete pCopyControl; }
void MainFrame::OnItemActivate(TNotifyUI& msg) { CTabLayoutUI* pTabControl = static_cast<CTabLayoutUI*>(m_PaintManager.FindControl(kMainTabControlName)); if (pTabControl != NULL) { if (pTabControl->GetCurSel() == 0) { CFriendsUI* pFriendsList = static_cast<CFriendsUI*>(m_PaintManager.FindControl(kFriendsListControlName)); if ((pFriendsList != NULL) && pFriendsList->GetItemIndex(msg.pSender) != -1) { if (_tcsicmp(msg.pSender->GetClass(), _T("ListContainerElementUI")) == 0) { Node* node = (Node*)msg.pSender->GetTag(); CControlUI* background = m_PaintManager.FindControl(kBackgroundControlName); if (!pFriendsList->CanExpand(node) && (background != NULL)) { FriendListItemInfo friend_info; for (std::vector<FriendListItemInfo>::const_iterator citer = friends_.begin(); citer != friends_.end(); ++citer) { if (_tcsicmp(citer->id, node->data().value) == 0) { friend_info = *citer; break; } } TCHAR szBuf[MAX_PATH] = { 0 }; if (_tcslen(background->GetBkImage()) > 0) { _stprintf_s(szBuf, MAX_PATH - 1, _T("bg%d.png"), bk_image_index_); } ChatDialog* pChatDialog = new ChatDialog(szBuf, background->GetBkColor(), myself_info_, friend_info); if (pChatDialog == NULL) return; pChatDialog->Create(NULL, _T("ChatDialog"), UI_WNDSTYLE_FRAME | WS_POPUP, NULL, 0, 0, 0, 0); skin_changed_observer_.AddReceiver(pChatDialog); pChatDialog->CenterWindow(); ::ShowWindow(*pChatDialog, SW_SHOW); } } } } } }
CDuiString CControlUI::GetVirtualWnd() const { CDuiString str; if( !m_sVirtualWnd.IsEmpty() ){ str = m_sVirtualWnd; } else{ CControlUI* pParent = GetParent(); if( pParent != NULL){ str = pParent->GetVirtualWnd(); } else{ str = _T(""); } } return str; }
void CALLBACK CUICommandHistory::UIModify(TiXmlNode* pNode) { TiXmlElement* pElement = pNode->ToElement(); CStringA strName = pElement->Attribute("myname"); pElement->RemoveAttribute("myname"); if(strName.IsEmpty()) return; CPaintManagerUI* pManager = g_pMainFrame->GetActiveUIView()->GetPaintManager(); CControlUI* pControl = pManager->FindControl(StringConvertor::Utf8ToWide(strName)); TiXmlAttribute* pAttrib = pElement->FirstAttribute(); if(pControl == NULL) return; while(pAttrib) { if(strcmp(pAttrib->Name(), "name") == 0) { pManager->ReapObjects(pControl); g_pClassView->RenameUITreeItem(pControl, StringConvertor::Utf8ToWide(pAttrib->Value())); pControl->SetAttribute(StringConvertor::Utf8ToWide(pAttrib->Name()) , StringConvertor::Utf8ToWide(pAttrib->Value())); pManager->InitControls(pControl); } else pControl->SetAttribute(StringConvertor::Utf8ToWide(pAttrib->Name()) , StringConvertor::Utf8ToWide(pAttrib->Value())); pAttrib = pAttrib->Next(); } CControlUI* pParent = pControl->GetParent(); if(pParent == NULL) pParent = pControl; pParent->SetPos(pParent->GetPos()); }
bool CListUI::SelectItem(int iIndex) { if( iIndex == m_iCurSel ) return true; // We should first unselect the currently selected item if( m_iCurSel >= 0 ) { CControlUI* pControl = GetItem(m_iCurSel); if( pControl != NULL ) { IListItemUI* pListItem = static_cast<IListItemUI*>(pControl->GetInterface(_T("ListItem"))); if( pListItem != NULL ) pListItem->Select(false); } } // Now figure out if the control can be selected // TODO: Redo old selected if failure CControlUI* pControl = GetItem(iIndex); if( pControl == NULL ) return false; if( !pControl->IsVisible() ) return false; if( !pControl->IsEnabled() ) return false; IListItemUI* pListItem = static_cast<IListItemUI*>(pControl->GetInterface(_T("ListItem"))); if( pListItem == NULL ) return false; m_iCurSel = iIndex; if( !pListItem->Select(true) ) { m_iCurSel = -1; return false; } pControl->SetFocus(); if( m_pManager != NULL ) { m_pManager->SendNotify(pControl, _T("itemclick")); m_pManager->SendNotify(this, _T("itemselect")); } Invalidate(); return true; }
void CRichEditWnd::OnItemActive(TNotifyUI& msg) { CAnimationTabLayoutUI* pTabControl = static_cast<CAnimationTabLayoutUI*>(GetPaintMgr()->FindControl(_T("TAB_MAIN"))); if (pTabControl != NULL) { if (pTabControl->GetCurSel() == 1) { CFriendsUI* pFriendsList = static_cast<CFriendsUI*>(GetPaintMgr()->FindControl(_T("LIST_FRIEND"))); if ((pFriendsList != NULL) && pFriendsList->GetItemIndex(msg.pSender) != -1) { if (_tcsicmp(msg.pSender->GetClass(), _T("ListContainerElementUI")) == 0) { Node* node = (Node*)msg.pSender->GetTag(); CControlUI* background = GetPaintMgr()->FindControl(_T("bg")); if (!pFriendsList->CanExpand(node) && (background != NULL)) { FriendListItemInfo friend_info; for (std::vector<FriendListItemInfo>::const_iterator citer = friends_.begin(); citer != friends_.end(); ++citer) { if (_tcsicmp(citer->id, node->data().value) == 0) { friend_info = *citer; break; } } ChatDialog* pChatDialog = new ChatDialog(background->GetBkImage(), background->GetBkColor(), myself_info_, friend_info); if (pChatDialog == NULL) return; #if defined(WIN32) && !defined(UNDER_CE) pChatDialog->Create(NULL, _T("ChatDialog"), UI_WNDSTYLE_FRAME | WS_POPUP, NULL, 0, 0, 0, 0); #else pChatDialog->Create(NULL, _T("ChatDialog"), UI_WNDSTYLE_FRAME | WS_POPUP, NULL, 0, 0, 0, 0); #endif pChatDialog->CenterWindow(); ::ShowWindow(*pChatDialog, SW_SHOW); } } } } } }
bool CDropDownUI::SelectItem(int iIndex) { if( iIndex == m_iCurSel ) return true; if( m_iCurSel >= 0 ) { CControlUI* pControl = static_cast<CControlUI*>(m_items[m_iCurSel]); IListItemUI* pListItem = static_cast<IListItemUI*>(pControl->GetInterface(_T("ListItem"))); if( pListItem != NULL ) pListItem->Select(false); m_iCurSel = -1; } if( m_items.GetSize() == 0 ) return false; if( iIndex < 0 ) iIndex = 0; if( iIndex >= m_items.GetSize() ) iIndex = m_items.GetSize() - 1; CControlUI* pControl = static_cast<CControlUI*>(m_items[iIndex]); if( !pControl->IsVisible() ) return false; if( !pControl->IsEnabled() ) return false; IListItemUI* pListItem = static_cast<IListItemUI*>(pControl->GetInterface(_T("ListItem"))); if( pListItem == NULL ) return false; m_iCurSel = iIndex; pControl->SetFocus(); pListItem->Select(true); if( m_pManager != NULL ) m_pManager->SendNotify(pControl, _T("itemclick")); if( m_pManager != NULL ) m_pManager->SendNotify(this, _T("itemselect")); Invalidate(); return true; }
void CLoginWindow::Notify(TNotifyUI& msg) { YTrace_(_T("CLoginWindow::Notify class:%s,id:%s,msg:%s"),msg.pSender->GetClass(),msg.pSender->GetName().GetData(),msg.sType.GetData()); CControlUI* pSender = msg.pSender; if (0 == msg.sType.Compare(kClick)) { if (pSender->IsName(_T("close"))) Close(0); else if (pSender->IsName(_T("login"))) OnLogin(); else if (pSender->IsName(_T("sina"))) OnSinaLogin(); else if (pSender->IsName(_T("QQ"))) OnQQLogin(); else if (pSender->IsName(_T("ForgetCode"))) OnForgetPassword(); else if (pSender->IsName(_T("register"))) OnReg(); } else if(0 == msg.sType.Compare(kReturn)) { OnLogin(); } }
BOOL WindowImplBase::IsInStaticControl(CControlUI *pControl) { BOOL bRet = FALSE; if (!pControl) { return bRet; } CDuiString strClassName; std::vector<CDuiString> vctStaticName; strClassName = pControl->GetClass(); strClassName.MakeLower(); vctStaticName.push_back(_T("controlui")); vctStaticName.push_back(_T("textui")); vctStaticName.push_back(_T("labelui")); vctStaticName.push_back(_T("containerui")); vctStaticName.push_back(_T("horizontallayoutui")); vctStaticName.push_back(_T("verticallayoutui")); vctStaticName.push_back(_T("tablayoutui")); vctStaticName.push_back(_T("childlayoutui")); vctStaticName.push_back(_T("dialoglayoutui")); vctStaticName.push_back(_T("progresscontainerui")); std::vector<CDuiString>::iterator it = std::find(vctStaticName.begin(), vctStaticName.end(), strClassName); if (vctStaticName.end() != it) { CControlUI* pParent = pControl->GetParent(); while (pParent) { strClassName = pParent->GetClass(); strClassName.MakeLower(); it = std::find(vctStaticName.begin(), vctStaticName.end(), strClassName); if (vctStaticName.end() == it) { return bRet; } pParent = pParent->GetParent(); } bRet = TRUE; } return bRet; }
// BOOL ViCbSetFocus(VApiHandle hWnd) SQInteger ViCbSetFocus(HSQUIRRELVM v) { SQInteger nargs = sq_gettop(v); SQInteger Handle = 0; CControlUI* pCtrl = NULL; LPCTSTR pstrName = NULL; if (!v || 1 + 1 != nargs) {goto _Exit_;} if (OT_INTEGER != sq_gettype(v, 2)) {goto _Exit_;} sq_getinteger(v, 2, &Handle); pCtrl = QiHwHandleToCtrl(Handle); if (!pCtrl) {goto _Exit_;} pCtrl->SetFocus(); _Exit_: sq_pushbool(v, TRUE); return 1; }
LRESULT OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { POINT pt; pt.x = GET_X_LPARAM(lParam); pt.y = GET_Y_LPARAM(lParam); ::ScreenToClient(*this, &pt); RECT rcClient; ::GetClientRect(*this, &rcClient); RECT rcCaption = m_pm.GetCaptionRect(); if( pt.x >= rcClient.left + rcCaption.left && pt.x < rcClient.right - rcCaption.right \ && pt.y >= rcCaption.top && pt.y < rcCaption.bottom ) { CControlUI* pControl = static_cast<CControlUI*>(m_pm.FindControl(pt)); if( pControl && _tcscmp(pControl->GetClass(), DUI_CTR_BUTTON) != 0 ) return HTCAPTION; } return HTCLIENT; }
// bool ViCbIsFocused(VApiHandle hWnd) SQInteger ViCbIsFocused(HSQUIRRELVM v) { SQInteger nargs = sq_gettop(v); SQInteger Handle = 0; CControlUI* pCtrl = NULL; SQBool bRet = FALSE; if (!v || 1 + 1 != nargs) {goto _Exit_;} if (OT_INTEGER != sq_gettype(v, 2)) {goto _Exit_;} sq_getinteger(v, 2, &Handle); pCtrl = QiHwHandleToCtrl(Handle); if (!pCtrl) {goto _Exit_;} bRet = pCtrl->IsFocused(); _Exit_: sq_pushbool(v, bRet); return 1; }
// wchar* ViCbGetToolTip(VApiHandle hWnd) SQInteger ViCbGetToolTip(HSQUIRRELVM v) { SQInteger nargs = sq_gettop(v); SQInteger Handle = 0; CControlUI* pCtrl = NULL; CStdString sName; if (!v || 1 + 1 != nargs) {goto _Exit_;} if (OT_INTEGER != sq_gettype(v, 2)) {goto _Exit_;} sq_getinteger(v, 2, &Handle); pCtrl = QiHwHandleToCtrl(Handle); if (!pCtrl) {goto _Exit_;} sName = pCtrl->GetToolTip(); _Exit_: sq_pushstring(v, sName.GetData(), sName.GetLength()); return 1; }
// VApiHandle ViCbGetParent(VApiHandle hWnd) SQInteger ViCbGetParent(HSQUIRRELVM v) { SQInteger nargs = sq_gettop(v); SQInteger Handle = 0; CControlUI* pCtrl = NULL; CControlUI* pParent = NULL; if (!v || 1 + 1 != nargs) {goto _Exit_;} if (OT_INTEGER != sq_gettype(v, 2)) {goto _Exit_;} sq_getinteger(v, 2, &Handle); pCtrl = QiHwHandleToCtrl(Handle); if (!pCtrl) {goto _Exit_;} pParent = pCtrl->GetParent(); _Exit_: sq_pushinteger(v, (SQInteger)QiHwCtrlToHandle(pParent)); return 1; }
void PropertyWin::OnClick(TNotifyUI& msg) { CControlUI* pUI = msg.pSender; if(!pUI) return ; if (pUI->IsName(_T("close"))) { Close(IDCANCEL); } else if (pUI->IsName(_T("ok"))) { Close(IDOK); } else if (pUI->IsName(_T("file_pos"))) { theMainWin->OnOpenFolderPath(pUI->GetUserData()); } }