HANDLE WINAPI OpenW(const OpenInfo *OInfo) { static FarDialogItem DlgItems[]={ /* 0*/ {DI_DOUBLEBOX,2, 1,37, 5, {0},NULL ,NULL ,0 ,GetMsg(MTitle)}, /* 1*/ {DI_EDIT ,4, 2,34, 2, {1},PluginName,NULL ,DIF_HISTORY ,L""}, /* 2*/ {DI_CHECKBOX ,4, 3, 0, 0, {0},0 ,NULL ,0 ,GetMsg(MCase)}, /* 3*/ {DI_BUTTON ,0, 4, 0, 0, {0},0 ,NULL ,DIF_CENTERGROUP|DIF_DEFAULTBUTTON,GetMsg(MOk)}, /* 4*/ {DI_BUTTON ,0, 4, 0, 0, {0},0 ,NULL ,DIF_CENTERGROUP ,GetMsg(MCancel)} }; CFarSettings settings(PluginId); bPrevCaseSensitive = settings.Get(L"CaseSensitive", false); DlgItems[ixCaseSensitive].Selected = bPrevCaseSensitive ? 1 : 0; HANDLE hEdit = Info.DialogInit(&PluginId, &DialogId, -1, -1, 40, 7, PluginName, DlgItems, ArraySize(DlgItems), 0, 0, MyDlgProc, 0); if (hEdit == INVALID_HANDLE_VALUE) return INVALID_HANDLE_VALUE; EditorInfo einfo = {sizeof(EditorInfo)}; Info.EditorControl(-1, ECTL_GETINFO, 0, &einfo); InitialLine = einfo.CurLine; InitialCol = einfo.CurPos; InitialTop = einfo.TopScreenLine; TotalLines = einfo.TotalLines; nChanges = 0; bSequentialInput = true; bLineChanged = false; ctx = SearchAlloc(); if (Info.DialogRun(hEdit)!=ixOk) UndoAll(); RemoveHighlight(); settings.Set(L"CaseSensitive", bPrevCaseSensitive); Info.DialogFree(hEdit); if (Length(PrevPattern)<MAX_PATTERN_LEN) SearchFree(ctx); else SearchHFree(ctx); SetLength(&PrevPattern,0); return INVALID_HANDLE_VALUE; }
HANDLE WINAPI OpenW(const struct OpenInfo*) { InitDialogItem InitItems[]= { //type,x1,y1,x2,y2,focus,selected,flags,default,data {DI_DOUBLEBOX,3,1,67,18,0,0,0,0,_T("Very Cool Dialog")}, {DI_USERCONTROL,4,2,66,17,0,0,0,0,_T("")}, {DI_BUTTON,3,19,0,0,0,0,0,1,_T("Ok")}, {DI_BUTTON,12,19,0,0,0,0,0,0,_T("Cancel")}, }; FarDialogItem DialogItems[sizeof(InitItems)/sizeof(InitItems[0])]; InitDialogItems(InitItems,DialogItems,sizeof(InitItems)/sizeof(InitItems[0])); FAR_CHAR_INFO *VirtualBuffer=(FAR_CHAR_INFO *)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,(DialogItems[1].X2-DialogItems[1].X1+1)*(DialogItems[1].Y2-DialogItems[1].Y1+1)*sizeof(FAR_CHAR_INFO)); DialogItems[1].VBuf=VirtualBuffer; HANDLE hDlg=Info.DialogInit(&MainGuid,&DialogGuid,-1,-1,71,21,NULL,DialogItems,sizeof(DialogItems)/sizeof(DialogItems[0]),0,0,MainDialogProc,0); if(hDlg!=INVALID_HANDLE_VALUE) { Info.DialogRun(hDlg); Info.DialogFree(hDlg); } if(VirtualBuffer) HeapFree(GetProcessHeap(),0,VirtualBuffer); return NULL; }