本文整理汇总了C++中WDL_PtrList::Delete方法的典型用法代码示例。如果您正苦于以下问题:C++ WDL_PtrList::Delete方法的具体用法?C++ WDL_PtrList::Delete怎么用?C++ WDL_PtrList::Delete使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WDL_PtrList
的用法示例。
在下文中一共展示了WDL_PtrList::Delete方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: UpdateMarkerRegionCache
// return a bitmask: &SNM_MARKER_MASK: marker update, &SNM_REGION_MASK: region update
int UpdateMarkerRegionCache()
{
int updateFlags=0;
int i=0, x=0, num, col; double pos, rgnend; const char* name; bool isRgn;
// added/updated markers/regions?
while ((x = EnumProjectMarkers3(NULL, x, &isRgn, &pos, &rgnend, &name, &num, &col)))
{
MarkerRegion* m = g_mkrRgnCache.Get(i);
if (!m || (m && !m->Compare(isRgn, pos, rgnend, name, num, col)))
{
if (m) g_mkrRgnCache.Delete(i, true);
g_mkrRgnCache.Insert(i, new MarkerRegion(isRgn, pos, rgnend, name, num, col));
updateFlags |= (isRgn ? SNM_REGION_MASK : SNM_MARKER_MASK);
}
i++;
}
// removed markers/regions?
for (int j=g_mkrRgnCache.GetSize()-1; j>=i; j--) {
if (MarkerRegion* m = g_mkrRgnCache.Get(j))
updateFlags |= (m->IsRegion() ? SNM_REGION_MASK : SNM_MARKER_MASK);
g_mkrRgnCache.Delete(j, true);
}
// project time mode update?
static int sPrevTimemode = *(int*)GetConfigVar("projtimemode");
if (updateFlags != (SNM_MARKER_MASK|SNM_REGION_MASK))
if (int* timemode = (int*)GetConfigVar("projtimemode"))
if (*timemode != sPrevTimemode) {
sPrevTimemode = *timemode;
return SNM_MARKER_MASK|SNM_REGION_MASK;
}
return updateFlags;
}
示例2: TrackPopupMenu
int TrackPopupMenu(HMENU hMenu, int flags, int xpos, int ypos, int resvd, HWND hwnd, const RECT *r)
{
if (!hMenu || m_trackingMenus.GetSize()) return 0;
ReleaseCapture();
m_trackingPar=hwnd;
m_trackingFlags=flags;
m_trackingRet=-1;
m_trackingPt.x=xpos;
m_trackingPt.y=ypos;
submenuWndProc(new HWND__(NULL,0,NULL,"menu",false,submenuWndProc,NULL),WM_CREATE,0,(LPARAM)hMenu);
printf("enter trackpopupmenu loop\n");
while (m_trackingRet<0 && m_trackingMenus.GetSize())
{
void SWELL_RunMessageLoop();
SWELL_RunMessageLoop();
Sleep(10);
}
printf("leave trackpopupmenu loop\n");
int x=m_trackingMenus.GetSize()-1;
while (x>=0)
{
HWND h = m_trackingMenus.Get(x);
m_trackingMenus.Delete(x);
if (h) DestroyWindow(h);
x--;
}
if (!(flags&TPM_NONOTIFY) && m_trackingRet>0)
SendMessage(hwnd,WM_COMMAND,m_trackingRet,0);
return m_trackingRet>0?m_trackingRet:0;
}
示例3: toggleActionHook
// Returns:
// -1 = action does not belong to this extension, or does not toggle
// 0 = action belongs to this extension and is currently set to "off"
// 1 = action belongs to this extension and is currently set to "on"
int toggleActionHook(int iCmd)
{
static WDL_PtrList<const char> sReentrantCmds;
if (COMMAND_T* cmd = SWSGetCommandByID(iCmd))
{
if (cmd->accel.accel.cmd==iCmd && cmd->getEnabled && cmd->doCommand!=SWS_NOOP)
{
if (sReentrantCmds.Find(cmd->id) == -1)
{
sReentrantCmds.Add(cmd->id);
int state = cmd->getEnabled(cmd);
sReentrantCmds.Delete(sReentrantCmds.Find(cmd->id));
return state;
}
#ifdef ACTION_DEBUG
else
{
OutputDebugString("toggleActionHook - recursive action: ");
OutputDebugString(cmd->id);
OutputDebugString("\n");
}
#endif
}
}
return -1;
}
示例4: UnregisterToMarkerRegionUpdates
void UnregisterToMarkerRegionUpdates(SNM_MarkerRegionListener* _listener)
{
#ifdef _SNM_MUTEX
SWS_SectionLock lock(&g_mkrRgnListenersMutex);
#endif
int idx = _listener ? g_mkrRgnListeners.Find(_listener) : -1;
if (idx >= 0)
g_mkrRgnListeners.Delete(idx, false);
}
示例5: Remove
void Remove(LICE_IBitmap* bitmap)
{
WDL_MutexLock lock(&m_mutex);
int i, n = m_bitmaps.GetSize();
for (i = 0; i < n; ++i)
{
if (m_bitmaps.Get(i)->bitmap == bitmap)
{
m_bitmaps.Delete(i, true);
delete(bitmap);
break;
}
}
}
示例6: SWELL_DialogBox
int SWELL_DialogBox(SWELL_DialogResourceIndex *reshead, const char *resid, HWND parent, DLGPROC dlgproc, LPARAM param)
{
SWELL_DialogResourceIndex *p=resById(reshead,resid);
if (resid) // allow modal dialogs to be created without template
{
if (!p||(p->windowTypeFlags&SWELL_DLG_WS_CHILD)) return -1;
}
int ret=-1;
HWND hwnd = SWELL_CreateDialog(reshead,resid,parent,dlgproc,param);
// create dialog
if (hwnd)
{
ReleaseCapture(); // force end of any captures
WDL_PtrList<HWND__> enwnds;
extern HWND__ *SWELL_topwindows;
HWND a = SWELL_topwindows;
while (a)
{
if (a->m_enabled && a != hwnd) { EnableWindow(a,FALSE); enwnds.Add(a); }
a = a->m_next;
}
modalDlgRet r = { hwnd,false, -1 };
s_modalDialogs.Add(&r);
ShowWindow(hwnd,SW_SHOW);
while (s_modalDialogs.Find(&r)>=0 && !r.has_ret)
{
void SWELL_RunMessageLoop();
SWELL_RunMessageLoop();
Sleep(10);
}
ret=r.ret;
s_modalDialogs.Delete(s_modalDialogs.Find(&r));
a = SWELL_topwindows;
while (a)
{
if (!a->m_enabled && a != hwnd && enwnds.Find(a)>=0) EnableWindow(a,TRUE);
a = a->m_next;
}
}
// while in list, do something
return ret;
}
示例7: hookCommandProc
bool hookCommandProc(int iCmd, int flag)
{
static WDL_PtrList<const char> sReentrantCmds;
// for Xen extensions
g_KeyUpUndoHandler=0;
// "Hack" to make actions will #s less than 1000 work with SendMessage (AHK)
// no recursion check here: handled by REAPER
if (iCmd < 1000)
return KBD_OnMainActionEx(iCmd, 0, 0, 0, g_hwndParent, NULL) ? true : false; // C4800
// Special case for checking recording
if (iCmd == 1013 && !RecordInputCheck())
return true;
// Ignore commands that don't have anything to do with us from this point forward
if (COMMAND_T* cmd = SWSGetCommandByID(iCmd))
{
if (cmd->accel.accel.cmd==iCmd && cmd->doCommand && cmd->doCommand!=SWS_NOOP)
{
if (sReentrantCmds.Find(cmd->id) == -1)
{
sReentrantCmds.Add(cmd->id);
cmd->fakeToggle = !cmd->fakeToggle;
#ifndef DEBUG_PERFORMANCE_TIME
cmd->doCommand(cmd);
#else
CommandTimer(cmd);
#endif
sReentrantCmds.Delete(sReentrantCmds.Find(cmd->id));
return true;
}
#ifdef ACTION_DEBUG
else
{
OutputDebugString("hookCommandProc - recursive action: ");
OutputDebugString(cmd->id);
OutputDebugString("\n");
}
#endif
}
}
return false;
}
示例8: TrackPopupMenu
int TrackPopupMenu(HMENU hMenu, int flags, int xpos, int ypos, int resvd, HWND hwnd, const RECT *r)
{
if (!hMenu || m_trackingMenus.GetSize()) return 0;
ReleaseCapture();
m_trackingPar=hwnd;
m_trackingFlags=flags;
m_trackingRet=-1;
m_trackingPt.x=xpos;
m_trackingPt.y=ypos;
// HWND oldFoc = GetFocus();
// bool oldFoc_child = oldFoc && (IsChild(hwnd,oldFoc) || oldFoc == hwnd || oldFoc==GetParent(hwnd));
HWND hh;
submenuWndProc(hh=new HWND__(NULL,0,NULL,"menu",false,submenuWndProc,NULL),WM_CREATE,0,(LPARAM)hMenu);
SetProp(hh,"SWELL_MenuOwner",(HANDLE)hwnd);
while (m_trackingRet<0 && m_trackingMenus.GetSize())
{
void SWELL_RunMessageLoop();
SWELL_RunMessageLoop();
Sleep(10);
}
int x=m_trackingMenus.GetSize()-1;
while (x>=0)
{
HWND h = m_trackingMenus.Get(x);
m_trackingMenus.Delete(x);
if (h) DestroyWindow(h);
x--;
}
// if (oldFoc_child) SetFocus(oldFoc);
if (!(flags&TPM_NONOTIFY) && m_trackingRet>0)
SendMessage(hwnd,WM_COMMAND,m_trackingRet,0);
return m_trackingRet>0?m_trackingRet:0;
}
示例9: OscQuit
void OscQuit(OscHandler* osc)
{
if (osc)
{
int i=s_osc_handlers.Find(osc);
if (i >= 0)
{
KillOscThread();
s_osc_handlers.Delete(i);
if (s_osc_handlers.GetSize())
{
StartOscThread();
}
}
}
else
{
KillOscThread();
s_osc_handlers.Empty();
}
}
示例10: if
//.........这里部分代码省略.........
HPEN pen=CreatePen(PS_SOLID,0,GetSysColor(COLOR_3DSHADOW));
HGDIOBJ oldbr = SelectObject(ps.hdc,br);
HGDIOBJ oldpen = SelectObject(ps.hdc,pen);
Rectangle(ps.hdc,cr.left,cr.top,cr.right-1,cr.bottom-1);
SetBkMode(ps.hdc,TRANSPARENT);
int cols[2]={ GetSysColor(COLOR_BTNTEXT),GetSysColor(COLOR_3DHILIGHT)};
HMENU__ *menu = (HMENU__*)GetWindowLongPtr(hwnd,GWLP_USERDATA);
int x;
for (x=0; x < menu->items.GetSize(); x++)
{
MENUITEMINFO *inf = menu->items.Get(x);
RECT r={lcol,x*itemheight,cr.right,(x+1)*itemheight};
bool dis = !!(inf->fState & MF_GRAYED);
SetTextColor(ps.hdc,cols[dis]);
if (inf->fType == MFT_STRING && inf->dwTypeData)
{
const char *pt2 = strstr(inf->dwTypeData,"\t");
DrawText(ps.hdc,inf->dwTypeData,pt2 ? pt2-inf->dwTypeData : -1,&r,DT_VCENTER|DT_SINGLELINE);
if (pt2)
{
RECT tr=r; tr.right-=rcol;
DrawText(ps.hdc,pt2+1,-1,&tr,DT_VCENTER|DT_SINGLELINE|DT_RIGHT);
}
}
else
{
MoveToEx(ps.hdc,r.left - lcol/2,(r.top+r.bottom)/2,NULL);
LineTo(ps.hdc,r.right - rcol*3/2,(r.top+r.bottom)/2);
}
if (inf->hSubMenu)
{
RECT r2=r; r2.left = r2.right - rcol;
DrawText(ps.hdc,">",-1,&r2,DT_VCENTER|DT_RIGHT|DT_SINGLELINE);
}
if (inf->fState&MF_CHECKED)
{
RECT r2=r; r2.left = 0; r2.right=lcol;
DrawText(ps.hdc,"X",-1,&r2,DT_VCENTER|DT_CENTER|DT_SINGLELINE);
}
}
SelectObject(ps.hdc,oldbr);
SelectObject(ps.hdc,oldpen);
DeleteObject(br);
DeleteObject(pen);
EndPaint(hwnd,&ps);
}
}
break;
case WM_TIMER:
if (wParam==1)
{
HWND h = GetFocus();
if (h!=hwnd)
{
int a = h ? m_trackingMenus.Find(h) : -1;
if (a<0 || a < m_trackingMenus.Find(hwnd)) DestroyWindow(hwnd);
}
}
break;
case WM_DESTROY:
{
int a = m_trackingMenus.Find(hwnd);
m_trackingMenus.Delete(a);
if (m_trackingMenus.Get(a)) DestroyWindow(m_trackingMenus.Get(a));
}
break;
case WM_LBUTTONUP:
case WM_RBUTTONUP:
{
RECT r;
GetClientRect(hwnd,&r);
if (GET_X_LPARAM(lParam)>=r.left && GET_X_LPARAM(lParam)<r.right)
{
int which = GET_Y_LPARAM(lParam)/itemheight;
HMENU__ *menu = (HMENU__*)GetWindowLongPtr(hwnd,GWLP_USERDATA);
MENUITEMINFO *inf = menu->items.Get(which);
if (inf)
{
if (inf->fState&MF_GRAYED){ }
else if (inf->hSubMenu)
{
int a = m_trackingMenus.Find(hwnd);
HWND next = m_trackingMenus.Get(a+1);
if (next) DestroyWindow(next);
m_trackingPt.x=r.right;
m_trackingPt.y=r.top + which*itemheight;
ClientToScreen(hwnd,&m_trackingPt);
submenuWndProc(new HWND__(NULL,0,NULL,"menu",false,submenuWndProc,NULL),WM_CREATE,0,(LPARAM)inf->hSubMenu);
}
else if (inf->wID) m_trackingRet = inf->wID;
}
else DestroyWindow(hwnd);
}
else DestroyWindow(hwnd);
}
break;
}
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
示例11: RemoteChannelListProc
//.........这里部分代码省略.........
}
break;
case WM_RCUSER_UPDATE:
{
int pos=0;
int us;
int did_sizing=0;
RECT lastr={0,0,0,0};
g_client_mutex.Enter();
for (us = 0; us < g_client->GetNumUsers(); us ++)
{
// add/update a user divider
{
HWND h=NULL;
if (pos < m_children.GetSize() && GetWindowLong(h=m_children.Get(pos),GWL_USERDATA) < 0)
{
// this is our wnd
}
else
{
if (h) DestroyWindow(h);
h=CreateDialog(g_hInst,MAKEINTRESOURCE(IDD_REMOTEUSER),hwndDlg,RemoteUserItemProc);
if (pos < m_children.GetSize()) m_children.Set(pos,h);
else m_children.Add(h);
ShowWindow(h,SW_SHOWNA);
did_sizing=1;
}
SendMessage(h,WM_RCUSER_UPDATE,(WPARAM)us,0);
RECT r;
GetWindowRect(h,&r);
ScreenToClient(hwndDlg,(LPPOINT)&r);
if (r.top != lastr.bottom)
{
SetWindowPos(h,0, 0,lastr.bottom, 0,0, SWP_NOSIZE|SWP_NOZORDER|SWP_NOACTIVATE);
GetWindowRect(h,&lastr);
}
else lastr=r;
ScreenToClient(hwndDlg,(LPPOINT)&lastr + 1);
pos++;
}
int ch=0;
for (;;)
{
int i=g_client->EnumUserChannels(us,ch++);
if (i < 0) break;
HWND h=NULL;
if (pos < m_children.GetSize() && GetWindowLong(h=m_children.Get(pos),GWL_USERDATA) >= 0)
{
}
else
{
if (h) DestroyWindow(h);
h=CreateDialog(g_hInst,MAKEINTRESOURCE(IDD_REMOTECHANNEL),hwndDlg,RemoteChannelItemProc);
if (pos < m_children.GetSize()) m_children.Set(pos,h);
else m_children.Add(h);
did_sizing=1;
ShowWindow(h,SW_SHOWNA);
}
RECT r;
GetWindowRect(h,&r);
ScreenToClient(hwndDlg,(LPPOINT)&r);
if (r.top != lastr.bottom)
{
SetWindowPos(h,0,0,lastr.bottom,0,0,SWP_NOSIZE|SWP_NOZORDER|SWP_NOACTIVATE);
GetWindowRect(h,&lastr);
}
else lastr=r;
SendMessage(h,WM_RCUSER_UPDATE,(WPARAM)us,(LPARAM)i);
ScreenToClient(hwndDlg,(LPPOINT)&lastr + 1);
pos++;
}
}
g_client_mutex.Leave();
for (; pos < m_children.GetSize(); )
{
DestroyWindow(m_children.Get(pos));
m_children.Delete(pos);
did_sizing=1;
}
if (did_sizing)
{
SetWindowPos(hwndDlg,NULL,0,0,lastr.right,lastr.bottom,SWP_NOMOVE|SWP_NOZORDER|SWP_NOACTIVATE); // size ourself
}
}
// update channel list, creating and destroying window as necessary
break;
}
return 0;
}