本文整理汇总了C++中WDL_PtrList::Add方法的典型用法代码示例。如果您正苦于以下问题:C++ WDL_PtrList::Add方法的具体用法?C++ WDL_PtrList::Add怎么用?C++ WDL_PtrList::Add使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WDL_PtrList
的用法示例。
在下文中一共展示了WDL_PtrList::Add方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: 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;
}
示例2: AddString
int AddString(const WDL_FastString &s)
{
WDL_FastString *ns = new WDL_FastString;
*ns = s;
m_strings.Add(ns);
return m_strings.GetSize()-1+STRING_INDEX_BASE;
}
示例3: runcode
int sInst::runcode(const char *code, bool showerr, bool canfree)
{
if (m_vm)
{
m_pc.Set("");
eel_preprocess_strings(this,m_pc,code);
NSEEL_CODEHANDLE code = NSEEL_code_compile_ex(m_vm,m_pc.Get(),1,canfree ? 0 : NSEEL_CODE_COMPILE_FLAG_COMMONFUNCS);
char *err;
if (!code && (err=NSEEL_code_getcodeerror(m_vm)))
{
if (NSEEL_code_geterror_flag(m_vm)&1) return 1;
if (showerr) fprintf(stderr,"NSEEL_code_compile: %s\n",err);
return -1;
}
else
{
if (code)
{
NSEEL_VM_enumallvars(m_vm,varEnumProc, this);
NSEEL_code_execute(code);
if (canfree) NSEEL_code_free(code);
else m_code_freelist.Add((void*)code);
}
return 0;
}
}
return -1;
}
示例4: Add
void Add(LICE_IBitmap* bitmap, int id = -1)
{
WDL_MutexLock lock(&m_mutex);
BitmapKey* key = m_bitmaps.Add(new BitmapKey);
key->id = id;
key->bitmap = bitmap;
}
示例5: 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;
}
示例6: RegisterToMarkerRegionUpdates
void RegisterToMarkerRegionUpdates(SNM_MarkerRegionListener* _listener)
{
#ifdef _SNM_MUTEX
SWS_SectionLock lock(&g_mkrRgnListenersMutex);
#endif
if (_listener && g_mkrRgnListeners.Find(_listener) < 0)
g_mkrRgnListeners.Add(_listener);
}
示例7: FillHWoutDropDown
void FillHWoutDropDown(HWND _hwnd, int _idc)
{
char buf[128] = "";
lstrcpyn(buf, __LOCALIZE("None","sws_DLG_149"), sizeof(buf));
SendDlgItemMessage(_hwnd,_idc,CB_ADDSTRING,0,(LPARAM)buf);
SendDlgItemMessage(_hwnd,_idc,CB_SETITEMDATA,0,0);
// get mono outputs
WDL_PtrList<WDL_FastString> monos;
int monoIdx=0;
while (GetOutputChannelName(monoIdx)) {
monos.Add(new WDL_FastString(GetOutputChannelName(monoIdx)));
monoIdx++;
}
// add stereo outputs
WDL_PtrList<WDL_FastString> stereos;
if (monoIdx)
{
for(int i=0; i < (monoIdx-1); i++)
{
WDL_FastString* hw = new WDL_FastString();
hw->SetFormatted(256, "%s / %s", monos.Get(i)->Get(), monos.Get(i+1)->Get());
stereos.Add(hw);
}
}
// fill dropdown
for(int i=0; i < stereos.GetSize(); i++) {
SendDlgItemMessage(_hwnd,_idc,CB_ADDSTRING,0,(LPARAM)stereos.Get(i)->Get());
SendDlgItemMessage(_hwnd,_idc,CB_SETITEMDATA,i,i+1); // +1 for <none>
}
for(int i=0; i < monos.GetSize(); i++) {
SendDlgItemMessage(_hwnd,_idc,CB_ADDSTRING,0,(LPARAM)monos.Get(i)->Get());
SendDlgItemMessage(_hwnd,_idc,CB_SETITEMDATA,i,i+1); // +1 for <none>
}
// SendDlgItemMessage(_hwnd,_idc,CB_SETCURSEL,x0,0);
monos.Empty(true);
stereos.Empty(true);
}
示例8: AddFontResourceEx
int AddFontResourceEx(LPCTSTR str, DWORD fl, void *pdv)
{
if (str && *str)
{
int x;
for (x=0;x<s_registered_fonts.GetSize();x++)
if (!strcmp(str,s_registered_fonts.Get(x))) return 0;
s_registered_fonts.Add(strdup(str));
return 1;
}
return 0;
}
示例9:
WDL_PtrList<void>* FilteredVisState::GetFilteredTracks()
{
static WDL_PtrList<void> tracks;
tracks.Empty(false);
for (int i = 1; i <= GetNumTracks(); i++)
{
MediaTrack* tr = CSurf_TrackFromID(i, false);
if (MatchesFilter(tr))
tracks.Add(tr);
}
return &tracks;
}
示例10: 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;
}
示例11: GetChildTracks
// callers must unallocate the returned value, if any
WDL_PtrList<MediaTrack>* GetChildTracks(MediaTrack* _tr)
{
int depth = (_tr ? *(int*)GetSetMediaTrackInfo(_tr, "I_FOLDERDEPTH", NULL) : 0);
if (depth == 1)
{
WDL_PtrList<MediaTrack>* childTracks = new WDL_PtrList<MediaTrack>;
int trIdx = CSurf_TrackToID(_tr, false) + 1;
while (depth > 0 && trIdx <= GetNumTracks())
{
MediaTrack* tr = CSurf_TrackFromID(trIdx, false);
depth += *(int*)GetSetMediaTrackInfo(tr, "I_FOLDERDEPTH", NULL);
childTracks->Add(tr);
trIdx++;
}
if (childTracks->GetSize())
return childTracks;
else
delete childTracks;
}
return NULL;
}
示例12: AddLeftItem
void AddLeftItem(COMMAND_T* = NULL)
{
for (int i = 1; i <= GetNumTracks(); i++)
{
MediaTrack* tr = CSurf_TrackFromID(i, false);
WDL_PtrList<void> selItems;
// First find selected items
for (int j = 0; j < GetTrackNumMediaItems(tr); j++)
{
MediaItem* selItem = GetTrackMediaItem(tr, j);
if (*(bool*)GetSetMediaItemInfo(selItem, "B_UISEL", NULL))
selItems.Add(selItem);
}
for (int j = 0; j < selItems.GetSize(); j++)
{
double dLeft = *(double*)GetSetMediaItemInfo((MediaItem*)selItems.Get(j), "D_POSITION", NULL);
double dRight = *(double*)GetSetMediaItemInfo((MediaItem*)selItems.Get(j), "D_LENGTH", NULL) + dLeft;
double dMaxLeft = -DBL_MAX;
MediaItem* leftItem = NULL;
for (int k = 0; k < GetTrackNumMediaItems(tr); k++)
{
MediaItem* mi;
mi = GetTrackMediaItem(tr, k);
double dLeft2 = *(double*)GetSetMediaItemInfo(mi, "D_POSITION", NULL);
double dRight2 = *(double*)GetSetMediaItemInfo(mi, "D_LENGTH", NULL) + dLeft2;
if (dLeft2 < dLeft && dRight2 < dRight && dLeft2 > dMaxLeft)
{
dMaxLeft = dLeft2;
leftItem = mi;
}
}
if (leftItem)
GetSetMediaItemInfo(leftItem, "B_UISEL", &g_i1);
}
}
UpdateTimeline();
}
示例13: Open
int audioStreamer_waveOut::Open(int iswrite, int srate, int nch, int bps, int sleep, int nbufs, int bufsize, int device)
{
m_sleep = WO_SLEEP;
m_nch = nch;
m_srate=srate;
m_bps=bps;
int fmt_align=(bps>>3)*nch;
int fmt_mul=fmt_align*srate;
WAVEFORMATEX wfx={
WAVE_FORMAT_PCM,
nch,
srate,
fmt_mul,
fmt_align,
bps,
0
};
m_bufsize=bufsize;
m_whichbuf=0;
if (iswrite)
{
if(waveOutOpen(&m_hwo,device,&wfx,(DWORD)0,0,WAVE_FORMAT_DIRECT)!=MMSYSERR_NOERROR) return -1;
}
else
{
if(waveInOpen(&m_hwi,device,&wfx,0,0,WAVE_FORMAT_DIRECT)!=MMSYSERR_NOERROR) return -1;
}
int x;
for (x = 0; x < nbufs; x ++)
{
WDL_HeapBuf *p=new WDL_HeapBuf;
p->Resize(sizeof(WAVEHDR) + m_bufsize);
WAVEHDR *h = (WAVEHDR *)p->Get();
memset(h,0,p->GetSize());
h->lpData=(char *)h + sizeof(WAVEHDR);
h->dwBufferLength = m_bufsize;
if (!iswrite)
{
waveInPrepareHeader(m_hwi,h,sizeof(WAVEHDR));
waveInAddBuffer(m_hwi,h,sizeof(WAVEHDR));
}
else
{
waveOutPrepareHeader(m_hwo,h,sizeof(WAVEHDR));
}
m_bufs.Add(p);
}
if (iswrite) waveOutRestart(m_hwo);
else waveInStart(m_hwi);
return 0;
}
示例14: ApplyTrackTemplate
// apply a track template (preserves routings and folder states)
// _p: optional (to factorize chunk updates)
// note: assumes _tmplt contains a single track (with items/envs already removed when _itemsFromTmplt/_envsFromTmplt are false)
// i.e. use MakeSingleTrackTemplateChunk() first!
bool ApplyTrackTemplate(MediaTrack* _tr, WDL_FastString* _tmplt, bool _itemsFromTmplt, bool _envsFromTmplt, void* _p)
{
bool updated = false;
if (_tr && _tmplt && _tmplt->GetLength())
{
SNM_SendPatcher* p = (_p ? (SNM_SendPatcher*)_p : new SNM_SendPatcher(_tr));
// store receives, folder and compact states
WDL_PtrList_DeleteOnDestroy<WDL_PtrList_DeleteOnDestroy<SNM_SndRcv> > rcvs;
WDL_PtrList_DeleteOnDestroy<WDL_PtrList_DeleteOnDestroy<SNM_SndRcv> > snds;
WDL_PtrList<MediaTrack> trs; trs.Add(_tr);
WDL_FastString busLine, compbusLine;
if (_tr != GetMasterTrack(NULL))
{
CopySendsReceives(true, &trs, &snds, &rcvs);
// parse twice but it does not cost much (search at the very start of the chunk)
p->Parse(SNM_GET_SUBCHUNK_OR_LINE, 1, "TRACK", "ISBUS", 0, -1, &busLine, NULL, "BUSCOMP");
p->Parse(SNM_GET_SUBCHUNK_OR_LINE, 1, "TRACK", "BUSCOMP", 0, -1, &compbusLine, NULL, "SHOWINMIX");
}
// apply tr template
if ((updated = ApplyTrackTemplatePrimitive(_tr, _tmplt, _itemsFromTmplt, _envsFromTmplt, p)))
{
// restore receives, folder and compact states
WDL_PtrList<SNM_ChunkParserPatcher> ps; ps.Add(p);
PasteSendsReceives(&trs, &snds, &rcvs, &ps);
if (busLine.GetLength())
p->ReplaceLine("TRACK", "ISBUS", 1, 0, busLine.Get(), "BUSCOMP");
if (compbusLine.GetLength())
p->ReplaceLine("TRACK", "BUSCOMP", 1, 0, compbusLine.Get(), "SHOWINMIX");
}
/*JFB!! works with SNM_ChunkParserPatcher v2 + "SNM_SendPatcher" to remove
// store current receives, folder and compact states
// done through the chunk because the API is incomplete for folder states (tcp only)
WDL_FastString rcvs, busLine, compbusLine;
if (_tr != GetMasterTrack(NULL))
{
// parse twice but it does not cost much (search at the very start of the chunk)
p->Parse(SNM_GET_SUBCHUNK_OR_LINE, 1, "TRACK", "AUXRECV", -1, -1, &rcvs, NULL, "MIDIOUT");
p->Parse(SNM_GET_SUBCHUNK_OR_LINE, 1, "TRACK", "ISBUS", 0, -1, &busLine, NULL, "BUSCOMP");
p->Parse(SNM_GET_SUBCHUNK_OR_LINE, 1, "TRACK", "BUSCOMP", 0, -1, &compbusLine, NULL, "SHOWINMIX");
}
// apply tr template
if (updated = ApplyTrackTemplatePrimitive(_tr, _tmpltChunk, _itemsFromTmplt, _envsFromTmplt, p))
{
// restore receives, folder and compact states
if (busLine.GetLength())
p->ReplaceLine("TRACK", "ISBUS", 1, 0, busLine.Get(), "BUSCOMP");
if (compbusLine.GetLength())
p->ReplaceLine("TRACK", "BUSCOMP", 1, 0, compbusLine.Get(), "SHOWINMIX");
if (rcvs.GetLength())
p->InsertAfterBefore(0, rcvs.Get(), "TRACK", "MIDIOUT", 1, 0, "MAINSEND");
}
*/
if (!_p)
DELETE_NULL(p); // + auto-commit if needed
}
return updated;
}
示例15: doDebug
INT_PTR WINAPI doDebug(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_INITDIALOG:
{
RestoreWindowPos(hwndDlg, DEBUG_WINDOWPOS_KEY);
HWND listView = GetDlgItem(hwndDlg, IDC_LIST);
LineParser lp(false);
char cFile[256];
strcpy(cFile, get_ini_file());
strcpy(strrchr(cFile, '.'), "-kb.ini");
FILE* f = fopen(cFile, "r");
char cLine[65536];
int i = 0;
LVITEM item;
item.mask = LVIF_TEXT | LVIF_PARAM;
item.iSubItem = 0;
while (f && fgets(cLine, 65536, f))
{
lp.parse(cLine);
if (lp.getnumtokens() - 5 > 0 && strcmp(lp.gettoken_str(0), "ACT") == 0)
{
Macro* m = g_macros.Add(new Macro(&lp));
item.lParam = (LPARAM)m;
item.iItem = i++;
item.pszText = m->m_cName;
ListView_InsertItem(listView, &item);
}
}
if (f)
fclose(f);
ListView_SortItems(listView, MacroSort, 0);
return 0;
}
case WM_NOTIFY:
{
NMLISTVIEW* s = (NMLISTVIEW*)lParam;
if (s->hdr.code == LVN_ITEMCHANGED && s->uNewState & LVIS_SELECTED)
g_selectedMacro = (Macro*)s->lParam;
break;
}
case WM_COMMAND:
//if you need to debug commands, you probably want to ignore the focus stuff. Break a few lines down.
if (wParam == 33555433 || wParam == 16778217)
return 0;
if (LOWORD(wParam)==IDCANCEL)
{
g_selectedMacro = NULL;
SaveWindowPos(hwndDlg, DEBUG_WINDOWPOS_KEY);
EndDialog(hwndDlg,0);
}
if (LOWORD(wParam)==IDOK)
{
SaveWindowPos(hwndDlg, DEBUG_WINDOWPOS_KEY);
EndDialog(hwndDlg,0);
}
return 0;
case WM_DESTROY:
// We're done
return 0;
}
return 0;
}