本文整理汇总了C++中PluginStartupInfo::SendDlgMessage方法的典型用法代码示例。如果您正苦于以下问题:C++ PluginStartupInfo::SendDlgMessage方法的具体用法?C++ PluginStartupInfo::SendDlgMessage怎么用?C++ PluginStartupInfo::SendDlgMessage使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PluginStartupInfo
的用法示例。
在下文中一共展示了PluginStartupInfo::SendDlgMessage方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OpenPlace
static void OpenPlace(HANDLE hDlg,BoardParams *DlgParams,int row,int col,CHECK_OPEN_PLACE check)
{
FarDialogItem DialogItem; int color;
if(row<0) return;
if(col<0) return;
if(row>=DlgParams->width) return;
if(col>=DlgParams->height) return;
Info.SendDlgMessage(hDlg,DM_GETDLGITEMSHORT,DlgParams->width*col+row,&DialogItem);
if(GET_DATA_1(DialogItem)==STATE_CLOSE)
{
SET_DATA_1(DialogItem,STATE_OPEN);
DialogItem.VBuf[1].Char=GetChar(GET_DATA_0(DialogItem),GET_DATA_1(DialogItem),&color);
int bgcolor=GetBG(row,col,GET_DATA_1(DialogItem));
DialogItem.VBuf[0].Attributes.ForegroundColor=DialogItem.VBuf[1].Attributes.ForegroundColor=DialogItem.VBuf[2].Attributes.ForegroundColor=color;
DialogItem.VBuf[0].Attributes.BackgroundColor=DialogItem.VBuf[1].Attributes.BackgroundColor=DialogItem.VBuf[2].Attributes.BackgroundColor=bgcolor;
Info.SendDlgMessage(hDlg,DM_SETDLGITEMSHORT,DlgParams->width*col+row,&DialogItem);
if(!GET_DATA_0(DialogItem))
{
OpenPlace(hDlg,DlgParams,row-1,col-1,COP_NONE);
OpenPlace(hDlg,DlgParams,row-1,col,COP_NONE);
OpenPlace(hDlg,DlgParams,row-1,col+1,COP_NONE);
OpenPlace(hDlg,DlgParams,row,col-1,COP_NONE);
OpenPlace(hDlg,DlgParams,row,col+1,COP_NONE);
OpenPlace(hDlg,DlgParams,row+1,col-1,COP_NONE);
OpenPlace(hDlg,DlgParams,row+1,col,COP_NONE);
OpenPlace(hDlg,DlgParams,row+1,col+1,COP_NONE);
}
if(check!=COP_NONE) CheckStop(hDlg,DlgParams,row,col);
}
else if(check==COP_CHECK_ALL&&GET_DATA_1(DialogItem)==STATE_OPEN&&GET_DATA_0(DialogItem)>0&&GET_DATA_0(DialogItem)<9)
{
int mines=0;
mines+=GetMine(row-1,col-1,hDlg,DlgParams,true);
mines+=GetMine(row-1,col,hDlg,DlgParams,true);
mines+=GetMine(row-1,col+1,hDlg,DlgParams,true);
mines+=GetMine(row,col-1,hDlg,DlgParams,true);
mines+=GetMine(row,col+1,hDlg,DlgParams,true);
mines+=GetMine(row+1,col-1,hDlg,DlgParams,true);
mines+=GetMine(row+1,col,hDlg,DlgParams,true);
mines+=GetMine(row+1,col+1,hDlg,DlgParams,true);
if(mines==GET_DATA_0(DialogItem)) //FIXME
{
OpenPlace(hDlg,DlgParams,row-1,col-1,COP_CHECK_STOP);
OpenPlace(hDlg,DlgParams,row-1,col,COP_CHECK_STOP);
OpenPlace(hDlg,DlgParams,row-1,col+1,COP_CHECK_STOP);
OpenPlace(hDlg,DlgParams,row,col-1,COP_CHECK_STOP);
OpenPlace(hDlg,DlgParams,row,col+1,COP_CHECK_STOP);
OpenPlace(hDlg,DlgParams,row+1,col-1,COP_CHECK_STOP);
OpenPlace(hDlg,DlgParams,row+1,col,COP_CHECK_STOP);
OpenPlace(hDlg,DlgParams,row+1,col+1,COP_CHECK_STOP);
CheckStop(hDlg,DlgParams,row,col);
}
}
}
示例2: SetFocusUser
static void SetFocusUser(HANDLE hDlg,BoardParams *DlgParams,bool real)
{
if(real)
Info.SendDlgMessage(hDlg,DM_SETFOCUS,DlgParams->width*DlgParams->curr_col+DlgParams->curr_row,0);
else
{
int curr_elem=(int)Info.SendDlgMessage(hDlg,DM_GETFOCUS,0,0);
DlgParams->curr_row=curr_elem%DlgParams->width;
DlgParams->curr_col=curr_elem/DlgParams->width;
}
RedrawPlace(hDlg,DlgParams,true);
}
示例3: RedrawPlace
static void RedrawPlace(HANDLE hDlg,BoardParams *DlgParams,bool focused)
{
int color;
FarDialogItem DialogItem;
Info.SendDlgMessage(hDlg,DM_GETDLGITEMSHORT,DlgParams->width*DlgParams->curr_col+DlgParams->curr_row,&DialogItem);
DialogItem.VBuf[1].Char=GetChar(GET_DATA_0(DialogItem),GET_DATA_1(DialogItem),&color);
if(focused&&color==(FOREGROUND_RED|FOREGROUND_INTENSITY)) color=0;
int bgcolor=focused?(FOREGROUND_RED|FOREGROUND_INTENSITY):(GetBG(DlgParams->curr_row,DlgParams->curr_col,GET_DATA_1(DialogItem)));
DialogItem.VBuf[0].Attributes.ForegroundColor=DialogItem.VBuf[1].Attributes.ForegroundColor=DialogItem.VBuf[2].Attributes.ForegroundColor=color;
DialogItem.VBuf[0].Attributes.BackgroundColor=DialogItem.VBuf[1].Attributes.BackgroundColor=DialogItem.VBuf[2].Attributes.BackgroundColor=bgcolor;
}
示例4: GetMine
static int GetMine(int row,int col,HANDLE hDlg,BoardParams *DlgParams,bool flagged)
{
if(row<0) return 0;
if(col<0) return 0;
if(row>=DlgParams->width) return 0;
if(col>=DlgParams->height) return 0;
FarDialogItem DialogItem;
Info.SendDlgMessage(hDlg,DM_GETDLGITEMSHORT,col*DlgParams->width+row,&DialogItem);
if(flagged)
{
if(GET_DATA_1(DialogItem)==STATE_MARKED) return 1;
}
else
{
if(GET_DATA_0(DialogItem)==9) return 1;
}
return 0;
}
示例5: if
int WINAPI _export Message(unsigned long Msg,void *InData,void *OutData)
{
(void)OutData;
switch(Msg)
{
case FMMSG_GETINFO:
{
GetInfoOutData *data=(GetInfoOutData *)OutData;
GetMsg(mName,data->MenuString);
strcpy(data->HotkeyID,"ay_appendall");
data->Flags=FMMSG_MENU|FMMSG_FILTER;
}
return TRUE;
case FMMSG_MENU:
{
MenuInData *dlg=(MenuInData *)InData;
FarDialogItem Item;
if (FarInfo.SendDlgMessage(dlg->hDlg,DM_GETDLGITEM,0,(long)&Item))
{
if (!strcmp(Item.Data,GetMsg(mWarningTitle,tmp)))
{
if (FarInfo.SendDlgMessage(dlg->hDlg,DM_GETDLGITEM,11,(long)&Item))
{
if (strstr(Item.Data,GetMsg(mAppendButton,tmp)))
{
AppendAll=true;
FarInfo.SendDlgMessage(dlg->hDlg,DM_CLOSE,11,0);
}
}
}
}
}
return TRUE;
case FMMSG_FILTER:
{
FilterInData *dlg=(FilterInData *)InData;
if(dlg->Msg==DN_INITDIALOG && AppendAll)
{
FarDialogItem Item;
if (FarInfo.SendDlgMessage(dlg->hDlg,DM_GETDLGITEM,0,(long)&Item))
{
if (!strcmp(Item.Data,GetMsg(mCopyTitle,tmp)) || !strcmp(Item.Data,GetMsg(mMoveTitle,tmp)))
{
if (FarInfo.SendDlgMessage(dlg->hDlg,DM_GETDLGITEM,12,(long)&Item))
{
if (strstr(Item.Data,GetMsg(mTreeButton,tmp)))
AppendAll=false; //reset when new copy/move starts
}
}
else if (!strcmp(Item.Data,GetMsg(mWarningTitle,tmp)))
{
if (FarInfo.SendDlgMessage(dlg->hDlg,DM_GETDLGITEM,11,(long)&Item))
{
if (strstr(Item.Data,GetMsg(mAppendButton,tmp)))
{
FarInfo.SendDlgMessage(dlg->hDlg,DM_CLOSE,11,0);
}
}
}
}
}
}
return TRUE;
}
return FALSE;
}
示例6: if
static intptr_t WINAPI MyDlgProc(HANDLE hDlg, intptr_t Msg, intptr_t Param1, void *Param2)
{
FarGetDialogItem DialogItem={sizeof(FarGetDialogItem)};
const INPUT_RECORD* record;
switch (Msg)
{
case DN_CONTROLINPUT:
record=(const INPUT_RECORD *)Param2;
if (record->EventType==KEY_EVENT &&
record->Event.KeyEvent.bKeyDown &&
record->Event.KeyEvent.dwControlKeyState & SHIFT_PRESSED &&
(record->Event.KeyEvent.dwControlKeyState & LEFT_CTRL_PRESSED ||
record->Event.KeyEvent.dwControlKeyState & RIGHT_CTRL_PRESSED))
{
switch (record->Event.KeyEvent.wVirtualKeyCode) {
case VK_DOWN:
ScrollText(stDn);
return TRUE;
case VK_UP:
ScrollText(stUp);
return TRUE;
case VK_NEXT:
ScrollText(stPgDn);
return TRUE;
case VK_PRIOR:
ScrollText(stPgUp);
return TRUE;
case VK_END:
ScrollText(stEnd);
return TRUE;
case VK_HOME:
ScrollText(stHome);
return TRUE;
}
}
break;
case DN_BTNCLICK:
if (Param1==ixCaseSensitive) {
bool bCaseSensitive = Param2!=0;
if (bCaseSensitive!=bPrevCaseSensitive)
UndoAll();
bPrevCaseSensitive = bCaseSensitive;
}
Filter(PrevPattern, bPrevCaseSensitive);
Info.AdvControl(&PluginId, ACTL_REDRAWALL, 0, NULL);
break;
case DN_EDITCHANGE:
DialogItem.Size = (size_t)Info.SendDlgMessage(hDlg, DM_GETDLGITEM, ixSearchString, NULL);
DialogItem.Item = (FarDialogItem*)malloc(DialogItem.Size);
if (DialogItem.Item) {
Info.SendDlgMessage(hDlg, DM_GETDLGITEM, ixSearchString, &DialogItem);
size_t nChars = wcslen(DialogItem.Item->Data);
size_t nPrevChars = Length(PrevPattern);
bool bFilter = true;
if (PrevPattern!=NULL) {
//получается ли новая строка укорачиванием старой на символ
if (bSequentialInput && nChars+1 == nPrevChars &&
wcsncmp(DialogItem.Item->Data, PrevPattern, nChars) == 0)
{
//да - откатываем одну правку
Undo();
bFilter = false;
}
else
{
//получается ли новая строка добавлением символа к старой
if (!(nChars == nPrevChars+1 &&
wcsncmp(DialogItem.Item->Data, PrevPattern, nPrevChars) == 0))
{
//если нет - считаем, что откатывать по одной правке нельзя
bSequentialInput = false;
}
//можно ли искать новую строку среди уже отфильтрованных
if (wcsstr(DialogItem.Item->Data, PrevPattern) == NULL)
{
//нет - откатываем все правки
UndoAll();
}
}
}
//выделить контекст заново при необходимости
if (Length(PrevPattern)<MAX_PATTERN_LEN && nChars>=MAX_PATTERN_LEN) {
SearchFree(ctx);
ctx = SearchHAlloc();
}
else if (Length(PrevPattern)>=MAX_PATTERN_LEN && nChars<MAX_PATTERN_LEN) {
SearchHFree(ctx);
ctx = SearchAlloc();
}
//запомнить значение фильтра
if (nChars!=0) {
SetLength(&PrevPattern, (int)nChars);
wcscpy(PrevPattern, DialogItem.Item->Data);
}
else {
SetLength(&PrevPattern, 0);
//.........这里部分代码省略.........
示例7: GetCheck
static intptr_t GetCheck(HANDLE hDlg, intptr_t i)
{
return (intptr_t)Info.SendDlgMessage(hDlg, DM_GETCHECK, i, 0);
}
示例8: settings
static intptr_t WINAPI MainDialogProc(HANDLE hDlg,intptr_t Msg,intptr_t Param1,void* Param2)
{
BoardParams* DlgParams=(BoardParams*)Info.SendDlgMessage(hDlg,DM_GETDLGDATA,0,0);
//if(Msg==DN_KEY&&Param2==KEY_ENTER) return TRUE;
switch(Msg)
{
case DN_INITDIALOG:
Info.SendDlgMessage(hDlg,DM_RESETBOARD,0,0);
SetFocus(true);
break;
case DN_CONTROLINPUT:
{
const INPUT_RECORD* record=(const INPUT_RECORD*)Param2;
if(record->EventType==KEY_EVENT&&record->Event.KeyEvent.bKeyDown)
{
KillFocus();
if(IsNone(record))
{
switch(record->Event.KeyEvent.wVirtualKeyCode)
{
case VK_UP:
DlgParams->curr_col--;
break;
case VK_DOWN:
DlgParams->curr_col++;
break;
case VK_LEFT:
DlgParams->curr_row--;
break;
case VK_RIGHT:
DlgParams->curr_row++;
break;
case VK_HOME:
DlgParams->curr_row=0;
break;
case VK_END:
DlgParams->curr_row=DlgParams->width-1;
break;
case VK_PRIOR:
DlgParams->curr_col=0;
break;
case VK_NEXT:
DlgParams->curr_col=DlgParams->height-1;
break;
case L' ':
{
Info.SendDlgMessage(hDlg,DM_ENABLEREDRAW,FALSE,0);
if(!DlgParams->finished)
{
if(!DlgParams->started) Info.SendDlgMessage(hDlg,DM_START_GAME,0,0);
OpenPlace(hDlg,DlgParams,DlgParams->curr_row,DlgParams->curr_col,COP_CHECK_ALL);
}
Info.SendDlgMessage(hDlg,DM_ENABLEREDRAW,TRUE,0);
}
break;
case VK_DELETE:
{
Info.SendDlgMessage(hDlg,DM_ENABLEREDRAW,FALSE,0);
if(!DlgParams->finished)
{
FarDialogItem DialogItem;
Info.SendDlgMessage(hDlg,DM_GETDLGITEMSHORT,DlgParams->width*DlgParams->curr_col+DlgParams->curr_row,&DialogItem);
switch(GET_DATA_1(DialogItem))
{
case STATE_CLOSE:
SET_DATA_1(DialogItem,STATE_MARKED);
DlgParams->curr_mines++;
break;
case STATE_OPEN:
break;
case STATE_MARKED:
SET_DATA_1(DialogItem,STATE_CLOSE);
DlgParams->curr_mines--;
break;
}
Info.SendDlgMessage(hDlg,DM_SETDLGITEMSHORT,DlgParams->width*DlgParams->curr_col+DlgParams->curr_row,&DialogItem);
Info.SendDlgMessage(hDlg,DM_SHOWTIME,0,0);
}
Info.SendDlgMessage(hDlg,DM_ENABLEREDRAW,TRUE,0);
}
break;
case VK_F2:
DlgParams->started=false;
DlgParams->finished=FINISH_NO;
Info.SendDlgMessage(hDlg,DM_SETTEXTPTR,DlgParams->width*DlgParams->height,const_cast<wchar_t*>(GetMsg(mStart)));
Info.SendDlgMessage(hDlg,DM_RESETBOARD,0,0);
break;
case VK_F3:
{
wchar_t ScoreKeyName[1024],PlayerKeyName[1024];
FSF.sprintf(ScoreKeyName,L"Score_%d_%d_%d",DlgParams->width,DlgParams->height,DlgParams->mines);
FSF.sprintf(PlayerKeyName,L"Player_%d_%d_%d",DlgParams->width,DlgParams->height,DlgParams->mines);
CFarSettings settings(MainGuid);
__int64 Score; wchar_t Name[512];
Score=settings.Get(ScoreKeyName,-1);
if(!settings.Get(PlayerKeyName,Name,sizeofa(Name))) Name[0]=0;
if(Score>=0&&Name[0])
{
wchar_t buffer[1024];
FSF.sprintf(buffer,GetMsg(mHighscoreFormat),Name,(long)Score);
//.........这里部分代码省略.........
示例9: CheckStop
static void CheckStop(HANDLE hDlg,BoardParams *DlgParams,int row,int col)
{
if(DlgParams->finished!=FINISH_NO) return;
FarDialogItem DialogItem;
Info.SendDlgMessage(hDlg,DM_GETDLGITEMSHORT,DlgParams->width*col+row,&DialogItem);
if(GET_DATA_1(DialogItem)==STATE_OPEN&&GET_DATA_0(DialogItem)==9)
{
Info.SendDlgMessage(hDlg,DM_SETTEXTPTR,DlgParams->width*DlgParams->height,const_cast<wchar_t*>(GetMsg(mLose)));
DlgParams->finished=FINISH_LOSE;
DlgParams->end_time=GetTickCount();
Beep((long)Opt.LoseFreq,100);
Info.SendDlgMessage(hDlg,DM_SHOWTIME,0,NULL);
}
else
{
FarDialogItem DialogItem; bool won=true;
for(int i=0;i<DlgParams->height;i++)
{
for(int j=0;j<DlgParams->width;j++)
{
int k=i*DlgParams->width+j;
Info.SendDlgMessage(hDlg,DM_GETDLGITEMSHORT,k,&DialogItem);
if(GET_DATA_1(DialogItem)==STATE_CLOSE&&GET_DATA_0(DialogItem)<9) //FIXME
{
won=false;
break;
}
else if(GET_DATA_1(DialogItem)==STATE_MARKED&&GET_DATA_0(DialogItem)<9)
{
won=false;
break;
}
else if(GET_DATA_1(DialogItem)==STATE_OPEN&&GET_DATA_0(DialogItem)==9)
{
won=false;
break;
}
}
if(!won) break;
}
if(won)
{
Info.SendDlgMessage(hDlg,DM_SETTEXTPTR,DlgParams->width*DlgParams->height,const_cast<wchar_t*>(GetMsg(mWon)));
DlgParams->finished=FINISH_WON;
DlgParams->end_time=GetTickCount();
DlgParams->curr_mines=DlgParams->mines;
Beep((long)Opt.WonFreq,100);
int color;
for(int i=0;i<DlgParams->height;i++)
for(int j=0;j<DlgParams->width;j++)
{
int k=i*DlgParams->width+j;
Info.SendDlgMessage(hDlg,DM_GETDLGITEMSHORT,k,&DialogItem);
if(GET_DATA_1(DialogItem)==STATE_CLOSE)
{
SET_DATA_1(DialogItem,STATE_MARKED);
DialogItem.VBuf[1].Char=GetChar(GET_DATA_0(DialogItem),GET_DATA_1(DialogItem),&color);
int bgcolor=GetBG(i,j,GET_DATA_1(DialogItem));
DialogItem.VBuf[0].Attributes.ForegroundColor=DialogItem.VBuf[1].Attributes.ForegroundColor=DialogItem.VBuf[2].Attributes.ForegroundColor=color;
DialogItem.VBuf[0].Attributes.BackgroundColor=DialogItem.VBuf[1].Attributes.BackgroundColor=DialogItem.VBuf[2].Attributes.BackgroundColor=bgcolor;
Info.SendDlgMessage(hDlg,DM_SETDLGITEMSHORT,k,&DialogItem);
}
}
Info.SendDlgMessage(hDlg,DM_SHOWTIME,0,0);
SubmitScore(DlgParams);
}
}
}
示例10: if
static intptr_t WINAPI MainDialogProc(HANDLE hDlg,intptr_t Msg,intptr_t Param1,void* Param2)
{
switch(Msg)
{
case DN_INITDIALOG:
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_INIT,1,0);
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("aaa"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("1 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("2 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("3 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("4 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("5 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("6 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("7 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("8 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("9 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("0 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("1 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("2 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("3 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("4 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("5 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("6 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("7 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("8 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("9 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("0 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("1 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("2 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("3 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("4 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("5 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("6 bbb"));
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ADDSTR,1,(void*)_T("7 bbb"));
{
ListBoxExSetColor color={2,LISTBOXEX_COLORS_ITEM,0,{{FCF_FG_4BIT|FCF_BG_4BIT,0xC,0x7,NULL},0,false}};
for(int i=2;i<5;i++)
{
color.ColorIndex=i;
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ITEM_SETCOLOR,1,&color);
}
color.Color.Color.ForegroundColor=0xA;
color.Color.Color.BackgroundColor=0x7;
for(int i=7;i<10;i++)
{
color.ColorIndex=i;
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ITEM_SETCOLOR,1,&color);
}
color.Color.Color.ForegroundColor=0x9;
color.Color.Color.BackgroundColor=0x7;
for(int i=12;i<15;i++)
{
color.ColorIndex=i;
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ITEM_SETCOLOR,1,&color);
}
color.Color.Color.ForegroundColor=0x9;
color.Color.Color.BackgroundColor=0x0;
color.TypeIndex=LISTBOXEX_COLORS_SELECTED;
for(int i=12;i<15;i++)
{
color.ColorIndex=i;
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ITEM_SETCOLOR,1,&color);
}
ListBoxExSetHotkey hotkey={16,'a'};
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ITEM_SETHOTKEY,1,&hotkey);
}
break;
case DN_CONTROLINPUT:
{
const INPUT_RECORD* record=(const INPUT_RECORD *)Param2;
if(record->EventType==KEY_EVENT&&record->Event.KeyEvent.bKeyDown)
{
WORD vk=record->Event.KeyEvent.wVirtualKeyCode;
if(IsNone(record))
{
switch(vk)
{
case VK_DELETE:
{
FarListDelete list={sizeof(FarListDelete),3,4};
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_DELETE,1,&list);
}
break;
case VK_F2:
{
ListBoxExSetFlags flags={Info.SendDlgMessage(hDlg,DM_LISTBOXEX_GETCURPOS,1,0L),LIFEX_DISABLE};
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ITEM_SETFLAGS,1,&flags);
}
break;
case VK_F3:
{
ListBoxExSetFlags flags={Info.SendDlgMessage(hDlg,DM_LISTBOXEX_GETCURPOS,1,0L)-1,0};
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ITEM_SETFLAGS,1,&flags);
}
break;
case VK_INSERT:
Info.SendDlgMessage(hDlg,DM_LISTBOXEX_ITEM_TOGGLE,1,(void*)Info.SendDlgMessage(hDlg,DM_LISTBOXEX_GETCURPOS,1,0L));
break;
//.........这里部分代码省略.........