Changeset 629 in dev for trunk/ab5.0/abdev/abdev/abdev.cpp
- Timestamp:
- Jun 2, 2008, 11:50:24 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ab5.0/abdev/abdev/abdev.cpp
r626 r629 100 100 if(!IsWindow(hChild)) return -1; 101 101 for(i=0;i<MdiInfo.size();i++){ 102 if(hChild==MdiInfo[i] .hwnd) break;102 if(hChild==MdiInfo[i]->hwnd) break; 103 103 } 104 104 if(i==MdiInfo.size()) i=-1; … … 119 119 projectInfo.pobj_DBFileInfo->ppobj_FileInfo[i]->GetFullPath(temporary); 120 120 121 if(lstrcmpi(MdiInfo[WndNum] .path.c_str(),temporary)==0) return i;121 if(lstrcmpi(MdiInfo[WndNum]->path.c_str(),temporary)==0) return i; 122 122 } 123 123 return -1; … … 139 139 if(WndNum==-1) break; 140 140 141 if(IS_DOCUMENT_TEXT(MdiInfo[WndNum] .DocType)){141 if(IS_DOCUMENT_TEXT(MdiInfo[WndNum]->DocType)){ 142 142 //コントロールタブスペースの幅と行番号の文字数を更新 143 MdiInfo[WndNum] .pMdiTextEdit->iWidth_ControlTabSpace=144 GetControlTabSpace(WndNum,&MdiInfo[WndNum] .pMdiTextEdit->iLineNumberTextCount);145 146 InvalidateRect(MdiInfo[WndNum] .pMdiTextEdit->hEdit,NULL,0);147 InvalidateRect(MdiInfo[WndNum] .pMdiTextEdit->pobj_Ruler->hRulerWnd,NULL,0);148 149 SendTextEditResizeEvent(MdiInfo[WndNum] .hwnd);143 MdiInfo[WndNum]->pMdiTextEdit->iWidth_ControlTabSpace= 144 GetControlTabSpace(WndNum,&MdiInfo[WndNum]->pMdiTextEdit->iLineNumberTextCount); 145 146 InvalidateRect(MdiInfo[WndNum]->pMdiTextEdit->hEdit,NULL,0); 147 InvalidateRect(MdiInfo[WndNum]->pMdiTextEdit->pobj_Ruler->hRulerWnd,NULL,0); 148 149 SendTextEditResizeEvent(MdiInfo[WndNum]->hwnd); 150 150 } 151 151 else{ … … 165 165 WndNum=GetWndNum(hChild); 166 166 sw=0; 167 if(IS_DOCUMENT_TEXT(MdiInfo[WndNum] .DocType)){168 if( MdiInfo[WndNum] .pMdiTextEdit->IsModified() ) sw=1;169 } 170 else if(MdiInfo[WndNum] .DocType==WNDTYPE_ICONEDIT){171 if(MdiInfo[WndNum] .MdiIconEditInfo->bModify) sw=1;167 if(IS_DOCUMENT_TEXT(MdiInfo[WndNum]->DocType)){ 168 if( MdiInfo[WndNum]->pMdiTextEdit->IsModified() ) sw=1; 169 } 170 else if(MdiInfo[WndNum]->DocType==WNDTYPE_ICONEDIT){ 171 if(MdiInfo[WndNum]->MdiIconEditInfo->bModify) sw=1; 172 172 } 173 173 … … 205 205 if(WndNum==-1) return; 206 206 hChild=GetWindow(hChild,GW_CHILD); 207 if(IS_DOCUMENT_TEXT(MdiInfo[WndNum] .DocType)){207 if(IS_DOCUMENT_TEXT(MdiInfo[WndNum]->DocType)){ 208 208 ////////////////////// 209 209 // テキストエディタ … … 211 211 212 212 //サイズ 213 BufSize=(double)lstrlen(MdiInfo[WndNum] .pMdiTextEdit->buffer);213 BufSize=(double)lstrlen(MdiInfo[WndNum]->pMdiTextEdit->buffer); 214 214 if(IsWindow(hChild)){ 215 215 if(BufSize<1024) sprintf(temporary,"%s: %.0fByte",STRING_SIZE,BufSize); … … 231 231 //日本語 232 232 sprintf(temporary,"%d 行、%d 列", 233 MdiInfo[WndNum] .pMdiTextEdit->StartCaretPos.y+1,234 MdiInfo[WndNum] .pMdiTextEdit->StartCaretPos.x+1);233 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y+1, 234 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.x+1); 235 235 #else 236 236 //英語 237 237 sprintf(temporary,"%d : %d", 238 MdiInfo[WndNum] .pMdiTextEdit->StartCaretPos.y+1,239 MdiInfo[WndNum] .pMdiTextEdit->StartCaretPos.x+1);238 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y+1, 239 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.x+1); 240 240 #endif 241 241 } … … 244 244 245 245 //文字コード 246 nkf.GetCharCodeName(MdiInfo[WndNum] .pMdiTextEdit->iCharCode,temporary);246 nkf.GetCharCodeName(MdiInfo[WndNum]->pMdiTextEdit->iCharCode,temporary); 247 247 SendMessage(hStatusBar,SB_SETTEXT,3,(LPARAM)temporary); 248 248 249 249 //文字コード 250 nkf.GetLfCodeName(MdiInfo[WndNum] .pMdiTextEdit->iLfCode,temporary);250 nkf.GetLfCodeName(MdiInfo[WndNum]->pMdiTextEdit->iLfCode,temporary); 251 251 SendMessage(hStatusBar,SB_SETTEXT,4,(LPARAM)temporary); 252 252 } 253 else if(MdiInfo[WndNum] .DocType==WNDTYPE_RAD){253 else if(MdiInfo[WndNum]->DocType==WNDTYPE_RAD){ 254 254 //////////////// 255 255 // RADツール 256 256 //////////////// 257 257 258 ActiveBasic::PM::WindowInfo *pWindowInfo = GetWndInfo(MdiInfo[WndNum] .path);258 ActiveBasic::PM::WindowInfo *pWindowInfo = GetWndInfo(MdiInfo[WndNum]->path); 259 259 if(RadInfo.NowDragging>=FRAME_CHANGEPOS_START&&RadInfo.NowDragging<=FRAME_CHANGEPOS_END){ 260 260 sprintf(temporary,"pos %d, %d", 261 RadInfo.DraggingRect[0].left-MdiInfo[WndNum] .MdiRadInfo->ClientPos.x,262 RadInfo.DraggingRect[0].top-MdiInfo[WndNum] .MdiRadInfo->ClientPos.y);261 RadInfo.DraggingRect[0].left-MdiInfo[WndNum]->MdiRadInfo->ClientPos.x, 262 RadInfo.DraggingRect[0].top-MdiInfo[WndNum]->MdiRadInfo->ClientPos.y); 263 263 SendMessage(hStatusBar,SB_SETTEXT,1,(LPARAM)temporary); 264 264 sprintf(temporary,"size %d * %d", … … 267 267 SendMessage(hStatusBar,SB_SETTEXT,2,(LPARAM)temporary); 268 268 } 269 else if(MdiInfo[WndNum] .MdiRadInfo->SelectingItem[0]==SELECT_WINDOW){269 else if(MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]==SELECT_WINDOW){ 270 270 SendMessage(hStatusBar,SB_SETTEXT,1,(LPARAM)"pos 0, 0"); 271 271 sprintf(temporary,"size %d * %d",pWindowInfo->size.cx,pWindowInfo->size.cy); … … 274 274 else{ 275 275 sprintf(temporary,"pos %d, %d", 276 pWindowInfo->childWindowInfos[MdiInfo[WndNum] .MdiRadInfo->SelectingItem[0]]->pos.x,277 pWindowInfo->childWindowInfos[MdiInfo[WndNum] .MdiRadInfo->SelectingItem[0]]->pos.y);276 pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->pos.x, 277 pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->pos.y); 278 278 SendMessage(hStatusBar,SB_SETTEXT,1,(LPARAM)temporary); 279 279 sprintf(temporary,"size %d * %d", 280 pWindowInfo->childWindowInfos[MdiInfo[WndNum] .MdiRadInfo->SelectingItem[0]]->size.cx,281 pWindowInfo->childWindowInfos[MdiInfo[WndNum] .MdiRadInfo->SelectingItem[0]]->size.cy);280 pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->size.cx, 281 pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->size.cy); 282 282 SendMessage(hStatusBar,SB_SETTEXT,2,(LPARAM)temporary); 283 283 } 284 284 } 285 else if(MdiInfo[WndNum] .DocType==WNDTYPE_MENU){285 else if(MdiInfo[WndNum]->DocType==WNDTYPE_MENU){ 286 286 ////////////////// 287 287 // MENU エディタ … … 291 291 SendMessage(hStatusBar,SB_SETTEXT,2,(LPARAM)""); 292 292 } 293 else if(MdiInfo[WndNum] .DocType==WNDTYPE_ICONEDIT){293 else if(MdiInfo[WndNum]->DocType==WNDTYPE_ICONEDIT){ 294 294 ////////////////// 295 295 // ICON エディタ … … 314 314 pobj_StandardToolbar->EnableItem(IDM_REDO,0); 315 315 } 316 else if(IS_DOCUMENT_TEXT(MdiInfo[i] .DocType)){317 i2=MdiInfo[i] .pMdiTextEdit->pTextEditUndoState->NowPos-1;316 else if(IS_DOCUMENT_TEXT(MdiInfo[i]->DocType)){ 317 i2=MdiInfo[i]->pMdiTextEdit->pTextEditUndoState->NowPos-1; 318 318 if(i2==-1) i2=MAX_UNDONUM-1; 319 if(!MdiInfo[i] .pMdiTextEdit->pTextEditUndoState->Command[i2]){319 if(!MdiInfo[i]->pMdiTextEdit->pTextEditUndoState->Command[i2]){ 320 320 pobj_MainMenu->EnableItem(IDM_UNDO,MF_BYCOMMAND|MF_GRAYED); 321 321 EnableMenuItem(hEditMenu,IDM_UNDO,MF_BYCOMMAND|MF_GRAYED); … … 327 327 pobj_StandardToolbar->EnableItem(IDM_UNDO,1); 328 328 } 329 if(!MdiInfo[i] .pMdiTextEdit->pTextEditUndoState->Command[MdiInfo[i].pMdiTextEdit->pTextEditUndoState->NowPos]){329 if(!MdiInfo[i]->pMdiTextEdit->pTextEditUndoState->Command[MdiInfo[i]->pMdiTextEdit->pTextEditUndoState->NowPos]){ 330 330 pobj_MainMenu->EnableItem(IDM_REDO,MF_BYCOMMAND|MF_GRAYED); 331 331 EnableMenuItem(hEditMenu,IDM_REDO,MF_BYCOMMAND|MF_GRAYED); … … 338 338 } 339 339 } 340 else if(MdiInfo[i] .DocType==WNDTYPE_RAD){341 i2=MdiInfo[i] .MdiRadInfo->undo.NowPos-1;340 else if(MdiInfo[i]->DocType==WNDTYPE_RAD){ 341 i2=MdiInfo[i]->MdiRadInfo->undo.NowPos-1; 342 342 if(i2==-1) i2=MAX_UNDONUM-1; 343 if(!MdiInfo[i] .MdiRadInfo->undo.Command[i2]){343 if(!MdiInfo[i]->MdiRadInfo->undo.Command[i2]){ 344 344 pobj_MainMenu->EnableItem(IDM_UNDO,MF_BYCOMMAND|MF_GRAYED); 345 345 EnableMenuItem(hEditMenu,IDM_UNDO,MF_BYCOMMAND|MF_GRAYED); … … 351 351 pobj_StandardToolbar->EnableItem(IDM_UNDO,1); 352 352 } 353 if(!MdiInfo[i] .MdiRadInfo->undo.Command[MdiInfo[i].MdiRadInfo->undo.NowPos]){353 if(!MdiInfo[i]->MdiRadInfo->undo.Command[MdiInfo[i]->MdiRadInfo->undo.NowPos]){ 354 354 pobj_MainMenu->EnableItem(IDM_REDO,MF_BYCOMMAND|MF_GRAYED); 355 355 EnableMenuItem(hEditMenu,IDM_REDO,MF_BYCOMMAND|MF_GRAYED); … … 362 362 } 363 363 } 364 else if(MdiInfo[i] .DocType==WNDTYPE_MENU){364 else if(MdiInfo[i]->DocType==WNDTYPE_MENU){ 365 365 pobj_MainMenu->EnableItem(IDM_UNDO,MF_BYCOMMAND|MF_GRAYED); 366 366 EnableMenuItem(hEditMenu,IDM_UNDO,MF_BYCOMMAND|MF_GRAYED); … … 371 371 pobj_StandardToolbar->EnableItem(IDM_REDO,0); 372 372 } 373 else if(MdiInfo[i] .DocType==WNDTYPE_ICONEDIT){374 i2=MdiInfo[i] .MdiIconEditInfo->undo[MdiInfo[i].MdiIconEditInfo->SelectIconNum].NowPos-1;373 else if(MdiInfo[i]->DocType==WNDTYPE_ICONEDIT){ 374 i2=MdiInfo[i]->MdiIconEditInfo->undo[MdiInfo[i]->MdiIconEditInfo->SelectIconNum].NowPos-1; 375 375 if(i2==-1) i2=MAX_ICONEDIT_UNDONUM-1; 376 if(!MdiInfo[i] .MdiIconEditInfo->undo[MdiInfo[i].MdiIconEditInfo->SelectIconNum].lpData[i2]){376 if(!MdiInfo[i]->MdiIconEditInfo->undo[MdiInfo[i]->MdiIconEditInfo->SelectIconNum].lpData[i2]){ 377 377 pobj_MainMenu->EnableItem(IDM_UNDO,MF_BYCOMMAND|MF_GRAYED); 378 378 EnableMenuItem(hEditMenu,IDM_UNDO,MF_BYCOMMAND|MF_GRAYED); … … 384 384 pobj_StandardToolbar->EnableItem(IDM_UNDO,1); 385 385 } 386 if(!MdiInfo[i] .MdiIconEditInfo->undo[MdiInfo[i].MdiIconEditInfo->SelectIconNum].lpData[MdiInfo[i].MdiIconEditInfo->undo[MdiInfo[i].MdiIconEditInfo->SelectIconNum].NowPos]){386 if(!MdiInfo[i]->MdiIconEditInfo->undo[MdiInfo[i]->MdiIconEditInfo->SelectIconNum].lpData[MdiInfo[i]->MdiIconEditInfo->undo[MdiInfo[i]->MdiIconEditInfo->SelectIconNum].NowPos]){ 387 387 pobj_MainMenu->EnableItem(IDM_REDO,MF_BYCOMMAND|MF_GRAYED); 388 388 EnableMenuItem(hEditMenu,IDM_REDO,MF_BYCOMMAND|MF_GRAYED); … … 454 454 WndNum=GetWndNum(hChild); 455 455 if(WndNum==-1) return; 456 if(IS_DOCUMENT_TEXT(MdiInfo[WndNum] .DocType)){456 if(IS_DOCUMENT_TEXT(MdiInfo[WndNum]->DocType)){ 457 457 pobj_MainMenu->EnableItem(IDM_ALLSELECT,MF_BYCOMMAND|MF_ENABLED); 458 458 pobj_MainMenu->EnableItem(IDM_FIND,MF_BYCOMMAND|MF_ENABLED); … … 466 466 hChild=GetWindow(hChild,GW_CHILD); 467 467 if(!( 468 MdiInfo[WndNum] .pMdiTextEdit->StartCaretPos.x==MdiInfo[WndNum].pMdiTextEdit->EndCaretPos.x&&469 MdiInfo[WndNum] .pMdiTextEdit->StartCaretPos.y==MdiInfo[WndNum].pMdiTextEdit->EndCaretPos.y468 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.x==MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos.x&& 469 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y==MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos.y 470 470 )){ 471 471 MenuMsg=MF_BYCOMMAND|MF_ENABLED; … … 502 502 ResetState_ConvMenu(bConvEnable); 503 503 } 504 else if(MdiInfo[WndNum] .DocType==WNDTYPE_RAD){504 else if(MdiInfo[WndNum]->DocType==WNDTYPE_RAD){ 505 505 //検索、置換、文字カウントを無効化 506 506 pobj_MainMenu->EnableItem(IDM_FIND,MF_BYCOMMAND|MF_GRAYED); … … 511 511 pobj_StandardToolbar->EnableItem(IDM_FIND,0); 512 512 513 if(MdiInfo[WndNum] .MdiRadInfo->SelectingItem[0]==SELECT_WINDOW){513 if(MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]==SELECT_WINDOW){ 514 514 //切り取り、コピー、削除を有効化 515 515 pobj_MainMenu->EnableItem(IDM_CUT,MF_BYCOMMAND|MF_GRAYED); … … 548 548 ResetState_ConvMenu(0); 549 549 } 550 else if(MdiInfo[WndNum] .DocType==WNDTYPE_MENU){550 else if(MdiInfo[WndNum]->DocType==WNDTYPE_MENU){ 551 551 //検索、置換、文字カウントを無効化 552 552 pobj_MainMenu->EnableItem(IDM_FIND,MF_BYCOMMAND|MF_GRAYED); … … 571 571 ResetState_ConvMenu(0); 572 572 } 573 else if(MdiInfo[WndNum] .DocType==WNDTYPE_ICONEDIT){573 else if(MdiInfo[WndNum]->DocType==WNDTYPE_ICONEDIT){ 574 574 //検索、置換、文字カウントを無効化 575 575 pobj_MainMenu->EnableItem(IDM_FIND,MF_BYCOMMAND|MF_GRAYED); … … 580 580 pobj_StandardToolbar->EnableItem(IDM_FIND,0); 581 581 582 if(MdiInfo[WndNum] .MdiIconEditInfo->SelectLevel==0){582 if(MdiInfo[WndNum]->MdiIconEditInfo->SelectLevel==0){ 583 583 //切り取り、コピー、削除を無効化 584 584 pobj_MainMenu->EnableItem(IDM_CUT,MF_BYCOMMAND|MF_GRAYED); … … 645 645 if( WndNum != -1 ) 646 646 { 647 if(IS_DOCUMENT_TEXT(MdiInfo[WndNum] .DocType)){647 if(IS_DOCUMENT_TEXT(MdiInfo[WndNum]->DocType)){ 648 648 pobj_MainMenu->EnableItem(IDM_PAGESET,MF_BYCOMMAND|MF_ENABLED); 649 649 … … 726 726 int i; 727 727 for(i=0;i<MdiInfo.size();i++){ 728 if(MdiInfo[i] .hwnd){729 if(lstrcmpi(MdiInfo[i] .title.c_str(),lpszTitle)==0){728 if(MdiInfo[i]->hwnd){ 729 if(lstrcmpi(MdiInfo[i]->title.c_str(),lpszTitle)==0){ 730 730 lstrcat(lpszTitle,"_"); 731 731 DuplicateTitleCheck(lpszTitle); … … 735 735 } 736 736 } 737 HWND NewTextEditWindow(char *filepath,_int8 DocumentType,COLORREF TabColor){ 737 HWND NewTextEditWindow(char *filepath,_int8 DocumentType,COLORREF TabColor) 738 { 738 739 int i; 739 740 char str[MAX_PATH],str2[32],*buffer; … … 746 747 747 748 //すでに指定されたファイルが開かれている場合 748 hChild= GetWindow(hClient,GW_CHILD);749 hChild=::GetWindow(hClient,GW_CHILD); 749 750 while(hChild){ 750 751 i=GetWndNum(hChild); 751 if(IS_DOCUMENT_TEXT(MdiInfo[i] .DocType)){752 if(lstrcmpi(MdiInfo[i] .path.c_str(),filepath)==0) break;753 } 754 hChild= GetNextWindow(hChild,GW_HWNDNEXT);752 if(IS_DOCUMENT_TEXT(MdiInfo[i]->DocType)){ 753 if(lstrcmpi(MdiInfo[i]->path.c_str(),filepath)==0) break; 754 } 755 hChild=::GetNextWindow(hChild,GW_HWNDNEXT); 755 756 } 756 757 if(hChild){ 757 758 //前面に表示して終了 758 BringWindowToTop(hChild);759 ::BringWindowToTop(hChild); 759 760 return hChild; 760 761 } … … 769 770 if(hFile==INVALID_HANDLE_VALUE){ 770 771 sprintf(str,STRING_ERROR_CANT_FILEOPEN,filepath); 771 MessageBox(hOwner,str,STRING_ERROR,MB_OK|MB_ICONEXCLAMATION);772 ::MessageBox(hOwner,str,STRING_ERROR,MB_OK|MB_ICONEXCLAMATION); 772 773 return 0; 773 774 } … … 853 854 else{ 854 855 buffer=(char *)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,1); 856 extern int DocumentCounter; 855 857 DocumentCounter++; 856 858 sprintf(str,"Document[%d]",DocumentCounter); … … 866 868 mdic.szTitle=str; 867 869 868 hChild= GetWindow(hClient,GW_CHILD);869 if( IsWindow(hChild)){870 if( IsZoomed(hChild)) mdic.style=WS_MAXIMIZE;870 hChild=::GetWindow(hClient,GW_CHILD); 871 if(::IsWindow(hChild)){ 872 if(::IsZoomed(hChild)) mdic.style=WS_MAXIMIZE; 871 873 else mdic.style=0; 872 874 } … … 883 885 mdic.lParam=(LPARAM)shfi.hIcon; 884 886 885 mdic.style |=WS_CLIPCHILDREN;887 mdic.style |= WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_SYSMENU | WS_CAPTION | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX; 886 888 hChild=(HWND)SendMessage(hClient,WM_MDICREATE,0,(long)&mdic); //ウィンドウ作成 887 889 888 890 //TextEditorコントロールを設置 889 GetClientRect(hChild,&rect);891 ::GetClientRect(hChild,&rect); 890 892 hEdit=CreateWindow("TextEditor",NULL, 891 893 WS_CHILD|WS_HSCROLL|WS_VSCROLL|WS_VISIBLE, … … 895 897 896 898 //ウィンドウのID登録 897 MdiInfo.push_back( MDIINFO() );899 MdiInfo.push_back( new MDIINFO() ); 898 900 i = MdiInfo.size()-1; 899 MdiInfo[i] .hwnd=hChild;900 MdiInfo[i] .DocType=DocumentType;901 MdiInfo[i]->hwnd=hChild; 902 MdiInfo[i]->DocType=DocumentType; 901 903 DuplicateTitleCheck(str); 902 MdiInfo[i] .title = str;904 MdiInfo[i]->title = str; 903 905 if(filepath) 904 906 { 905 MdiInfo[i] .path = filepath;907 MdiInfo[i]->path = filepath; 906 908 } 907 909 else 908 910 { 909 MdiInfo[i] .path = "";910 } 911 912 MdiInfo[i] .pMdiTextEdit = new CMdiTextEdit( &MdiInfo[i] );913 914 MdiInfo[i] .pMdiTextEdit->hEdit=hEdit;915 MdiInfo[i] .pMdiTextEdit->pobj_WebResult=new CWebResult(hChild);916 MdiInfo[i] .pMdiTextEdit->pobj_Ruler=new CRuler(hChild,i);917 MdiInfo[i] .pMdiTextEdit->hIcon=shfi.hIcon;918 MdiInfo[i] .pMdiTextEdit->buffer=buffer;919 MdiInfo[i] .pMdiTextEdit->pColorRef=(COLORREF *)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,sizeof(COLORREF)*lstrlen(buffer));920 MdiInfo[i] .pMdiTextEdit->iUnderStart=-1;921 MdiInfo[i] .pMdiTextEdit->iUnderEnd=-1;922 MdiInfo[i] .pMdiTextEdit->StartCaretPos.x=0;923 MdiInfo[i] .pMdiTextEdit->StartCaretPos.y=0;924 MdiInfo[i] .pMdiTextEdit->EndCaretPos.x=0;925 MdiInfo[i] .pMdiTextEdit->EndCaretPos.y=0;926 MdiInfo[i] .pMdiTextEdit->Temp_UpDown_CaretXPos=-1;927 MdiInfo[i] .pMdiTextEdit->bAutoScroll=0;928 MdiInfo[i] .pMdiTextEdit->iWidth_ControlTabSpace=929 GetControlTabSpace(i,&MdiInfo[i] .pMdiTextEdit->iLineNumberTextCount);930 MdiInfo[i] .pMdiTextEdit->iCharCode=iCharCode;931 MdiInfo[i] .pMdiTextEdit->iLfCode=iLfCode;932 MdiInfo[i] .IndentStr=0;911 MdiInfo[i]->path = ""; 912 } 913 914 MdiInfo[i]->pMdiTextEdit = new CMdiTextEdit( MdiInfo[i] ); 915 916 MdiInfo[i]->pMdiTextEdit->hEdit=hEdit; 917 MdiInfo[i]->pMdiTextEdit->pobj_WebResult=new CWebResult(hChild); 918 MdiInfo[i]->pMdiTextEdit->pobj_Ruler=new CRuler(hChild,i); 919 MdiInfo[i]->pMdiTextEdit->hIcon=shfi.hIcon; 920 MdiInfo[i]->pMdiTextEdit->buffer=buffer; 921 MdiInfo[i]->pMdiTextEdit->pColorRef=(COLORREF *)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,sizeof(COLORREF)*lstrlen(buffer)); 922 MdiInfo[i]->pMdiTextEdit->iUnderStart=-1; 923 MdiInfo[i]->pMdiTextEdit->iUnderEnd=-1; 924 MdiInfo[i]->pMdiTextEdit->StartCaretPos.x=0; 925 MdiInfo[i]->pMdiTextEdit->StartCaretPos.y=0; 926 MdiInfo[i]->pMdiTextEdit->EndCaretPos.x=0; 927 MdiInfo[i]->pMdiTextEdit->EndCaretPos.y=0; 928 MdiInfo[i]->pMdiTextEdit->Temp_UpDown_CaretXPos=-1; 929 MdiInfo[i]->pMdiTextEdit->bAutoScroll=0; 930 MdiInfo[i]->pMdiTextEdit->iWidth_ControlTabSpace= 931 GetControlTabSpace(i,&MdiInfo[i]->pMdiTextEdit->iLineNumberTextCount); 932 MdiInfo[i]->pMdiTextEdit->iCharCode=iCharCode; 933 MdiInfo[i]->pMdiTextEdit->iLfCode=iLfCode; 934 MdiInfo[i]->IndentStr=0; 933 935 934 936 … … 944 946 //Docコンボボックスに追加 945 947 extern HWND hDocCombo; 946 i=SendMessage(hDocCombo,CB_ADDSTRING,0,(long)str); 947 SendMessage(hDocCombo,CB_SETCURSEL,i,0); 948 if( hDocCombo ) 949 { 950 i=SendMessage(hDocCombo,CB_ADDSTRING,0,(long)str); 951 SendMessage(hDocCombo,CB_SETCURSEL,i,0); 952 } 948 953 949 954 //タブに追加 950 955 pobj_MainTab->InsertItem( str, true, TabColor ); 951 956 952 SetFocus(hEdit);957 ::SetFocus(hEdit); 953 958 SetStatusText(NULL); 954 959 … … 958 963 if( DocumentType == WNDTYPE_BASIC && !projectInfo.IsOpened() ){ 959 964 // 単体ソースコードを開いたとき 960 if( !IsWindowVisible( hProjectView ) ){ 965 extern HWND hProjectView; 966 if( !::IsWindowVisible( hProjectView ) ){ 961 967 // クラスビューを表示する 962 968 SendMessage(hOwner,WM_COMMAND,IDM_PROJECTVIEW,0); … … 973 979 int i2,i3; 974 980 975 MdiInfo[WndNum] .hwnd=0;981 MdiInfo[WndNum]->hwnd=0; 976 982 977 983 //ドキュメントコンボボックスから文字列を消去 978 984 extern HWND hDocCombo; 979 i2=SendMessage(hDocCombo,CB_FINDSTRINGEXACT,0,(long)MdiInfo[WndNum] .title.c_str());985 i2=SendMessage(hDocCombo,CB_FINDSTRINGEXACT,0,(long)MdiInfo[WndNum]->title.c_str()); 980 986 SendMessage(hDocCombo,CB_DELETESTRING,i2,0); 981 987 982 988 //タブコントロールからアイテムを消去 983 if(pobj_MainTab) pobj_MainTab->DeleteItem( MdiInfo[WndNum] .title.c_str(), true );984 985 986 if(IS_DOCUMENT_TEXT(MdiInfo[WndNum] .DocType)){989 if(pobj_MainTab) pobj_MainTab->DeleteItem( MdiInfo[WndNum]->title.c_str(), true ); 990 991 992 if(IS_DOCUMENT_TEXT(MdiInfo[WndNum]->DocType)){ 987 993 //////////////////////////// 988 994 // テキストエディタを閉じる … … 996 1002 } 997 1003 998 HeapDefaultFree(MdiInfo[WndNum] .pMdiTextEdit->buffer);999 HeapDefaultFree(MdiInfo[WndNum] .pMdiTextEdit->pColorRef);1000 1001 if(MdiInfo[WndNum] .IndentStr) HeapDefaultFree(MdiInfo[WndNum].IndentStr);1004 HeapDefaultFree(MdiInfo[WndNum]->pMdiTextEdit->buffer); 1005 HeapDefaultFree(MdiInfo[WndNum]->pMdiTextEdit->pColorRef); 1006 1007 if(MdiInfo[WndNum]->IndentStr) HeapDefaultFree(MdiInfo[WndNum]->IndentStr); 1002 1008 1003 1009 //エディットコントロールを破棄 1004 DestroyWindow(MdiInfo[WndNum] .pMdiTextEdit->hEdit);1010 DestroyWindow(MdiInfo[WndNum]->pMdiTextEdit->hEdit); 1005 1011 1006 1012 //Web検索ウィンドウを破棄 1007 delete MdiInfo[WndNum] .pMdiTextEdit->pobj_WebResult;1008 MdiInfo[WndNum] .pMdiTextEdit->pobj_WebResult=0;1013 delete MdiInfo[WndNum]->pMdiTextEdit->pobj_WebResult; 1014 MdiInfo[WndNum]->pMdiTextEdit->pobj_WebResult=0; 1009 1015 1010 1016 //ルーラーウィンドウを破棄 1011 delete MdiInfo[WndNum] .pMdiTextEdit->pobj_Ruler;1012 MdiInfo[WndNum] .pMdiTextEdit->pobj_Ruler=0;1017 delete MdiInfo[WndNum]->pMdiTextEdit->pobj_Ruler; 1018 MdiInfo[WndNum]->pMdiTextEdit->pobj_Ruler=0; 1013 1019 1014 1020 //アイコンを破棄 1015 if(MdiInfo[WndNum] .pMdiTextEdit->hIcon) DestroyIcon(MdiInfo[WndNum].pMdiTextEdit->hIcon);1016 1017 delete MdiInfo[WndNum] .pMdiTextEdit;1018 MdiInfo[WndNum] .pMdiTextEdit=0;1019 } 1020 else if(MdiInfo[WndNum] .DocType==WNDTYPE_RAD){1021 if(MdiInfo[WndNum]->pMdiTextEdit->hIcon) DestroyIcon(MdiInfo[WndNum]->pMdiTextEdit->hIcon); 1022 1023 delete MdiInfo[WndNum]->pMdiTextEdit; 1024 MdiInfo[WndNum]->pMdiTextEdit=0; 1025 } 1026 else if(MdiInfo[WndNum]->DocType==WNDTYPE_RAD){ 1021 1027 ///////////////////// 1022 1028 // RADツールを閉じる … … 1024 1030 1025 1031 for(i2=0;i2<MAX_UNDONUM;i2++){ 1026 if(MdiInfo[WndNum] .MdiRadInfo->undo.Command[i2])1032 if(MdiInfo[WndNum]->MdiRadInfo->undo.Command[i2]) 1027 1033 Rad_DeleteUndoData(WndNum,i2); 1028 1034 } 1029 DestroyWindow(MdiInfo[WndNum] .MdiRadInfo->hTools);1030 DestroyWindow(MdiInfo[WndNum] .MdiRadInfo->hRad);1031 SelectObject(MdiInfo[WndNum] .MdiRadInfo->hMemDC,MdiInfo[WndNum].MdiRadInfo->hOldBitmap);1032 DeleteDC(MdiInfo[WndNum] .MdiRadInfo->hMemDC);1033 DeleteObject(MdiInfo[WndNum] .MdiRadInfo->hBitmap);1034 GlobalFree(MdiInfo[WndNum] .MdiRadInfo);1035 } 1036 else if(MdiInfo[WndNum] .DocType==WNDTYPE_MENU){1035 DestroyWindow(MdiInfo[WndNum]->MdiRadInfo->hTools); 1036 DestroyWindow(MdiInfo[WndNum]->MdiRadInfo->hRad); 1037 SelectObject(MdiInfo[WndNum]->MdiRadInfo->hMemDC,MdiInfo[WndNum]->MdiRadInfo->hOldBitmap); 1038 DeleteDC(MdiInfo[WndNum]->MdiRadInfo->hMemDC); 1039 DeleteObject(MdiInfo[WndNum]->MdiRadInfo->hBitmap); 1040 GlobalFree(MdiInfo[WndNum]->MdiRadInfo); 1041 } 1042 else if(MdiInfo[WndNum]->DocType==WNDTYPE_MENU){ 1037 1043 //////////////////////////// 1038 1044 // メニューエディタを閉じる 1039 1045 //////////////////////////// 1040 1046 1041 DestroyWindow(MdiInfo[WndNum] .MdiMenuInfo->hList);1042 GlobalFree(MdiInfo[WndNum] .MdiMenuInfo);1043 } 1044 else if(MdiInfo[WndNum] .DocType==WNDTYPE_ICONEDIT){1047 DestroyWindow(MdiInfo[WndNum]->MdiMenuInfo->hList); 1048 GlobalFree(MdiInfo[WndNum]->MdiMenuInfo); 1049 } 1050 else if(MdiInfo[WndNum]->DocType==WNDTYPE_ICONEDIT){ 1045 1051 //////////////////////////// 1046 1052 // アイコンエディタを閉じる 1047 1053 //////////////////////////// 1048 1054 1049 for(i2=0;i2<MdiInfo[WndNum] .MdiIconEditInfo->num;i2++){1055 for(i2=0;i2<MdiInfo[WndNum]->MdiIconEditInfo->num;i2++){ 1050 1056 for(i3=0;i3<MAX_ICONEDIT_UNDONUM;i3++){ 1051 if(MdiInfo[WndNum] .MdiIconEditInfo->undo[i2].lpData[i3])1052 HeapDefaultFree(MdiInfo[WndNum] .MdiIconEditInfo->undo[i2].lpData[i3]);1053 } 1054 } 1055 1056 DeleteDC(MdiInfo[WndNum] .MdiIconEditInfo->memdc);1057 DeleteObject(MdiInfo[WndNum] .MdiIconEditInfo->hMemBmp);1058 DestroyWindow(MdiInfo[WndNum] .MdiIconEditInfo->hMain);1059 for(i2=0;i2<MdiInfo[WndNum] .MdiIconEditInfo->num;i2++){1060 HeapDefaultFree(MdiInfo[WndNum] .MdiIconEditInfo->pIconImage[i2]);1061 } 1062 HeapDefaultFree(MdiInfo[WndNum] .MdiIconEditInfo);1057 if(MdiInfo[WndNum]->MdiIconEditInfo->undo[i2].lpData[i3]) 1058 HeapDefaultFree(MdiInfo[WndNum]->MdiIconEditInfo->undo[i2].lpData[i3]); 1059 } 1060 } 1061 1062 DeleteDC(MdiInfo[WndNum]->MdiIconEditInfo->memdc); 1063 DeleteObject(MdiInfo[WndNum]->MdiIconEditInfo->hMemBmp); 1064 DestroyWindow(MdiInfo[WndNum]->MdiIconEditInfo->hMain); 1065 for(i2=0;i2<MdiInfo[WndNum]->MdiIconEditInfo->num;i2++){ 1066 HeapDefaultFree(MdiInfo[WndNum]->MdiIconEditInfo->pIconImage[i2]); 1067 } 1068 HeapDefaultFree(MdiInfo[WndNum]->MdiIconEditInfo); 1063 1069 } 1064 1070 else … … 1067 1073 } 1068 1074 1069 Jenga::Common::EraseVectorItem<std::vector<MDIINFO>>( MdiInfo, WndNum ); 1075 delete MdiInfo[WndNum]; 1076 Jenga::Common::EraseVectorItem<std::vector<MDIINFO *>>( MdiInfo, WndNum ); 1070 1077 } 1071 1078 void ResizeTextEditWnd(HWND hwnd,int cx,int cy){ … … 1082 1089 if(pobj_nv->bEditor_Ruler){ 1083 1090 //ルーラー 1084 MdiInfo[WndNum] .pMdiTextEdit->pobj_Ruler->resize(1091 MdiInfo[WndNum]->pMdiTextEdit->pobj_Ruler->resize( 1085 1092 0, 1086 1093 0, … … 1090 1097 iHeightRuler=HEIGHT_RULER; 1091 1098 1092 ShowWindow(MdiInfo[WndNum] .pMdiTextEdit->pobj_Ruler->hRulerWnd,SW_SHOW);1099 ShowWindow(MdiInfo[WndNum]->pMdiTextEdit->pobj_Ruler->hRulerWnd,SW_SHOW); 1093 1100 } 1094 1101 else{ 1095 1102 iHeightRuler=0; 1096 1103 1097 ShowWindow(MdiInfo[WndNum] .pMdiTextEdit->pobj_Ruler->hRulerWnd,SW_HIDE);1104 ShowWindow(MdiInfo[WndNum]->pMdiTextEdit->pobj_Ruler->hRulerWnd,SW_HIDE); 1098 1105 } 1099 1106 1100 1107 //エディットウィンドウ 1101 MoveWindow(MdiInfo[WndNum] .pMdiTextEdit->hEdit,1108 MoveWindow(MdiInfo[WndNum]->pMdiTextEdit->hEdit, 1102 1109 0, 1103 1110 iHeightRuler, … … 1107 1114 1108 1115 //Web検索ウィンドウ 1109 MdiInfo[WndNum] .pMdiTextEdit->pobj_WebResult->resize(1116 MdiInfo[WndNum]->pMdiTextEdit->pobj_WebResult->resize( 1110 1117 0, 1111 1118 cy-WebResultWndHeight, … … 1149 1156 //ドキュメント セレクト コンボボックス 1150 1157 extern HWND hDocCombo; 1151 i2=SendMessage(hDocCombo,CB_FINDSTRINGEXACT,0,(long)MdiInfo[i] .title.c_str());1158 i2=SendMessage(hDocCombo,CB_FINDSTRINGEXACT,0,(long)MdiInfo[i]->title.c_str()); 1152 1159 SendMessage(hDocCombo,CB_SETCURSEL,i2,0); 1153 1160 1154 1161 //タブコントロール 1155 pobj_MainTab->MdiActiveEvent(MdiInfo[i] .title.c_str());1162 pobj_MainTab->MdiActiveEvent(MdiInfo[i]->title.c_str()); 1156 1163 1157 1164 if( !projectInfo.IsOpened() ){ … … 1183 1190 return DefMDIChildProc(hwnd,message,wParam,lParam); 1184 1191 } 1185 void ResizeOwnerWnd(void){1186 int width_owner,height_owner;1187 int height_Rebar;1188 int height_MdiClient;1189 RECT rect,StatusRect,RebarRect;1190 1191 GetClientRect(hOwner,&rect);1192 width_owner=rect.right;1193 height_owner=rect.bottom;1194 1195 //Rebar1196 SendMessage(pobj_Rebar->hRebar,WM_SIZE,0,MAKELONG(width_owner,height_owner));1197 UpdateWindow(pobj_Rebar->hRebar);1198 1199 //Status bar1200 #define STATUSBAR_PARTS_NUM 51201 int sb_size[STATUSBAR_PARTS_NUM];1202 sb_size[0]=width_owner-340;1203 sb_size[1]=width_owner-220;1204 sb_size[2]=width_owner-120;1205 sb_size[3]=width_owner-50;1206 sb_size[4]=width_owner;1207 SendMessage(hStatusBar,SB_SETPARTS,STATUSBAR_PARTS_NUM,(LPARAM)sb_size);1208 SendMessage(hStatusBar,WM_SIZE,0,MAKELONG(width_owner,height_owner));1209 UpdateWindow(hStatusBar);1210 1211 //Status bar1212 int height_Statusbar;1213 SendMessage(hStatusBar,SB_GETRECT,0,(long)&StatusRect);1214 height_Statusbar=StatusRect.bottom;1215 1216 GetWindowRect(pobj_Rebar->hRebar,&RebarRect);1217 height_Rebar=RebarRect.bottom-RebarRect.top+2;1218 1219 int height_dv; //Width of Debugger View1220 int height_cv; //Width of Compiler View1221 height_dv=0;1222 height_cv=0;1223 #ifndef THETEXT1224 if(bClipCompileView){1225 if(pobj_Debugger->IsDebuggerView()){1226 //デバッガビューが表示されているとき1227 height_dv=pobj_nv->height_ClipDebuggerView+LEVER_THICK;1228 }1229 if(hCompileView){1230 //コンパイラビューが表示されているとき1231 height_cv=pobj_nv->height_ClipCompileView+LEVER_THICK;1232 }1233 }1234 #endif1235 1236 int width_pjv=0; //Width of Project View1237 if(pobj_nv->bClipProjectView){1238 if(IsWindowVisible(hProjectView)){1239 //プロジェクトビューが表示されているとき1240 width_pjv=pobj_nv->width_ClipProjectView+LEVER_THICK;1241 }1242 }1243 1244 int width_SideWeb=0;1245 if( pobj_SideWeb )1246 {1247 if(pobj_SideWeb->bShow){1248 width_SideWeb=pobj_nv->width_WebSearchView+LEVER_THICK;1249 }1250 }1251 1252 //MDIクライアントの高さ1253 height_MdiClient=height_owner-(1254 height_Rebar+1255 height_dv+1256 height_cv+1257 height_Statusbar1258 );1259 1260 //タブコントロール1261 int tab_height;1262 if(TabCtrl_GetItemCount(pobj_MainTab->hTab)==0) tab_height=0;1263 else{1264 RECT rc;1265 TabCtrl_GetItemRect(pobj_MainTab->hTab,0,&rc);1266 tab_height=rc.bottom-rc.top;1267 }1268 MoveWindow(pobj_MainTab->hTab,1269 width_pjv,1270 height_Rebar,1271 width_owner-width_pjv-width_SideWeb,1272 tab_height,1273 1);1274 1275 //MDIクライアント1276 MoveWindow(hClient,1277 width_pjv,1278 height_Rebar+tab_height,1279 width_owner-width_pjv-width_SideWeb,1280 height_MdiClient-tab_height,1281 1);1282 1283 if( pobj_SideWeb )1284 {1285 if(pobj_SideWeb->bShow){1286 //SideWeb1287 pobj_SideWeb->resize(1288 width_owner - pobj_nv->width_WebSearchView,1289 height_Rebar,1290 pobj_nv->width_WebSearchView,1291 height_MdiClient);1292 }1293 else pobj_SideWeb->resize(0,0,0,0);1294 }1295 1296 if(width_pjv){1297 //プロジェクトビュー1298 MoveWindow(hProjectView,1299 0,1300 height_Rebar,1301 pobj_nv->width_ClipProjectView,1302 height_MdiClient,1303 1);1304 InvalidateRect(hProjectView,NULL,0);1305 }1306 1307 if(height_dv){1308 #ifndef THETEXT1309 //デバッガビュー1310 pobj_Debugger->resize(1311 0,1312 height_Rebar+height_MdiClient+LEVER_THICK,1313 width_owner,1314 pobj_nv->height_ClipDebuggerView);1315 #endif1316 }1317 if(height_cv){1318 //コンパイラビュー1319 MoveWindow(hCompileView,1320 0,1321 height_Rebar+height_MdiClient+height_dv+LEVER_THICK,1322 width_owner,1323 pobj_nv->height_ClipCompileView,1324 1);1325 }1326 }1327 1192 1328 1193 WNDPROC oldMainFrameWndProc; … … 1353 1218 //コンパイラウィンドウ(埋め込み型)が表示されたとき 1354 1219 hCompileView=(HWND)lParam; 1355 ResizeOwnerWnd();1220 ActiveBasic::IDE::Program::mainFrame.Resized(); 1356 1221 return 0; 1357 1222 case WM_DESTROYCOMPILEVIEW: … … 1365 1230 hCompileView=0; 1366 1231 1367 ResizeOwnerWnd();1232 ActiveBasic::IDE::Program::mainFrame.Resized(); 1368 1233 } 1369 1234 return 0; … … 1389 1254 //デバッガウィンドウ(埋め込み型)が表示されたとき 1390 1255 pobj_Debugger->watch_start((HWND)lParam); 1391 ResizeOwnerWnd();1256 ActiveBasic::IDE::Program::mainFrame.Resized(); 1392 1257 return 0; 1393 1258 case WM_DESTROYDEBUGGERVIEW: 1394 1259 //デバッガウィンドウ(埋め込み型)が破棄されたとき 1395 1260 pobj_Debugger->watch_quit(); 1396 ResizeOwnerWnd();1261 ActiveBasic::IDE::Program::mainFrame.Resized(); 1397 1262 return 0; 1398 1263 #endif 1399 1400 case WM_SIZE:1401 ResizeOwnerWnd();1402 return 0;1403 1264 1404 1265 … … 1442 1303 } 1443 1304 1444 ResizeOwnerWnd();1305 ActiveBasic::IDE::Program::mainFrame.Resized(); 1445 1306 UpdateWindow(hwnd); 1446 1307 } … … 1717 1578 if( projectInfo.IsOpened() ){ 1718 1579 for(i=0,i2=0;i<MdiInfo.size();i++){ 1719 if(MdiInfo[i] .hwnd&&MdiInfo[i].DocType==WNDTYPE_RAD){1720 if(IsDialogMessage(MdiInfo[i] .MdiRadInfo->hProp_Dlg,&msg)) i2=1;1580 if(MdiInfo[i]->hwnd&&MdiInfo[i]->DocType==WNDTYPE_RAD){ 1581 if(IsDialogMessage(MdiInfo[i]->MdiRadInfo->hProp_Dlg,&msg)) i2=1; 1721 1582 } 1722 1583 }
Note:
See TracChangeset
for help on using the changeset viewer.