source: dev/trunk/ab5.0/abdev/abdev/RadProc.cpp@ 681

Last change on this file since 681 was 629, checked in by dai_9181, 16 years ago

MDIINFO構造体をリファクタリング。

File size: 76.3 KB
RevLine 
[475]1#include "stdafx.h"
[3]2
[475]3
[3]4#include "common.h"
5
[624]6void NewRadWindow( const ActiveBasic::PM::WindowInfo &windowInfo )
[612]7{
[3]8 extern HINSTANCE hInst,hResInst;
9 extern HWND hDocCombo;
10 int i,i2;
11 HWND hChild;
12 RECT rect;
13 MDICREATESTRUCT mdic;
14
15 //すでに指定されたファイルが開かれている場合
16 hChild=GetWindow(hClient,GW_CHILD);
17 while(hChild){
18 i=GetWndNum(hChild);
[629]19 if(MdiInfo[i]->DocType==WNDTYPE_RAD){
20 if(lstrcmpi(MdiInfo[i]->path.c_str(),windowInfo.GetName().c_str())==0) break;
[3]21 }
22 hChild=GetNextWindow(hChild,GW_HWNDNEXT);
23 }
24 if(hChild){
25 BringWindowToTop(hChild);
26 return;
27 }
28
[617]29 mdic.szTitle=windowInfo.GetName().c_str();
[3]30 mdic.szClass="MDIClientWindow_Rad";
31 mdic.hOwner=hInst;
32 mdic.x=CW_USEDEFAULT;
33 mdic.y=CW_USEDEFAULT;
34 mdic.cx=CW_USEDEFAULT;
35 mdic.cy=CW_USEDEFAULT;
36
37 hChild=GetWindow(hClient,GW_CHILD);
38 if(IsWindow(hChild)){
39 if(IsZoomed(hChild)) mdic.style=WS_MAXIMIZE|WS_CLIPCHILDREN;
40 else mdic.style=0;
41 }
42 else{
43 if(pobj_nv->bMDIZoomed) mdic.style=WS_MAXIMIZE|WS_CLIPCHILDREN;
44 else mdic.style=0;
45 }
46
47 mdic.lParam=0;
[629]48 mdic.style |= WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_SYSMENU | WS_CAPTION | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX;
[3]49 hChild=(HWND)SendMessage(hClient,WM_MDICREATE,0,(long)&mdic); //ウィンドウ作成
50
51
52 //////////////////////
53 // 子ウィンドウを作成
54 //////////////////////
55
56 //ツールウィンドウを作成
57 HWND hTools;
58 hTools=CreateWindow("RadToolsWindow",NULL,
59 WS_CHILD|WS_VSCROLL|WS_VISIBLE|WS_CLIPCHILDREN,
60 0,0,0,0,
61 hChild,NULL,hInst,NULL);
62
63 //プロパティウィンドウを作成
64 HWND hProperty;
65 hProperty=CreateWindowEx(WS_EX_CLIENTEDGE,"RadPropertyWindow",NULL,
66 WS_CHILD|WS_VSCROLL|WS_VISIBLE|WS_CLIPCHILDREN,
67 0,0,0,0,
68 hChild,NULL,hInst,NULL);
69
70 //内部RADウィンドウを作成
71 HWND hRad;
72 hRad=CreateWindowEx(WS_EX_CLIENTEDGE,"RadWindow",NULL,
73 WS_CHILD|WS_HSCROLL|WS_VSCROLL|WS_VISIBLE|WS_CLIPCHILDREN,
74 0,0,0,0,
75 hChild,NULL,hInst,NULL);
76
77 //サポートウィンドウを作成
78 HWND hSupport;
[302]79 hSupport=CreateDialog(hResInst,MAKEINTRESOURCE(IDD_RAD_SUPPORT),hChild,(DLGPROC)DlgRadSupport);
[3]80
81 //ウィンドウのID登録
82 HDC hdc;
[629]83 MdiInfo.push_back( new MDIINFO() );
[625]84 i = MdiInfo.size()-1;
[3]85
[629]86 MdiInfo[i]->hwnd=hChild;
87 MdiInfo[i]->DocType=WNDTYPE_RAD;
88 MdiInfo[i]->title = windowInfo.GetName();
89 MdiInfo[i]->path = windowInfo.GetName();
[3]90
91
[625]92 ////////////////////////////
93 // MDIRADINFO構造体をセット
94 ////////////////////////////
[3]95
[629]96 MdiInfo[i]->MdiRadInfo=(MDIRADINFO *)GlobalAlloc(GPTR,sizeof(MDIRADINFO));
[3]97
[629]98 MdiInfo[i]->MdiRadInfo->hTools=hTools;
99 MdiInfo[i]->MdiRadInfo->hProperty=hProperty;
100 MdiInfo[i]->MdiRadInfo->hProp_Dlg=CreateDialog(hResInst,MAKEINTRESOURCE(IDD_RAD_PROP_WINDOW),hProperty,(DLGPROC)RadProperty_WindowProc);
[3]101
[625]102 SCROLLINFO ScrollInfo;
103 ScrollInfo.cbSize=sizeof(SCROLLINFO);
104 ScrollInfo.fMask=SIF_POS;
105 ScrollInfo.nPos=0;
[629]106 SetScrollInfo(MdiInfo[i]->MdiRadInfo->hProperty,SB_VERT,&ScrollInfo,1);
[3]107
[629]108 MdiInfo[i]->MdiRadInfo->hRad=hRad;
[3]109
[629]110 MdiInfo[i]->MdiRadInfo->hSupport=hSupport;
[3]111
[625]112 hdc=GetDC(hRad);
[629]113 MdiInfo[i]->MdiRadInfo->hBitmap=CreateCompatibleBitmap(hdc,ScreenX*2,ScreenY*2);
114 MdiInfo[i]->MdiRadInfo->hMemDC=CreateCompatibleDC(hdc);
115 MdiInfo[i]->MdiRadInfo->hOldBitmap=
116 (HBITMAP)SelectObject(MdiInfo[i]->MdiRadInfo->hMemDC,MdiInfo[i]->MdiRadInfo->hBitmap);
[625]117 ReleaseDC(hRad,hdc);
[3]118
[629]119 for(i2=0;i2<MAX_RAD_SELITEM;i2++) MdiInfo[i]->MdiRadInfo->SelectingItem[i2]=-1;
120 MdiInfo[i]->MdiRadInfo->ButtonSelect=IDC_TOOL_MOUSE;
[3]121
[625]122 //変更情報を初期化
[629]123 MdiInfo[i]->MdiRadInfo->undo.NowPos=0;
124 memset(MdiInfo[i]->MdiRadInfo->undo.Command,0,sizeof(int)*MAX_UNDONUM);
[3]125
[625]126 DrawRadWindow(i,&windowInfo);
[3]127
[625]128 //サポートダイアログの内容をセット
129 SetSupportDlgData(i,windowInfo);
[3]130
131
132 ShowWindow(hSupport,SW_SHOW);
133
134 //ウィンドウ位置を初期化
135 GetClientRect(hChild,&rect);
136 ResizeToRadToolWindows(i,rect.right,rect.bottom);
137
[617]138 i=SendMessage(hDocCombo,CB_ADDSTRING,0,(long)windowInfo.GetName().c_str()); //Docコンボボックスに追加
[3]139 SendMessage(hDocCombo,CB_SETCURSEL,i,0);
140
141 //タブに追加
[617]142 pobj_MainTab->InsertItem( windowInfo.GetName().c_str(), true );
[3]143
144 //メニュー状態を設定
145 ResetState_DocMenu();
146
147 SetFocus(hRad);
148}
149
[624]150int InsertDlgItem(int WndNum,int WndInfoNum,int ItemNum,POINT *pPos,SIZE *pSize,const char *IdName,const char *caption,DWORD style_or_WndNum,DWORD ExStyle,int Control,ActiveBasic::PM::ImageReferenceType::EnumType ImageType,const char *ImagePath,DWORD dwInsertType){
[3]151 //dwInsertType
152 //0 … 元に戻す、やり直し
153 //1 … 通常の挿入
154 //2 … 貼り付け
155
156 extern HANDLE hHeap;
157 int i,i2,NewItemNum;
158 char temporary[MAX_PATH];
159
[624]160 ActiveBasic::PM::WindowInfo *pWindowInfo = projectInfo.windowInfos[WndInfoNum];
[609]161
[624]162 ActiveBasic::PM::ChildWindowInfo *pChildInfo = new ActiveBasic::PM::ChildWindowInfo();
[616]163
[3]164 if(ItemNum==-1)
[616]165 {
166 NewItemNum = pWindowInfo->childWindowInfos.size();
167 pWindowInfo->childWindowInfos.push_back( pChildInfo );
168 }
169 else
170 {
[624]171 ActiveBasic::PM::ChildWindowInfos::iterator it = pWindowInfo->childWindowInfos.begin();
[616]172 for( int i=0; i<ItemNum; i++ )
173 {
174 it++;
175 }
176 pWindowInfo->childWindowInfos.insert( it, pChildInfo );
177
[3]178 NewItemNum=ItemNum;
179 }
180
181 //ID
182 if(ItemNum==-1){
[624]183 char temp2[1024];
184 lstrcpy( temp2, IdName );
185 for(i=lstrlen(temp2)-1;i>=0;i--){
186 if(!('0'<=temp2[i]&&temp2[i]<='9')) break;
[3]187 }
188 i++;
189
[624]190 if(temp2[i]!='\0'){
191 i2=atoi(temp2+i)+1;
[3]192 if(dwInsertType==2) i2--;
[624]193 temp2[i]=0;
[3]194 }
195 else{
196 if(dwInsertType==2) i2=0;
197 else i2=1;
198 }
199
[624]200 if(i2==0) lstrcpy(temporary,temp2);
201 else sprintf(temporary,"%s%d",temp2,i2);
[3]202SearchStart:
[624]203 for( i=0; i<static_cast<int>(pWindowInfo->childWindowInfos.size()); i++ )
204 {
205 if( i != NewItemNum )
206 {
207 if( pWindowInfo->childWindowInfos[i]->GetName() == temporary )
208 {
[3]209 i2++;
[624]210 sprintf(temporary,"%s%d",temp2,i2);
[3]211 goto SearchStart;
212 }
213 }
214 }
215 }
216 else lstrcpy(temporary,IdName);
[624]217 pChildInfo->SetName( temporary );
[3]218
219 //位置
220 pChildInfo->pos=*pPos;
221 pChildInfo->size=*pSize;
222 //小さすぎる場合は、最小の大きさに調整
223 if(pChildInfo->size.cx<MIN_ITEM_X) pChildInfo->size.cx=MIN_ITEM_X;
224 if(pChildInfo->size.cy<MIN_ITEM_Y) pChildInfo->size.cy=MIN_ITEM_Y;
225
226 //テキスト
227 if(ItemNum==-1){
228 if(dwInsertType==1){
229 if(caption[0]) sprintf(temporary,"%s%d",caption,i2);
230 else temporary[0]=0;
231 }
232 else lstrcpy(temporary,caption);
233 }
234 else lstrcpy(temporary,caption);
[624]235 pChildInfo->SetCaption( temporary );
[3]236
237 //スタイル
[624]238 pChildInfo->SetStyle( style_or_WndNum );
[3]239
240 //拡張スタイル
[624]241 pChildInfo->SetExStyle( ExStyle );
[3]242
243 //クラス名
244 pChildInfo->Control=Control;
245
246 if(Control==CT_IMAGEBOX){
247 //イメージ ボックスの場合
[624]248 pChildInfo->image.type = ImageType;
[3]249 if(!ImagePath)
[624]250 {
251 pChildInfo->image.path = "";
252 }
[3]253 else{
[624]254 pChildInfo->image.path = ImagePath;
[3]255 }
256 }
257
258 //変更情報
259 if(dwInsertType!=0)
260 Rad_NoticeChanging(WndNum,RAD_UNDO_INSERTITEM,NewItemNum,(DWORD)pChildInfo);
261
[609]262 DrawRadWindow(WndNum,pWindowInfo);
[3]263 return NewItemNum;
264}
265void DeleteDlgItem(int WndNum,int WndInfoNum,int ItemNum,BOOL bNoticeChanging){
266 extern HANDLE hHeap;
267
[624]268 ActiveBasic::PM::WindowInfo *pWindowInfo = projectInfo.windowInfos[WndInfoNum];
[609]269
[3]270 //変更情報
271 if(bNoticeChanging)
[616]272 Rad_NoticeChanging(WndNum,RAD_UNDO_DELETEITEM,ItemNum,(DWORD)pWindowInfo->childWindowInfos[ItemNum]);
[3]273
274 //子ウィンドウのメモリを解放
[616]275 delete pWindowInfo->childWindowInfos[ItemNum];
[3]276
[624]277 ActiveBasic::PM::ChildWindowInfos::iterator it = pWindowInfo->childWindowInfos.begin();
[616]278 for( int i=0; i<ItemNum; i++ )
[611]279 {
[616]280 it++;
[611]281 }
[616]282 pWindowInfo->childWindowInfos.erase( it );
[3]283
[609]284 DrawRadWindow(WndNum,pWindowInfo);
[3]285
286
287 //////////////////////////////
288 //プロパティウィンドウを設定
[629]289 DestroyWindow(MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg);
290 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=CreateDialog(hResInst,MAKEINTRESOURCE(IDD_RAD_PROP_WINDOW),MdiInfo[WndNum]->MdiRadInfo->hProperty,(DLGPROC)RadProperty_WindowProc);
[3]291
292 SCROLLINFO ScrollInfo;
293 ScrollInfo.cbSize=sizeof(SCROLLINFO);
294 ScrollInfo.fMask=SIF_POS;
295 ScrollInfo.nPos=0;
[629]296 SetScrollInfo(MdiInfo[WndNum]->MdiRadInfo->hProperty,SB_VERT,&ScrollInfo,1);
[3]297
298 RECT rect;
[629]299 GetClientRect(MdiInfo[WndNum]->MdiRadInfo->hProperty,&rect);
300 SendMessage(MdiInfo[WndNum]->MdiRadInfo->hProperty,WM_SIZE,0,MAKELONG(rect.right,rect.bottom));
[3]301}
302
303void CursorPos_GlobalToLocal(HWND hwnd,long *x,long *y){
304 SCROLLINFO VertScrollInfo,HorzScrollInfo;
305
306 VertScrollInfo.cbSize=sizeof(SCROLLINFO);
307 VertScrollInfo.fMask=SIF_RANGE|SIF_POS;
308 GetScrollInfo(hwnd,SB_VERT,&VertScrollInfo);
309 HorzScrollInfo.cbSize=sizeof(SCROLLINFO);
310 HorzScrollInfo.fMask=SIF_RANGE|SIF_POS;
311 GetScrollInfo(hwnd,SB_HORZ,&HorzScrollInfo);
312
313 *x-=HorzScrollInfo.nPos;
314 *y-=VertScrollInfo.nPos;
315}
316void CursorPos_LocalToGlobal(HWND hwnd,long *x,long *y){
317 SCROLLINFO VertScrollInfo,HorzScrollInfo;
318
319 VertScrollInfo.cbSize=sizeof(SCROLLINFO);
320 VertScrollInfo.fMask=SIF_RANGE|SIF_POS;
321 GetScrollInfo(hwnd,SB_VERT,&VertScrollInfo);
322 HorzScrollInfo.cbSize=sizeof(SCROLLINFO);
323 HorzScrollInfo.fMask=SIF_RANGE|SIF_POS;
324 GetScrollInfo(hwnd,SB_HORZ,&HorzScrollInfo);
325
326 *x+=HorzScrollInfo.nPos;
327 *y+=VertScrollInfo.nPos;
328}
329void DrawFrame(HWND hwnd,int WndNum,int WndInfoNum,RECT *NewRect,RECT *OldRect,BOOL bLA){
330 static int swLineStop;
331 int i,sw;
332 int x,y;
333 HDC hdc;
334 HPEN hPen,hOldPen;
335 HBRUSH hOldBrush;
336 RECT rect;
337
[624]338 ActiveBasic::PM::WindowInfo *pWindowInfo = projectInfo.windowInfos[WndInfoNum];
[609]339
[3]340 hdc=GetDC(hwnd);
341
342 sw=0;
343 if(pobj_nv->bLineAdjust&&bLA){
[624]344 for( i=0; i<static_cast<int>(pWindowInfo->childWindowInfos.size()); i++ )
345 {
346 const ActiveBasic::PM::ChildWindowInfo *pChildInfo = pWindowInfo->childWindowInfos[i];
[629]347 if(i==MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]) continue;
[616]348 if(pChildInfo->Control !=
[629]349 pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control) continue;
[3]350
351 if(NewRect->left<OldRect->left){
[616]352 if(pChildInfo->pos.x
[3]353 >
[629]354 NewRect->left - MdiInfo[WndNum]->MdiRadInfo->ClientPos.x
[3]355 &&
[616]356 pChildInfo->pos.x-10
[3]357 <
[629]358 NewRect->left - MdiInfo[WndNum]->MdiRadInfo->ClientPos.x){
[3]359
360 //左側をストップする
361 x=NewRect->right-NewRect->left;
[629]362 NewRect->left=pChildInfo->pos.x + MdiInfo[WndNum]->MdiRadInfo->ClientPos.x;
[3]363 NewRect->right=NewRect->left+x;
364
365 hPen=CreatePen(PS_SOLID,0,RGB(100,100,100));
366 hOldPen=(HPEN)SelectObject(hdc,hPen);
367 MoveToEx(hdc,NewRect->left,0,NULL);
368 LineTo(hdc,NewRect->left,ScreenX);
369 SelectObject(hdc,hOldPen);
370 DeleteObject(hPen);
371
372 swLineStop=1;
373 sw=1;
374 }
375 }
376 if(NewRect->top<OldRect->top){
[616]377 if(pChildInfo->pos.y
[3]378 >
[629]379 NewRect->top - MdiInfo[WndNum]->MdiRadInfo->ClientPos.y
[3]380 &&
[616]381 pChildInfo->pos.y-10
[3]382 <
[629]383 NewRect->top - MdiInfo[WndNum]->MdiRadInfo->ClientPos.y){
[3]384
385 //左側をストップする
386 y=NewRect->bottom-NewRect->top;
[629]387 NewRect->top=pChildInfo->pos.y + MdiInfo[WndNum]->MdiRadInfo->ClientPos.y;
[3]388 NewRect->bottom=NewRect->top+y;
389
390 hPen=CreatePen(PS_SOLID,0,RGB(100,100,100));
391 hOldPen=(HPEN)SelectObject(hdc,hPen);
392 MoveToEx(hdc,0,NewRect->top,NULL);
393 LineTo(hdc,ScreenY,NewRect->top);
394 SelectObject(hdc,hOldPen);
395 DeleteObject(hPen);
396
397 swLineStop=1;
398 sw=1;
399 }
400 }
401 }
402 }
403
404 //以前の選択フレームを消去
405 RectNaturalFormat(OldRect,&rect);
406 x=rect.left;
407 y=rect.top;
408 CursorPos_GlobalToLocal(hwnd,&rect.left,&rect.top);
409 CursorPos_GlobalToLocal(hwnd,&rect.right,&rect.bottom);
410 if(swLineStop&&sw==0){
411 BitBlt(hdc,0,0,ScreenX*2,ScreenY*2,
[629]412 MdiInfo[WndNum]->MdiRadInfo->hMemDC,0,0,SRCCOPY);
[3]413 swLineStop=0;
414 }
415 else{
416 BitBlt(hdc,rect.left-LEVER_THICK, rect.top-LEVER_THICK,
417 rect.right-rect.left+LEVER_THICK*2, rect.bottom-rect.top+LEVER_THICK*2,
[629]418 MdiInfo[WndNum]->MdiRadInfo->hMemDC,x-LEVER_THICK,y-LEVER_THICK,SRCCOPY);
[3]419 }
420
421 //新しい選択フレームを描画
422 RectNaturalFormat(NewRect,&rect);
423 CursorPos_GlobalToLocal(hwnd,&rect.left,&rect.top);
424 CursorPos_GlobalToLocal(hwnd,&rect.right,&rect.bottom);
425
426 hPen=CreatePen(PS_DOT,0,RGB(0,0,0));
427 SetBkMode(hdc,TRANSPARENT);
428 hOldPen=(HPEN)SelectObject(hdc,hPen);
429 hOldBrush=(HBRUSH)SelectObject(hdc,GetStockObject(NULL_BRUSH));
430 Rectangle(hdc,rect.left,rect.top,rect.right,rect.bottom);
431 SelectObject(hdc,hOldBrush);
432 SelectObject(hdc,hOldPen);
433 DeleteObject(hPen);
434
435 ReleaseDC(hwnd,hdc);
436
437 *OldRect=*NewRect;
438}
439void GetSelectingRect(int WndNum,int WndInfoNum,int num,RECT *rect){
[609]440
[624]441 ActiveBasic::PM::WindowInfo *pWindowInfo = projectInfo.windowInfos[WndInfoNum];
[609]442
[629]443 if(MdiInfo[WndNum]->MdiRadInfo->SelectingItem[num]==SELECT_WINDOW){
[3]444 //ウィンドウ軸を選択
445 rect->left=0;
446 rect->top=0;
[609]447 rect->right=pWindowInfo->size.cx+(LEVER_THICK*2);
448 rect->bottom=pWindowInfo->size.cy+(LEVER_THICK*2);
[3]449 }
450 else{
451 //子ウィンドウを選択
[629]452 rect->left=MdiInfo[WndNum]->MdiRadInfo->ClientPos.x+pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[num]]->pos.x-LEVER_THICK;
453 rect->top=MdiInfo[WndNum]->MdiRadInfo->ClientPos.y+pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[num]]->pos.y-LEVER_THICK;
454 rect->right=MdiInfo[WndNum]->MdiRadInfo->ClientPos.x+pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[num]]->pos.x+pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[num]]->size.cx+LEVER_THICK;
455 rect->bottom=MdiInfo[WndNum]->MdiRadInfo->ClientPos.y+pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[num]]->pos.y+pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[num]]->size.cy+LEVER_THICK;
[3]456 }
457}
458void DrawSelectingRect(HWND hwnd,int WndNum,int WndInfoNum,int ButtonSelect){
459 extern RADINFO RadInfo;
460 int i,i2,i3;
461 HDC hdc;
462 HPEN hPen,hOldPen;
463 HBRUSH hOldBrush;
464 COLORREF rgb;
465 RECT rect,tempRect;
466
467 hdc=GetDC(hwnd);
468 if(ButtonSelect==IDC_TOOL_MOUSE) rgb=RGB(255,60,30);
469 else if(ButtonSelect==NON_TOOL) rgb=RGB(100,100,100);
470 hPen=CreatePen(PS_SOLID,0,rgb);
471 SetBkMode(hdc,TRANSPARENT);
472 hOldPen=(HPEN)SelectObject(hdc,hPen);
473
474 i=0;
[629]475 while(MdiInfo[WndNum]->MdiRadInfo->SelectingItem[i]!=-1||i==0){
[3]476 GetSelectingRect(WndNum,WndInfoNum,i,&tempRect);
477 RectNaturalFormat(&tempRect,&rect);
478 CursorPos_GlobalToLocal(hwnd,&rect.left,&rect.top);
479 CursorPos_GlobalToLocal(hwnd,&rect.right,&rect.bottom);
480
481 //主線
482 hOldBrush=(HBRUSH)SelectObject(hdc,GetStockObject(NULL_BRUSH));
483 Rectangle(hdc,
484 rect.left+2, rect.top+2,
485 rect.right-2, rect.bottom-2);
486 SelectObject(hdc,hOldBrush);
487
488
489 hOldBrush=(HBRUSH)SelectObject(hdc,GetStockObject(WHITE_BRUSH));
490
491 Rectangle(hdc,
492 rect.left,rect.top,
493 rect.left+5,rect.top+5);
494 Rectangle(hdc,
495 rect.left,rect.bottom-5,
496 rect.left+5,rect.bottom);
497 Rectangle(hdc,
498 rect.right-5,rect.top,
499 rect.right,rect.top+5);
500 Rectangle(hdc,
501 rect.right-5,rect.bottom-5,
502 rect.right,rect.bottom);
503
504 i2=(rect.right-rect.left)/2;
505 i3=(rect.bottom-rect.top)/2;
506 Rectangle(hdc,
507 rect.left+i2-2,rect.top,
508 rect.left+i2+3,rect.top+5);
509 Rectangle(hdc,
510 rect.left+i2-2,rect.bottom-5,
511 rect.left+i2+3,rect.bottom);
512 Rectangle(hdc,
513 rect.left,rect.top+i3-2,
514 rect.left+5,rect.top+i3+3);
515 Rectangle(hdc,
516 rect.right-5,rect.top+i3-2,
517 rect.right,rect.top+i3+3);
518
519 SelectObject(hdc,hOldBrush);
520
521 //移動時の選択フレームの消去用範囲
522 RadInfo.OldDraggingRect[i]=rect;
523
524 i++;
525 }
526
527 SelectObject(hdc,hOldPen);
528 DeleteObject(hPen);
529
530 ReleaseDC(hwnd,hdc);
531}
532void ChangePropertyWindow(int WndNum,int WndInfoNum){
533 RECT rect;
534 SCROLLINFO ScrollInfo;
535
[624]536 ActiveBasic::PM::WindowInfo *pWindowInfo = projectInfo.windowInfos[WndInfoNum];
[609]537
[629]538 DestroyWindow(MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg);
539 if(MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]==SELECT_WINDOW){
540 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=CreateDialog(hResInst,MAKEINTRESOURCE(IDD_RAD_PROP_WINDOW),MdiInfo[WndNum]->MdiRadInfo->hProperty,(DLGPROC)RadProperty_WindowProc);
[3]541
542 ScrollInfo.cbSize=sizeof(SCROLLINFO);
543 ScrollInfo.fMask=SIF_POS;
544 ScrollInfo.nPos=0;
[629]545 SetScrollInfo(MdiInfo[WndNum]->MdiRadInfo->hProperty,SB_VERT,&ScrollInfo,1);
[3]546
[629]547 GetClientRect(MdiInfo[WndNum]->MdiRadInfo->hProperty,&rect);
548 SendMessage(MdiInfo[WndNum]->MdiRadInfo->hProperty,WM_SIZE,0,MAKELONG(rect.right,rect.bottom));
[3]549 }
550 else{
[629]551 if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_BUTTON)
552 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=CreateDialog(hResInst,MAKEINTRESOURCE(IDD_RAD_PROP_BUTTON),MdiInfo[WndNum]->MdiRadInfo->hProperty,(DLGPROC)RadProperty_ButtonProc);
553 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_CHECKBOX)
554 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=CreateDialog(hResInst,MAKEINTRESOURCE(IDD_RAD_PROP_CHECKBOX),MdiInfo[WndNum]->MdiRadInfo->hProperty,(DLGPROC)RadProperty_CheckBoxProc);
555 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_COMBOBOX)
556 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=CreateDialog(hResInst,MAKEINTRESOURCE(IDD_RAD_PROP_COMBOBOX),MdiInfo[WndNum]->MdiRadInfo->hProperty,(DLGPROC)RadProperty_ComboBoxProc);
557 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_EDIT)
558 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=CreateDialog(hResInst,MAKEINTRESOURCE(IDD_RAD_PROP_EDIT),MdiInfo[WndNum]->MdiRadInfo->hProperty,(DLGPROC)RadProperty_EditProc);
559 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_GROUPBOX)
560 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=CreateDialog(hResInst,MAKEINTRESOURCE(IDD_RAD_PROP_GROUPBOX),MdiInfo[WndNum]->MdiRadInfo->hProperty,(DLGPROC)RadProperty_GroupBoxProc);
561 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_HSCROLLBAR)
562 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=CreateDialog(hResInst,MAKEINTRESOURCE(IDD_RAD_PROP_SCROLLBAR),MdiInfo[WndNum]->MdiRadInfo->hProperty,(DLGPROC)RadProperty_ScrollBarProc);
563 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_IMAGEBOX)
564 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=CreateDialog(hResInst,MAKEINTRESOURCE(IDD_RAD_PROP_IMAGEBOX),MdiInfo[WndNum]->MdiRadInfo->hProperty,(DLGPROC)RadProperty_ImageBoxProc);
565 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_LISTBOX)
566 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=CreateDialog(hResInst,MAKEINTRESOURCE(IDD_RAD_PROP_LISTBOX),MdiInfo[WndNum]->MdiRadInfo->hProperty,(DLGPROC)RadProperty_ListBoxProc);
567 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_LISTVIEW)
568 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=CreateDialog(hResInst,MAKEINTRESOURCE(IDD_RAD_PROP_LISTVIEW),MdiInfo[WndNum]->MdiRadInfo->hProperty,(DLGPROC)RadProperty_ListViewProc);
569 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_PROGRESSBAR)
570 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=CreateDialog(hResInst,MAKEINTRESOURCE(IDD_RAD_PROP_PROGRESSBAR),MdiInfo[WndNum]->MdiRadInfo->hProperty,(DLGPROC)RadProperty_ProgressBarProc);
571 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_RADIOBUTTON)
572 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=CreateDialog(hResInst,MAKEINTRESOURCE(IDD_RAD_PROP_RADIOBUTTON),MdiInfo[WndNum]->MdiRadInfo->hProperty,(DLGPROC)RadProperty_RadioButtonProc);
573 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_STATIC)
574 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=CreateDialog(hResInst,MAKEINTRESOURCE(IDD_RAD_PROP_STATIC),MdiInfo[WndNum]->MdiRadInfo->hProperty,(DLGPROC)RadProperty_StaticProc);
575 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_TRACKBAR)
576 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=CreateDialog(hResInst,MAKEINTRESOURCE(IDD_RAD_PROP_TRACKBAR),MdiInfo[WndNum]->MdiRadInfo->hProperty,(DLGPROC)RadProperty_TrackBarProc);
577 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_TREEVIEW)
578 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=CreateDialog(hResInst,MAKEINTRESOURCE(IDD_RAD_PROP_TREEVIEW),MdiInfo[WndNum]->MdiRadInfo->hProperty,(DLGPROC)RadProperty_TreeViewProc);
579 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_UPDOWN)
580 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=CreateDialog(hResInst,MAKEINTRESOURCE(IDD_RAD_PROP_UPDOWN),MdiInfo[WndNum]->MdiRadInfo->hProperty,(DLGPROC)RadProperty_UpDownProc);
581 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_VSCROLLBAR)
582 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=CreateDialog(hResInst,MAKEINTRESOURCE(IDD_RAD_PROP_SCROLLBAR),MdiInfo[WndNum]->MdiRadInfo->hProperty,(DLGPROC)RadProperty_ScrollBarProc);
[3]583
584 ScrollInfo.cbSize=sizeof(SCROLLINFO);
585 ScrollInfo.fMask=SIF_POS;
586 ScrollInfo.nPos=0;
[629]587 SetScrollInfo(MdiInfo[WndNum]->MdiRadInfo->hProperty,SB_VERT,&ScrollInfo,1);
[3]588
[629]589 GetClientRect(MdiInfo[WndNum]->MdiRadInfo->hProperty,&rect);
590 SendMessage(MdiInfo[WndNum]->MdiRadInfo->hProperty,WM_SIZE,0,MAKELONG(rect.right,rect.bottom));
[3]591 }
592}
593int GetItemNumOnMouse(int WndNum,int WndInfoNum,int x,int y){
594 int i;
595
[624]596 ActiveBasic::PM::WindowInfo *pWindowInfo = projectInfo.windowInfos[WndInfoNum];
[609]597
[616]598 for(i=pWindowInfo->childWindowInfos.size()-1;i>=0;i--){
599 if(pWindowInfo->childWindowInfos[i]->Control==CT_COMBOBOX&&
[624]600 (pWindowInfo->childWindowInfos[i]->GetStyle()&0x000F)!=CBS_SIMPLE){
[3]601 //コンボ ボックスの場合は表示部分をターゲットに選択する(高さ20pixel)
[629]602 if(x>=MdiInfo[WndNum]->MdiRadInfo->ClientPos.x+pWindowInfo->childWindowInfos[i]->pos.x&&
603 x<=MdiInfo[WndNum]->MdiRadInfo->ClientPos.x+pWindowInfo->childWindowInfos[i]->pos.x+pWindowInfo->childWindowInfos[i]->size.cx&&
604 y>=MdiInfo[WndNum]->MdiRadInfo->ClientPos.y+pWindowInfo->childWindowInfos[i]->pos.y&&
605 y<=MdiInfo[WndNum]->MdiRadInfo->ClientPos.y+pWindowInfo->childWindowInfos[i]->pos.y+20){
[3]606 break;
607 }
608 }
[616]609 else if(pWindowInfo->childWindowInfos[i]->Control==CT_GROUPBOX){
[3]610 //グループ ボックスの場合は中央をあける
611 if((
[629]612 x>=MdiInfo[WndNum]->MdiRadInfo->ClientPos.x+pWindowInfo->childWindowInfos[i]->pos.x&&
613 x<=MdiInfo[WndNum]->MdiRadInfo->ClientPos.x+pWindowInfo->childWindowInfos[i]->pos.x+pWindowInfo->childWindowInfos[i]->size.cx&&
614 y>=MdiInfo[WndNum]->MdiRadInfo->ClientPos.y+pWindowInfo->childWindowInfos[i]->pos.y&&
615 y<=MdiInfo[WndNum]->MdiRadInfo->ClientPos.y+pWindowInfo->childWindowInfos[i]->pos.y+pWindowInfo->childWindowInfos[i]->size.cy
[3]616 )&&
617 (!(
[629]618 x>=MdiInfo[WndNum]->MdiRadInfo->ClientPos.x+pWindowInfo->childWindowInfos[i]->pos.x+LEVER_THICK*2&&
619 x<=MdiInfo[WndNum]->MdiRadInfo->ClientPos.x+pWindowInfo->childWindowInfos[i]->pos.x+pWindowInfo->childWindowInfos[i]->size.cx-LEVER_THICK*2&&
620 y>=MdiInfo[WndNum]->MdiRadInfo->ClientPos.y+pWindowInfo->childWindowInfos[i]->pos.y+LEVER_THICK*3&&
621 y<=MdiInfo[WndNum]->MdiRadInfo->ClientPos.y+pWindowInfo->childWindowInfos[i]->pos.y+pWindowInfo->childWindowInfos[i]->size.cy-LEVER_THICK*2
[3]622 ))
623 ){
624 break;
625 }
626 }
[629]627 else if(x>=MdiInfo[WndNum]->MdiRadInfo->ClientPos.x+pWindowInfo->childWindowInfos[i]->pos.x&&
628 x<=MdiInfo[WndNum]->MdiRadInfo->ClientPos.x+pWindowInfo->childWindowInfos[i]->pos.x+pWindowInfo->childWindowInfos[i]->size.cx&&
629 y>=MdiInfo[WndNum]->MdiRadInfo->ClientPos.y+pWindowInfo->childWindowInfos[i]->pos.y&&
630 y<=MdiInfo[WndNum]->MdiRadInfo->ClientPos.y+pWindowInfo->childWindowInfos[i]->pos.y+pWindowInfo->childWindowInfos[i]->size.cy){
[3]631 break;
632 }
633 }
634 return i;
635}
636void SelectItemNumOnMouse(int WndNum,int WndInfoNum,int x,int y){
637 //マウス座標をもとにコントロールアイテムを選択
638 int i;
639
[629]640 for(i=1;i<MAX_RAD_SELITEM;i++) MdiInfo[WndNum]->MdiRadInfo->SelectingItem[i]=-1;
[3]641 i=GetItemNumOnMouse(WndNum,WndInfoNum,x,y);
642
643 if(i==-1){
[629]644 if(MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]!=SELECT_WINDOW){
645 MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]=SELECT_WINDOW;
[3]646 ChangePropertyWindow(WndNum,WndInfoNum);
647 }
648 }
649 else{
[629]650 MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]=i;
[3]651 ChangePropertyWindow(WndNum,WndInfoNum);
652 }
653
654 SetStatusText(NULL);
655
656 //サポートダイアログの内容をセット
[618]657 SetSupportDlgData( WndNum, *projectInfo.windowInfos[WndInfoNum] );
[3]658}
659void SetItemNumOnFrame(int WndNum,int WndInfoNum,RECT *pRect){
660 int i,i2,sw;
661 RECT rect;
662
[624]663 ActiveBasic::PM::WindowInfo *pWindowInfo = projectInfo.windowInfos[WndInfoNum];
[609]664
[629]665 for(i=1;i<MAX_RAD_SELITEM;i++) MdiInfo[WndNum]->MdiRadInfo->SelectingItem[i]=-1;
[3]666 RectNaturalFormat(pRect,&rect);
[629]667 if(MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]==SELECT_WINDOW) sw=0;
[3]668 else sw=1;
[616]669 for(i=pWindowInfo->childWindowInfos.size()-1,i2=0;i>=0;i--){
[629]670 if(rect.left <= pWindowInfo->childWindowInfos[i]->pos.x+MdiInfo[WndNum]->MdiRadInfo->ClientPos.x&&
671 rect.top <= pWindowInfo->childWindowInfos[i]->pos.y+MdiInfo[WndNum]->MdiRadInfo->ClientPos.y&&
672 rect.right >= pWindowInfo->childWindowInfos[i]->pos.x+pWindowInfo->childWindowInfos[i]->size.cx+MdiInfo[WndNum]->MdiRadInfo->ClientPos.x&&
673 rect.bottom >= pWindowInfo->childWindowInfos[i]->pos.y+pWindowInfo->childWindowInfos[i]->size.cy+MdiInfo[WndNum]->MdiRadInfo->ClientPos.y){
674 MdiInfo[WndNum]->MdiRadInfo->SelectingItem[i2]=i;
[3]675 i2++;
676 }
677 }
[629]678 if(MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]!=SELECT_WINDOW||
679 (MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]==SELECT_WINDOW&&sw)){
[3]680 ChangePropertyWindow(WndNum,WndInfoNum);
681 }
682}
683int GetStateOfDraggingFrame(int WndNum,int WndInfoNum,int x,int y){
684 int i;
685 RECT rect;
686
[624]687 ActiveBasic::PM::WindowInfo *pWindowInfo = projectInfo.windowInfos[WndInfoNum];
[609]688
[629]689 if(MdiInfo[WndNum]->MdiRadInfo->SelectingItem[1]!=-1){
[3]690 i=0;
[629]691 while(MdiInfo[WndNum]->MdiRadInfo->SelectingItem[i]!=-1||i==0){
[3]692 GetSelectingRect(WndNum,WndInfoNum,i,&rect);
693
694 if(x>=rect.left+LEVER_THICK&&x<=rect.right-LEVER_THICK&&
695 y>=rect.top+LEVER_THICK&&y<=rect.bottom-LEVER_THICK){
[629]696 if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[i]]->Control==CT_GROUPBOX){
[3]697 //グループボックスの場合は中央をあける
698 if(!(x>=rect.left+LEVER_THICK*2&&x<=rect.right-LEVER_THICK*2&&
699 y>=rect.top+LEVER_THICK*3&&y<=rect.bottom-LEVER_THICK*2)){
700 return FRAME_INSIDE;
701 }
702 }
703 else return FRAME_INSIDE;
704 }
705 i++;
706 }
707 }
708 else{
709 GetSelectingRect(WndNum,WndInfoNum,0,&rect);
710
[629]711 if(MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]!=SELECT_WINDOW){
[3]712 if(x>=rect.left+LEVER_THICK&&x<=rect.right-LEVER_THICK&&
713 y>=rect.top+LEVER_THICK&&y<=rect.bottom-LEVER_THICK){
[629]714 if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_GROUPBOX){
[3]715 //グループ ボックスの場合は中央をあける
716 if(!(x>=rect.left+LEVER_THICK*3&&x<=rect.right-LEVER_THICK*3&&
717 y>=rect.top+LEVER_THICK*4&&y<=rect.bottom-LEVER_THICK*3)){
718 return FRAME_INSIDE;
719 }
720 }
721 else return FRAME_INSIDE;
722 }
723 else if(x>=rect.left&&x<=rect.left+LEVER_THICK&&
724 y>=rect.top&&y<=rect.top+LEVER_THICK) return FRAME_UPPER_LEFT;
725 else if(x>=rect.right-LEVER_THICK&&x<=rect.right&&
726 y>=rect.top&&y<=rect.top+LEVER_THICK) return FRAME_UPPER_RIGHT;
727 else if(x>=rect.left&&x<=rect.left+LEVER_THICK&&
728 y>=rect.bottom-LEVER_THICK&&y<=rect.bottom) return FRAME_LOWER_LEFT;
729 else if(x>=rect.left&&x<=rect.left+LEVER_THICK&&
730 y>=rect.top+LEVER_THICK&&y<=rect.bottom-LEVER_THICK)return FRAME_LEFT;
731 else if(x>=rect.left+LEVER_THICK&&x<=rect.right-LEVER_THICK&&
732 y>=rect.top&&y<=rect.top+LEVER_THICK) return FRAME_UPPER;
733 }
734 if(x>=rect.right-LEVER_THICK&&x<=rect.right&&
735 y>=rect.bottom-LEVER_THICK&&y<=rect.bottom) return FRAME_LOWER_RIGHT;
736 else if(x>=rect.right-LEVER_THICK&&x<=rect.right&&
737 y>=rect.top+LEVER_THICK&&y<=rect.bottom-LEVER_THICK) return FRAME_RIGHT;
738 else if(x>=rect.left+LEVER_THICK&&x<=rect.right-LEVER_THICK&&
739 y>=rect.bottom-LEVER_THICK&&y<=rect.bottom) return FRAME_LOWER;
740 }
741 return 0;
742}
743void ResetScrollbarOfRadEditor(int WndNum,int weight,int height){
744 SCROLLINFO ScrollInfo;
745 SIZE NeedSize;
746
[629]747 ActiveBasic::PM::WindowInfo *pWindowInfo = GetWndInfo(MdiInfo[WndNum]->path);
[3]748
749 //必要な幅、高さを共に100ピクセル余裕を持たせる
[609]750 NeedSize.cx=pWindowInfo->size.cx+(LEVER_THICK*2)+100;
751 NeedSize.cy=pWindowInfo->size.cy+(LEVER_THICK*2)+100;
[3]752
753 ScrollInfo.cbSize=sizeof(SCROLLINFO);
754 ScrollInfo.fMask=SIF_PAGE|SIF_RANGE|SIF_POS|SIF_DISABLENOSCROLL;
755
756 //垂直スクロールバーの設定
[629]757 GetScrollInfo(MdiInfo[WndNum]->MdiRadInfo->hRad,SB_VERT,&ScrollInfo);
[3]758 ScrollInfo.nMin=0;
759 if(height>NeedSize.cy) ScrollInfo.nMax=0;
760 else{
761 ScrollInfo.nMax=NeedSize.cy;
762 ScrollInfo.nPage=height;
763 }
[629]764 SetScrollInfo(MdiInfo[WndNum]->MdiRadInfo->hRad,SB_VERT,&ScrollInfo,1);
[3]765
766 //水平スクロールバーの設定
[629]767 GetScrollInfo(MdiInfo[WndNum]->MdiRadInfo->hRad,SB_VERT,&ScrollInfo);
[3]768 ScrollInfo.nMin=0;
769 if(weight>NeedSize.cx) ScrollInfo.nMax=0;
770 else{
771 ScrollInfo.nMax=NeedSize.cx;
772 ScrollInfo.nPage=weight;
773 }
[629]774 SetScrollInfo(MdiInfo[WndNum]->MdiRadInfo->hRad,SB_HORZ,&ScrollInfo,1);
[3]775}
776LRESULT CALLBACK RadWindow(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
777 extern RADINFO RadInfo;
778 int i,i2,i3,i4;
779 char temporary[MAX_PATH],temp2[MAX_PATH];
780 HWND hParent;
781 HDC hdc;
782 RECT rect;
783 POINT mouse,pos;
784 SIZE size;
785 SCROLLINFO ScrollInfo,si2;
786 PAINTSTRUCT ps;
787 POINTANDSIZE PointAndSize;
788
789 switch(message){
790 case WM_LBUTTONDOWN:
[609]791 {
792 SetCapture(hwnd);
[3]793
[609]794 SetFocus(hwnd);
795 mouse.x=LOWORD(lParam);
796 mouse.y=HIWORD(lParam);
797 CursorPos_LocalToGlobal(hwnd,&mouse.x,&mouse.y);
[3]798
[609]799 i=GetWndNum(GetParent(hwnd));
[629]800 i2 = GetWndInfoNum(MdiInfo[i]->path);
801 ActiveBasic::PM::WindowInfo *pWindowInfo = GetWndInfo(MdiInfo[i]->path);
[3]802
[629]803 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_MOUSE){
[609]804 if(((wParam&MK_CONTROL)||(wParam&MK_SHIFT))&&
[629]805 MdiInfo[i]->MdiRadInfo->SelectingItem[0]!=SELECT_WINDOW){
[3]806
[609]807 //Shiftキー、Ctrlキーによる複数選択
808 for(i3=0;;i3++){
[629]809 if(MdiInfo[i]->MdiRadInfo->SelectingItem[i3]==-1){
810 MdiInfo[i]->MdiRadInfo->SelectingItem[i3]=GetItemNumOnMouse(i,i2,mouse.x,mouse.y);
[609]811 InvalidateRect(hwnd,NULL,0);
812
813 //サポートダイアログの内容をセット
[612]814 SetSupportDlgData( i, *pWindowInfo );
[609]815 break;
816 }
817 }
818 }
819 else{
820 RadInfo.NowDragging=GetStateOfDraggingFrame(i,i2,mouse.x,mouse.y);
821 if(!RadInfo.NowDragging){
822 SelectItemNumOnMouse(i,i2,mouse.x,mouse.y);
[3]823 InvalidateRect(hwnd,NULL,0);
[609]824 RadInfo.NowDragging=GetStateOfDraggingFrame(i,i2,mouse.x,mouse.y);
825 }
826 if(RadInfo.NowDragging){
827 //アイテム選択中。サイズ、位置変更開始
[3]828
[629]829 if(MdiInfo[i]->MdiRadInfo->SelectingItem[0]==SELECT_WINDOW){
[609]830 RadInfo.DraggingRect[0].left=LEVER_THICK;
831 RadInfo.DraggingRect[0].top=LEVER_THICK;
832 RadInfo.DraggingRect[0].right=pWindowInfo->size.cx+LEVER_THICK;
833 RadInfo.DraggingRect[0].bottom=pWindowInfo->size.cy+LEVER_THICK;
834 RadInfo.DragStartRect[0]=RadInfo.DraggingRect[0];
835 }
836 else{
837 i3=0;
[629]838 while(MdiInfo[i]->MdiRadInfo->SelectingItem[i3]!=-1){
839 RadInfo.DraggingRect[i3].left=MdiInfo[i]->MdiRadInfo->ClientPos.x+pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos.x;
840 RadInfo.DraggingRect[i3].top=MdiInfo[i]->MdiRadInfo->ClientPos.y+pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos.y;
841 RadInfo.DraggingRect[i3].right=MdiInfo[i]->MdiRadInfo->ClientPos.x+pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos.x+pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->size.cx;
842 RadInfo.DraggingRect[i3].bottom=MdiInfo[i]->MdiRadInfo->ClientPos.y+pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos.y+pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->size.cy;
[609]843 RadInfo.DragStartRect[i3]=RadInfo.DraggingRect[i3];
844 i3++;
845 }
846 }
[3]847 }
[609]848 else{
849 //範囲選択
850
851 RadInfo.NowDragging=SELECTING_FRAME;
852 RadInfo.OldDraggingRect[0].left=LEVER_THICK;
853 RadInfo.OldDraggingRect[0].top=LEVER_THICK;
854 RadInfo.OldDraggingRect[0].right=pWindowInfo->size.cx+LEVER_THICK;
855 RadInfo.OldDraggingRect[0].bottom=pWindowInfo->size.cy+LEVER_THICK;
856 }
857 RadInfo.DragStartPos.x=mouse.x;
858 RadInfo.DragStartPos.y=mouse.y;
[3]859 }
[609]860 SetCursorByState(RadInfo.NowDragging);
[3]861 }
862 else{
[609]863 RadInfo.DraggingRect[0].left=mouse.x;
864 RadInfo.DraggingRect[0].top=mouse.y;
865 RadInfo.NowDragging=ITEM_MAKING;
866 }
867 return 0;
868 }
869 case WM_LBUTTONUP:
870 {
871 ReleaseCapture();
872
873 SetFocus(hwnd);
874 mouse.x=(int)(short)LOWORD(lParam);
875 mouse.y=(int)(short)HIWORD(lParam);
876 CursorPos_LocalToGlobal(hwnd,&mouse.x,&mouse.y);
877
878 hParent=GetParent(hwnd);
879 i=GetWndNum(hParent);
[629]880 i2 = GetWndInfoNum(MdiInfo[i]->path);
881 ActiveBasic::PM::WindowInfo *pWindowInfo = GetWndInfo(MdiInfo[i]->path);
[609]882
[629]883 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_MOUSE){
[3]884 if(RadInfo.NowDragging){
[609]885 if(RadInfo.DragStartPos.x==mouse.x&&RadInfo.DragStartPos.y==mouse.y){
886 RadInfo.NowDragging=0;
887 InvalidateRect(hwnd,NULL,0);
888 ResetState_EditMenu();
889 return 0;
890 }
[3]891
[629]892 if(MdiInfo[i]->MdiRadInfo->SelectingItem[0]==SELECT_WINDOW){
[609]893 if(RadInfo.NowDragging==SELECTING_FRAME){
894 SetItemNumOnFrame(i,i2,&RadInfo.DraggingRect[0]);
895 InvalidateRect(hwnd,NULL,1);
896 }
897 else{
898 //ウィンドウ枠の調整完了
899 PointAndSize.size=pWindowInfo->size;
[629]900 Rad_NoticeChanging(i,RAD_UNDO_POSITION,MdiInfo[i]->MdiRadInfo->SelectingItem[0],(DWORD)&PointAndSize);
[609]901 pWindowInfo->size.cx=RadInfo.DraggingRect[0].right-LEVER_THICK;
902 pWindowInfo->size.cy=RadInfo.DraggingRect[0].bottom-LEVER_THICK;
903 DrawRadWindow(i,pWindowInfo);
904 InvalidateRect(hwnd,NULL,1);
905
906 GetClientRect(hwnd,&rect);
907 ResetScrollbarOfRadEditor(i,rect.right,rect.bottom);
908 }
[3]909 }
910 else{
911 i3=0;
[629]912 while(MdiInfo[i]->MdiRadInfo->SelectingItem[i3]!=-1){
[609]913 //アイテム枠の調整完了
[629]914 PointAndSize.pos=pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos;
915 PointAndSize.size=pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->size;
916 Rad_NoticeChanging(i,RAD_UNDO_POSITION,MdiInfo[i]->MdiRadInfo->SelectingItem[i3],(DWORD)&PointAndSize);
917 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos.x=RadInfo.DraggingRect[i3].left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
918 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos.y=RadInfo.DraggingRect[i3].top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
919 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->size.cx=RadInfo.DraggingRect[i3].right-RadInfo.DraggingRect[i3].left;
920 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->size.cy=RadInfo.DraggingRect[i3].bottom-RadInfo.DraggingRect[i3].top;
[609]921 DrawRadWindow(i,pWindowInfo);
[3]922 i3++;
923 }
924 }
925
[609]926 SetStatusText(NULL);
927
928 //サポートダイアログの内容をセット
[612]929 SetSupportDlgData( i, *pWindowInfo );
[3]930 }
931 }
[609]932 else if(RadInfo.NowDragging==ITEM_MAKING){
[629]933 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_BUTTON){
[609]934 //ボタン コントロール作成
935 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
936 RadInfo.DraggingRect[0].left-=44;
937 RadInfo.DraggingRect[0].right=mouse.x+44;
938 RadInfo.DraggingRect[0].top-=10;
939 RadInfo.DraggingRect[0].bottom=mouse.y+11;
940 }
941 else{
942 RadInfo.DraggingRect[0].right=mouse.x;
943 RadInfo.DraggingRect[0].bottom=mouse.y;
944 }
945 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]946 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
947 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]948 size.cx=rect.right-rect.left;
949 size.cy=rect.bottom-rect.top;
[629]950 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]951 i,
952 i2,
953 -1,
954 &pos,
955 &size,
956 "CommandButton",
957 "Button",
958 WS_CHILD|WS_VISIBLE,0,CT_BUTTON,
959 ActiveBasic::PM::ImageReferenceType::File,
960 0,
961 1
962 );
[3]963 }
[629]964 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_CHECKBOX){
[609]965 //チェック ボックス作成
966 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
967 RadInfo.DraggingRect[0].left-=33;
968 RadInfo.DraggingRect[0].right=mouse.x+34;
969 RadInfo.DraggingRect[0].top-=7;
970 RadInfo.DraggingRect[0].bottom=mouse.y+8;
[3]971 }
972 else{
[609]973 RadInfo.DraggingRect[0].right=mouse.x;
974 RadInfo.DraggingRect[0].bottom=mouse.y;
[3]975 }
[609]976 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]977 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
978 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]979 size.cx=rect.right-rect.left;
980 size.cy=rect.bottom-rect.top;
[629]981 MdiInfo[i]->MdiRadInfo->SelectingItem[0]=InsertDlgItem(
[624]982 i,
983 i2,
984 -1,
985 &pos,
986 &size,
987 "CheckBox",
988 "Check",
989 WS_CHILD|WS_VISIBLE|BS_AUTOCHECKBOX,
990 0,
991 CT_CHECKBOX,
992 ActiveBasic::PM::ImageReferenceType::File,
993 0,
994 1
995 );
[3]996 }
[629]997 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_COMBOBOX){
[609]998 //コンボ ボックス作成
999 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1000 RadInfo.DraggingRect[0].left-=42;
1001 RadInfo.DraggingRect[0].right=mouse.x+42;
1002 RadInfo.DraggingRect[0].top-=42;
1003 RadInfo.DraggingRect[0].bottom=mouse.y+42;
[3]1004 }
[609]1005 else{
1006 RadInfo.DraggingRect[0].right=mouse.x;
1007 RadInfo.DraggingRect[0].bottom=mouse.y;
1008 }
1009 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1010 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1011 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1012 size.cx=rect.right-rect.left;
1013 size.cy=rect.bottom-rect.top;
[629]1014 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1015 i,
1016 i2,
1017 -1,
1018 &pos,
1019 &size,
1020 "ComboBox",
1021 "",
1022 WS_CHILD|WS_VISIBLE|CBS_DROPDOWN|CBS_SORT|WS_VSCROLL,
1023 0,
1024 CT_COMBOBOX,
1025 ActiveBasic::PM::ImageReferenceType::File,
1026 0,
1027 1
1028 );
[3]1029 }
[629]1030 else if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_EDIT){
[609]1031 //エディット コントロール作成
1032 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1033 RadInfo.DraggingRect[0].left-=35;
1034 RadInfo.DraggingRect[0].right=mouse.x+35;
1035 RadInfo.DraggingRect[0].top-=10;
1036 RadInfo.DraggingRect[0].bottom=mouse.y+11;
1037 }
1038 else{
1039 RadInfo.DraggingRect[0].right=mouse.x;
1040 RadInfo.DraggingRect[0].bottom=mouse.y;
1041 }
1042 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1043 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1044 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1045 size.cx=rect.right-rect.left;
1046 size.cy=rect.bottom-rect.top;
[629]1047 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1048 i,
1049 i2,
1050 -1,
1051 &pos,
1052 &size,
1053 "EditBox",
1054 "",
1055 WS_CHILD|WS_VISIBLE,WS_EX_CLIENTEDGE,
1056 CT_EDIT,
1057 ActiveBasic::PM::ImageReferenceType::File,
1058 0,
1059 1
1060 );
[3]1061 }
[629]1062 else if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_GROUPBOX){
[609]1063 //グループ ボックス作成
1064 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1065 RadInfo.DraggingRect[0].left-=42;
1066 RadInfo.DraggingRect[0].right=mouse.x+42;
1067 RadInfo.DraggingRect[0].top-=30;
1068 RadInfo.DraggingRect[0].bottom=mouse.y+30;
1069 }
1070 else{
1071 RadInfo.DraggingRect[0].right=mouse.x;
1072 RadInfo.DraggingRect[0].bottom=mouse.y;
1073 }
1074 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1075 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1076 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1077 size.cx=rect.right-rect.left;
1078 size.cy=rect.bottom-rect.top;
[629]1079 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1080 i,
1081 i2,
1082 -1,
1083 &pos,
1084 &size,
1085 "GroupBox",
1086 "Group",
1087 WS_CHILD|WS_VISIBLE|BS_GROUPBOX,
1088 0,
1089 CT_GROUPBOX,
1090 ActiveBasic::PM::ImageReferenceType::File,
1091 0,
1092 1
1093 );
[3]1094 }
[629]1095 else if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_HSCROLLBAR){
[609]1096 //水平スクロールバー作成
1097 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1098 RadInfo.DraggingRect[0].left-=35;
1099 RadInfo.DraggingRect[0].right=mouse.x+35;
1100 RadInfo.DraggingRect[0].top-=8;
1101 RadInfo.DraggingRect[0].bottom=mouse.y+9;
1102 }
1103 else{
1104 RadInfo.DraggingRect[0].right=mouse.x;
1105 RadInfo.DraggingRect[0].bottom=mouse.y;
1106 }
1107 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1108 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1109 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1110 size.cx=rect.right-rect.left;
1111 size.cy=rect.bottom-rect.top;
[629]1112 MdiInfo[i]->MdiRadInfo->SelectingItem[0]=InsertDlgItem(
[624]1113 i,
1114 i2,
1115 -1,
1116 &pos,
1117 &size,
1118 "HScrollBar",
1119 "",
1120 WS_CHILD|WS_VISIBLE|SBS_HORZ,
1121 0,
1122 CT_HSCROLLBAR,
1123 ActiveBasic::PM::ImageReferenceType::File,
1124 0,
1125 1
1126 );
[3]1127 }
[629]1128 else if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_IMAGEBOX){
[609]1129 //イメージ ボックス作成
1130 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1131 RadInfo.DraggingRect[0].left-=16;
1132 RadInfo.DraggingRect[0].right=mouse.x+16;
1133 RadInfo.DraggingRect[0].top-=16;
1134 RadInfo.DraggingRect[0].bottom=mouse.y+16;
1135 }
1136 else{
1137 RadInfo.DraggingRect[0].right=mouse.x;
1138 RadInfo.DraggingRect[0].bottom=mouse.y;
1139 }
1140 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1141 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1142 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1143 size.cx=rect.right-rect.left;
1144 size.cy=rect.bottom-rect.top;
[629]1145 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1146 i,
1147 i2,
1148 -1,
1149 &pos,
1150 &size,
1151 "ImageBox",
1152 "",
1153 WS_CHILD|WS_VISIBLE|SS_BLACKFRAME,0,CT_IMAGEBOX,
1154 ActiveBasic::PM::ImageReferenceType::File,
1155 0,
1156 1
1157 );
[3]1158 }
[629]1159 else if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_LISTBOX){
[609]1160 //リスト ボックス作成
1161 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1162 RadInfo.DraggingRect[0].left-=42;
1163 RadInfo.DraggingRect[0].right=mouse.x+42;
1164 RadInfo.DraggingRect[0].top-=30;
1165 RadInfo.DraggingRect[0].bottom=mouse.y+30;
1166 }
1167 else{
1168 RadInfo.DraggingRect[0].right=mouse.x;
1169 RadInfo.DraggingRect[0].bottom=mouse.y;
1170 }
1171 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1172 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1173 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1174 size.cx=rect.right-rect.left;
1175 size.cy=rect.bottom-rect.top;
[629]1176 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1177 i,
1178 i2,
1179 -1,
1180 &pos,
1181 &size,
1182 "ListBox",
1183 "",
1184 WS_CHILD|WS_VISIBLE|WS_VSCROLL|LBS_SORT|LBS_NOTIFY,WS_EX_CLIENTEDGE,
1185 CT_LISTBOX,
1186 ActiveBasic::PM::ImageReferenceType::File,
1187 0,
1188 1
1189 );
[3]1190 }
[629]1191 else if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_LISTVIEW){
[609]1192 //リスト ビュー作成
1193 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1194 RadInfo.DraggingRect[0].left-=52;
1195 RadInfo.DraggingRect[0].right=mouse.x+53;
1196 RadInfo.DraggingRect[0].top-=37;
1197 RadInfo.DraggingRect[0].bottom=mouse.y+38;
1198 }
1199 else{
1200 RadInfo.DraggingRect[0].right=mouse.x;
1201 RadInfo.DraggingRect[0].bottom=mouse.y;
1202 }
1203 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1204 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1205 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1206 size.cx=rect.right-rect.left;
1207 size.cy=rect.bottom-rect.top;
[629]1208 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1209 i,
1210 i2,
1211 -1,
1212 &pos,
1213 &size,
1214 "ListView",
1215 "",
1216 WS_CHILD|WS_VISIBLE,WS_EX_CLIENTEDGE,
1217 CT_LISTVIEW,
1218 ActiveBasic::PM::ImageReferenceType::File,
1219 0,
1220 1
1221 );
[3]1222 }
[629]1223 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_PROGRESSBAR){
[609]1224 //プロバレス バー作成
1225 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1226 RadInfo.DraggingRect[0].left-=70;
1227 RadInfo.DraggingRect[0].right=mouse.x+70;
1228 RadInfo.DraggingRect[0].top-=10;
1229 RadInfo.DraggingRect[0].bottom=mouse.y+11;
1230 }
1231 else{
1232 RadInfo.DraggingRect[0].right=mouse.x;
1233 RadInfo.DraggingRect[0].bottom=mouse.y;
1234 }
1235 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1236 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1237 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1238 size.cx=rect.right-rect.left;
1239 size.cy=rect.bottom-rect.top;
[629]1240 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1241 i,
1242 i2,
1243 -1,
1244 &pos,
1245 &size,
1246 "ProgressBar",
1247 "",
1248 WS_CHILD|WS_VISIBLE,WS_EX_STATICEDGE,
1249 CT_PROGRESSBAR,
1250 ActiveBasic::PM::ImageReferenceType::File,
1251 0,
1252 1
1253 );
[3]1254 }
[629]1255 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_RADIOBUTTON){
[609]1256 //ラジオ ボタン作成
1257 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1258 RadInfo.DraggingRect[0].left-=31;
1259 RadInfo.DraggingRect[0].right=mouse.x+32;
1260 RadInfo.DraggingRect[0].top-=7;
1261 RadInfo.DraggingRect[0].bottom=mouse.y+8;
1262 }
1263 else{
1264 RadInfo.DraggingRect[0].right=mouse.x;
1265 RadInfo.DraggingRect[0].bottom=mouse.y;
1266 }
1267 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1268 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1269 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1270 size.cx=rect.right-rect.left;
1271 size.cy=rect.bottom-rect.top;
[629]1272 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1273 i,
1274 i2,
1275 -1,
1276 &pos,
1277 &size,
1278 "RadioButton",
1279 "radio",
1280 WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON,
1281 0,
1282 CT_RADIOBUTTON,
1283 ActiveBasic::PM::ImageReferenceType::File,
1284 0,
1285 1
1286 );
[3]1287 }
[629]1288 else if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_STATIC){
[609]1289 //スタティック コントロール作成
1290 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1291 RadInfo.DraggingRect[0].left-=25;
1292 RadInfo.DraggingRect[0].right=mouse.x+25;
1293 RadInfo.DraggingRect[0].top-=6;
1294 RadInfo.DraggingRect[0].bottom=mouse.y+6;
1295 }
1296 else{
1297 RadInfo.DraggingRect[0].right=mouse.x;
1298 RadInfo.DraggingRect[0].bottom=mouse.y;
1299 }
1300 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1301 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1302 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1303 size.cx=rect.right-rect.left;
1304 size.cy=rect.bottom-rect.top;
[629]1305 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1306 i,
1307 i2,
1308 -1,
1309 &pos,
1310 &size,
1311 "Static",
1312 "Text",
1313 WS_CHILD|WS_VISIBLE,
1314 0,
1315 CT_STATIC,
1316 ActiveBasic::PM::ImageReferenceType::File,
1317 0,
1318 1
1319 );
[3]1320 }
[629]1321 else if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_TRACKBAR){
[609]1322 //トラック バー作成
1323 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1324 RadInfo.DraggingRect[0].left-=87;
1325 RadInfo.DraggingRect[0].right=mouse.x+88;
1326 RadInfo.DraggingRect[0].top-=11;
1327 RadInfo.DraggingRect[0].bottom=mouse.y+12;
1328 }
1329 else{
1330 RadInfo.DraggingRect[0].right=mouse.x;
1331 RadInfo.DraggingRect[0].bottom=mouse.y;
1332 }
1333 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1334 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1335 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1336 size.cx=rect.right-rect.left;
1337 size.cy=rect.bottom-rect.top;
[629]1338 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1339 i,
1340 i2,
1341 -1,
1342 &pos,
1343 &size,
1344 "TrackBar",
1345 "",
1346 WS_CHILD|WS_VISIBLE|TBS_BOTH|TBS_NOTICKS,
1347 0,
1348 CT_TRACKBAR,
1349 ActiveBasic::PM::ImageReferenceType::File,
1350 0,
1351 1
1352 );
[3]1353 }
[629]1354 else if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_TREEVIEW){
[609]1355 //ツリー ビュー作成
1356 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1357 RadInfo.DraggingRect[0].left-=52;
1358 RadInfo.DraggingRect[0].right=mouse.x+53;
1359 RadInfo.DraggingRect[0].top-=37;
1360 RadInfo.DraggingRect[0].bottom=mouse.y+38;
1361 }
1362 else{
1363 RadInfo.DraggingRect[0].right=mouse.x;
1364 RadInfo.DraggingRect[0].bottom=mouse.y;
1365 }
1366 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1367 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1368 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1369 size.cx=rect.right-rect.left;
1370 size.cy=rect.bottom-rect.top;
[629]1371 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1372 i,
1373 i2,
1374 -1,
1375 &pos,
1376 &size,
1377 "TreeView",
1378 "",
1379 WS_CHILD|WS_VISIBLE,
1380 WS_EX_CLIENTEDGE,
1381 CT_TREEVIEW,
1382 ActiveBasic::PM::ImageReferenceType::File,
1383 0,
1384 1
1385 );
[3]1386 }
[629]1387 else if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_UPDOWN){
[609]1388 //アップ ダウン コントロール作成
1389 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1390 RadInfo.DraggingRect[0].left-=8;
1391 RadInfo.DraggingRect[0].right=mouse.x+8;
1392 RadInfo.DraggingRect[0].top-=10;
1393 RadInfo.DraggingRect[0].bottom=mouse.y+11;
1394 }
1395 else{
1396 RadInfo.DraggingRect[0].right=mouse.x;
1397 RadInfo.DraggingRect[0].bottom=mouse.y;
1398 }
1399 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1400 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1401 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1402 size.cx=rect.right-rect.left;
1403 size.cy=rect.bottom-rect.top;
[629]1404 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1405 i,
1406 i2,
1407 -1,
1408 &pos,
1409 &size,
1410 "UpDown",
1411 "",
1412 WS_CHILD|WS_VISIBLE,
1413 0,
1414 CT_UPDOWN,
1415 ActiveBasic::PM::ImageReferenceType::File,
1416 0,
1417 1
1418 );
[3]1419 }
[629]1420 else if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_VSCROLLBAR){
[609]1421 //垂直スクロールバー作成
1422 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1423 RadInfo.DraggingRect[0].left-=9;
1424 RadInfo.DraggingRect[0].right=mouse.x+9;
1425 RadInfo.DraggingRect[0].top-=30;
1426 RadInfo.DraggingRect[0].bottom=mouse.y+30;
1427 }
1428 else{
1429 RadInfo.DraggingRect[0].right=mouse.x;
1430 RadInfo.DraggingRect[0].bottom=mouse.y;
1431 }
1432 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1433 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1434 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1435 size.cx=rect.right-rect.left;
1436 size.cy=rect.bottom-rect.top;
[629]1437 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1438 i,
1439 i2,
1440 -1,
1441 &pos,
1442 &size,
1443 "VScrollBar",
1444 "",
1445 WS_CHILD|WS_VISIBLE|SBS_VERT,
1446 0,
1447 CT_VSCROLLBAR,
1448 ActiveBasic::PM::ImageReferenceType::File,
1449 0,
1450 1
1451 );
[3]1452 }
[629]1453 SendMessage(GetWindow(MdiInfo[i]->MdiRadInfo->hTools,GW_CHILD),WM_COMMAND,IDC_TOOL_MOUSE,0);
1454 SendMessage(GetWindow(GetWindow(MdiInfo[i]->MdiRadInfo->hTools,GW_CHILD),GW_CHILD),TB_CHECKBUTTON,IDC_TOOL_MOUSE,TRUE);
[609]1455 ChangePropertyWindow(i,i2);
1456
1457 //複数選択を解除
[629]1458 MdiInfo[i]->MdiRadInfo->SelectingItem[1]=-1;
[3]1459 }
1460
[609]1461 RadInfo.NowDragging=0;
1462
1463 ResetState_EditMenu();
1464 return 0;
[3]1465 }
1466 case WM_MOUSEMOVE:
[612]1467 {
1468 mouse.x=(int)(short)LOWORD(lParam);
1469 mouse.y=(int)(short)HIWORD(lParam);
1470 CursorPos_LocalToGlobal(hwnd,&mouse.x,&mouse.y);
[3]1471
[612]1472 hParent=GetParent(hwnd);
1473 i=GetWndNum(hParent);
[629]1474 i2 = GetWndInfoNum(MdiInfo[i]->path);
1475 ActiveBasic::PM::WindowInfo *pWindowInfo = GetWndInfo(MdiInfo[i]->path);
[3]1476
[629]1477 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_MOUSE){
[612]1478 if(wParam&MK_LBUTTON&&RadInfo.NowDragging){
1479 ////////////////////////////////////////////////
1480 // ドラッグ中の場合(コントロールのサイズ変更)
[3]1481
[612]1482 if(RadInfo.NowDragging==FRAME_UPPER_LEFT){
1483 if(RadInfo.DraggingRect[0].right-MIN_ITEM_X<=(mouse.x+LEVER_THICK))
1484 RadInfo.DraggingRect[0].left=RadInfo.DraggingRect[0].right-MIN_ITEM_X;
[629]1485 else if(mouse.x+LEVER_THICK<MdiInfo[i]->MdiRadInfo->ClientPos.x)
1486 RadInfo.DraggingRect[0].left=MdiInfo[i]->MdiRadInfo->ClientPos.x;
[612]1487 else RadInfo.DraggingRect[0].left=mouse.x+LEVER_THICK;
[3]1488
[612]1489 if(RadInfo.DraggingRect[0].bottom-MIN_ITEM_Y<=(mouse.y+LEVER_THICK))
1490 RadInfo.DraggingRect[0].top=RadInfo.DraggingRect[0].bottom-MIN_ITEM_Y;
[629]1491 else if(mouse.y+LEVER_THICK<MdiInfo[i]->MdiRadInfo->ClientPos.y)
1492 RadInfo.DraggingRect[0].top=MdiInfo[i]->MdiRadInfo->ClientPos.y;
[612]1493 else RadInfo.DraggingRect[0].top=mouse.y+LEVER_THICK;
1494 DrawFrame(hwnd,i,i2,&RadInfo.DraggingRect[0],&RadInfo.OldDraggingRect[0],0);
1495 }
1496 else if(RadInfo.NowDragging==FRAME_UPPER_RIGHT){
1497 if(mouse.x-LEVER_THICK-MIN_ITEM_X<=RadInfo.DraggingRect[0].left)
1498 RadInfo.DraggingRect[0].right=RadInfo.DraggingRect[0].left+MIN_ITEM_X;
[629]1499 else if(mouse.x>MdiInfo[i]->MdiRadInfo->ClientPos.x+MdiInfo[i]->MdiRadInfo->ClientSize.cx)
1500 RadInfo.DraggingRect[0].right=MdiInfo[i]->MdiRadInfo->ClientPos.x+MdiInfo[i]->MdiRadInfo->ClientSize.cx;
[612]1501 else RadInfo.DraggingRect[0].right=mouse.x-LEVER_THICK;
[3]1502
[612]1503 if(RadInfo.DraggingRect[0].bottom-MIN_ITEM_Y<=(mouse.y+LEVER_THICK)) RadInfo.DraggingRect[0].top=RadInfo.DraggingRect[0].bottom-MIN_ITEM_Y;
[629]1504 else if(mouse.y+LEVER_THICK<MdiInfo[i]->MdiRadInfo->ClientPos.y)
1505 RadInfo.DraggingRect[0].top=MdiInfo[i]->MdiRadInfo->ClientPos.y;
[612]1506 else RadInfo.DraggingRect[0].top=mouse.y+LEVER_THICK;
1507 DrawFrame(hwnd,i,i2,&RadInfo.DraggingRect[0],&RadInfo.OldDraggingRect[0],0);
1508 }
1509 else if(RadInfo.NowDragging==FRAME_LOWER_LEFT){
1510 if(RadInfo.DraggingRect[0].right-MIN_ITEM_X<=(mouse.x+LEVER_THICK))
1511 RadInfo.DraggingRect[0].left=RadInfo.DraggingRect[0].right-MIN_ITEM_X;
[629]1512 else if(mouse.x+LEVER_THICK<MdiInfo[i]->MdiRadInfo->ClientPos.x)
1513 RadInfo.DraggingRect[0].left=MdiInfo[i]->MdiRadInfo->ClientPos.x;
[612]1514 else RadInfo.DraggingRect[0].left=mouse.x+LEVER_THICK;
[3]1515
[612]1516 if(mouse.y-LEVER_THICK-MIN_ITEM_Y<=RadInfo.DraggingRect[0].top)
1517 RadInfo.DraggingRect[0].bottom=RadInfo.DraggingRect[0].top+MIN_ITEM_Y;
[629]1518 else if(mouse.y>MdiInfo[i]->MdiRadInfo->ClientPos.y+MdiInfo[i]->MdiRadInfo->ClientSize.cy)
1519 RadInfo.DraggingRect[0].bottom=MdiInfo[i]->MdiRadInfo->ClientPos.y+MdiInfo[i]->MdiRadInfo->ClientSize.cy;
[612]1520 else RadInfo.DraggingRect[0].bottom=mouse.y-LEVER_THICK;
1521 DrawFrame(hwnd,i,i2,&RadInfo.DraggingRect[0],&RadInfo.OldDraggingRect[0],0);
1522 }
1523 else if(RadInfo.NowDragging==FRAME_LOWER_RIGHT){
1524 if(mouse.x-LEVER_THICK-MIN_ITEM_X<=RadInfo.DraggingRect[0].left)
1525 RadInfo.DraggingRect[0].right=RadInfo.DraggingRect[0].left+MIN_ITEM_X;
[629]1526 else if((mouse.x>MdiInfo[i]->MdiRadInfo->ClientPos.x+MdiInfo[i]->MdiRadInfo->ClientSize.cx)&&MdiInfo[i]->MdiRadInfo->SelectingItem[0]!=SELECT_WINDOW)
1527 RadInfo.DraggingRect[0].right=MdiInfo[i]->MdiRadInfo->ClientPos.x+MdiInfo[i]->MdiRadInfo->ClientSize.cx;
[612]1528 else RadInfo.DraggingRect[0].right=mouse.x-LEVER_THICK;
[3]1529
[612]1530 if(mouse.y-LEVER_THICK-MIN_ITEM_Y<=RadInfo.DraggingRect[0].top)
1531 RadInfo.DraggingRect[0].bottom=RadInfo.DraggingRect[0].top+MIN_ITEM_Y;
[629]1532 else if((mouse.y>MdiInfo[i]->MdiRadInfo->ClientPos.y+MdiInfo[i]->MdiRadInfo->ClientSize.cy)&&MdiInfo[i]->MdiRadInfo->SelectingItem[0]!=SELECT_WINDOW)
1533 RadInfo.DraggingRect[0].bottom=MdiInfo[i]->MdiRadInfo->ClientPos.y+MdiInfo[i]->MdiRadInfo->ClientSize.cy;
[612]1534 else RadInfo.DraggingRect[0].bottom=mouse.y-LEVER_THICK;
1535 DrawFrame(hwnd,i,i2,&RadInfo.DraggingRect[0],&RadInfo.OldDraggingRect[0],0);
1536 }
1537 else if(RadInfo.NowDragging==FRAME_LEFT){
1538 if(RadInfo.DraggingRect[0].right-MIN_ITEM_X<=(mouse.x+LEVER_THICK))
1539 RadInfo.DraggingRect[0].left=RadInfo.DraggingRect[0].right-MIN_ITEM_X;
[629]1540 else if(mouse.x+LEVER_THICK<MdiInfo[i]->MdiRadInfo->ClientPos.x)
1541 RadInfo.DraggingRect[0].left=MdiInfo[i]->MdiRadInfo->ClientPos.x;
[612]1542 else RadInfo.DraggingRect[0].left=mouse.x+LEVER_THICK;
1543 DrawFrame(hwnd,i,i2,&RadInfo.DraggingRect[0],&RadInfo.OldDraggingRect[0],0);
1544 }
1545 else if(RadInfo.NowDragging==FRAME_RIGHT){
1546 if(mouse.x-LEVER_THICK-MIN_ITEM_X<=RadInfo.DraggingRect[0].left)
1547 RadInfo.DraggingRect[0].right=RadInfo.DraggingRect[0].left+MIN_ITEM_X;
[629]1548 else if((mouse.x>MdiInfo[i]->MdiRadInfo->ClientPos.x+MdiInfo[i]->MdiRadInfo->ClientSize.cx)&&MdiInfo[i]->MdiRadInfo->SelectingItem[0]!=SELECT_WINDOW)
1549 RadInfo.DraggingRect[0].right=MdiInfo[i]->MdiRadInfo->ClientPos.x+MdiInfo[i]->MdiRadInfo->ClientSize.cx;
[612]1550 else RadInfo.DraggingRect[0].right=mouse.x-LEVER_THICK;
1551 DrawFrame(hwnd,i,i2,&RadInfo.DraggingRect[0],&RadInfo.OldDraggingRect[0],0);
1552 }
1553 else if(RadInfo.NowDragging==FRAME_UPPER){
1554 if(RadInfo.DraggingRect[0].bottom-MIN_ITEM_Y<=(mouse.y+LEVER_THICK))
1555 RadInfo.DraggingRect[0].top=RadInfo.DraggingRect[0].bottom-MIN_ITEM_Y;
[629]1556 else if(mouse.y+LEVER_THICK<MdiInfo[i]->MdiRadInfo->ClientPos.y)
1557 RadInfo.DraggingRect[0].top=MdiInfo[i]->MdiRadInfo->ClientPos.y;
[612]1558 else RadInfo.DraggingRect[0].top=mouse.y+LEVER_THICK;
1559 DrawFrame(hwnd,i,i2,&RadInfo.DraggingRect[0],&RadInfo.OldDraggingRect[0],0);
1560 }
1561 else if(RadInfo.NowDragging==FRAME_LOWER){
1562 if(mouse.y-LEVER_THICK-MIN_ITEM_Y<=RadInfo.DraggingRect[0].top)
1563 RadInfo.DraggingRect[0].bottom=RadInfo.DraggingRect[0].top+MIN_ITEM_Y;
[629]1564 else if((mouse.y>MdiInfo[i]->MdiRadInfo->ClientPos.y+MdiInfo[i]->MdiRadInfo->ClientSize.cy)&&MdiInfo[i]->MdiRadInfo->SelectingItem[0]!=SELECT_WINDOW)
1565 RadInfo.DraggingRect[0].bottom=MdiInfo[i]->MdiRadInfo->ClientPos.y+MdiInfo[i]->MdiRadInfo->ClientSize.cy;
[612]1566 else RadInfo.DraggingRect[0].bottom=mouse.y-LEVER_THICK;
1567 DrawFrame(hwnd,i,i2,&RadInfo.DraggingRect[0],&RadInfo.OldDraggingRect[0],0);
1568 }
1569 else if(RadInfo.NowDragging==FRAME_INSIDE){
1570 i3=0;
[629]1571 while(MdiInfo[i]->MdiRadInfo->SelectingItem[i3]!=-1){
[612]1572 i4=RadInfo.DragStartRect[i3].left+mouse.x-RadInfo.DragStartPos.x;
[3]1573
[629]1574 if(i4>MdiInfo[i]->MdiRadInfo->ClientPos.x){
[612]1575 i4=RadInfo.DragStartRect[i3].right+mouse.x-RadInfo.DragStartPos.x;
[629]1576 if(i4<MdiInfo[i]->MdiRadInfo->ClientPos.x+MdiInfo[i]->MdiRadInfo->ClientSize.cx) i4=0;
1577 else i4-=MdiInfo[i]->MdiRadInfo->ClientPos.x+MdiInfo[i]->MdiRadInfo->ClientSize.cx;
[612]1578 }
[629]1579 else i4-=MdiInfo[i]->MdiRadInfo->ClientPos.x;
[612]1580 //i4は枠外に出たときのポインタと壁にあたったコントロールとの差
1581 RadInfo.DraggingRect[i3].left=RadInfo.DragStartRect[i3].left+mouse.x-RadInfo.DragStartPos.x-i4;
1582 RadInfo.DraggingRect[i3].right=RadInfo.DragStartRect[i3].right+mouse.x-RadInfo.DragStartPos.x-i4;
[3]1583
[612]1584 i4=RadInfo.DragStartRect[i3].top+mouse.y-RadInfo.DragStartPos.y;
[629]1585 if(i4>MdiInfo[i]->MdiRadInfo->ClientPos.y){
[612]1586 i4=RadInfo.DragStartRect[i3].bottom+mouse.y-RadInfo.DragStartPos.y;
[629]1587 if(i4<MdiInfo[i]->MdiRadInfo->ClientPos.y+MdiInfo[i]->MdiRadInfo->ClientSize.cy) i4=0;
1588 else i4-=MdiInfo[i]->MdiRadInfo->ClientPos.y+MdiInfo[i]->MdiRadInfo->ClientSize.cy;
[612]1589 }
[629]1590 else i4-=MdiInfo[i]->MdiRadInfo->ClientPos.y;
[612]1591 RadInfo.DraggingRect[i3].top=RadInfo.DragStartRect[i3].top+mouse.y-RadInfo.DragStartPos.y-i4;
1592 RadInfo.DraggingRect[i3].bottom=RadInfo.DragStartRect[i3].bottom+mouse.y-RadInfo.DragStartPos.y-i4;
1593
[629]1594 if(MdiInfo[i]->MdiRadInfo->SelectingItem[1]==-1) i4=1;
[612]1595 else i4=0;
1596 DrawFrame(hwnd,i,i2,&RadInfo.DraggingRect[i3],&RadInfo.OldDraggingRect[i3],i4);
1597 i3++;
[3]1598 }
[612]1599 }
1600 else if(RadInfo.NowDragging==SELECTING_FRAME){
1601 RadInfo.DraggingRect[0].left=RadInfo.DragStartPos.x;
1602 RadInfo.DraggingRect[0].top=RadInfo.DragStartPos.y;
1603 RadInfo.DraggingRect[0].right=mouse.x;
1604 RadInfo.DraggingRect[0].bottom=mouse.y;
1605 DrawFrame(hwnd,i,i2,&RadInfo.DraggingRect[0],&RadInfo.OldDraggingRect[0],0);
1606 }
1607 SetCursorByState(RadInfo.NowDragging);
[3]1608
[612]1609 SetStatusText(NULL);
1610
1611 //サポートダイアログの内容をセット
1612 SetSupportDlgData( i, *pWindowInfo );
[3]1613 }
[612]1614 else{
1615 //ドラッグ中でないとき
1616 SetCursorByState(GetStateOfDraggingFrame(i,i2,mouse.x,mouse.y));
1617 }
1618 }
1619 else{
1620 //アイテム(子ウィンドウ作成中)
1621 if(wParam&MK_LBUTTON&&RadInfo.NowDragging==ITEM_MAKING){
1622 //ドラッグ中の場合
1623
[3]1624 RadInfo.DraggingRect[0].right=mouse.x;
1625 RadInfo.DraggingRect[0].bottom=mouse.y;
1626 DrawFrame(hwnd,i,i2,&RadInfo.DraggingRect[0],&RadInfo.OldDraggingRect[0],0);
1627 }
1628 }
[612]1629 return 0;
[3]1630 }
1631 case WM_LBUTTONDBLCLK:
[609]1632 {
1633 mouse.x=LOWORD(lParam);
1634 mouse.y=HIWORD(lParam);
1635 CursorPos_LocalToGlobal(hwnd,&mouse.x,&mouse.y);
[3]1636
[609]1637 hParent=GetParent(hwnd);
1638 i=GetWndNum(hParent);
[629]1639 i2=GetWndInfoNum(MdiInfo[i]->path);
1640 ActiveBasic::PM::WindowInfo *pWindowInfo = GetWndInfo(MdiInfo[i]->path);
1641 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_MOUSE){
1642 if(MdiInfo[i]->MdiRadInfo->SelectingItem[0]!=SELECT_WINDOW){
[609]1643 temp2[0]=0;
[629]1644 if(pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->Control==CT_BUTTON||
1645 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->Control==CT_CHECKBOX||
1646 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->Control==CT_IMAGEBOX||
1647 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->Control==CT_RADIOBUTTON||
1648 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->Control==CT_STATIC)
[617]1649 {
1650 sprintf(temporary,"%s_%s_Click",
1651 pWindowInfo->GetName().c_str(),
[629]1652 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->GetName().c_str()
[617]1653 );
[609]1654 }
[629]1655 else if(pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->Control==CT_COMBOBOX)
[617]1656 {
1657 sprintf(temporary,"%s_%s_EditChange",
1658 pWindowInfo->GetName().c_str(),
[629]1659 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->GetName().c_str());
[617]1660 }
[629]1661 else if(pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->Control==CT_EDIT)
[617]1662 {
1663 sprintf(temporary,"%s_%s_Change",
1664 pWindowInfo->GetName().c_str(),
[629]1665 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->GetName().c_str());
[617]1666 }
[629]1667 else if(pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->Control==CT_LISTBOX)
[617]1668 {
1669 sprintf(temporary,"%s_%s_SelChange",
1670 pWindowInfo->GetName().c_str(),
[629]1671 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->GetName().c_str());
[617]1672 }
[609]1673 else temporary[0]=0;
1674 if(temporary[0]) SelectProcedureOfMessageCall(i2,temporary,temp2);
[3]1675 }
1676 }
[609]1677 return 0;
[3]1678 }
1679 case WM_KEYDOWN:
[609]1680 {
1681 hParent=GetParent(hwnd);
1682 i=GetWndNum(hParent);
[629]1683 ActiveBasic::PM::WindowInfo *pWindowInfo = GetWndInfo(MdiInfo[i]->path);
1684 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_MOUSE){
1685 if(MdiInfo[i]->MdiRadInfo->SelectingItem[0]==SELECT_WINDOW){
[609]1686 PointAndSize.pos=pWindowInfo->pos;
1687 PointAndSize.size=pWindowInfo->size;
1688 if(GetKeyState(VK_SHIFT)&0x8000){
1689 if(wParam==VK_RIGHT||wParam==VK_LEFT||wParam==VK_DOWN||wParam==VK_UP)
[629]1690 Rad_NoticeChanging(i,RAD_UNDO_POSITION,MdiInfo[i]->MdiRadInfo->SelectingItem[0],(DWORD)&PointAndSize);
[3]1691
[609]1692 if(wParam==VK_RIGHT)
1693 pWindowInfo->size.cx++;
1694 else if(wParam==VK_LEFT)
1695 pWindowInfo->size.cx--;
1696 else if(wParam==VK_DOWN)
1697 pWindowInfo->size.cy++;
1698 else if(wParam==VK_UP)
1699 pWindowInfo->size.cy--;
[3]1700
[609]1701 if(wParam==VK_RIGHT||wParam==VK_LEFT||wParam==VK_DOWN||wParam==VK_UP){
1702 DrawRadWindow(i,pWindowInfo);
[3]1703
[609]1704 SetStatusText(NULL);
[3]1705
[609]1706 //サポートダイアログの内容をセット
[612]1707 SetSupportDlgData( i, *pWindowInfo );
[609]1708 }
[3]1709 }
1710 }
[609]1711 else{
[629]1712 PointAndSize.pos=pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->pos;
1713 PointAndSize.size=pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->size;
[609]1714 if(wParam==VK_RIGHT){
1715 if(GetKeyState(VK_SHIFT)&0x8000){
[629]1716 Rad_NoticeChanging(i,RAD_UNDO_POSITION,MdiInfo[i]->MdiRadInfo->SelectingItem[0],(DWORD)&PointAndSize);
1717 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->size.cx++;
[609]1718 }
1719 else{
1720 for(i3=0;;i3++){
[629]1721 if(MdiInfo[i]->MdiRadInfo->SelectingItem[i3]==-1) break;
1722 PointAndSize.pos=pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos;
1723 PointAndSize.size=pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->size;
1724 Rad_NoticeChanging(i,RAD_UNDO_POSITION,MdiInfo[i]->MdiRadInfo->SelectingItem[i3],(DWORD)&PointAndSize);
[3]1725
[629]1726 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos.x++;
[609]1727 }
[3]1728 }
[609]1729 DrawRadWindow(i,pWindowInfo);
1730 SetStatusText(NULL);
[3]1731
[609]1732 //サポートダイアログの内容をセット
[612]1733 SetSupportDlgData( i, *pWindowInfo );
[3]1734 }
[609]1735 else if(wParam==VK_LEFT){
1736 if(GetKeyState(VK_SHIFT)&0x8000){
[629]1737 Rad_NoticeChanging(i,RAD_UNDO_POSITION,MdiInfo[i]->MdiRadInfo->SelectingItem[0],(DWORD)&PointAndSize);
1738 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->size.cx--;
[609]1739 }
1740 else{
1741 for(i3=0;;i3++){
[629]1742 if(MdiInfo[i]->MdiRadInfo->SelectingItem[i3]==-1) break;
1743 PointAndSize.pos=pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos;
1744 PointAndSize.size=pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->size;
1745 Rad_NoticeChanging(i,RAD_UNDO_POSITION,MdiInfo[i]->MdiRadInfo->SelectingItem[i3],(DWORD)&PointAndSize);
[3]1746
[629]1747 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos.x--;
[609]1748 }
[3]1749 }
[609]1750 DrawRadWindow(i,pWindowInfo);
1751 SetStatusText(NULL);
[3]1752
[609]1753 //サポートダイアログの内容をセット
[612]1754 SetSupportDlgData( i, *pWindowInfo );
[3]1755 }
[609]1756 else if(wParam==VK_UP){
1757 if(GetKeyState(VK_SHIFT)&0x8000){
[629]1758 Rad_NoticeChanging(i,RAD_UNDO_POSITION,MdiInfo[i]->MdiRadInfo->SelectingItem[0],(DWORD)&PointAndSize);
1759 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->size.cy--;
[609]1760 }
1761 else{
1762 for(i3=0;;i3++){
[629]1763 if(MdiInfo[i]->MdiRadInfo->SelectingItem[i3]==-1) break;
1764 PointAndSize.pos=pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos;
1765 PointAndSize.size=pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->size;
1766 Rad_NoticeChanging(i,RAD_UNDO_POSITION,MdiInfo[i]->MdiRadInfo->SelectingItem[i3],(DWORD)&PointAndSize);
[3]1767
[629]1768 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos.y--;
[609]1769 }
[3]1770 }
[609]1771 DrawRadWindow(i,pWindowInfo);
1772 SetStatusText(NULL);
[3]1773
[609]1774 //サポートダイアログの内容をセット
[612]1775 SetSupportDlgData( i, *pWindowInfo );
[3]1776 }
[609]1777 else if(wParam==VK_DOWN){
1778 if(GetKeyState(VK_SHIFT)&0x8000){
[629]1779 Rad_NoticeChanging(i,RAD_UNDO_POSITION,MdiInfo[i]->MdiRadInfo->SelectingItem[0],(DWORD)&PointAndSize);
1780 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->size.cy++;
[609]1781 }
1782 else{
1783 for(i3=0;;i3++){
[629]1784 if(MdiInfo[i]->MdiRadInfo->SelectingItem[i3]==-1) break;
1785 PointAndSize.pos=pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos;
1786 PointAndSize.size=pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->size;
1787 Rad_NoticeChanging(i,RAD_UNDO_POSITION,MdiInfo[i]->MdiRadInfo->SelectingItem[i3],(DWORD)&PointAndSize);
[3]1788
[629]1789 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos.y++;
[609]1790 }
[3]1791 }
[609]1792 DrawRadWindow(i,pWindowInfo);
1793 SetStatusText(NULL);
1794
1795 //サポートダイアログの内容をセット
[612]1796 SetSupportDlgData( i, *pWindowInfo );
[3]1797 }
[609]1798 else if(wParam==VK_DELETE)
1799 SendMessage(hwnd,WM_COMMAND,IDM_RAD_ITEM_DELETE,0);
[3]1800 }
1801 }
[609]1802 return 0;
[3]1803 }
1804 case WM_SETFOCUS:
1805 i=GetWndNum(GetParent(hwnd));
[629]1806 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==NON_TOOL)
1807 MdiInfo[i]->MdiRadInfo->ButtonSelect=IDC_TOOL_MOUSE;
[3]1808 InvalidateRect(hwnd,NULL,0);
1809 return 0;
1810 case WM_KILLFOCUS:
1811 i=GetWndNum(GetParent(hwnd));
1812 if(i==-1) return 0; //ウィンドウが破棄された場合
[629]1813 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_MOUSE)
1814 MdiInfo[i]->MdiRadInfo->ButtonSelect=NON_TOOL;
[3]1815 InvalidateRect(hwnd,NULL,0);
1816 return 0;
1817 case WM_PAINT:
1818 i=GetWndNum(GetParent(hwnd));
1819 if(i==-1) return 0; //ウィンドウが初期状態の場合
[629]1820 i2=GetWndInfoNum(MdiInfo[i]->path);
[3]1821
1822 ScrollInfo.cbSize=sizeof(SCROLLINFO);
1823 ScrollInfo.fMask=SIF_RANGE|SIF_POS;
1824 GetScrollInfo(hwnd,SB_VERT,&ScrollInfo);
1825 si2.cbSize=sizeof(SCROLLINFO);
1826 si2.fMask=SIF_RANGE|SIF_POS;
1827 GetScrollInfo(hwnd,SB_HORZ,&si2);
1828
1829 hdc=BeginPaint(hwnd,&ps);
1830 BitBlt(hdc,0,0,ScreenX*2,ScreenY*2,
[629]1831 MdiInfo[i]->MdiRadInfo->hMemDC,si2.nPos,ScrollInfo.nPos,SRCCOPY);
[3]1832 EndPaint(hwnd,&ps);
1833
[629]1834 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_MOUSE||MdiInfo[i]->MdiRadInfo->ButtonSelect==NON_TOOL)
1835 DrawSelectingRect(hwnd,i,i2,MdiInfo[i]->MdiRadInfo->ButtonSelect);
[3]1836 return 0;
1837 case WM_CONTEXTMENU:
1838 if(RadInfo.NowDragging) return 0;
1839
1840 hParent=GetParent(hwnd);
1841 BringWindowToTop(hParent);
1842 SetFocus(hwnd);
1843 i=GetWndNum(hParent);
[629]1844 i2=GetWndInfoNum(MdiInfo[i]->path);
[3]1845
[629]1846 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_MOUSE){
[3]1847 mouse.x=LOWORD(lParam);
1848 mouse.y=HIWORD(lParam);
1849 ScreenToClient(hwnd,&mouse);
1850 CursorPos_LocalToGlobal(hwnd,&mouse.x,&mouse.y);
1851 SelectItemNumOnMouse(i,i2,mouse.x,mouse.y);
1852 InvalidateRect(hwnd,NULL,0);
1853 extern HMENU hRadMenuBase;
[629]1854 if(MdiInfo[i]->MdiRadInfo->SelectingItem[0]==SELECT_WINDOW)
[3]1855 TrackPopupMenu(GetSubMenu(hRadMenuBase,0),TPM_LEFTALIGN,LOWORD(lParam),HIWORD(lParam),0,hwnd,0);
1856 else TrackPopupMenu(GetSubMenu(hRadMenuBase,1),TPM_LEFTALIGN,LOWORD(lParam),HIWORD(lParam),0,hwnd,0);
1857 }
1858 return 0;
1859 case WM_COMMAND:
1860 switch(LOWORD(wParam)){
1861 case IDM_RAD_WINDOW_EVENTCODE:
1862 i=GetWndNum(GetParent(hwnd));
[302]1863 DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_RAD_EVENTCODE),hwnd,(DLGPROC)DlgEventCode,0);
[3]1864 break;
1865 case IDM_RAD_WINDOW_MENUEVENTCODE:
1866 i=GetWndNum(GetParent(hwnd));
[302]1867 DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_RAD_EVENTCODE),hwnd,(DLGPROC)DlgEventCode,1);
[3]1868 break;
1869 case IDM_RAD_ITEM_DELETE:
1870 hParent=GetParent(hwnd);
1871 i=GetWndNum(hParent);
[629]1872 i2=GetWndInfoNum(MdiInfo[i]->path);
[3]1873
1874 //削除順序を考慮しなければならないので、バブルソートを行う
1875 int i5,i6;
1876 for(i5=0;;i5++){
[629]1877 if(MdiInfo[i]->MdiRadInfo->SelectingItem[i5]==-1) break;
[3]1878 }
1879 for(i3=0;i3<i5-1;i3++){
1880 for(i4=i5-1;i4>i3;i4--){
[629]1881 if(MdiInfo[i]->MdiRadInfo->SelectingItem[i4] >
1882 MdiInfo[i]->MdiRadInfo->SelectingItem[i4-1]){
1883 i6=MdiInfo[i]->MdiRadInfo->SelectingItem[i4];
1884 MdiInfo[i]->MdiRadInfo->SelectingItem[i4]=
1885 MdiInfo[i]->MdiRadInfo->SelectingItem[i4-1];
1886 MdiInfo[i]->MdiRadInfo->SelectingItem[i4-1]=i6;
[3]1887 }
1888 }
1889 }
1890
1891
1892 for(i3=0;;i3++){
[629]1893 if(MdiInfo[i]->MdiRadInfo->SelectingItem[i3]==-1) break;
1894 DeleteDlgItem(i,i2,MdiInfo[i]->MdiRadInfo->SelectingItem[i3],1);
[3]1895 }
[629]1896 for(i3=0;i3<MAX_RAD_SELITEM;i3++) MdiInfo[i]->MdiRadInfo->SelectingItem[i3]=-1;
[3]1897
1898 ResetState_EditMenu();
1899 break;
1900 }
1901 return 0;
1902 case WM_VSCROLL:
1903 ScrollInfo.cbSize=sizeof(SCROLLINFO);
1904 ScrollInfo.fMask=SIF_POS|SIF_PAGE|SIF_RANGE;
1905 GetScrollInfo(hwnd,SB_VERT,&ScrollInfo);
1906 if(LOWORD(wParam)==SB_LINEUP) i=-20;
1907 else if(LOWORD(wParam)==SB_LINEDOWN) i=20;
1908 else if(LOWORD(wParam)==SB_PAGEUP) i=-(signed int)ScrollInfo.nPage;
1909 else if(LOWORD(wParam)==SB_PAGEDOWN) i=ScrollInfo.nPage;
1910 else if(LOWORD(wParam)==SB_THUMBTRACK) i=HIWORD(wParam)-ScrollInfo.nPos;
1911 else i=0;
1912 GetClientRect(hwnd,&rect);
1913 i=max(-ScrollInfo.nPos,min(i,ScrollInfo.nMax-rect.bottom-ScrollInfo.nPos));
1914 if(i!=0){
1915 ScrollInfo.nPos+=i;
1916 SetScrollInfo(hwnd,SB_VERT,&ScrollInfo,1);
1917 ScrollWindow(hwnd,0,-i,NULL,NULL);
1918 UpdateWindow(hwnd);
1919 }
1920 return 0;
1921 case WM_HSCROLL:
1922 ScrollInfo.cbSize=sizeof(SCROLLINFO);
1923 ScrollInfo.fMask=SIF_POS|SIF_PAGE|SIF_RANGE;
1924 GetScrollInfo(hwnd,SB_HORZ,&ScrollInfo);
1925 if(LOWORD(wParam)==SB_LINEUP) i=-20;
1926 else if(LOWORD(wParam)==SB_LINEDOWN) i=20;
1927 else if(LOWORD(wParam)==SB_PAGEUP) i=-(signed int)ScrollInfo.nPage;
1928 else if(LOWORD(wParam)==SB_PAGEDOWN) i=ScrollInfo.nPage;
1929 else if(LOWORD(wParam)==SB_THUMBTRACK) i=HIWORD(wParam)-ScrollInfo.nPos;
1930 else i=0;
1931 GetClientRect(hwnd,&rect);
1932 i=max(-ScrollInfo.nPos,min(i,ScrollInfo.nMax-rect.right-ScrollInfo.nPos));
1933 if(i!=0){
1934 ScrollInfo.nPos+=i;
1935 SetScrollInfo(hwnd,SB_HORZ,&ScrollInfo,1);
1936 ScrollWindow(hwnd,-i,0,NULL,NULL);
1937 UpdateWindow(hwnd);
1938 }
1939 return 0;
1940 case WM_SIZE:
1941 i=GetWndNum(GetParent(hwnd));
1942 if(i==-1) break; //ウィンドウが初期状態の場合
1943 ResetScrollbarOfRadEditor(i,LOWORD(lParam),HIWORD(lParam));
1944 return 0;
1945 }
1946 return DefWindowProc(hwnd,message,wParam,lParam);
1947}
1948void ResizeToRadToolWindows(int WndNum,int weight,int height){
1949 int i,i2;
1950 RECT rect;
1951
1952 if(height<200){
1953 i=100;
1954 i2=100;
1955 }
1956 else{
1957 //ツールボタンウィンドウ(長さ、i)
[629]1958 GetClientRect(GetWindow(MdiInfo[WndNum]->MdiRadInfo->hTools,GW_CHILD),&rect);
[3]1959 if(height>rect.bottom+1) i=rect.bottom+1;
1960 else i=height;
1961
1962 //プロパティウィンドウ(長さ、i2)
[629]1963 GetClientRect(GetWindow(MdiInfo[WndNum]->MdiRadInfo->hProperty,GW_CHILD),&rect);
[3]1964 i2=height-i;
1965
1966 if(i2<100){
1967 i=height-100;
1968 i2=100;
1969 }
1970 }
[629]1971 MoveWindow(MdiInfo[WndNum]->MdiRadInfo->hTools,weight-172,0,172,i,1);
1972 MoveWindow(MdiInfo[WndNum]->MdiRadInfo->hProperty,weight-172,i,172,i2,1);
[3]1973
[629]1974 GetWindowRect(MdiInfo[WndNum]->MdiRadInfo->hSupport,&rect);
[3]1975 rect.right-=rect.left;
1976 rect.bottom-=rect.top;
1977
1978 //RADウィンドウ
[629]1979 MoveWindow(MdiInfo[WndNum]->MdiRadInfo->hRad,0,0,weight-172,height-rect.bottom,1);
[3]1980
1981 //サポートウィンドウ
[629]1982 MoveWindow(MdiInfo[WndNum]->MdiRadInfo->hSupport,0,height-rect.bottom,weight-172,rect.bottom,1);
[3]1983}
1984LRESULT CALLBACK MDIClientWindow_Rad(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1985 extern HWND hDocCombo;
1986 int i,WndNum;
1987
1988 switch(message){
1989 case WM_CREATE:
1990 extern HICON hWindowDocumentIcon;
1991 SendMessage(hwnd,WM_SETICON,ICON_SMALL,(long)hWindowDocumentIcon);
1992 break;
1993 case WM_MDIACTIVATE:
1994 if(!lParam) return 0;
1995 i=GetWndNum((HWND)lParam);
1996 if(i==-1) return 0; //ウィンドウが初期状態の場合
1997
[629]1998 i=SendMessage(hDocCombo,CB_FINDSTRINGEXACT,0,(long)MdiInfo[i]->title.c_str());
[3]1999 SendMessage(hDocCombo,CB_SETCURSEL,i,0);
2000 SetStatusText(NULL);
2001 ResetState_EditMenu();
2002 return 0;
2003 case WM_SIZE:
2004 WndNum=GetWndNum(hwnd);
2005 if(WndNum==-1) break;
2006 ResizeToRadToolWindows(WndNum,LOWORD(lParam),HIWORD(lParam));
2007 break;
2008 case WM_CLOSE:
2009 CloseDocWindow(GetWndNum(hwnd));
2010 pobj_nv->bMDIZoomed=IsZoomed(hwnd);
2011 i=DefMDIChildProc(hwnd,message,wParam,lParam);
2012
2013 //メニュー状態を設定
2014 ResetState_DocMenu();
2015
2016 return i;
2017 }
2018 return DefMDIChildProc(hwnd,message,wParam,lParam);
2019}
Note: See TracBrowser for help on using the repository browser.