void CheckPointListBox::DeleteAllItems() { while (GetCount() > 0) { DeleteString(0); } }
bool CCQuestNPCQueue::IsEmpty() { if ((m_Queue.empty()) || (m_nCursor >= GetCount())) return true; return false; }
// Enable all subcontrols bool wxRadioBox::Enable(bool enable) { for(int i=0; i<GetCount(); i++) Enable(i, enable); return true; }
int wxRadioBoxBase::GetNextItem(int item, wxDirection dir, long style) const { const int itemStart = item; int count = GetCount(), numCols = GetColumnCount(), numRows = GetRowCount(); bool horz = (style & wxRA_SPECIFY_COLS) != 0; do { switch ( dir ) { case wxUP: if ( horz ) { item -= numCols; } else // vertical layout { if ( !item-- ) item = count - 1; } break; case wxLEFT: if ( horz ) { if ( !item-- ) item = count - 1; } else // vertical layout { item -= numRows; } break; case wxDOWN: if ( horz ) { item += numCols; } else // vertical layout { if ( ++item == count ) item = 0; } break; case wxRIGHT: if ( horz ) { if ( ++item == count ) item = 0; } else // vertical layout { item += numRows; } break; default: wxFAIL_MSG( wxT("unexpected wxDirection value") ); return wxNOT_FOUND; } // ensure that the item is in range [0..count) if ( item < 0 ) { // first map the item to the one in the same column but in the last // row item += count; // now there are 2 cases: either it is the first item of the last // row in which case we need to wrap again and get to the last item // or we can just go to the previous item if ( item % (horz ? numCols : numRows) ) item--; else item = count - 1; } else if ( item >= count ) { // same logic as above item -= count; // ... except that we need to check if this is not the last item, // not the first one if ( (item + 1) % (horz ? numCols : numRows) ) item++; else item = 0; } wxASSERT_MSG( item < count && item >= 0, wxT("logic error in wxRadioBox::GetNextItem()") ); } // we shouldn't select the non-active items, continue looking for a // visible and shown one unless we came back to the item we started from in // which case bail out to avoid infinite loop while ( !(IsItemShown(item) && IsItemEnabled(item)) && item != itemStart ); return item; }
int COXListPopup::Pick(CRect rect, CRect rectParent) { AdjustDisplayRectangle(rect, rectParent); MoveWindow(rect); ShowWindow(SW_SHOWNA); SetCapture(); // init message loop bool bBreak = false; int iReturnItemIdx = -1; while (!bBreak) { MSG msg; VERIFY(::GetMessage(&msg, NULL, 0, 0)); if (msg.message == WM_LBUTTONUP) { // Get the item under the mouse cursor int xPos = GET_X_LPARAM(msg.lParam); int yPos = GET_Y_LPARAM(msg.lParam); BOOL bOutside; UINT nIndex = ItemFromPoint(CPoint(xPos, yPos), bOutside); if (!bOutside) iReturnItemIdx = (int) nIndex; bBreak = true; } else if (msg.message == WM_KEYDOWN) { // Handle ESCAPE, UP, DOWN and ENTER if (msg.wParam == VK_ESCAPE) bBreak = true; else if (msg.wParam == VK_UP) { int iSel = GetCurSel(); if (iSel == -1 || iSel == 0) SetCurSel(0); else SetCurSel(iSel - 1); } else if (msg.wParam == VK_DOWN) { // Move the selection 1 item down int iSel = GetCurSel(); if (iSel == -1) SetCurSel(0); else if (iSel == GetCount() - 1) { // Do nothing } else SetCurSel(iSel + 1); } else if (msg.wParam == VK_RETURN) { iReturnItemIdx = GetCurSel(); bBreak = true; } } else if (msg.message == WM_LBUTTONDOWN) { // Do nothing } else if (msg.message == WM_MOUSEMOVE) { // Select the item under the mouse cursor int xPos = GET_X_LPARAM(msg.lParam); int yPos = GET_Y_LPARAM(msg.lParam); BOOL bOutside; UINT nIndex = ItemFromPoint(CPoint(xPos, yPos), bOutside); if (!bOutside) SetCurSel((int) nIndex); } else { DispatchMessage(&msg); } } ReleaseCapture(); ShowWindow(SW_HIDE); return iReturnItemIdx; }
{ SetName("Hask"); } void MoleculesHaskell:: Init(const bool) throw (...) { struct ParallelScript::NamedFunctions_s funcs[] = { {"generateMolecules@16", (void **)&GenerateMolecules}, {0, 0} }; ScriptInit(L"MoleculesHaskell.dll", funcs); GenerateMolecules((float *)GetAtoms().GetData(), (int)GetCount(), GetHeight(), GetWidth()); CUmodule module = 0; TryCUDA(cuModuleLoad(&module, "MoleculesHaskell.ptx")); m_kernel = 0; TryCUDA(cuModuleGetFunction(&m_kernel, module, "DoAtoms")); } void MoleculesHaskell:: Execute() throw (...) { //printf("0"); size_t height = GetHeight(), width = GetWidth(),
// returns true if key was consumed bool wxVListBoxComboPopup::HandleKey( int keycode, bool saturate, wxChar keychar ) { const int itemCount = GetCount(); // keys do nothing in the empty control and returning immediately avoids // using invalid indices below if ( !itemCount ) return false; int value = m_value; int comboStyle = m_combo->GetWindowStyle(); if ( keychar > 0 ) { // we have character equivalent of the keycode; filter out these that // are not printable characters if ( !wxIsprint(keychar) ) keychar = 0; } if ( keycode == WXK_DOWN || keycode == WXK_NUMPAD_DOWN || keycode == WXK_RIGHT ) { value++; StopPartialCompletion(); } else if ( keycode == WXK_UP || keycode == WXK_NUMPAD_UP || keycode == WXK_LEFT ) { value--; StopPartialCompletion(); } else if ( keycode == WXK_PAGEDOWN || keycode == WXK_NUMPAD_PAGEDOWN ) { value+=10; StopPartialCompletion(); } else if ( keycode == WXK_PAGEUP || keycode == WXK_NUMPAD_PAGEUP ) { value-=10; StopPartialCompletion(); } else if ( keycode == WXK_HOME || keycode == WXK_NUMPAD_HOME ) { value=0; StopPartialCompletion(); } else if ( keycode == WXK_END || keycode == WXK_NUMPAD_END ) { value=itemCount-1; StopPartialCompletion(); } else if ( keychar && (comboStyle & wxCB_READONLY) ) { // Try partial completion // find the new partial completion string #if wxUSE_TIMER if (m_partialCompletionTimer.IsRunning()) m_partialCompletionString+=wxString(keychar); else #endif // wxUSE_TIMER m_partialCompletionString=wxString(keychar); // now search through the values to see if this is found int found = -1; unsigned int length=m_partialCompletionString.length(); int i; for (i=0; i<itemCount; i++) { wxString item=GetString(i); if (( item.length() >= length) && (! m_partialCompletionString.CmpNoCase(item.Left(length)))) { found=i; break; } } if (found<0) { StopPartialCompletion(); ::wxBell(); return true; // to stop the first value being set } else { value=i; #if wxUSE_TIMER m_partialCompletionTimer.Start(wxODCB_PARTIAL_COMPLETION_TIME, true); #endif // wxUSE_TIMER } } else return false; if ( saturate ) { if ( value >= itemCount ) value = itemCount - 1; else if ( value < 0 ) value = 0; } else { if ( value >= itemCount ) value -= itemCount; else if ( value < 0 ) value += itemCount; } if ( value == m_value ) // Even if value was same, don't skip the event // (good for consistency) return true; if ( value >= 0 ) m_combo->ChangeValue(m_strings[value]); // The m_combo->SetValue() call above sets m_value to the index of this // string. But if there are more identical string, the index is of the // first occurence, which may be wrong, so set the index explicitly here, // _after_ the SetValue() call. m_value = value; SendComboBoxEvent(m_value); return true; }
void Item::SaveToDB(SQLTransaction& trans) { bool isInTransaction = !(trans.null()); if (!isInTransaction) trans = CharacterDatabase.BeginTransaction(); uint32 guid = GetGUIDLow(); switch (uState) { case ITEM_NEW: case ITEM_CHANGED: { uint8 index = 0; PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(uState == ITEM_NEW ? CHAR_REP_ITEM_INSTANCE : CHAR_UPD_ITEM_INSTANCE); stmt->setUInt32( index, GetEntry()); stmt->setUInt32(++index, GUID_LOPART(GetOwnerGUID())); stmt->setUInt32(++index, GUID_LOPART(GetUInt64Value(ITEM_FIELD_CREATOR))); stmt->setUInt32(++index, GUID_LOPART(GetUInt64Value(ITEM_FIELD_GIFTCREATOR))); stmt->setUInt32(++index, GetCount()); stmt->setUInt32(++index, GetUInt32Value(ITEM_FIELD_DURATION)); std::ostringstream ssSpells; for (uint8 i = 0; i < MAX_ITEM_PROTO_SPELLS; ++i) ssSpells << GetSpellCharges(i) << ' '; stmt->setString(++index, ssSpells.str()); stmt->setUInt32(++index, GetUInt32Value(ITEM_FIELD_FLAGS)); std::ostringstream ssEnchants; for (uint8 i = 0; i < MAX_ENCHANTMENT_SLOT; ++i) { ssEnchants << GetEnchantmentId(EnchantmentSlot(i)) << ' '; ssEnchants << GetEnchantmentDuration(EnchantmentSlot(i)) << ' '; ssEnchants << GetEnchantmentCharges(EnchantmentSlot(i)) << ' '; } stmt->setString(++index, ssEnchants.str()); stmt->setInt16 (++index, GetItemRandomPropertyId()); stmt->setUInt16(++index, GetUInt32Value(ITEM_FIELD_DURABILITY)); stmt->setUInt32(++index, GetUInt32Value(ITEM_FIELD_CREATE_PLAYED_TIME)); stmt->setString(++index, m_text); stmt->setUInt32(++index, guid); trans->Append(stmt); if ((uState == ITEM_CHANGED) && HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_WRAPPED)) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GIFT_OWNER); stmt->setUInt32(0, GUID_LOPART(GetOwnerGUID())); stmt->setUInt32(1, guid); trans->Append(stmt); } break; } case ITEM_REMOVED: { PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEM_INSTANCE); stmt->setUInt32(0, guid); trans->Append(stmt); if (HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_WRAPPED)) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GIFT); stmt->setUInt32(0, guid); trans->Append(stmt); } if (!isInTransaction) CharacterDatabase.CommitTransaction(trans); // Delete the items if this is a container if (!loot.isLooted()) ItemContainerDeleteLootMoneyAndLootItemsFromDB(); delete this; return; } case ITEM_UNCHANGED: break; } SetState(ITEM_UNCHANGED); if (!isInTransaction) CharacterDatabase.CommitTransaction(trans); }
int wxListBox::DoListHitTest(const wxPoint& inpoint) const { OSStatus err; // There are few reasons why this is complicated: // 1) There is no native HitTest function for Mac // 2) GetDataBrowserItemPartBounds only works on visible items // 3) We can't do it through GetDataBrowserTableView[Item]RowHeight // because what it returns is basically inaccurate in the context // of the coordinates we want here, but we use this as a guess // for where the first visible item lies wxPoint point = inpoint; // get column property ID (req. for call to itempartbounds) DataBrowserTableViewColumnID colId = 0; err = GetDataBrowserTableViewColumnProperty(m_peer->GetControlRef(), 0, &colId); wxCHECK_MSG(err == noErr, wxNOT_FOUND, wxT("Unexpected error from GetDataBrowserTableViewColumnProperty")); // OK, first we need to find the first visible item we have - // this will be the "low" for our binary search. There is no real // easy way around this, as we will need to do a SLOW linear search // until we find a visible item, but we can do a cheap calculation // via the row height to speed things up a bit UInt32 scrollx, scrolly; err = GetDataBrowserScrollPosition(m_peer->GetControlRef(), &scrollx, &scrolly); wxCHECK_MSG(err == noErr, wxNOT_FOUND, wxT("Unexpected error from GetDataBrowserScrollPosition")); UInt16 height; err = GetDataBrowserTableViewRowHeight(m_peer->GetControlRef(), &height); wxCHECK_MSG(err == noErr, wxNOT_FOUND, wxT("Unexpected error from GetDataBrowserTableViewRowHeight")); // these indices are 0-based, as usual, so we need to add 1 to them when // passing them to data browser functions which use 1-based indices int low = scrolly / height, high = GetCount() - 1; // search for the first visible item (note that the scroll guess above // is the low bounds of where the item might lie so we only use that as a // starting point - we should reach it within 1 or 2 iterations of the loop) while ( low <= high ) { Rect bounds; err = GetDataBrowserItemPartBounds( m_peer->GetControlRef(), low + 1, colId, kDataBrowserPropertyEnclosingPart, &bounds); // note +1 to translate to Mac ID if ( err == noErr ) break; // errDataBrowserItemNotFound is expected as it simply means that the // item is not currently visible -- but other errors are not wxCHECK_MSG( err == errDataBrowserItemNotFound, wxNOT_FOUND, wxT("Unexpected error from GetDataBrowserItemPartBounds") ); low++; } // NOW do a binary search for where the item lies, searching low again if // we hit an item that isn't visible while ( low <= high ) { int mid = (low + high) / 2; Rect bounds; err = GetDataBrowserItemPartBounds( m_peer->GetControlRef(), mid + 1, colId, kDataBrowserPropertyEnclosingPart, &bounds); //note +1 to trans to mac id wxCHECK_MSG( err == noErr || err == errDataBrowserItemNotFound, wxNOT_FOUND, wxT("Unexpected error from GetDataBrowserItemPartBounds") ); if ( err == errDataBrowserItemNotFound ) { // item not visible, attempt to find a visible one // search lower high = mid - 1; } else // visible item, do actual hitttest { // if point is within the bounds, return this item (since we assume // all x coords of items are equal we only test the x coord in // equality) if ((point.x >= bounds.left && point.x <= bounds.right) && (point.y >= bounds.top && point.y <= bounds.bottom) ) { // found! return mid; } if ( point.y < bounds.top ) // index(bounds) greater then key(point) high = mid - 1; else // index(bounds) less then key(point) low = mid + 1; } } return wxNOT_FOUND; }
void MyListModel::AddMany() { Reset( GetCount()+1000 ); }
CItem* CContainer::ContentFindRandom() const { ADDTOCALLSTACK("CContainer::ContentFindRandom"); // returns Pointer of random item, NULL if player carrying none return( dynamic_cast <CItem*> ( GetAt( Calc_GetRandVal( GetCount())))); }
void CListBoxEx::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) { m_pwndSBV->MoveWindow(m_rcSBV); if ((int)lpDrawItemStruct->itemID < 0) return; CString text; GetText(lpDrawItemStruct->itemID, text); CRect rect = lpDrawItemStruct->rcItem; int cntItem = GetCount(); int numShow = m_rcSBV.Height() / m_nItemHeight; // 스크롤바가 생성되면 List Box의 드로우 영역을 줄인다. if (cntItem > numShow) rect.right -= 20; CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC); Graphics mainG (lpDrawItemStruct->hDC); Color clrText = m_clrTextNom; // 선택된 Item 영역 그리는 부분. if ((lpDrawItemStruct->itemState & ODS_SELECTED) && (lpDrawItemStruct->itemAction & (ODA_SELECT | ODA_DRAWENTIRE))) { DrawItem(&mainG,rect,m_clrItemHot); clrText = m_clrTextHot; DrawText(&mainG,rect,text,clrText); } // 기본 Item 영역 그리는 부분. if (!(lpDrawItemStruct->itemState & ODS_SELECTED) && (lpDrawItemStruct->itemAction & (ODA_SELECT | ODA_DRAWENTIRE))) { if (m_bModeOneColor == true) { DrawItem(&mainG,rect,m_clrItemNom1); } else { Color clr; lpDrawItemStruct->itemID%2 ? clr = m_clrItemNom1 : clr = m_clrItemNom2; DrawItem(&mainG,rect,clr); } DrawText(&mainG,rect,text,clrText); } // 선택 -> 미선택 Item 영역 그리는 부분. if (!(lpDrawItemStruct->itemState & ODS_SELECTED) && (lpDrawItemStruct->itemAction & ODA_SELECT)) { if (m_bModeOneColor == true) { DrawItem(&mainG,rect,m_clrItemNom1); } else { Color clr; lpDrawItemStruct->itemID%2 ? clr = m_clrItemNom1 : clr = m_clrItemNom2; DrawItem(&mainG,rect,clr); } DrawText(&mainG,rect,text,clrText); } }
void CDownloadGroups::Serialize(CArchive& ar) { int nVersion = GROUPS_SER_VERSION; BYTE nState; if ( ar.IsStoring() ) { CleanTemporary(); ar << nVersion; ar.WriteCount( Downloads.GetCount() ); for ( POSITION pos = Downloads.GetIterator() ; pos ; ) { ar << Downloads.GetNext( pos )->m_nSerID; } ar.WriteCount( GetCount() ); for ( POSITION pos = GetIterator() ; pos ; ) { CDownloadGroup* pGroup = GetNext( pos ); nState = ( pGroup == m_pSuper ) ? 1 : 0; ar << nState; pGroup->Serialize( ar, nVersion ); } } else { ar >> nVersion; if ( nVersion <= 1 || nVersion > GROUPS_SER_VERSION ) AfxThrowUserException(); DWORD_PTR nCount = ar.ReadCount(); for ( ; nCount > 0 ; nCount-- ) { DWORD nDownload; ar >> nDownload; if ( CDownload* pDownload = Downloads.FindBySID( nDownload ) ) Downloads.Reorder( pDownload, NULL ); } if ( ( nCount = ar.ReadCount() ) != 0 ) Clear(); for ( ; nCount > 0 ; nCount-- ) { CDownloadGroup* pGroup = Add(); ar >> nState; if ( nState == 1 ) m_pSuper = pGroup; pGroup->Serialize( ar, nVersion ); } if ( nVersion < 5 ) { CDownloadGroup* pGroup = Add( _T("Image") ); pGroup->SetSchema( CSchema::uriImage ); pGroup->SetDefaultFilters(); pGroup = Add( _T("Collection") ); pGroup->SetSchema( CSchema::uriCollection ); pGroup->SetDefaultFilters(); } GetSuperGroup(); for ( POSITION pos = Downloads.GetIterator() ; pos ; ) { m_pSuper->Add( Downloads.GetNext( pos ) ); } } }
void CMenuElementUI::DoEvent(TEventUI& event) { if( event.Type == UIEVENT_MOUSEENTER ) { CListContainerElementUI::DoEvent(event); if( m_pWindow ) return; bool hasSubMenu = false; for( int i = 0; i < GetCount(); ++i ) { if( GetItemAt(i)->GetInterface(_T("MenuElement")) != NULL ) { (static_cast<CMenuElementUI*>(GetItemAt(i)->GetInterface(_T("MenuElement"))))->SetVisible(true); (static_cast<CMenuElementUI*>(GetItemAt(i)->GetInterface(_T("MenuElement"))))->SetInternVisible(true); hasSubMenu = true; } } if( hasSubMenu ) { m_pOwner->SelectItem(GetIndex(), true); CreateMenuWnd(); } else { ContextMenuParam param; param.hWnd = m_pManager->GetPaintWindow(); param.wParam = 2; CMenuWnd::GetGlobalContextMenuObserver().RBroadcast(param); m_pOwner->SelectItem(GetIndex(), true); } return; } if( event.Type == UIEVENT_BUTTONUP ) { if( IsEnabled() ){ CListContainerElementUI::DoEvent(event); if( m_pWindow ) return; bool hasSubMenu = false; for( int i = 0; i < GetCount(); ++i ) { if( GetItemAt(i)->GetInterface(_T("MenuElement")) != NULL ) { (static_cast<CMenuElementUI*>(GetItemAt(i)->GetInterface(_T("MenuElement"))))->SetVisible(true); (static_cast<CMenuElementUI*>(GetItemAt(i)->GetInterface(_T("MenuElement"))))->SetInternVisible(true); hasSubMenu = true; } } if( hasSubMenu ) { CreateMenuWnd(); } else { SetChecked(!GetChecked()); MenuCmd* pMenuCmd = new MenuCmd(); lstrcpy(pMenuCmd->szName, GetName().GetData()); lstrcpy(pMenuCmd->szUserData, GetUserData().GetData()); lstrcpy(pMenuCmd->szText, GetText().GetData()); pMenuCmd->bChecked = GetChecked(); ContextMenuParam param; param.hWnd = m_pManager->GetPaintWindow(); param.wParam = 1; CMenuWnd::GetGlobalContextMenuObserver().RBroadcast(param); if (CMenuWnd::GetGlobalContextMenuObserver().GetManager() != NULL) { if (!PostMessage(CMenuWnd::GetGlobalContextMenuObserver().GetManager()->GetPaintWindow(), WM_MENUCLICK, (WPARAM)pMenuCmd, NULL)) { delete pMenuCmd; pMenuCmd = NULL; } } } } return; } if ( event.Type == UIEVENT_KEYDOWN && event.chKey == VK_RIGHT ) { if( m_pWindow ) return; bool hasSubMenu = false; for( int i = 0; i < GetCount(); ++i ) { if( GetItemAt(i)->GetInterface(_T("MenuElement")) != NULL ) { (static_cast<CMenuElementUI*>(GetItemAt(i)->GetInterface(_T("MenuElement"))))->SetVisible(true); (static_cast<CMenuElementUI*>(GetItemAt(i)->GetInterface(_T("MenuElement"))))->SetInternVisible(true); hasSubMenu = true; } } if( hasSubMenu ) { m_pOwner->SelectItem(GetIndex(), true); CreateMenuWnd(); } else { ContextMenuParam param; param.hWnd = m_pManager->GetPaintWindow(); param.wParam = 2; CMenuWnd::GetGlobalContextMenuObserver().RBroadcast(param); m_pOwner->SelectItem(GetIndex(), true); } return; } CListContainerElementUI::DoEvent(event); }
void wxListBoxBase::AppendAndEnsureVisible(const wxString& s) { Append(s); EnsureVisible(GetCount() - 1); }
void CSkinListBox::DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct ) { return; //没有节点就不用继续执行了 if( GetCount()==0 ) return; //变量定义 CRect rcItem=lpDrawItemStruct->rcItem; CDC * pDCControl=CDC::FromHandle(lpDrawItemStruct->hDC); //创建缓冲 CDC BufferDC; CBitmap ImageBuffer; BufferDC.CreateCompatibleDC(pDCControl); ImageBuffer.CreateCompatibleBitmap(pDCControl,rcItem.Width(),rcItem.Height()); //设置环境 BufferDC.SelectObject(&ImageBuffer); BufferDC.SelectObject(GetCtrlFont()); //获取字符 CString strString; GetText(lpDrawItemStruct->itemID,strString); //计算位置 CRect rcString; rcString.SetRect(4,0,rcItem.Width()-8,rcItem.Height()); //颜色定义 COLORREF crTextColor=((lpDrawItemStruct->itemState&ODS_SELECTED)!=0)?m_colSelectText:m_colNormalText; //绘画背景 BufferDC.FillSolidRect(0,0,rcItem.Width(),rcItem.Height(),m_colBack); //节点选中 if ( (lpDrawItemStruct->itemState&ODS_SELECTED) != 0 ) { if ( m_pSelectImg!= NULL && !m_pSelectImg->IsNull() ) { m_pSelectImg->Draw(&BufferDC,CRect(0,0,rcItem.Width(),rcItem.Height())); } } //节点高亮 else if ( m_nHovenItem == lpDrawItemStruct->itemID ) { if ( m_pBackImgH!= NULL && !m_pBackImgH->IsNull() ) { m_pBackImgH->Draw(&BufferDC,CRect(0,0,rcItem.Width(),rcItem.Height())); } } //绘画字符 BufferDC.SetBkMode(TRANSPARENT); BufferDC.SetTextColor(crTextColor); BufferDC.DrawText(strString,&rcString,DT_VCENTER|DT_SINGLELINE); //绘画界面 pDCControl->BitBlt(rcItem.left,rcItem.top,rcItem.Width(),rcItem.Height(),&BufferDC,0,0,SRCCOPY); //清理资源 BufferDC.DeleteDC(); ImageBuffer.DeleteObject(); }
//*********************************************************************************************** void CBCGPRecentFilesListBox::FillList(LPCTSTR lpszSelectedPath/* = NULL*/) { ASSERT(GetSafeHwnd() != NULL); ResetContent(); ResetPins(); m_lstCaptionIndexes.RemoveAll(); m_nHighlightedItem = -1; m_bIsPinHighlighted = FALSE; int cyIcon = 32; if (globalData.GetRibbonImageScale () != 1.) { cyIcon = (int) (.5 + globalData.GetRibbonImageScale () * cyIcon); } int nItemHeight = max(cyIcon + 4, globalData.GetTextHeight () * 5 / 2); SetItemHeight(-1, nItemHeight); for (int i = 0; i < m_arIcons.GetSize(); i++) { HICON hIcon = m_arIcons[i]; if (hIcon != NULL) { ::DestroyIcon(hIcon); } } m_arIcons.RemoveAll(); BOOL bHasPinnedItems = FALSE; // Add "pinned" items first if (g_pWorkspace != NULL) { const CStringArray& ar = g_pWorkspace->GetPinnedPaths(!m_bFoldersMode); for (int i = 0; i < (int)ar.GetSize(); i++) { int nIndex = AddItem(ar[i], 0, TRUE); if (nIndex >= 0 && lpszSelectedPath != NULL && ar[i] == lpszSelectedPath) { SetCurSel(nIndex); } if (nIndex >= 0) { bHasPinnedItems = TRUE; } } } if (bHasPinnedItems) { AddSeparator(); m_arIcons.Add(NULL); } // Add MRU files: CRecentFileList* pMRUFiles = ((CBCGPApp*) AfxGetApp ())->m_pRecentFileList; if (pMRUFiles != NULL) { for (int i = 0; i < pMRUFiles->GetSize (); i++) { CString strPath = (*pMRUFiles)[i]; int nIndex = AddItem(strPath, (ID_FILE_MRU_FILE1 + i)); if (nIndex >= 0 && lpszSelectedPath != NULL && strPath == lpszSelectedPath) { SetCurSel(nIndex); } } } int nLastIndex = GetCount() - 1; if (nLastIndex >= 0 && IsSeparatorItem(nLastIndex)) { DeleteString(nLastIndex); } }
void CSkinListBox::OnPaint() { CPaintDC dc(this); // device context for painting CRect rcClient; GetClientRect(&rcClient); CMemoryDC BufferDC(&dc,rcClient); //创建缓冲 CImage ImageBuffer; ImageBuffer.Create(rcClient.Width(),rcClient.Height(),32); //变量定义 CDC * pBufferDC=CDC::FromHandle(ImageBuffer.GetDC()); //变量定义 CRect rcItem; pBufferDC->SelectObject(GetCtrlFont()); //绘画背景 pBufferDC->FillSolidRect(0,0,rcClient.Width(),rcClient.Height(),m_colBack); DrawParentWndBg(GetSafeHwnd(),pBufferDC->GetSafeHdc()); if (m_pBackImgN != NULL && !m_pBackImgN->IsNull()) m_pBackImgN->Draw(pBufferDC, rcClient); for (int i=0;i<GetCount();i++) { GetItemRect(i,&rcItem); //获取字符 CString strString; GetText(i,strString); //计算位置 CRect rcString; rcString.SetRect(rcItem.left+4,rcItem.top,rcItem.right-8,rcItem.bottom); bool bSelect = GetSel(i); //颜色定义 COLORREF crTextColor=bSelect?m_colSelectText:m_colNormalText; //节点选中 if ( bSelect ) { if ( m_pSelectImg!= NULL && !m_pSelectImg->IsNull() ) { m_pSelectImg->Draw(pBufferDC,CRect(rcItem.left,rcItem.top,rcItem.right,rcItem.bottom)); } } //节点高亮 else if ( m_nHovenItem == i ) { if ( m_pBackImgH!= NULL && !m_pBackImgH->IsNull() ) { m_pBackImgH->Draw(pBufferDC,CRect(rcItem.left,rcItem.top,rcItem.right,rcItem.bottom)); } } //绘画字符 pBufferDC->SetBkMode(TRANSPARENT); pBufferDC->SetTextColor(crTextColor); pBufferDC->DrawText(strString,&rcString,DT_VCENTER|DT_SINGLELINE); } //绘画界面 BufferDC.BitBlt(0,0,rcClient.Width(),rcClient.Height(),pBufferDC,0,0,SRCCOPY); //清理资源 ImageBuffer.ReleaseDC(); }
void wxRadioBox::PositionAllButtons(int x, int y, int width, int WXUNUSED(height)) { wxSize maxSize = GetMaxButtonSize(); int maxWidth = maxSize.x, maxHeight = maxSize.y; // Now position all the buttons: the current button will be put at // wxPoint(x_offset, y_offset) and the new row/column will start at // startX/startY. The size of all buttons will be the same wxSize(maxWidth, // maxHeight) except for the buttons in the last column which should extend // to the right border of radiobox and thus can be wider than this. // Also, remember that wxRA_SPECIFY_COLS means that we arrange buttons in // left to right order and GetMajorDim() is the number of columns while // wxRA_SPECIFY_ROWS means that the buttons are arranged top to bottom and // GetMajorDim() is the number of rows. int cx1, cy1; wxGetCharSize(m_hWnd, &cx1, &cy1, GetFont()); int x_offset = x + cx1; int y_offset = y + cy1; // Add extra space under the label, if it exists. if (!wxControl::GetLabel().empty()) y_offset += cy1/2; int startX = x_offset; int startY = y_offset; const unsigned int count = GetCount(); for (unsigned int i = 0; i < count; i++) { // the last button in the row may be wider than the other ones as the // radiobox may be wider than the sum of the button widths (as it // happens, for example, when the radiobox label is very long) bool isLastInTheRow; if ( m_windowStyle & wxRA_SPECIFY_COLS ) { // item is the last in its row if it is a multiple of the number of // columns or if it is just the last item unsigned int n = i + 1; isLastInTheRow = ((n % GetMajorDim()) == 0) || (n == count); } else // wxRA_SPECIFY_ROWS { // item is the last in the row if it is in the last columns isLastInTheRow = i >= (count/GetMajorDim())*GetMajorDim(); } // is this the start of new row/column? if ( i && (i % GetMajorDim() == 0) ) { if ( m_windowStyle & wxRA_SPECIFY_ROWS ) { // start of new column y_offset = startY; x_offset += maxWidth + cx1; } else // start of new row { x_offset = startX; y_offset += maxHeight; if (m_radioWidth[0]>0) y_offset += cy1/2; } } int widthBtn; if ( isLastInTheRow ) { // make the button go to the end of radio box widthBtn = startX + width - x_offset - 2*cx1; if ( widthBtn < maxWidth ) widthBtn = maxWidth; } else { // normal button, always of the same size widthBtn = maxWidth; } // make all buttons of the same, maximal size - like this they cover // the radiobox entirely and the radiobox tooltips are always shown // (otherwise they are not when the mouse pointer is in the radiobox // part not belonging to any radiobutton) DoMoveSibling((*m_radioButtons)[i], x_offset, y_offset, widthBtn, maxHeight); // where do we put the next button? if ( m_windowStyle & wxRA_SPECIFY_ROWS ) { // below this one y_offset += maxHeight; if (m_radioWidth[0]>0) y_offset += cy1/2; } else { // to the right of this one x_offset += widthBtn + cx1; } } }
wxRibbonGalleryItem* wxRibbonGallery::GetItem(unsigned int n) { if(n >= GetCount()) return NULL; return m_items.Item(n); }
void TCopyParamList::Add(const UnicodeString & Name, TCopyParamType * CopyParam, TCopyParamRule * Rule) { Insert(GetCount(), Name, CopyParam, Rule); }
BOOL CDictionary::FindSlot (int iKey, int *retiPos) const // FindSlot // // Returns the position in the array for the given key. If // the key was not found, retiPos is the position at which the // key should be inserted. Return TRUE if the key is found, // FALSE otherwise. { int iLeft, iRight, iCount; int iEntryKey, iCompare; // If there are no entries, then we always fail iCount = GetCount(); if (iCount == 0) { *retiPos = 0; return FALSE; } // Do a binary search looking for the key iLeft = 0; iRight = iCount - 1; while (iRight > iLeft) { int iTry; // Pick a point in between our two extremes iTry = iLeft + (iRight - iLeft) / 2; // Get the key at that point. Remember that // we store the key and the value in a single array, so // we need to multiply by two. iEntryKey = m_Array.GetElement(iTry * 2); // Figure out if we've matched the key iCompare = Compare(iEntryKey, iKey); if (iCompare == 0) { *retiPos = iTry * 2; return TRUE; } else if (iCompare == 1) iRight = iTry - 1; else iLeft = iTry + 1; } // If we could not find the key, compute the insertion // position iEntryKey = m_Array.GetElement(iLeft * 2); iCompare = Compare(iEntryKey, iKey); if (iCompare == 0) { *retiPos = iLeft * 2; return TRUE; } else if (iCompare == 1) *retiPos = iLeft * 2; else *retiPos = (iLeft + 1) * 2; return FALSE; }
// retrieve helptext for a particular item wxString wxRadioBoxBase::GetItemHelpText( unsigned int n ) const { wxCHECK_MSG( n < GetCount(), wxEmptyString, wxT("Invalid item index") ); return m_itemsHelpTexts.empty() ? wxString() : m_itemsHelpTexts[n]; }
// /// Inserts a new tab described by the 'item' parameter to the tab control at the /// position specified by the 'index' parameter. The return value is the index of /// the new tab or -1 in case of error. // int TTabControl::Add(const TTabItem& item) { return Insert(item, GetCount()); }
LRESULT CAdvComboBox::OnGetCount( WPARAM /*wParam*/, LPARAM /*lParam*/ ) { return GetCount(); }
// // Adds a new tab with the 'tabText' caption to the tab control Returns the index // of the new tab, if successful or -1 otherwise. // int TTabControl::Add(LPCTSTR tabText) { return Insert(tabText, GetCount()); }
void Item::SaveToDB(SQLTransaction& trans) { uint32 guid = GetGUIDLow(); switch (uState) { case ITEM_NEW: case ITEM_CHANGED: { uint8 index = 0; PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(uState == ITEM_NEW ? CHAR_ADD_ITEM_INSTANCE : CHAR_UPDATE_ITEM_INSTANCE); stmt->setUInt32( index, GetEntry()); stmt->setUInt32(++index, GUID_LOPART(GetOwnerGUID())); stmt->setUInt32(++index, GUID_LOPART(GetUInt64Value(ITEM_FIELD_CREATOR))); stmt->setUInt32(++index, GUID_LOPART(GetUInt64Value(ITEM_FIELD_GIFTCREATOR))); stmt->setUInt32(++index, GetCount()); stmt->setUInt32(++index, GetUInt32Value(ITEM_FIELD_DURATION)); std::ostringstream ssSpells; for (uint8 i = 0; i < MAX_ITEM_PROTO_SPELLS; ++i) ssSpells << GetSpellCharges(i) << " "; stmt->setString(++index, ssSpells.str()); stmt->setUInt32(++index, GetUInt32Value(ITEM_FIELD_FLAGS)); std::ostringstream ssEnchants; for (uint8 i = 0; i < MAX_ENCHANTMENT_SLOT; ++i) { ssEnchants << GetEnchantmentId(EnchantmentSlot(i)) << " "; ssEnchants << GetEnchantmentDuration(EnchantmentSlot(i)) << " "; ssEnchants << GetEnchantmentCharges(EnchantmentSlot(i)) << " "; } stmt->setString(++index, ssEnchants.str()); stmt->setInt32 (++index, GetItemRandomPropertyId()); stmt->setUInt32(++index, GetUInt32Value(ITEM_FIELD_DURABILITY)); stmt->setUInt32(++index, GetUInt32Value(ITEM_FIELD_CREATE_PLAYED_TIME)); stmt->setString(++index, m_text); stmt->setUInt32(++index, guid); trans->Append(stmt); if ((uState == ITEM_CHANGED) && HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_WRAPPED)) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPDATE_GIFT_OWNER); stmt->setUInt32(0, GUID_LOPART(GetOwnerGUID())); stmt->setUInt32(1, guid); trans->Append(stmt); } break; } case ITEM_REMOVED: { PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEM_INSTANCE); stmt->setUInt32(0, guid); trans->Append(stmt); if (HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_WRAPPED)) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GIFT); stmt->setUInt32(0, guid); trans->Append(stmt); } delete this; return; } case ITEM_UNCHANGED: break; } SetState(ITEM_UNCHANGED); }
CG2Packet* CNeighboursWithG2::CreateQueryWeb(GGUID* pGUID, CNeighbour* pExcept) { CG2Packet* pPacket = CG2Packet::New( G2_PACKET_QUERY_ACK, TRUE ); DWORD tNow = time( NULL ); pPacket->WritePacket( "TS", 4 ); pPacket->WriteLongBE( tNow ); theApp.Message( MSG_DEBUG, _T("Creating a query acknowledgement:") ); pPacket->WritePacket( "D", 8 ); pPacket->WriteLongLE( Network.m_pHost.sin_addr.S_un.S_addr ); pPacket->WriteShortBE( htons( Network.m_pHost.sin_port ) ); pPacket->WriteShortBE( GetCount( PROTOCOL_G2, nrsConnected, ntLeaf ) ); for ( POSITION pos = GetIterator() ; pos ; ) { CG2Neighbour* pNeighbour = (CG2Neighbour*)GetNext( pos ); if ( pNeighbour->m_nProtocol == PROTOCOL_G2 && pNeighbour->m_nNodeType != ntLeaf && pNeighbour->m_nState >= nrsConnected && pNeighbour != pExcept ) { pPacket->WritePacket( "D", 8 ); pPacket->WriteLongLE( pNeighbour->m_pHost.sin_addr.S_un.S_addr ); pPacket->WriteShortBE( htons( pNeighbour->m_pHost.sin_port ) ); pPacket->WriteShortBE( (WORD)pNeighbour->m_nLeafCount ); theApp.Message( MSG_DEBUG, _T(" Done neighbour %s"), (LPCTSTR)pNeighbour->m_sAddress ); } } int nCount = ( pExcept == NULL ) ? 3 : 25; for ( CHostCacheHost* pHost = HostCache.Gnutella2.GetNewest() ; pHost ; pHost = pHost->m_pPrevTime ) { if ( pHost->CanQuote( tNow ) && Get( &pHost->m_pAddress ) == NULL && HubHorizonPool.Find( &pHost->m_pAddress ) == NULL ) { pPacket->WritePacket( "S", 10 ); pPacket->WriteLongLE( pHost->m_pAddress.S_un.S_addr ); pPacket->WriteShortBE( pHost->m_nPort ); pPacket->WriteLongBE( pHost->m_tSeen ); theApp.Message( MSG_DEBUG, _T(" Try cached hub %s"), (LPCTSTR)CString( inet_ntoa( pHost->m_pAddress ) ) ); if ( ! --nCount ) break; } } HubHorizonPool.AddHorizonHubs( pPacket ); pPacket->WriteByte( 0 ); pPacket->Write( pGUID, sizeof(GGUID) ); return pPacket; }
bool wxRadioBox::Show(bool show) { for(int i=0; i<GetCount(); i++) Show(i, show); return true; }
int wxRadioBoxBase::GetNextItem(int item, wxDirection dir, long style) const { int count = GetCount(), numCols = GetColumnCount(), numRows = GetRowCount(); bool horz = (style & wxRA_SPECIFY_COLS) != 0; switch ( dir ) { case wxUP: if ( horz ) { item -= numCols; } else // vertical layout { if ( !item-- ) item = count - 1; } break; case wxLEFT: if ( horz ) { if ( !item-- ) item = count - 1; } else // vertical layout { item -= numRows; } break; case wxDOWN: if ( horz ) { item += numCols; } else // vertical layout { if ( ++item == count ) item = 0; } break; case wxRIGHT: if ( horz ) { if ( ++item == count ) item = 0; } else // vertical layout { item += numRows; } break; default: wxFAIL_MSG( _T("unexpected wxDirection value") ); return wxNOT_FOUND; } // ensure that the item is in range [0..count) if ( item < 0 ) { // first map the item to the one in the same column but in the last row item += count; // now there are 2 cases: either it is the first item of the last row // in which case we need to wrap again and get to the last item or we // can just go to the previous item if ( item % (horz ? numCols : numRows) ) item--; else item = count - 1; } else if ( item >= count ) { // same logic as above item -= count; // ... except that we need to check if this is not the last item, not // the first one if ( (item + 1) % (horz ? numCols : numRows) ) item++; else item = 0; } wxASSERT_MSG( item < count && item >= 0, _T("logic error in wxRadioBox::GetNextItem()") ); return item; }