void CMainDialog::AddComboboxItem() { CComboUI* pcbx2 = static_cast <CComboUI*> (m_pm.FindControl(_T("combo2"))); assert (pcbx2); if (pcbx2) { CDialogBuilder builder; CContainerUI* pItem = static_cast <CContainerUI*> (builder.Create(_T("comboitem.xml"), 0)); pItem->GetItemAt(0)->SetBkImage(_T ("icon_home.png")); if (pcbx2->GetCount() % 2 == 0) { pItem->GetItemAt(1)->SetText(_T ("百度一下,你就知道了")); pItem->GetItemAt(2)->SetText(_T ("http://www.baidu.com")); } else { pItem->GetItemAt(1)->SetText(_T ("360搜索 - 干净、安全、可信任的搜索引擎")); pItem->GetItemAt(2)->SetText(_T ("http://www.so.com/")); } pItem->SetTag(pcbx2->GetCount()); pItem->OnEvent += MakeDelegate (this, &CMainDialog::OnClickItem); pcbx2->Add(pItem); } }
void CMyList::Init(CPaintManagerUI* ppm) { CDialogBuilder builder; CContainerUI* pList = static_cast<CContainerUI*>(builder.Create(_T("mylist.xml"), 0, NULL, ppm)); if( pList != NULL ) { for(int i = 0; i < 100; ++i) { if( pList == NULL ) pList = static_cast<CContainerUI*>(builder.Create()); if( pList != NULL ) { this->Add(pList); TCHAR indexBuffer[16]; CDuiString strIndexString = _T("- "); strIndexString += _itot(i+1, indexBuffer, 10); strIndexString += _T(" -"); pList->GetItemAt(0)->SetText(strIndexString); CComboUI* pCombo = static_cast <CComboUI*> (pList->GetItemAt(1)); if (pCombo != NULL) { for (int j = 0; j < 3; ++j) { CListLabelElementUI* pComboItem = new CListLabelElementUI; pComboItem->SetText("xxx"); pCombo->Add(pComboItem); } } pList->GetItemAt(0)->OnEvent += MakeDelegate (this, &CMyList::OnTheEvent); pList->GetItemAt(1)->OnEvent += MakeDelegate (this, &CMyList::OnTheEvent); pList->GetItemAt(2)->OnEvent += MakeDelegate (this, &CMyList::OnTheEvent); pList->OnEvent += MakeDelegate (this, &CMyList::OnTheEvent); pList = NULL; } else { this->RemoveAll(); return; } } } }
bool CMainDialog::OnClickItem (void* pParam) { TEventUI* pEvent = (TEventUI*)pParam; if (pEvent->Type == UIEVENT_BUTTONDOWN) { CComboUI* pcbx = static_cast <CComboUI*> (m_pm.FindControl(_T ("combo2"))); CEditUI* pedit = static_cast <CEditUI*> (m_pm.FindControl(_T ("ComboEdit"))); assert (pedit); CContainerUI* pItem = static_cast <CContainerUI*> (pcbx->GetItemAt (pEvent->pSender->GetTag())); pedit->SetText(pItem->GetItemAt(2)->GetText()); } else if (pEvent->Type == UIEVENT_MOUSEENTER) { pEvent->pSender->SetBkColor(0xFF00FF00); } else if (pEvent->Type == UIEVENT_MOUSELEAVE) { pEvent->pSender->SetBkColor(0xFFFFFFFF); } return true; }
void CUIDesignerView::PasteUI(LPCTSTR xml) { CDialogBuilder builder; CControlUI* pRoot=builder.Create(xml, (UINT)0, NULL, m_LayoutManager.GetManager()); if(pRoot) { CControlUI* pParent = m_MultiTracker.GetFocused(); if(pParent->GetInterface(_T("Container")) == NULL) pParent = pParent->GetParent(); if(pParent == NULL) pParent = m_LayoutManager.GetForm(); m_MultiTracker.RemoveAll(); CContainerUI* pContainer = static_cast<CContainerUI*>(pParent->GetInterface(_T("Container"))); CContainerUI* pRootContainer = static_cast<CContainerUI*>(pRoot->GetInterface(_T("Container"))); ExtendedAttributes* pExtended = (ExtendedAttributes*)pContainer->GetTag(); for(int i=0; i<pRootContainer->GetCount(); i++) { CControlUI* pControl = pRootContainer->GetItemAt(i); if(pControl->IsFloat()) { SIZE sz = pControl->GetFixedXY(); sz.cx += COPY_OFFSET_XY; sz.cy += COPY_OFFSET_XY; pControl->SetFixedXY(sz); } pContainer->Add(pControl); m_MultiTracker.Add(CreateTracker(pControl)); InitUI(pControl, pExtended->nDepth + 1); } CArray<CControlUI*,CControlUI*> arrSelected; m_MultiTracker.GetSelected(arrSelected); m_UICommandHistory.Begin(arrSelected, actionAdd); m_UICommandHistory.End(); pContainer->SetPos(pContainer->GetPos()); pRootContainer->SetAutoDestroy(false); delete pRootContainer; this->GetDocument()->SetModifiedFlag(); } }
void MainFrame::Notify(TNotifyUI& msg) { if (_tcsicmp(msg.sType, kWindowInit) == 0) { OnPrepare(msg); } else if (_tcsicmp(msg.sType, kClick) == 0) { if (_tcsicmp(msg.pSender->GetName(), kCloseButtonControlName) == 0 || _tcsicmp(msg.pSender->GetName(), kCancelButtonControlName) == 0) { OnExit(msg); } else if (_tcsicmp(msg.pSender->GetName(), kMinButtonControlName) == 0) { #if defined(UNDER_CE) ::ShowWindow(m_hWnd, SW_MINIMIZE); #else SendMessage(WM_SYSCOMMAND, SC_MINIMIZE, 0); #endif } else if (_tcsicmp(msg.pSender->GetName(), kMaxButtonControlName) == 0) { #if defined(UNDER_CE) ::ShowWindow(m_hWnd, SW_MAXIMIZE); CControlUI* pControl = static_cast<CControlUI*>(paint_manager_.FindControl(kMaxButtonControlName)); if( pControl ) pControl->SetVisible(false); pControl = static_cast<CControlUI*>(paint_manager_.FindControl(kRestoreButtonControlName)); if( pControl ) pControl->SetVisible(true); #else SendMessage(WM_SYSCOMMAND, SC_MAXIMIZE, 0); #endif } else if (_tcsicmp(msg.pSender->GetName(), kRestoreButtonControlName) == 0) { #if defined(UNDER_CE) ::ShowWindow(m_hWnd, SW_RESTORE); CControlUI* pControl = static_cast<CControlUI*>(paint_manager_.FindControl(kMaxButtonControlName)); if( pControl ) pControl->SetVisible(true); pControl = static_cast<CControlUI*>(paint_manager_.FindControl(kRestoreButtonControlName)); if( pControl ) pControl->SetVisible(false); #else SendMessage(WM_SYSCOMMAND, SC_RESTORE, 0); #endif } else if (_tcsicmp(msg.pSender->GetName(), _T("select_all_btn")) == 0) { CContainerUI* pDriverList = static_cast<CContainerUI*>(paint_manager_.FindControl(_T("driver_list"))); for (int i = 0; (pDriverList != NULL) && (i < pDriverList->GetCount()); ++i) { COptionUI* pDriver = static_cast<COptionUI*>(pDriverList->GetItemAt(i)->GetInterface(_T("Option"))); if (pDriver != NULL) pDriver->Selected(true); } } else if (_tcsicmp(msg.pSender->GetName(), _T("uninstall_btn")) == 0) { vector<tString> deleted_printer_driver; DWORD dwError = 0; TCHAR szBuf[MAX_PATH] = {0}; CContainerUI* pDriverList = static_cast<CContainerUI*>(paint_manager_.FindControl(_T("driver_list"))); for (int i = 0; (pDriverList != NULL) && (i < pDriverList->GetCount()); ++i) { COptionUI* pDriver = static_cast<COptionUI*>(pDriverList->GetItemAt(i)->GetInterface(_T("Option"))); if ((pDriver != NULL) && pDriver->IsSelected()) { // 涉及到的API: DeletePrinter DeletePrinterDriver HANDLE hPrinter = NULL; _stprintf_s(szBuf, MAX_PATH - 1, pDriver->GetText().GetData()); PRINTER_DEFAULTS PrtDefault = {NULL, NULL, PRINTER_ALL_ACCESS}; OpenPrinter(szBuf, &hPrinter, &PrtDefault); if (hPrinter != NULL) { DWORD dwNeeded = 0; GetPrinter(hPrinter, 2, NULL, 0, &dwNeeded); LPBYTE lpBuffer = (LPBYTE)malloc(dwNeeded); if (lpBuffer != NULL) { GetPrinter(hPrinter, 2, lpBuffer, dwNeeded, &dwNeeded); DeletePrinter(hPrinter); dwError = GetLastError(); vector<tString>::const_iterator citer = find(deleted_printer_driver.begin(), deleted_printer_driver.end(), ((PRINTER_INFO_2*)lpBuffer)->pDriverName); if (citer == deleted_printer_driver.end()) { deleted_printer_driver.push_back(((PRINTER_INFO_2*)lpBuffer)->pDriverName); } ClosePrinter(hPrinter); free(lpBuffer); } } } } for (vector<tString>::const_iterator citer = deleted_printer_driver.begin(); citer != deleted_printer_driver.end(); ++citer) { _stprintf_s(szBuf, MAX_PATH - 1, citer->c_str()); DeletePrinterDriver(NULL, NULL, szBuf); dwError = GetLastError(); } RestartSpoolsv(); EnumInstalledDriver(); if (IDYES == DUIMessageBox(m_hWnd, _T("注意:您需要重新启动计算机使设置生效,现在需要重启计算机吗?点击“是”立即重启计算机,点击“否”稍后您自己手动重启计算机。"), _T("重新启动计算机"), MB_YESNO)) SystemReboot(); } } else if (_tcsicmp(msg.sType, kTimer) == 0) { return OnTimer(msg); } }
void CUIDesignerView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 CClientDC dc(this); OnPrepareDC(&dc);//Device coordinates to Logical coordinates dc.SetWindowOrg(-FORM_OFFSET_X,-FORM_OFFSET_Y);//Logical coordinates to Form coordinates CPoint ptLogical=point-m_ptDPtoLP;//Device coordinates to Logical coordinates ptLogical.Offset(-FORM_OFFSET_X,-FORM_OFFSET_Y);//Logical coordinates to Form coordinates CControlUI* pControl=m_LayoutManager.FindControl(ptLogical); CTrackerElement* pTracker=NULL; if(pControl==NULL) pControl=m_LayoutManager.GetForm(); int nHit=m_MultiTracker.HitTest(ptLogical); int nType=GetControlType(pControl); if((nFlags&MK_CONTROL)==0&&nHit==hitNothing) m_MultiTracker.RemoveAll(); if(nHit==hitNothing) m_MultiTracker.Add(CreateTracker(pControl)); else m_MultiTracker.SetFocus(ptLogical); if(nHit>=0||nType==typeControl) { m_MultiTracker.Track(this, ptLogical, FALSE,&dc); } else { CUITracker tracker; int nClass=g_pToolBoxWnd->GetCurSel()->GetClass(); CRect rect; if (tracker.TrackRubberBand(this, point, TRUE)) { rect=tracker.GetRect(); rect.NormalizeRect(); rect.OffsetRect(-FORM_OFFSET_X,-FORM_OFFSET_Y); if(rect.Width()<10&&rect.Height()<10) rect.SetRect(ptLogical.x,ptLogical.y,ptLogical.x+UI_DEFAULT_WIDTH,ptLogical.y+UI_DEFAULT_HEIGHT); } else { rect.SetRect(ptLogical.x,ptLogical.y,ptLogical.x+UI_DEFAULT_WIDTH,ptLogical.y+UI_DEFAULT_HEIGHT); } if(nClass>classPointer) { CControlUI* pNewControl=m_LayoutManager.NewUI(nClass,rect,pControl); CArray<CControlUI*,CControlUI*> arrSelected; arrSelected.Add(pNewControl); m_UICommandHistory.Begin(arrSelected, actionAdd); m_UICommandHistory.End(); g_pClassView->InsertUITreeItem(pNewControl); CContainerUI *pContainer = (CContainerUI *)pNewControl->GetInterface(_T("Container")); if (pContainer != NULL) { for (int it = 0; it < pContainer->GetRowCount(); it++) { g_pClassView->InsertUITreeItem(pContainer->GetItemAt(it)); } } g_pToolBoxWnd->SetCurSel(classPointer); m_MultiTracker.RemoveAll(); m_MultiTracker.Add(CreateTracker(pNewControl)); } } g_pClassView->SelectUITreeItem(m_MultiTracker.GetFocused()); if(m_MultiTracker.GetSize()==1) g_pPropertiesWnd->ShowProperty(m_MultiTracker.GetFocused()); else g_pPropertiesWnd->HideAllProperties(TRUE,TRUE); this->Invalidate(FALSE); // __super::OnLButtonDown(nFlags, point); }