void CDialogDefaultAttribList::OnLbnSelchangeListDefaultAttrib() { // TODO: 在此添加控件通知处理程序代码 int nIndex = m_lstDefaultAttrib.GetCurSel(); if(nIndex == -1) return; CString strUIName; m_lstDefaultAttrib.GetText(nIndex, strUIName); LPCTSTR pstrDefaultAttrib = m_pManager->GetDefaultAttributeList(strUIName); CControlUI* pControl = (CControlUI*)m_lstDefaultAttrib.GetItemDataPtr(nIndex); if(pControl == NULL) { strUIName += _T("UI"); int nClass = gGetUIClass(strUIName); if(nClass == classPointer) { MessageBox(_T("无法识别此控件!"), _T("提示"), MB_ICONINFORMATION); return; } pControl = CLayoutManager::NewUI(nClass, CRect(0, 0, 0, 0), NULL, NULL); ASSERT(pControl); m_lstDefaultAttrib.SetItemDataPtr(nIndex, pControl); pControl->ApplyAttributeList(pstrDefaultAttrib); } m_wndUIProperties.ShowProperty(pControl); }
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; }
// BOOL ViCbApplyAttributeList(VApiHandle hWnd, LPCTSTR pstrList) SQInteger ViCbApplyAttributeList(HSQUIRRELVM v) { SQInteger nargs = sq_gettop(v); SQInteger Handle = 0; CControlUI* pCtrl = NULL; LPCTSTR pstrList = NULL; if (!v || 2 + 1 != nargs) {goto _Exit_;} if (OT_INTEGER != sq_gettype(v, 2)) {goto _Exit_;} if (OT_STRING != sq_gettype(v, 3)) {goto _Exit_;} sq_getinteger(v, 2, &Handle); sq_getstring(v, 3, &pstrList); pCtrl = QiHwHandleToCtrl(Handle); if (!pCtrl) {goto _Exit_;} pCtrl->ApplyAttributeList(pstrList); _Exit_: sq_pushbool(v, TRUE); return 1; }