source: dev/trunk/ab5.0/abdev/abdev/Search.cpp

Last change on this file was 829, checked in by イグトランス (egtra), 11 years ago

svn:eol-styleとsvn:mime-type(文字コード指定含む)の設定

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/plain; charset=Shift_JIS
File size: 14.9 KB
Line 
1#include "stdafx.h"
2
3#include "common.h"
4
5HRESULT ApplyDialogTexture( HWND );
6
7long *pFindPos;
8int FindPosCounter;
9
10char *CompareSuper(HWND hDlg,char *buffer,char *szFind,BOOL IsBigSmall,bool isWordUnit,BOOL IsRegExp,int *pLength ){
11    char *pTemp;
12
13    if(buffer[0]=='\0') return 0;
14
15    if(IsRegExp){
16        //正規表現を有効にしながら検索
17        pTemp=obj_RegExp.compare(hDlg,buffer,szFind,IsBigSmall, isWordUnit, pLength);
18    }
19    else{
20        //通常の検索
21        pTemp=ComparisonString(buffer,szFind,IsBigSmall?true:false, isWordUnit );
22
23        *pLength=lstrlen(szFind);
24    }
25
26    return pTemp;
27}
28
29void SetSearchData(HWND hDlg,char *str,_int8 IsBigSmall, bool isWordUnit){
30    extern HANDLE hHeap;
31    int i,i2,i3,i4,i5,length;
32    int WndNum;
33    char *buffer,*FindStr,*LineStr;
34    HWND hEdit;
35
36    WndNum=GetWndNum(GetWindow(hClient,GW_CHILD));
37    if(WndNum==-1) return;
38    hEdit=GetWindow(GetWindow(hClient,GW_CHILD),GW_CHILD);
39
40    i=lstrlen(MdiInfo[WndNum]->pMdiTextEdit->buffer)+1;
41
42    buffer=(char *)HeapAlloc(hHeap,0,i);
43    lstrcpy(buffer,MdiInfo[WndNum]->pMdiTextEdit->buffer);
44
45    LineStr=(char *)HeapAlloc(hHeap,0,i+64);
46
47    pFindPos[0]=(long)hEdit;
48    i=0;
49    i3=1;
50    while(1){
51        FindStr=CompareSuper(hDlg,buffer+i,str,IsBigSmall, isWordUnit, pobj_nv->bRegExp,&length);
52        if(FindStr==(char *)-1){
53            //エラー
54            return;
55        }
56        if(!FindStr) break;
57
58        i=FindStr-buffer;
59        for(i4=0,i5=1;i>i4;i4++){
60            if(buffer[i4-1]=='\r'&&buffer[i4]=='\n') i5++;
61        }
62        for(;i>0;i--){
63            if(buffer[i-2]=='\r'&&buffer[i-1]=='\n') break;
64        }
65
66        FindPosCounter+=sizeof(long);
67        pFindPos=(long *)HeapReAlloc(hHeap,0,pFindPos,FindPosCounter);
68        pFindPos[i3]=i;
69
70        sprintf(LineStr,"Line:%d  ",i5);
71        for(i2=lstrlen(LineStr);;i++,i2++){
72            if((buffer[i]=='\r'&&buffer[i+1]=='\n')||buffer[i]=='\0'){
73                LineStr[i2]=0;
74                break;
75            }
76            LineStr[i2]=buffer[i];
77        }
78        SendDlgItemMessage(hDlg,IDC_FINDLIST,LB_ADDSTRING,0,(LPARAM)LineStr);
79        i3++;
80    }
81    HeapDefaultFree(buffer);
82    HeapDefaultFree(LineStr);
83}
84BOOL CALLBACK DlgFindAll(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
85    int i,WndNum;
86
87    switch(message){
88        case WM_INITDIALOG:
89            SetPosCenter(hwnd);
90            ApplyDialogTexture(hwnd);
91            break;
92        case WM_COMMAND:
93            switch(LOWORD(wParam)){
94                case IDC_SHOWITEM:
95                    i=SendDlgItemMessage(hwnd,IDC_FINDLIST,LB_GETCURSEL,0,0);
96                    if(i==LB_ERR) return 1;
97                    i++;
98
99                    if(!IsWindow((HWND)pFindPos[0])){
100                        MessageBeep(0);
101                        return 1;
102                    }
103
104                    WndNum=GetWndNum(GetParent((HWND)pFindPos[0]));
105                    if(WndNum==-1) return 1;
106
107                    CHARRANGE CharRange;
108                    CharRange.cpMin=pFindPos[i];
109
110                    char *pBuf;
111                    pBuf=MdiInfo[WndNum]->pMdiTextEdit->buffer;
112
113                    //行の末端位置を取得
114                    for(i=CharRange.cpMin;;i++){
115                        if(pBuf[i]=='\0') break;
116                        if(pBuf[i]=='\r'&&pBuf[i+1]=='\n') break;
117                    }
118                    CharRange.cpMax=i;
119
120                    TextEdit_SetSel(WndNum,CharRange.cpMin,CharRange.cpMax,TRUE);
121
122                    SetFocus((HWND)pFindPos[0]);
123                    return 1;
124                case IDCANCEL:
125                    HeapDefaultFree(pFindPos);
126                    EndDialog(hwnd,0);
127                    return 1;
128                case IDC_FINDLIST:
129                    if(HIWORD(wParam)==LBN_DBLCLK) SendMessage(hwnd,WM_COMMAND,IDC_SHOWITEM,0);
130                    return 1;
131            }
132            break;
133        case WM_SIZE:
134            RECT rect;
135            GetClientRect(hwnd,&rect);
136            MoveWindow(GetDlgItem(hwnd,IDC_FINDLIST),rect.left,26,rect.right,rect.bottom-26,1);
137            return 1;
138    }
139    return 0;
140}
141BOOL StartSearch(HWND hDlg,char *FindString,_int8 IsBigSmall, bool isWordUnit, BOOL IsShowMessage){
142    int i;
143    char *pBuf,msg[255];
144    CHARRANGE CharRange;
145
146    int WndNum;
147    WndNum=GetWndNum(GetWindow(hClient,GW_CHILD));
148    if(WndNum==-1) return 0;
149
150    pBuf=MdiInfo[WndNum]->pMdiTextEdit->buffer;
151
152    TextEdit_GetSel(WndNum,&CharRange);
153    i=CharRange.cpMax;
154
155FindStart:
156
157    int length;
158
159    i=(int)CompareSuper(hDlg,pBuf+i,FindString,IsBigSmall, isWordUnit, pobj_nv->bRegExp,&length);
160    if(i==-1){
161        //エラー
162        return 0;
163    }
164
165    if(i){
166        //検索文字列を反転表示
167        i-=(int)pBuf;
168        CharRange.cpMin=i;
169        CharRange.cpMax=i+length;
170        TextEdit_SetSel(WndNum,CharRange.cpMin,CharRange.cpMax,TRUE);
171
172        return 1;
173    }
174    else{
175        if(!IsShowMessage) return 0;
176
177        i=(int)CompareSuper(hDlg,pBuf,FindString,IsBigSmall, isWordUnit, pobj_nv->bRegExp,&length);
178        if(i==-1){
179            //エラー
180            return 0;
181        }
182
183        if(i){
184            //"ファイルの最初から検索しますか?"
185            if(MessageBox(hDlg,STRING_SEARCH_AGAIN,"ProjectEditor - Search",MB_YESNO|MB_ICONINFORMATION)==IDYES){
186                i=0;
187                goto FindStart;
188            }
189        }
190        else{
191            //"文字列 \"%s\" が見つかりません"
192            sprintf(msg,STRING_SEARCH_NOTFOUND,FindString);
193            MessageBox(hDlg,msg,"ProjectEditor - Search",MB_OK|MB_ICONINFORMATION);
194        }
195    }
196    return 0;
197}
198void AddFindData(HWND hwnd,char ppData[MAX_FINDLIST][MAX_PATH],char *str){
199    int i;
200    for(i=0;i<MAX_FINDLIST;i++){
201        if(lstrcmp(ppData[i],str)==0) break;
202    }
203    if(i==MAX_FINDLIST) i--;
204    for(;i>0;i--) lstrcpy(ppData[i],ppData[i-1]);
205    lstrcpy(ppData[0],str);
206    SendMessage(hwnd,CB_RESETCONTENT,0,0);
207    for(i=0;i<MAX_FINDLIST;i++){
208        if(ppData[i][0]=='\0') break;
209        SendMessage(hwnd,CB_ADDSTRING,0,(LPARAM)ppData[i]);
210    }
211    SendMessage(hwnd,CB_SETCURSEL,0,0);
212}
213INT_PTR CALLBACK DlgFind(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
214    extern HANDLE hHeap;
215    HWND FindAllDlg;
216    int i,WndNum;
217    char temporary[8192],*pTemp;
218    CHARRANGE CharRange;
219
220    switch(message){
221        case WM_INITDIALOG:
222            SetPosCenter(hwnd);
223
224            //大文字・小文字
225            if(pobj_nv->bFindStrBigSmall) SendDlgItemMessage(hwnd,IDC_ISBIGSMALL,BM_SETCHECK,BST_CHECKED,0);
226
227            // 単語単位
228            if( pobj_nv->isWordUnit ){
229                SendDlgItemMessage( hwnd, IDC_ISWORDUNIT, BM_SETCHECK, BST_CHECKED, 0 );
230            }
231
232            //正規表現
233            if(pobj_nv->bRegExp) SendDlgItemMessage(hwnd,IDC_REGEXP,BM_SETCHECK,BST_CHECKED,0);
234
235            //検索文字列コンボボックスを初期化
236            SendDlgItemMessage(hwnd,IDC_FINDSTR,CB_RESETCONTENT,0,0);
237            for(i=0;i<MAX_FINDLIST;i++){
238                if(pobj_nv->FindStr[i][0]=='\0') break;
239                SendDlgItemMessage(hwnd,IDC_FINDSTR,CB_ADDSTRING,0,(LPARAM)pobj_nv->FindStr[i]);
240            }
241            SendDlgItemMessage(hwnd,IDC_FINDSTR,CB_LIMITTEXT,8192,0);
242
243            WndNum=GetWndNum(GetWindow(hClient,GW_CHILD));
244
245            //選択されている文字列を取得
246            TextEdit_GetSel(WndNum,&CharRange);
247            pTemp=(char *)HeapAlloc(hHeap,0,CharRange.cpMax-CharRange.cpMin+1);
248            memcpy(pTemp,
249                MdiInfo[WndNum]->pMdiTextEdit->buffer+CharRange.cpMin,
250                CharRange.cpMax-CharRange.cpMin);
251            pTemp[CharRange.cpMax-CharRange.cpMin]=0;
252
253            if(pTemp[0]) SetDlgItemText(hwnd,IDC_FINDSTR,pTemp);
254            else SendDlgItemMessage(hwnd,IDC_FINDSTR,CB_SETCURSEL,0,0);
255
256            HeapDefaultFree(pTemp);
257
258            SetFocus(GetDlgItem(hwnd,IDC_FINDSTR));
259
260            ApplyDialogTexture(hwnd);
261            break;
262        case WM_COMMAND:
263            switch(LOWORD(wParam)){
264                case IDOK:
265                    GetDlgItemText(hwnd,IDC_FINDSTR,temporary,MAX_PATH);
266                    if(temporary[0]==0) return 1;
267                    AddFindData(GetDlgItem(hwnd,IDC_FINDSTR),pobj_nv->FindStr,temporary);
268
269                    //大文字・小文字
270                    if(SendDlgItemMessage(hwnd,IDC_ISBIGSMALL,BM_GETCHECK,0,0)) pobj_nv->bFindStrBigSmall=1;
271                    else pobj_nv->bFindStrBigSmall=0;
272
273                    // 単語単位
274                    pobj_nv->isWordUnit =
275                        ( SendDlgItemMessage( hwnd, IDC_ISWORDUNIT, BM_GETCHECK, 0, 0 ) != 0 );
276
277                    //正規表現
278                    if(SendDlgItemMessage(hwnd,IDC_REGEXP,BM_GETCHECK,0,0)) pobj_nv->bRegExp=1;
279                    else pobj_nv->bRegExp=0;
280
281                    StartSearch(hwnd,temporary,pobj_nv->bFindStrBigSmall, pobj_nv->isWordUnit, 1);
282                    return 1;
283                case IDC_FINDALL:
284                    GetDlgItemText(hwnd,IDC_FINDSTR,temporary,MAX_PATH);
285                    if(temporary[0]==0) return 1;
286                    AddFindData(GetDlgItem(hwnd,IDC_FINDSTR),pobj_nv->FindStr,temporary);
287
288                    //大文字・小文字
289                    if(SendDlgItemMessage(hwnd,IDC_ISBIGSMALL,BM_GETCHECK,0,0)) pobj_nv->bFindStrBigSmall=1;
290                    else pobj_nv->bFindStrBigSmall=0;
291
292                    // 単語単位
293                    pobj_nv->isWordUnit =
294                        ( SendDlgItemMessage( hwnd, IDC_ISWORDUNIT, BM_GETCHECK, 0, 0 ) != 0 );
295
296                    //正規表現
297                    if(SendDlgItemMessage(hwnd,IDC_REGEXP,BM_GETCHECK,0,0)) pobj_nv->bRegExp=1;
298                    else pobj_nv->bRegExp=0;
299
300                    FindAllDlg = ActiveBasic::Resource::CreateDialogAlt(hResInst, IDD_FINDALL, GetWindow(hwnd, GW_OWNER), DlgFindAll);
301                    ShowWindow(FindAllDlg,SW_SHOW);
302
303                    FindPosCounter=sizeof(long);
304                    pFindPos=(long *)HeapAlloc(hHeap,0,FindPosCounter);
305                    SetSearchData(FindAllDlg,temporary,pobj_nv->bFindStrBigSmall, pobj_nv->isWordUnit );
306                case IDCANCEL:
307                    EndDialog(hwnd,0);
308                    return 1;
309            }
310            break;
311    }
312    return 0;
313}
314INT_PTR CALLBACK DlgPermutation(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
315    extern HANDLE hHeap;
316    extern HINSTANCE hInst;
317    int i;
318    int WndNum;
319    char temporary[8192],temp2[8192],*pTemp;
320    CHARRANGE CharRange;
321    switch(message){
322        case WM_INITDIALOG:
323            SetPosCenter(hwnd);
324
325            //大文字・小文字
326            if(pobj_nv->bFindStrBigSmall) SendDlgItemMessage(hwnd,IDC_ISBIGSMALL,BM_SETCHECK,BST_CHECKED,0);
327
328            // 単語単位
329            if( pobj_nv->isWordUnit ){
330                SendDlgItemMessage( hwnd, IDC_ISWORDUNIT, BM_SETCHECK, BST_CHECKED, 0 );
331            }
332
333            //正規表現
334            if(pobj_nv->bRegExp) SendDlgItemMessage(hwnd,IDC_REGEXP,BM_SETCHECK,BST_CHECKED,0);
335
336
337            //検索文字列コンボボックスを初期化
338            SendDlgItemMessage(hwnd,IDC_FINDSTR,CB_RESETCONTENT,0,0);
339            for(i=0;i<MAX_FINDLIST;i++){
340                if(pobj_nv->FindStr[i][0]=='\0') break;
341                SendDlgItemMessage(hwnd,IDC_FINDSTR,CB_ADDSTRING,0,(LPARAM)pobj_nv->FindStr[i]);
342            }
343            SendDlgItemMessage(hwnd,IDC_FINDSTR,CB_LIMITTEXT,8192,0);
344
345            WndNum=GetWndNum(GetWindow(hClient,GW_CHILD));
346
347            //選択されている文字列を取得
348            TextEdit_GetSel(WndNum,&CharRange);
349            pTemp=(char *)HeapAlloc(hHeap,0,CharRange.cpMax-CharRange.cpMin+1);
350            memcpy(pTemp,
351                MdiInfo[WndNum]->pMdiTextEdit->buffer+CharRange.cpMin,
352                CharRange.cpMax-CharRange.cpMin);
353            pTemp[CharRange.cpMax-CharRange.cpMin]=0;
354
355            if(pTemp[0]) SetDlgItemText(hwnd,IDC_FINDSTR,pTemp);
356            else SendDlgItemMessage(hwnd,IDC_FINDSTR,CB_SETCURSEL,0,0);
357
358            HeapDefaultFree(pTemp);
359
360            //置換文字列コンボボックスを初期化
361            SendDlgItemMessage(hwnd,IDC_PERMUTATIONSTR,CB_RESETCONTENT,0,0);
362            for(i=0;i<MAX_FINDLIST;i++){
363                if(pobj_nv->PermutationStr[i][0]=='\0') break;
364                SendDlgItemMessage(hwnd,IDC_PERMUTATIONSTR,CB_ADDSTRING,0,(LPARAM)pobj_nv->PermutationStr[i]);
365            }
366            SendDlgItemMessage(hwnd,IDC_PERMUTATIONSTR,CB_SETCURSEL,0,0);
367            SendDlgItemMessage(hwnd,IDC_PERMUTATIONSTR,CB_LIMITTEXT,8192,0);
368
369            SetFocus(GetDlgItem(hwnd,IDC_FINDSTR));
370
371            ApplyDialogTexture(hwnd);
372            break;
373        case WM_COMMAND:
374            switch(LOWORD(wParam)){
375                case IDC_FIND:
376                    //大文字・小文字
377                    if(SendDlgItemMessage(hwnd,IDC_ISBIGSMALL,BM_GETCHECK,0,0)) pobj_nv->bFindStrBigSmall=1;
378                    else pobj_nv->bFindStrBigSmall=0;
379
380                    // 単語単位
381                    pobj_nv->isWordUnit =
382                        ( SendDlgItemMessage( hwnd, IDC_ISWORDUNIT, BM_GETCHECK, 0, 0 ) != 0 );
383
384                    //正規表現
385                    if(SendDlgItemMessage(hwnd,IDC_REGEXP,BM_GETCHECK,0,0)) pobj_nv->bRegExp=1;
386                    else pobj_nv->bRegExp=0;
387
388                    GetDlgItemText(hwnd,IDC_FINDSTR,temporary,MAX_PATH);
389                    if(temporary[0]==0) return 1;
390                    AddFindData(GetDlgItem(hwnd,IDC_FINDSTR),pobj_nv->FindStr,temporary);
391
392                    StartSearch(hwnd,temporary,pobj_nv->bFindStrBigSmall, pobj_nv->isWordUnit, 1);
393                    return 1;
394                case IDC_PERMUTATIONNEXT:
395                    //////////
396                    // 置換
397                    //////////
398
399                    //大文字・小文字
400                    if(SendDlgItemMessage(hwnd,IDC_ISBIGSMALL,BM_GETCHECK,0,0)) pobj_nv->bFindStrBigSmall=1;
401                    else pobj_nv->bFindStrBigSmall=0;
402
403                    // 単語単位
404                    pobj_nv->isWordUnit =
405                        ( SendDlgItemMessage( hwnd, IDC_ISWORDUNIT, BM_GETCHECK, 0, 0 ) != 0 );
406
407                    //正規表現
408                    if(SendDlgItemMessage(hwnd,IDC_REGEXP,BM_GETCHECK,0,0)) pobj_nv->bRegExp=1;
409                    else pobj_nv->bRegExp=0;
410
411                    //検索する文字列を取得
412                    GetDlgItemText(hwnd,IDC_FINDSTR,temporary,MAX_PATH);
413                    if(temporary[0]==0) return 1;
414                    AddFindData(GetDlgItem(hwnd,IDC_FINDSTR),pobj_nv->FindStr,temporary);
415
416                    //置換する文字列を取得
417                    GetDlgItemText(hwnd,IDC_PERMUTATIONSTR,temp2,MAX_PATH);
418                    AddFindData(GetDlgItem(hwnd,IDC_PERMUTATIONSTR),pobj_nv->PermutationStr,temp2);
419
420                    WndNum=GetWndNum(GetWindow(hClient,GW_CHILD));
421
422                    //選択されている文字列を取得
423                    TextEdit_GetSel(WndNum,&CharRange);
424                    pTemp=(char *)HeapAlloc(hHeap,0,CharRange.cpMax-CharRange.cpMin+1);
425                    memcpy(pTemp,
426                        MdiInfo[WndNum]->pMdiTextEdit->buffer+CharRange.cpMin,
427                        CharRange.cpMax-CharRange.cpMin);
428                    pTemp[CharRange.cpMax-CharRange.cpMin]=0;
429
430                    int length;
431                    i=(int)CompareSuper(hwnd,pTemp,temporary,pobj_nv->bFindStrBigSmall, pobj_nv->isWordUnit, pobj_nv->bRegExp,&length);
432                    if(i==-1){
433                        HeapDefaultFree(pTemp);
434                        return 1;
435                    }
436
437                    if(i){
438                        if(pobj_nv->bRegExp){
439                            char *pTempPermu;
440
441                            //正規表現の結果文字列を取得(置換後用の文字列を取得)
442                            pTempPermu=obj_RegExp.GetPermuStr(hwnd,pTemp,temporary,temp2,pobj_nv->bFindStrBigSmall);
443                            if(pTempPermu==(char *)-1||pTempPermu==0){
444                                HeapDefaultFree(pTemp);
445                                return 1;
446                            }
447
448                            //置換する
449                            TextEdit_ReplaceUpdateUndoData(WndNum,pTempPermu,0,1);
450
451                            HeapDefaultFree(pTempPermu);
452                        }
453                        else{
454                            //置換する
455                            TextEdit_ReplaceUpdateUndoData(WndNum,temp2,0,1);
456                        }
457                    }
458                    HeapDefaultFree(pTemp);
459
460                    //次を検索
461                    SendMessage(hwnd,WM_COMMAND,IDC_FIND,0);
462
463                    return 1;
464                case IDC_PERMUTATIONALL:
465                    //////////////
466                    // すべて置換
467                    //////////////
468
469                    //大文字・小文字
470                    if(SendDlgItemMessage(hwnd,IDC_ISBIGSMALL,BM_GETCHECK,0,0)) pobj_nv->bFindStrBigSmall=1;
471                    else pobj_nv->bFindStrBigSmall=0;
472
473                    // 単語単位
474                    pobj_nv->isWordUnit =
475                        ( SendDlgItemMessage( hwnd, IDC_ISWORDUNIT, BM_GETCHECK, 0, 0 ) != 0 );
476
477                    //正規表現
478                    if(SendDlgItemMessage(hwnd,IDC_REGEXP,BM_GETCHECK,0,0)) pobj_nv->bRegExp=1;
479                    else pobj_nv->bRegExp=0;
480
481                    //検索する文字列を取得
482                    GetDlgItemText(hwnd,IDC_FINDSTR,temporary,MAX_PATH);
483                    if(temporary[0]==0) return 1;
484                    AddFindData(GetDlgItem(hwnd,IDC_FINDSTR),pobj_nv->FindStr,temporary);
485
486                    //置換する文字列を取得
487                    GetDlgItemText(hwnd,IDC_PERMUTATIONSTR,temp2,MAX_PATH);
488                    AddFindData(GetDlgItem(hwnd,IDC_PERMUTATIONSTR),pobj_nv->PermutationStr,temp2);
489
490                    //正規表現
491                    if(SendDlgItemMessage(hwnd,IDC_REGEXP,BM_GETCHECK,0,0)) pobj_nv->bRegExp=1;
492                    else pobj_nv->bRegExp=0;
493
494                    WndNum=GetWndNum(GetWindow(hClient,GW_CHILD));
495
496                    TextEdit_SetSel(WndNum,0,0,TRUE);
497
498                    while(StartSearch(hwnd,temporary,pobj_nv->bFindStrBigSmall, pobj_nv->isWordUnit, 0)){
499                        if(pobj_nv->bRegExp){
500                            //選択されている文字列を取得
501                            TextEdit_GetSel(WndNum,&CharRange);
502                            pTemp=(char *)HeapAlloc(hHeap,0,CharRange.cpMax-CharRange.cpMin+1);
503                            memcpy(pTemp,
504                                MdiInfo[WndNum]->pMdiTextEdit->buffer+CharRange.cpMin,
505                                CharRange.cpMax-CharRange.cpMin);
506                            pTemp[CharRange.cpMax-CharRange.cpMin]=0;
507
508                            char *pTempPermu;
509
510                            //正規表現の結果文字列を取得(置換後用の文字列を取得)
511                            pTempPermu=obj_RegExp.GetPermuStr(hwnd,pTemp,temporary,temp2,pobj_nv->bFindStrBigSmall);
512                            if(pTempPermu==(char *)-1||pTempPermu==0){
513                                HeapDefaultFree(pTemp);
514                                return 1;
515                            }
516
517                            //置換する
518                            TextEdit_ReplaceUpdateUndoData(WndNum,pTempPermu,0,1);
519
520                            HeapDefaultFree(pTempPermu);
521                            HeapDefaultFree(pTemp);
522                        }
523                        else{
524                            //置換する
525                            TextEdit_ReplaceUpdateUndoData(WndNum,temp2,0,1);
526                        }
527                    }
528
529                    return 1;
530                case IDCANCEL:
531                    EndDialog(hwnd,0);
532                    return 1;
533            }
534            break;
535    }
536    return 0;
537}
Note: See TracBrowser for help on using the repository browser.