本文整理汇总了C++中PluginStartupInfo::DefDlgProc方法的典型用法代码示例。如果您正苦于以下问题:C++ PluginStartupInfo::DefDlgProc方法的具体用法?C++ PluginStartupInfo::DefDlgProc怎么用?C++ PluginStartupInfo::DefDlgProc使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PluginStartupInfo
的用法示例。
在下文中一共展示了PluginStartupInfo::DefDlgProc方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
//.........这里部分代码省略.........
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);
bSequentialInput = true;
}
free(DialogItem.Item);
if (bFilter)
Filter(PrevPattern, bPrevCaseSensitive);
Info.AdvControl(&PluginId, ACTL_REDRAWALL, 0, NULL);
}
break;
}
return Info.DefDlgProc(hDlg, Msg, Param1, Param2);
}
示例2: settings
//.........这里部分代码省略.........
}
if(DlgParams->curr_row>=DlgParams->width) DlgParams->curr_row=0;
if(DlgParams->curr_row<0) DlgParams->curr_row=DlgParams->width-1;
if(DlgParams->curr_col>=DlgParams->height) DlgParams->curr_col=0;
if(DlgParams->curr_col<0) DlgParams->curr_col=DlgParams->height-1;
SetFocus(true);
Info.SendDlgMessage(hDlg,DM_REDRAW,0,0);
}
else if(record->EventType==MOUSE_EVENT)
{
DWORD Buttons=record->Event.MouseEvent.dwButtonState;
if(Buttons&FROM_LEFT_1ST_BUTTON_PRESSED) RunKey(L"Keys([[Space]])");
else if(Buttons&RIGHTMOST_BUTTON_PRESSED) RunKey(L"Keys([[Del]])");
}
}
break;
case DN_GOTFOCUS:
SetFocus(false);
break;
case DN_KILLFOCUS:
KillFocus();
break;
case DM_RESETBOARD:
{
int curr_mines=DlgParams->mines,color;
FarDialogItem DialogItem;
Info.SendDlgMessage(hDlg,DM_ENABLEREDRAW,FALSE,0);
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);
SET_DATA_0(DialogItem,0);
SET_DATA_1(DialogItem,0);
color=0;
DialogItem.VBuf[1].Char=GetChar(GET_DATA_0(DialogItem),GET_DATA_1(DialogItem),&color);
int bgcolor=GetBG(i,j,STATE_CLOSE);
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);
}
//set mines
while(curr_mines)
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(curr_mines&&(!GET_DATA_0(DialogItem)))
{
if(rand()<=(RAND_MAX*DlgParams->mines/(DlgParams->width*DlgParams->height)))
{
curr_mines--;
SET_DATA_0(DialogItem,9);
Info.SendDlgMessage(hDlg,DM_SETDLGITEMSHORT,k,&DialogItem);
}
}
}
//set places
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_0(DialogItem)==0)
{
SET_DATA_0(DialogItem,GET_DATA_0(DialogItem)+GetMine(j-1,i-1,hDlg,DlgParams,false));
SET_DATA_0(DialogItem,GET_DATA_0(DialogItem)+GetMine(j-1,i,hDlg,DlgParams,false));
SET_DATA_0(DialogItem,GET_DATA_0(DialogItem)+GetMine(j-1,i+1,hDlg,DlgParams,false));
SET_DATA_0(DialogItem,GET_DATA_0(DialogItem)+GetMine(j,i-1,hDlg,DlgParams,false));
SET_DATA_0(DialogItem,GET_DATA_0(DialogItem)+GetMine(j,i+1,hDlg,DlgParams,false));
SET_DATA_0(DialogItem,GET_DATA_0(DialogItem)+GetMine(j+1,i-1,hDlg,DlgParams,false));
SET_DATA_0(DialogItem,GET_DATA_0(DialogItem)+GetMine(j+1,i,hDlg,DlgParams,false));
SET_DATA_0(DialogItem,GET_DATA_0(DialogItem)+GetMine(j+1,i+1,hDlg,DlgParams,false));
Info.SendDlgMessage(hDlg,DM_SETDLGITEMSHORT,k,&DialogItem);
}
}
DlgParams->curr_mines=0;
Info.SendDlgMessage(hDlg,DM_SHOWTIME,0,0);
Info.SendDlgMessage(hDlg,DM_ENABLEREDRAW,TRUE,0);
}
break;
case DN_ENTERIDLE:
Info.SendDlgMessage(hDlg,DM_SHOWTIME,0,0);
break;
case DM_SHOWTIME:
{
wchar_t buffer[1024]; DWORD diff_time=DlgParams->started?((DlgParams->finished?DlgParams->end_time:GetTickCount())-DlgParams->start_time)/1000:0;
FSF.sprintf(buffer,GetMsg(mTime),diff_time,DlgParams->curr_mines);
Info.SendDlgMessage(hDlg,DM_SETTEXTPTR,DlgParams->width*DlgParams->height+1,buffer);
}
break;
case DM_START_GAME:
Info.SendDlgMessage(hDlg,DM_SETTEXTPTR,DlgParams->width*DlgParams->height,const_cast<wchar_t*>(GetMsg(mGame)));
DlgParams->started=true;
DlgParams->start_time=GetTickCount();
break;
}
return Info.DefDlgProc(hDlg,Msg,Param1,Param2);
}