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

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

egtraブランチの内容をマージ。

File size: 76.6 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;
[772]49 hChild=(HWND)SendMessage(hClient,WM_MDICREATE,0,(LPARAM)&mdic); //ウィンドウ作成
[3]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;
[828]79 hSupport = ActiveBasic::Resource::CreateDialogAlt(hResInst, IDD_RAD_SUPPORT, hChild, 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;
[828]100 MdiInfo[i]->MdiRadInfo->hProp_Dlg = ActiveBasic::Resource::CreateDialogAlt(hResInst, IDD_RAD_PROP_WINDOW, hProperty, 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 //タブに追加
[772]142 pobj_MainTab->InsertItem( hChild, 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);
[828]290 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg = ActiveBasic::Resource::CreateDialogAlt(hResInst, IDD_RAD_PROP_WINDOW, MdiInfo[WndNum]->MdiRadInfo->hProperty, 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){
[828]540 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg = ActiveBasic::Resource::CreateDialogAlt(hResInst, IDD_RAD_PROP_WINDOW, MdiInfo[WndNum]->MdiRadInfo->hProperty, 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)
[828]552 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=ActiveBasic::Resource::CreateDialogAlt(hResInst, IDD_RAD_PROP_BUTTON, MdiInfo[WndNum]->MdiRadInfo->hProperty, RadProperty_ButtonProc);
[629]553 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_CHECKBOX)
[828]554 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=ActiveBasic::Resource::CreateDialogAlt(hResInst, IDD_RAD_PROP_CHECKBOX, MdiInfo[WndNum]->MdiRadInfo->hProperty, RadProperty_CheckBoxProc);
[629]555 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_COMBOBOX)
[828]556 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=ActiveBasic::Resource::CreateDialogAlt(hResInst, IDD_RAD_PROP_COMBOBOX, MdiInfo[WndNum]->MdiRadInfo->hProperty, RadProperty_ComboBoxProc);
[629]557 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_EDIT)
[828]558 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=ActiveBasic::Resource::CreateDialogAlt(hResInst, IDD_RAD_PROP_EDIT, MdiInfo[WndNum]->MdiRadInfo->hProperty, RadProperty_EditProc);
[629]559 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_GROUPBOX)
[828]560 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=ActiveBasic::Resource::CreateDialogAlt(hResInst, IDD_RAD_PROP_GROUPBOX, MdiInfo[WndNum]->MdiRadInfo->hProperty, RadProperty_GroupBoxProc);
[629]561 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_HSCROLLBAR)
[828]562 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=ActiveBasic::Resource::CreateDialogAlt(hResInst, IDD_RAD_PROP_SCROLLBAR, MdiInfo[WndNum]->MdiRadInfo->hProperty, RadProperty_ScrollBarProc);
[629]563 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_IMAGEBOX)
[828]564 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=ActiveBasic::Resource::CreateDialogAlt(hResInst, IDD_RAD_PROP_IMAGEBOX, MdiInfo[WndNum]->MdiRadInfo->hProperty, RadProperty_ImageBoxProc);
[629]565 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_LISTBOX)
[828]566 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=ActiveBasic::Resource::CreateDialogAlt(hResInst, IDD_RAD_PROP_LISTBOX, MdiInfo[WndNum]->MdiRadInfo->hProperty, RadProperty_ListBoxProc);
[629]567 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_LISTVIEW)
[828]568 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=ActiveBasic::Resource::CreateDialogAlt(hResInst, IDD_RAD_PROP_LISTVIEW, MdiInfo[WndNum]->MdiRadInfo->hProperty, RadProperty_ListViewProc);
[629]569 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_PROGRESSBAR)
[828]570 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=ActiveBasic::Resource::CreateDialogAlt(hResInst, IDD_RAD_PROP_PROGRESSBAR, MdiInfo[WndNum]->MdiRadInfo->hProperty, RadProperty_ProgressBarProc);
[629]571 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_RADIOBUTTON)
[828]572 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=ActiveBasic::Resource::CreateDialogAlt(hResInst, IDD_RAD_PROP_RADIOBUTTON, MdiInfo[WndNum]->MdiRadInfo->hProperty, RadProperty_RadioButtonProc);
[629]573 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_STATIC)
[828]574 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=ActiveBasic::Resource::CreateDialogAlt(hResInst, IDD_RAD_PROP_STATIC, MdiInfo[WndNum]->MdiRadInfo->hProperty, RadProperty_StaticProc);
[629]575 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_TRACKBAR)
[828]576 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=ActiveBasic::Resource::CreateDialogAlt(hResInst, IDD_RAD_PROP_TRACKBAR, MdiInfo[WndNum]->MdiRadInfo->hProperty, RadProperty_TrackBarProc);
[629]577 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_TREEVIEW)
[828]578 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=ActiveBasic::Resource::CreateDialogAlt(hResInst, IDD_RAD_PROP_TREEVIEW, MdiInfo[WndNum]->MdiRadInfo->hProperty, RadProperty_TreeViewProc);
[629]579 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_UPDOWN)
[828]580 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=ActiveBasic::Resource::CreateDialogAlt(hResInst, IDD_RAD_PROP_UPDOWN, MdiInfo[WndNum]->MdiRadInfo->hProperty, RadProperty_UpDownProc);
[629]581 else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_VSCROLLBAR)
[828]582 MdiInfo[WndNum]->MdiRadInfo->hProp_Dlg=ActiveBasic::Resource::CreateDialogAlt(hResInst, IDD_RAD_PROP_SCROLLBAR, MdiInfo[WndNum]->MdiRadInfo->hProperty, 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 POINTANDSIZE PointAndSize;
787
788 switch(message){
789 case WM_LBUTTONDOWN:
[609]790 {
791 SetCapture(hwnd);
[3]792
[609]793 SetFocus(hwnd);
[772]794 mouse.x=GET_X_LPARAM(lParam);
795 mouse.y=GET_Y_LPARAM(lParam);
[609]796 CursorPos_LocalToGlobal(hwnd,&mouse.x,&mouse.y);
[3]797
[609]798 i=GetWndNum(GetParent(hwnd));
[629]799 i2 = GetWndInfoNum(MdiInfo[i]->path);
800 ActiveBasic::PM::WindowInfo *pWindowInfo = GetWndInfo(MdiInfo[i]->path);
[3]801
[629]802 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_MOUSE){
[609]803 if(((wParam&MK_CONTROL)||(wParam&MK_SHIFT))&&
[629]804 MdiInfo[i]->MdiRadInfo->SelectingItem[0]!=SELECT_WINDOW){
[3]805
[609]806 //Shiftキー、Ctrlキーによる複数選択
807 for(i3=0;;i3++){
[629]808 if(MdiInfo[i]->MdiRadInfo->SelectingItem[i3]==-1){
809 MdiInfo[i]->MdiRadInfo->SelectingItem[i3]=GetItemNumOnMouse(i,i2,mouse.x,mouse.y);
[609]810 InvalidateRect(hwnd,NULL,0);
811
812 //サポートダイアログの内容をセット
[612]813 SetSupportDlgData( i, *pWindowInfo );
[609]814 break;
815 }
816 }
817 }
818 else{
819 RadInfo.NowDragging=GetStateOfDraggingFrame(i,i2,mouse.x,mouse.y);
820 if(!RadInfo.NowDragging){
821 SelectItemNumOnMouse(i,i2,mouse.x,mouse.y);
[3]822 InvalidateRect(hwnd,NULL,0);
[609]823 RadInfo.NowDragging=GetStateOfDraggingFrame(i,i2,mouse.x,mouse.y);
824 }
825 if(RadInfo.NowDragging){
826 //アイテム選択中。サイズ、位置変更開始
[3]827
[629]828 if(MdiInfo[i]->MdiRadInfo->SelectingItem[0]==SELECT_WINDOW){
[609]829 RadInfo.DraggingRect[0].left=LEVER_THICK;
830 RadInfo.DraggingRect[0].top=LEVER_THICK;
831 RadInfo.DraggingRect[0].right=pWindowInfo->size.cx+LEVER_THICK;
832 RadInfo.DraggingRect[0].bottom=pWindowInfo->size.cy+LEVER_THICK;
833 RadInfo.DragStartRect[0]=RadInfo.DraggingRect[0];
834 }
835 else{
836 i3=0;
[629]837 while(MdiInfo[i]->MdiRadInfo->SelectingItem[i3]!=-1){
838 RadInfo.DraggingRect[i3].left=MdiInfo[i]->MdiRadInfo->ClientPos.x+pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos.x;
839 RadInfo.DraggingRect[i3].top=MdiInfo[i]->MdiRadInfo->ClientPos.y+pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos.y;
840 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;
841 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]842 RadInfo.DragStartRect[i3]=RadInfo.DraggingRect[i3];
843 i3++;
844 }
845 }
[3]846 }
[609]847 else{
848 //範囲選択
849
850 RadInfo.NowDragging=SELECTING_FRAME;
851 RadInfo.OldDraggingRect[0].left=LEVER_THICK;
852 RadInfo.OldDraggingRect[0].top=LEVER_THICK;
853 RadInfo.OldDraggingRect[0].right=pWindowInfo->size.cx+LEVER_THICK;
854 RadInfo.OldDraggingRect[0].bottom=pWindowInfo->size.cy+LEVER_THICK;
855 }
856 RadInfo.DragStartPos.x=mouse.x;
857 RadInfo.DragStartPos.y=mouse.y;
[3]858 }
[609]859 SetCursorByState(RadInfo.NowDragging);
[3]860 }
861 else{
[609]862 RadInfo.DraggingRect[0].left=mouse.x;
863 RadInfo.DraggingRect[0].top=mouse.y;
864 RadInfo.NowDragging=ITEM_MAKING;
865 }
866 return 0;
867 }
868 case WM_LBUTTONUP:
869 {
870 ReleaseCapture();
871
872 SetFocus(hwnd);
[772]873 mouse.x=GET_X_LPARAM(lParam);
874 mouse.y=GET_Y_LPARAM(lParam);
[609]875 CursorPos_LocalToGlobal(hwnd,&mouse.x,&mouse.y);
876
877 hParent=GetParent(hwnd);
878 i=GetWndNum(hParent);
[629]879 i2 = GetWndInfoNum(MdiInfo[i]->path);
880 ActiveBasic::PM::WindowInfo *pWindowInfo = GetWndInfo(MdiInfo[i]->path);
[609]881
[629]882 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_MOUSE){
[3]883 if(RadInfo.NowDragging){
[609]884 if(RadInfo.DragStartPos.x==mouse.x&&RadInfo.DragStartPos.y==mouse.y){
885 RadInfo.NowDragging=0;
886 InvalidateRect(hwnd,NULL,0);
887 ResetState_EditMenu();
888 return 0;
889 }
[3]890
[629]891 if(MdiInfo[i]->MdiRadInfo->SelectingItem[0]==SELECT_WINDOW){
[609]892 if(RadInfo.NowDragging==SELECTING_FRAME){
893 SetItemNumOnFrame(i,i2,&RadInfo.DraggingRect[0]);
894 InvalidateRect(hwnd,NULL,1);
895 }
896 else{
897 //ウィンドウ枠の調整完了
898 PointAndSize.size=pWindowInfo->size;
[629]899 Rad_NoticeChanging(i,RAD_UNDO_POSITION,MdiInfo[i]->MdiRadInfo->SelectingItem[0],(DWORD)&PointAndSize);
[609]900 pWindowInfo->size.cx=RadInfo.DraggingRect[0].right-LEVER_THICK;
901 pWindowInfo->size.cy=RadInfo.DraggingRect[0].bottom-LEVER_THICK;
902 DrawRadWindow(i,pWindowInfo);
903 InvalidateRect(hwnd,NULL,1);
904
905 GetClientRect(hwnd,&rect);
906 ResetScrollbarOfRadEditor(i,rect.right,rect.bottom);
907 }
[3]908 }
909 else{
910 i3=0;
[629]911 while(MdiInfo[i]->MdiRadInfo->SelectingItem[i3]!=-1){
[609]912 //アイテム枠の調整完了
[629]913 PointAndSize.pos=pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos;
914 PointAndSize.size=pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->size;
915 Rad_NoticeChanging(i,RAD_UNDO_POSITION,MdiInfo[i]->MdiRadInfo->SelectingItem[i3],(DWORD)&PointAndSize);
916 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos.x=RadInfo.DraggingRect[i3].left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
917 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos.y=RadInfo.DraggingRect[i3].top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
918 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->size.cx=RadInfo.DraggingRect[i3].right-RadInfo.DraggingRect[i3].left;
919 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->size.cy=RadInfo.DraggingRect[i3].bottom-RadInfo.DraggingRect[i3].top;
[609]920 DrawRadWindow(i,pWindowInfo);
[3]921 i3++;
922 }
923 }
924
[609]925 SetStatusText(NULL);
926
927 //サポートダイアログの内容をセット
[612]928 SetSupportDlgData( i, *pWindowInfo );
[3]929 }
930 }
[609]931 else if(RadInfo.NowDragging==ITEM_MAKING){
[629]932 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_BUTTON){
[609]933 //ボタン コントロール作成
934 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
935 RadInfo.DraggingRect[0].left-=44;
936 RadInfo.DraggingRect[0].right=mouse.x+44;
937 RadInfo.DraggingRect[0].top-=10;
938 RadInfo.DraggingRect[0].bottom=mouse.y+11;
939 }
940 else{
941 RadInfo.DraggingRect[0].right=mouse.x;
942 RadInfo.DraggingRect[0].bottom=mouse.y;
943 }
944 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]945 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
946 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]947 size.cx=rect.right-rect.left;
948 size.cy=rect.bottom-rect.top;
[629]949 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]950 i,
951 i2,
952 -1,
953 &pos,
954 &size,
955 "CommandButton",
956 "Button",
957 WS_CHILD|WS_VISIBLE,0,CT_BUTTON,
958 ActiveBasic::PM::ImageReferenceType::File,
959 0,
960 1
961 );
[3]962 }
[629]963 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_CHECKBOX){
[609]964 //チェック ボックス作成
965 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
966 RadInfo.DraggingRect[0].left-=33;
967 RadInfo.DraggingRect[0].right=mouse.x+34;
968 RadInfo.DraggingRect[0].top-=7;
969 RadInfo.DraggingRect[0].bottom=mouse.y+8;
[3]970 }
971 else{
[609]972 RadInfo.DraggingRect[0].right=mouse.x;
973 RadInfo.DraggingRect[0].bottom=mouse.y;
[3]974 }
[609]975 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]976 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
977 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]978 size.cx=rect.right-rect.left;
979 size.cy=rect.bottom-rect.top;
[629]980 MdiInfo[i]->MdiRadInfo->SelectingItem[0]=InsertDlgItem(
[624]981 i,
982 i2,
983 -1,
984 &pos,
985 &size,
986 "CheckBox",
987 "Check",
988 WS_CHILD|WS_VISIBLE|BS_AUTOCHECKBOX,
989 0,
990 CT_CHECKBOX,
991 ActiveBasic::PM::ImageReferenceType::File,
992 0,
993 1
994 );
[3]995 }
[629]996 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_COMBOBOX){
[609]997 //コンボ ボックス作成
998 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
999 RadInfo.DraggingRect[0].left-=42;
1000 RadInfo.DraggingRect[0].right=mouse.x+42;
1001 RadInfo.DraggingRect[0].top-=42;
1002 RadInfo.DraggingRect[0].bottom=mouse.y+42;
[3]1003 }
[609]1004 else{
1005 RadInfo.DraggingRect[0].right=mouse.x;
1006 RadInfo.DraggingRect[0].bottom=mouse.y;
1007 }
1008 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1009 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1010 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1011 size.cx=rect.right-rect.left;
1012 size.cy=rect.bottom-rect.top;
[629]1013 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1014 i,
1015 i2,
1016 -1,
1017 &pos,
1018 &size,
1019 "ComboBox",
1020 "",
1021 WS_CHILD|WS_VISIBLE|CBS_DROPDOWN|CBS_SORT|WS_VSCROLL,
1022 0,
1023 CT_COMBOBOX,
1024 ActiveBasic::PM::ImageReferenceType::File,
1025 0,
1026 1
1027 );
[3]1028 }
[629]1029 else if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_EDIT){
[609]1030 //エディット コントロール作成
1031 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1032 RadInfo.DraggingRect[0].left-=35;
1033 RadInfo.DraggingRect[0].right=mouse.x+35;
1034 RadInfo.DraggingRect[0].top-=10;
1035 RadInfo.DraggingRect[0].bottom=mouse.y+11;
1036 }
1037 else{
1038 RadInfo.DraggingRect[0].right=mouse.x;
1039 RadInfo.DraggingRect[0].bottom=mouse.y;
1040 }
1041 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1042 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1043 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1044 size.cx=rect.right-rect.left;
1045 size.cy=rect.bottom-rect.top;
[629]1046 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1047 i,
1048 i2,
1049 -1,
1050 &pos,
1051 &size,
1052 "EditBox",
1053 "",
1054 WS_CHILD|WS_VISIBLE,WS_EX_CLIENTEDGE,
1055 CT_EDIT,
1056 ActiveBasic::PM::ImageReferenceType::File,
1057 0,
1058 1
1059 );
[3]1060 }
[629]1061 else if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_GROUPBOX){
[609]1062 //グループ ボックス作成
1063 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1064 RadInfo.DraggingRect[0].left-=42;
1065 RadInfo.DraggingRect[0].right=mouse.x+42;
1066 RadInfo.DraggingRect[0].top-=30;
1067 RadInfo.DraggingRect[0].bottom=mouse.y+30;
1068 }
1069 else{
1070 RadInfo.DraggingRect[0].right=mouse.x;
1071 RadInfo.DraggingRect[0].bottom=mouse.y;
1072 }
1073 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1074 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1075 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1076 size.cx=rect.right-rect.left;
1077 size.cy=rect.bottom-rect.top;
[629]1078 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1079 i,
1080 i2,
1081 -1,
1082 &pos,
1083 &size,
1084 "GroupBox",
1085 "Group",
1086 WS_CHILD|WS_VISIBLE|BS_GROUPBOX,
1087 0,
1088 CT_GROUPBOX,
1089 ActiveBasic::PM::ImageReferenceType::File,
1090 0,
1091 1
1092 );
[3]1093 }
[629]1094 else if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_HSCROLLBAR){
[609]1095 //水平スクロールバー作成
1096 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1097 RadInfo.DraggingRect[0].left-=35;
1098 RadInfo.DraggingRect[0].right=mouse.x+35;
1099 RadInfo.DraggingRect[0].top-=8;
1100 RadInfo.DraggingRect[0].bottom=mouse.y+9;
1101 }
1102 else{
1103 RadInfo.DraggingRect[0].right=mouse.x;
1104 RadInfo.DraggingRect[0].bottom=mouse.y;
1105 }
1106 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1107 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1108 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1109 size.cx=rect.right-rect.left;
1110 size.cy=rect.bottom-rect.top;
[629]1111 MdiInfo[i]->MdiRadInfo->SelectingItem[0]=InsertDlgItem(
[624]1112 i,
1113 i2,
1114 -1,
1115 &pos,
1116 &size,
1117 "HScrollBar",
1118 "",
1119 WS_CHILD|WS_VISIBLE|SBS_HORZ,
1120 0,
1121 CT_HSCROLLBAR,
1122 ActiveBasic::PM::ImageReferenceType::File,
1123 0,
1124 1
1125 );
[3]1126 }
[629]1127 else if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_IMAGEBOX){
[609]1128 //イメージ ボックス作成
1129 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1130 RadInfo.DraggingRect[0].left-=16;
1131 RadInfo.DraggingRect[0].right=mouse.x+16;
1132 RadInfo.DraggingRect[0].top-=16;
1133 RadInfo.DraggingRect[0].bottom=mouse.y+16;
1134 }
1135 else{
1136 RadInfo.DraggingRect[0].right=mouse.x;
1137 RadInfo.DraggingRect[0].bottom=mouse.y;
1138 }
1139 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1140 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1141 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1142 size.cx=rect.right-rect.left;
1143 size.cy=rect.bottom-rect.top;
[629]1144 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1145 i,
1146 i2,
1147 -1,
1148 &pos,
1149 &size,
1150 "ImageBox",
1151 "",
1152 WS_CHILD|WS_VISIBLE|SS_BLACKFRAME,0,CT_IMAGEBOX,
1153 ActiveBasic::PM::ImageReferenceType::File,
1154 0,
1155 1
1156 );
[3]1157 }
[629]1158 else if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_LISTBOX){
[609]1159 //リスト ボックス作成
1160 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1161 RadInfo.DraggingRect[0].left-=42;
1162 RadInfo.DraggingRect[0].right=mouse.x+42;
1163 RadInfo.DraggingRect[0].top-=30;
1164 RadInfo.DraggingRect[0].bottom=mouse.y+30;
1165 }
1166 else{
1167 RadInfo.DraggingRect[0].right=mouse.x;
1168 RadInfo.DraggingRect[0].bottom=mouse.y;
1169 }
1170 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1171 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1172 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1173 size.cx=rect.right-rect.left;
1174 size.cy=rect.bottom-rect.top;
[629]1175 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1176 i,
1177 i2,
1178 -1,
1179 &pos,
1180 &size,
1181 "ListBox",
1182 "",
1183 WS_CHILD|WS_VISIBLE|WS_VSCROLL|LBS_SORT|LBS_NOTIFY,WS_EX_CLIENTEDGE,
1184 CT_LISTBOX,
1185 ActiveBasic::PM::ImageReferenceType::File,
1186 0,
1187 1
1188 );
[3]1189 }
[629]1190 else if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_LISTVIEW){
[609]1191 //リスト ビュー作成
1192 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1193 RadInfo.DraggingRect[0].left-=52;
1194 RadInfo.DraggingRect[0].right=mouse.x+53;
1195 RadInfo.DraggingRect[0].top-=37;
1196 RadInfo.DraggingRect[0].bottom=mouse.y+38;
1197 }
1198 else{
1199 RadInfo.DraggingRect[0].right=mouse.x;
1200 RadInfo.DraggingRect[0].bottom=mouse.y;
1201 }
1202 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1203 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1204 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1205 size.cx=rect.right-rect.left;
1206 size.cy=rect.bottom-rect.top;
[629]1207 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1208 i,
1209 i2,
1210 -1,
1211 &pos,
1212 &size,
1213 "ListView",
1214 "",
1215 WS_CHILD|WS_VISIBLE,WS_EX_CLIENTEDGE,
1216 CT_LISTVIEW,
1217 ActiveBasic::PM::ImageReferenceType::File,
1218 0,
1219 1
1220 );
[3]1221 }
[629]1222 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_PROGRESSBAR){
[609]1223 //プロバレス バー作成
1224 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1225 RadInfo.DraggingRect[0].left-=70;
1226 RadInfo.DraggingRect[0].right=mouse.x+70;
1227 RadInfo.DraggingRect[0].top-=10;
1228 RadInfo.DraggingRect[0].bottom=mouse.y+11;
1229 }
1230 else{
1231 RadInfo.DraggingRect[0].right=mouse.x;
1232 RadInfo.DraggingRect[0].bottom=mouse.y;
1233 }
1234 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1235 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1236 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1237 size.cx=rect.right-rect.left;
1238 size.cy=rect.bottom-rect.top;
[629]1239 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1240 i,
1241 i2,
1242 -1,
1243 &pos,
1244 &size,
1245 "ProgressBar",
1246 "",
1247 WS_CHILD|WS_VISIBLE,WS_EX_STATICEDGE,
1248 CT_PROGRESSBAR,
1249 ActiveBasic::PM::ImageReferenceType::File,
1250 0,
1251 1
1252 );
[3]1253 }
[629]1254 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_RADIOBUTTON){
[609]1255 //ラジオ ボタン作成
1256 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1257 RadInfo.DraggingRect[0].left-=31;
1258 RadInfo.DraggingRect[0].right=mouse.x+32;
1259 RadInfo.DraggingRect[0].top-=7;
1260 RadInfo.DraggingRect[0].bottom=mouse.y+8;
1261 }
1262 else{
1263 RadInfo.DraggingRect[0].right=mouse.x;
1264 RadInfo.DraggingRect[0].bottom=mouse.y;
1265 }
1266 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1267 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1268 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1269 size.cx=rect.right-rect.left;
1270 size.cy=rect.bottom-rect.top;
[629]1271 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1272 i,
1273 i2,
1274 -1,
1275 &pos,
1276 &size,
1277 "RadioButton",
1278 "radio",
1279 WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON,
1280 0,
1281 CT_RADIOBUTTON,
1282 ActiveBasic::PM::ImageReferenceType::File,
1283 0,
1284 1
1285 );
[3]1286 }
[629]1287 else if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_STATIC){
[609]1288 //スタティック コントロール作成
1289 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1290 RadInfo.DraggingRect[0].left-=25;
1291 RadInfo.DraggingRect[0].right=mouse.x+25;
1292 RadInfo.DraggingRect[0].top-=6;
1293 RadInfo.DraggingRect[0].bottom=mouse.y+6;
1294 }
1295 else{
1296 RadInfo.DraggingRect[0].right=mouse.x;
1297 RadInfo.DraggingRect[0].bottom=mouse.y;
1298 }
1299 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1300 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1301 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1302 size.cx=rect.right-rect.left;
1303 size.cy=rect.bottom-rect.top;
[629]1304 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1305 i,
1306 i2,
1307 -1,
1308 &pos,
1309 &size,
1310 "Static",
1311 "Text",
1312 WS_CHILD|WS_VISIBLE,
1313 0,
1314 CT_STATIC,
1315 ActiveBasic::PM::ImageReferenceType::File,
1316 0,
1317 1
1318 );
[3]1319 }
[629]1320 else if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_TRACKBAR){
[609]1321 //トラック バー作成
1322 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1323 RadInfo.DraggingRect[0].left-=87;
1324 RadInfo.DraggingRect[0].right=mouse.x+88;
1325 RadInfo.DraggingRect[0].top-=11;
1326 RadInfo.DraggingRect[0].bottom=mouse.y+12;
1327 }
1328 else{
1329 RadInfo.DraggingRect[0].right=mouse.x;
1330 RadInfo.DraggingRect[0].bottom=mouse.y;
1331 }
1332 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1333 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1334 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1335 size.cx=rect.right-rect.left;
1336 size.cy=rect.bottom-rect.top;
[629]1337 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1338 i,
1339 i2,
1340 -1,
1341 &pos,
1342 &size,
1343 "TrackBar",
1344 "",
1345 WS_CHILD|WS_VISIBLE|TBS_BOTH|TBS_NOTICKS,
1346 0,
1347 CT_TRACKBAR,
1348 ActiveBasic::PM::ImageReferenceType::File,
1349 0,
1350 1
1351 );
[3]1352 }
[629]1353 else if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_TREEVIEW){
[609]1354 //ツリー ビュー作成
1355 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1356 RadInfo.DraggingRect[0].left-=52;
1357 RadInfo.DraggingRect[0].right=mouse.x+53;
1358 RadInfo.DraggingRect[0].top-=37;
1359 RadInfo.DraggingRect[0].bottom=mouse.y+38;
1360 }
1361 else{
1362 RadInfo.DraggingRect[0].right=mouse.x;
1363 RadInfo.DraggingRect[0].bottom=mouse.y;
1364 }
1365 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1366 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1367 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1368 size.cx=rect.right-rect.left;
1369 size.cy=rect.bottom-rect.top;
[629]1370 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1371 i,
1372 i2,
1373 -1,
1374 &pos,
1375 &size,
1376 "TreeView",
1377 "",
1378 WS_CHILD|WS_VISIBLE,
1379 WS_EX_CLIENTEDGE,
1380 CT_TREEVIEW,
1381 ActiveBasic::PM::ImageReferenceType::File,
1382 0,
1383 1
1384 );
[3]1385 }
[629]1386 else if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_UPDOWN){
[609]1387 //アップ ダウン コントロール作成
1388 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1389 RadInfo.DraggingRect[0].left-=8;
1390 RadInfo.DraggingRect[0].right=mouse.x+8;
1391 RadInfo.DraggingRect[0].top-=10;
1392 RadInfo.DraggingRect[0].bottom=mouse.y+11;
1393 }
1394 else{
1395 RadInfo.DraggingRect[0].right=mouse.x;
1396 RadInfo.DraggingRect[0].bottom=mouse.y;
1397 }
1398 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1399 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1400 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1401 size.cx=rect.right-rect.left;
1402 size.cy=rect.bottom-rect.top;
[629]1403 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1404 i,
1405 i2,
1406 -1,
1407 &pos,
1408 &size,
1409 "UpDown",
1410 "",
1411 WS_CHILD|WS_VISIBLE,
1412 0,
1413 CT_UPDOWN,
1414 ActiveBasic::PM::ImageReferenceType::File,
1415 0,
1416 1
1417 );
[3]1418 }
[629]1419 else if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_VSCROLLBAR){
[609]1420 //垂直スクロールバー作成
1421 if(RadInfo.DraggingRect[0].left==mouse.x&&RadInfo.DraggingRect[0].top==mouse.y){
1422 RadInfo.DraggingRect[0].left-=9;
1423 RadInfo.DraggingRect[0].right=mouse.x+9;
1424 RadInfo.DraggingRect[0].top-=30;
1425 RadInfo.DraggingRect[0].bottom=mouse.y+30;
1426 }
1427 else{
1428 RadInfo.DraggingRect[0].right=mouse.x;
1429 RadInfo.DraggingRect[0].bottom=mouse.y;
1430 }
1431 RectNaturalFormat(&RadInfo.DraggingRect[0],&rect);
[629]1432 pos.x=rect.left-MdiInfo[i]->MdiRadInfo->ClientPos.x;
1433 pos.y=rect.top-MdiInfo[i]->MdiRadInfo->ClientPos.y;
[609]1434 size.cx=rect.right-rect.left;
1435 size.cy=rect.bottom-rect.top;
[629]1436 MdiInfo[i]->MdiRadInfo->SelectingItem[0] = InsertDlgItem(
[624]1437 i,
1438 i2,
1439 -1,
1440 &pos,
1441 &size,
1442 "VScrollBar",
1443 "",
1444 WS_CHILD|WS_VISIBLE|SBS_VERT,
1445 0,
1446 CT_VSCROLLBAR,
1447 ActiveBasic::PM::ImageReferenceType::File,
1448 0,
1449 1
1450 );
[3]1451 }
[629]1452 SendMessage(GetWindow(MdiInfo[i]->MdiRadInfo->hTools,GW_CHILD),WM_COMMAND,IDC_TOOL_MOUSE,0);
1453 SendMessage(GetWindow(GetWindow(MdiInfo[i]->MdiRadInfo->hTools,GW_CHILD),GW_CHILD),TB_CHECKBUTTON,IDC_TOOL_MOUSE,TRUE);
[609]1454 ChangePropertyWindow(i,i2);
1455
1456 //複数選択を解除
[629]1457 MdiInfo[i]->MdiRadInfo->SelectingItem[1]=-1;
[3]1458 }
1459
[609]1460 RadInfo.NowDragging=0;
1461
1462 ResetState_EditMenu();
1463 return 0;
[3]1464 }
1465 case WM_MOUSEMOVE:
[612]1466 {
[772]1467 mouse.x=GET_X_LPARAM(lParam);
1468 mouse.y=GET_Y_LPARAM(lParam);
[612]1469 CursorPos_LocalToGlobal(hwnd,&mouse.x,&mouse.y);
[3]1470
[612]1471 hParent=GetParent(hwnd);
1472 i=GetWndNum(hParent);
[629]1473 i2 = GetWndInfoNum(MdiInfo[i]->path);
1474 ActiveBasic::PM::WindowInfo *pWindowInfo = GetWndInfo(MdiInfo[i]->path);
[3]1475
[629]1476 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_MOUSE){
[612]1477 if(wParam&MK_LBUTTON&&RadInfo.NowDragging){
1478 ////////////////////////////////////////////////
1479 // ドラッグ中の場合(コントロールのサイズ変更)
[3]1480
[612]1481 if(RadInfo.NowDragging==FRAME_UPPER_LEFT){
1482 if(RadInfo.DraggingRect[0].right-MIN_ITEM_X<=(mouse.x+LEVER_THICK))
1483 RadInfo.DraggingRect[0].left=RadInfo.DraggingRect[0].right-MIN_ITEM_X;
[629]1484 else if(mouse.x+LEVER_THICK<MdiInfo[i]->MdiRadInfo->ClientPos.x)
1485 RadInfo.DraggingRect[0].left=MdiInfo[i]->MdiRadInfo->ClientPos.x;
[612]1486 else RadInfo.DraggingRect[0].left=mouse.x+LEVER_THICK;
[3]1487
[612]1488 if(RadInfo.DraggingRect[0].bottom-MIN_ITEM_Y<=(mouse.y+LEVER_THICK))
1489 RadInfo.DraggingRect[0].top=RadInfo.DraggingRect[0].bottom-MIN_ITEM_Y;
[629]1490 else if(mouse.y+LEVER_THICK<MdiInfo[i]->MdiRadInfo->ClientPos.y)
1491 RadInfo.DraggingRect[0].top=MdiInfo[i]->MdiRadInfo->ClientPos.y;
[612]1492 else RadInfo.DraggingRect[0].top=mouse.y+LEVER_THICK;
1493 DrawFrame(hwnd,i,i2,&RadInfo.DraggingRect[0],&RadInfo.OldDraggingRect[0],0);
1494 }
1495 else if(RadInfo.NowDragging==FRAME_UPPER_RIGHT){
1496 if(mouse.x-LEVER_THICK-MIN_ITEM_X<=RadInfo.DraggingRect[0].left)
1497 RadInfo.DraggingRect[0].right=RadInfo.DraggingRect[0].left+MIN_ITEM_X;
[629]1498 else if(mouse.x>MdiInfo[i]->MdiRadInfo->ClientPos.x+MdiInfo[i]->MdiRadInfo->ClientSize.cx)
1499 RadInfo.DraggingRect[0].right=MdiInfo[i]->MdiRadInfo->ClientPos.x+MdiInfo[i]->MdiRadInfo->ClientSize.cx;
[612]1500 else RadInfo.DraggingRect[0].right=mouse.x-LEVER_THICK;
[3]1501
[612]1502 if(RadInfo.DraggingRect[0].bottom-MIN_ITEM_Y<=(mouse.y+LEVER_THICK)) RadInfo.DraggingRect[0].top=RadInfo.DraggingRect[0].bottom-MIN_ITEM_Y;
[629]1503 else if(mouse.y+LEVER_THICK<MdiInfo[i]->MdiRadInfo->ClientPos.y)
1504 RadInfo.DraggingRect[0].top=MdiInfo[i]->MdiRadInfo->ClientPos.y;
[612]1505 else RadInfo.DraggingRect[0].top=mouse.y+LEVER_THICK;
1506 DrawFrame(hwnd,i,i2,&RadInfo.DraggingRect[0],&RadInfo.OldDraggingRect[0],0);
1507 }
1508 else if(RadInfo.NowDragging==FRAME_LOWER_LEFT){
1509 if(RadInfo.DraggingRect[0].right-MIN_ITEM_X<=(mouse.x+LEVER_THICK))
1510 RadInfo.DraggingRect[0].left=RadInfo.DraggingRect[0].right-MIN_ITEM_X;
[629]1511 else if(mouse.x+LEVER_THICK<MdiInfo[i]->MdiRadInfo->ClientPos.x)
1512 RadInfo.DraggingRect[0].left=MdiInfo[i]->MdiRadInfo->ClientPos.x;
[612]1513 else RadInfo.DraggingRect[0].left=mouse.x+LEVER_THICK;
[3]1514
[612]1515 if(mouse.y-LEVER_THICK-MIN_ITEM_Y<=RadInfo.DraggingRect[0].top)
1516 RadInfo.DraggingRect[0].bottom=RadInfo.DraggingRect[0].top+MIN_ITEM_Y;
[629]1517 else if(mouse.y>MdiInfo[i]->MdiRadInfo->ClientPos.y+MdiInfo[i]->MdiRadInfo->ClientSize.cy)
1518 RadInfo.DraggingRect[0].bottom=MdiInfo[i]->MdiRadInfo->ClientPos.y+MdiInfo[i]->MdiRadInfo->ClientSize.cy;
[612]1519 else RadInfo.DraggingRect[0].bottom=mouse.y-LEVER_THICK;
1520 DrawFrame(hwnd,i,i2,&RadInfo.DraggingRect[0],&RadInfo.OldDraggingRect[0],0);
1521 }
1522 else if(RadInfo.NowDragging==FRAME_LOWER_RIGHT){
1523 if(mouse.x-LEVER_THICK-MIN_ITEM_X<=RadInfo.DraggingRect[0].left)
1524 RadInfo.DraggingRect[0].right=RadInfo.DraggingRect[0].left+MIN_ITEM_X;
[629]1525 else if((mouse.x>MdiInfo[i]->MdiRadInfo->ClientPos.x+MdiInfo[i]->MdiRadInfo->ClientSize.cx)&&MdiInfo[i]->MdiRadInfo->SelectingItem[0]!=SELECT_WINDOW)
1526 RadInfo.DraggingRect[0].right=MdiInfo[i]->MdiRadInfo->ClientPos.x+MdiInfo[i]->MdiRadInfo->ClientSize.cx;
[612]1527 else RadInfo.DraggingRect[0].right=mouse.x-LEVER_THICK;
[3]1528
[612]1529 if(mouse.y-LEVER_THICK-MIN_ITEM_Y<=RadInfo.DraggingRect[0].top)
1530 RadInfo.DraggingRect[0].bottom=RadInfo.DraggingRect[0].top+MIN_ITEM_Y;
[629]1531 else if((mouse.y>MdiInfo[i]->MdiRadInfo->ClientPos.y+MdiInfo[i]->MdiRadInfo->ClientSize.cy)&&MdiInfo[i]->MdiRadInfo->SelectingItem[0]!=SELECT_WINDOW)
1532 RadInfo.DraggingRect[0].bottom=MdiInfo[i]->MdiRadInfo->ClientPos.y+MdiInfo[i]->MdiRadInfo->ClientSize.cy;
[612]1533 else RadInfo.DraggingRect[0].bottom=mouse.y-LEVER_THICK;
1534 DrawFrame(hwnd,i,i2,&RadInfo.DraggingRect[0],&RadInfo.OldDraggingRect[0],0);
1535 }
1536 else if(RadInfo.NowDragging==FRAME_LEFT){
1537 if(RadInfo.DraggingRect[0].right-MIN_ITEM_X<=(mouse.x+LEVER_THICK))
1538 RadInfo.DraggingRect[0].left=RadInfo.DraggingRect[0].right-MIN_ITEM_X;
[629]1539 else if(mouse.x+LEVER_THICK<MdiInfo[i]->MdiRadInfo->ClientPos.x)
1540 RadInfo.DraggingRect[0].left=MdiInfo[i]->MdiRadInfo->ClientPos.x;
[612]1541 else RadInfo.DraggingRect[0].left=mouse.x+LEVER_THICK;
1542 DrawFrame(hwnd,i,i2,&RadInfo.DraggingRect[0],&RadInfo.OldDraggingRect[0],0);
1543 }
1544 else if(RadInfo.NowDragging==FRAME_RIGHT){
1545 if(mouse.x-LEVER_THICK-MIN_ITEM_X<=RadInfo.DraggingRect[0].left)
1546 RadInfo.DraggingRect[0].right=RadInfo.DraggingRect[0].left+MIN_ITEM_X;
[629]1547 else if((mouse.x>MdiInfo[i]->MdiRadInfo->ClientPos.x+MdiInfo[i]->MdiRadInfo->ClientSize.cx)&&MdiInfo[i]->MdiRadInfo->SelectingItem[0]!=SELECT_WINDOW)
1548 RadInfo.DraggingRect[0].right=MdiInfo[i]->MdiRadInfo->ClientPos.x+MdiInfo[i]->MdiRadInfo->ClientSize.cx;
[612]1549 else RadInfo.DraggingRect[0].right=mouse.x-LEVER_THICK;
1550 DrawFrame(hwnd,i,i2,&RadInfo.DraggingRect[0],&RadInfo.OldDraggingRect[0],0);
1551 }
1552 else if(RadInfo.NowDragging==FRAME_UPPER){
1553 if(RadInfo.DraggingRect[0].bottom-MIN_ITEM_Y<=(mouse.y+LEVER_THICK))
1554 RadInfo.DraggingRect[0].top=RadInfo.DraggingRect[0].bottom-MIN_ITEM_Y;
[629]1555 else if(mouse.y+LEVER_THICK<MdiInfo[i]->MdiRadInfo->ClientPos.y)
1556 RadInfo.DraggingRect[0].top=MdiInfo[i]->MdiRadInfo->ClientPos.y;
[612]1557 else RadInfo.DraggingRect[0].top=mouse.y+LEVER_THICK;
1558 DrawFrame(hwnd,i,i2,&RadInfo.DraggingRect[0],&RadInfo.OldDraggingRect[0],0);
1559 }
1560 else if(RadInfo.NowDragging==FRAME_LOWER){
1561 if(mouse.y-LEVER_THICK-MIN_ITEM_Y<=RadInfo.DraggingRect[0].top)
1562 RadInfo.DraggingRect[0].bottom=RadInfo.DraggingRect[0].top+MIN_ITEM_Y;
[629]1563 else if((mouse.y>MdiInfo[i]->MdiRadInfo->ClientPos.y+MdiInfo[i]->MdiRadInfo->ClientSize.cy)&&MdiInfo[i]->MdiRadInfo->SelectingItem[0]!=SELECT_WINDOW)
1564 RadInfo.DraggingRect[0].bottom=MdiInfo[i]->MdiRadInfo->ClientPos.y+MdiInfo[i]->MdiRadInfo->ClientSize.cy;
[612]1565 else RadInfo.DraggingRect[0].bottom=mouse.y-LEVER_THICK;
1566 DrawFrame(hwnd,i,i2,&RadInfo.DraggingRect[0],&RadInfo.OldDraggingRect[0],0);
1567 }
1568 else if(RadInfo.NowDragging==FRAME_INSIDE){
1569 i3=0;
[629]1570 while(MdiInfo[i]->MdiRadInfo->SelectingItem[i3]!=-1){
[612]1571 i4=RadInfo.DragStartRect[i3].left+mouse.x-RadInfo.DragStartPos.x;
[3]1572
[629]1573 if(i4>MdiInfo[i]->MdiRadInfo->ClientPos.x){
[612]1574 i4=RadInfo.DragStartRect[i3].right+mouse.x-RadInfo.DragStartPos.x;
[629]1575 if(i4<MdiInfo[i]->MdiRadInfo->ClientPos.x+MdiInfo[i]->MdiRadInfo->ClientSize.cx) i4=0;
1576 else i4-=MdiInfo[i]->MdiRadInfo->ClientPos.x+MdiInfo[i]->MdiRadInfo->ClientSize.cx;
[612]1577 }
[629]1578 else i4-=MdiInfo[i]->MdiRadInfo->ClientPos.x;
[612]1579 //i4は枠外に出たときのポインタと壁にあたったコントロールとの差
1580 RadInfo.DraggingRect[i3].left=RadInfo.DragStartRect[i3].left+mouse.x-RadInfo.DragStartPos.x-i4;
1581 RadInfo.DraggingRect[i3].right=RadInfo.DragStartRect[i3].right+mouse.x-RadInfo.DragStartPos.x-i4;
[3]1582
[612]1583 i4=RadInfo.DragStartRect[i3].top+mouse.y-RadInfo.DragStartPos.y;
[629]1584 if(i4>MdiInfo[i]->MdiRadInfo->ClientPos.y){
[612]1585 i4=RadInfo.DragStartRect[i3].bottom+mouse.y-RadInfo.DragStartPos.y;
[629]1586 if(i4<MdiInfo[i]->MdiRadInfo->ClientPos.y+MdiInfo[i]->MdiRadInfo->ClientSize.cy) i4=0;
1587 else i4-=MdiInfo[i]->MdiRadInfo->ClientPos.y+MdiInfo[i]->MdiRadInfo->ClientSize.cy;
[612]1588 }
[629]1589 else i4-=MdiInfo[i]->MdiRadInfo->ClientPos.y;
[612]1590 RadInfo.DraggingRect[i3].top=RadInfo.DragStartRect[i3].top+mouse.y-RadInfo.DragStartPos.y-i4;
1591 RadInfo.DraggingRect[i3].bottom=RadInfo.DragStartRect[i3].bottom+mouse.y-RadInfo.DragStartPos.y-i4;
1592
[629]1593 if(MdiInfo[i]->MdiRadInfo->SelectingItem[1]==-1) i4=1;
[612]1594 else i4=0;
1595 DrawFrame(hwnd,i,i2,&RadInfo.DraggingRect[i3],&RadInfo.OldDraggingRect[i3],i4);
1596 i3++;
[3]1597 }
[612]1598 }
1599 else if(RadInfo.NowDragging==SELECTING_FRAME){
1600 RadInfo.DraggingRect[0].left=RadInfo.DragStartPos.x;
1601 RadInfo.DraggingRect[0].top=RadInfo.DragStartPos.y;
1602 RadInfo.DraggingRect[0].right=mouse.x;
1603 RadInfo.DraggingRect[0].bottom=mouse.y;
1604 DrawFrame(hwnd,i,i2,&RadInfo.DraggingRect[0],&RadInfo.OldDraggingRect[0],0);
1605 }
1606 SetCursorByState(RadInfo.NowDragging);
[3]1607
[612]1608 SetStatusText(NULL);
1609
1610 //サポートダイアログの内容をセット
1611 SetSupportDlgData( i, *pWindowInfo );
[3]1612 }
[612]1613 else{
1614 //ドラッグ中でないとき
1615 SetCursorByState(GetStateOfDraggingFrame(i,i2,mouse.x,mouse.y));
1616 }
1617 }
1618 else{
1619 //アイテム(子ウィンドウ作成中)
1620 if(wParam&MK_LBUTTON&&RadInfo.NowDragging==ITEM_MAKING){
1621 //ドラッグ中の場合
1622
[3]1623 RadInfo.DraggingRect[0].right=mouse.x;
1624 RadInfo.DraggingRect[0].bottom=mouse.y;
1625 DrawFrame(hwnd,i,i2,&RadInfo.DraggingRect[0],&RadInfo.OldDraggingRect[0],0);
1626 }
1627 }
[612]1628 return 0;
[3]1629 }
1630 case WM_LBUTTONDBLCLK:
[609]1631 {
[772]1632 mouse.x=GET_X_LPARAM(lParam);
1633 mouse.y=GET_Y_LPARAM(lParam);
[609]1634 CursorPos_LocalToGlobal(hwnd,&mouse.x,&mouse.y);
[3]1635
[609]1636 hParent=GetParent(hwnd);
1637 i=GetWndNum(hParent);
[629]1638 i2=GetWndInfoNum(MdiInfo[i]->path);
1639 ActiveBasic::PM::WindowInfo *pWindowInfo = GetWndInfo(MdiInfo[i]->path);
1640 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_MOUSE){
1641 if(MdiInfo[i]->MdiRadInfo->SelectingItem[0]!=SELECT_WINDOW){
[609]1642 temp2[0]=0;
[629]1643 if(pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->Control==CT_BUTTON||
1644 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->Control==CT_CHECKBOX||
1645 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->Control==CT_IMAGEBOX||
1646 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->Control==CT_RADIOBUTTON||
1647 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->Control==CT_STATIC)
[617]1648 {
1649 sprintf(temporary,"%s_%s_Click",
1650 pWindowInfo->GetName().c_str(),
[629]1651 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->GetName().c_str()
[617]1652 );
[609]1653 }
[629]1654 else if(pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->Control==CT_COMBOBOX)
[617]1655 {
1656 sprintf(temporary,"%s_%s_EditChange",
1657 pWindowInfo->GetName().c_str(),
[629]1658 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->GetName().c_str());
[617]1659 }
[629]1660 else if(pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->Control==CT_EDIT)
[617]1661 {
1662 sprintf(temporary,"%s_%s_Change",
1663 pWindowInfo->GetName().c_str(),
[629]1664 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->GetName().c_str());
[617]1665 }
[629]1666 else if(pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->Control==CT_LISTBOX)
[617]1667 {
1668 sprintf(temporary,"%s_%s_SelChange",
1669 pWindowInfo->GetName().c_str(),
[629]1670 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->GetName().c_str());
[617]1671 }
[609]1672 else temporary[0]=0;
1673 if(temporary[0]) SelectProcedureOfMessageCall(i2,temporary,temp2);
[3]1674 }
1675 }
[609]1676 return 0;
[3]1677 }
1678 case WM_KEYDOWN:
[609]1679 {
1680 hParent=GetParent(hwnd);
1681 i=GetWndNum(hParent);
[629]1682 ActiveBasic::PM::WindowInfo *pWindowInfo = GetWndInfo(MdiInfo[i]->path);
1683 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_MOUSE){
1684 if(MdiInfo[i]->MdiRadInfo->SelectingItem[0]==SELECT_WINDOW){
[609]1685 PointAndSize.pos=pWindowInfo->pos;
1686 PointAndSize.size=pWindowInfo->size;
1687 if(GetKeyState(VK_SHIFT)&0x8000){
1688 if(wParam==VK_RIGHT||wParam==VK_LEFT||wParam==VK_DOWN||wParam==VK_UP)
[629]1689 Rad_NoticeChanging(i,RAD_UNDO_POSITION,MdiInfo[i]->MdiRadInfo->SelectingItem[0],(DWORD)&PointAndSize);
[3]1690
[609]1691 if(wParam==VK_RIGHT)
1692 pWindowInfo->size.cx++;
1693 else if(wParam==VK_LEFT)
1694 pWindowInfo->size.cx--;
1695 else if(wParam==VK_DOWN)
1696 pWindowInfo->size.cy++;
1697 else if(wParam==VK_UP)
1698 pWindowInfo->size.cy--;
[3]1699
[609]1700 if(wParam==VK_RIGHT||wParam==VK_LEFT||wParam==VK_DOWN||wParam==VK_UP){
1701 DrawRadWindow(i,pWindowInfo);
[3]1702
[609]1703 SetStatusText(NULL);
[3]1704
[609]1705 //サポートダイアログの内容をセット
[612]1706 SetSupportDlgData( i, *pWindowInfo );
[609]1707 }
[3]1708 }
1709 }
[609]1710 else{
[629]1711 PointAndSize.pos=pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->pos;
1712 PointAndSize.size=pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->size;
[609]1713 if(wParam==VK_RIGHT){
1714 if(GetKeyState(VK_SHIFT)&0x8000){
[629]1715 Rad_NoticeChanging(i,RAD_UNDO_POSITION,MdiInfo[i]->MdiRadInfo->SelectingItem[0],(DWORD)&PointAndSize);
1716 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->size.cx++;
[609]1717 }
1718 else{
1719 for(i3=0;;i3++){
[629]1720 if(MdiInfo[i]->MdiRadInfo->SelectingItem[i3]==-1) break;
1721 PointAndSize.pos=pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos;
1722 PointAndSize.size=pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->size;
1723 Rad_NoticeChanging(i,RAD_UNDO_POSITION,MdiInfo[i]->MdiRadInfo->SelectingItem[i3],(DWORD)&PointAndSize);
[3]1724
[629]1725 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos.x++;
[609]1726 }
[3]1727 }
[609]1728 DrawRadWindow(i,pWindowInfo);
1729 SetStatusText(NULL);
[3]1730
[609]1731 //サポートダイアログの内容をセット
[612]1732 SetSupportDlgData( i, *pWindowInfo );
[3]1733 }
[609]1734 else if(wParam==VK_LEFT){
1735 if(GetKeyState(VK_SHIFT)&0x8000){
[629]1736 Rad_NoticeChanging(i,RAD_UNDO_POSITION,MdiInfo[i]->MdiRadInfo->SelectingItem[0],(DWORD)&PointAndSize);
1737 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->size.cx--;
[609]1738 }
1739 else{
1740 for(i3=0;;i3++){
[629]1741 if(MdiInfo[i]->MdiRadInfo->SelectingItem[i3]==-1) break;
1742 PointAndSize.pos=pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos;
1743 PointAndSize.size=pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->size;
1744 Rad_NoticeChanging(i,RAD_UNDO_POSITION,MdiInfo[i]->MdiRadInfo->SelectingItem[i3],(DWORD)&PointAndSize);
[3]1745
[629]1746 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos.x--;
[609]1747 }
[3]1748 }
[609]1749 DrawRadWindow(i,pWindowInfo);
1750 SetStatusText(NULL);
[3]1751
[609]1752 //サポートダイアログの内容をセット
[612]1753 SetSupportDlgData( i, *pWindowInfo );
[3]1754 }
[609]1755 else if(wParam==VK_UP){
1756 if(GetKeyState(VK_SHIFT)&0x8000){
[629]1757 Rad_NoticeChanging(i,RAD_UNDO_POSITION,MdiInfo[i]->MdiRadInfo->SelectingItem[0],(DWORD)&PointAndSize);
1758 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->size.cy--;
[609]1759 }
1760 else{
1761 for(i3=0;;i3++){
[629]1762 if(MdiInfo[i]->MdiRadInfo->SelectingItem[i3]==-1) break;
1763 PointAndSize.pos=pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos;
1764 PointAndSize.size=pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->size;
1765 Rad_NoticeChanging(i,RAD_UNDO_POSITION,MdiInfo[i]->MdiRadInfo->SelectingItem[i3],(DWORD)&PointAndSize);
[3]1766
[629]1767 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos.y--;
[609]1768 }
[3]1769 }
[609]1770 DrawRadWindow(i,pWindowInfo);
1771 SetStatusText(NULL);
[3]1772
[609]1773 //サポートダイアログの内容をセット
[612]1774 SetSupportDlgData( i, *pWindowInfo );
[3]1775 }
[609]1776 else if(wParam==VK_DOWN){
1777 if(GetKeyState(VK_SHIFT)&0x8000){
[629]1778 Rad_NoticeChanging(i,RAD_UNDO_POSITION,MdiInfo[i]->MdiRadInfo->SelectingItem[0],(DWORD)&PointAndSize);
1779 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[0]]->size.cy++;
[609]1780 }
1781 else{
1782 for(i3=0;;i3++){
[629]1783 if(MdiInfo[i]->MdiRadInfo->SelectingItem[i3]==-1) break;
1784 PointAndSize.pos=pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos;
1785 PointAndSize.size=pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->size;
1786 Rad_NoticeChanging(i,RAD_UNDO_POSITION,MdiInfo[i]->MdiRadInfo->SelectingItem[i3],(DWORD)&PointAndSize);
[3]1787
[629]1788 pWindowInfo->childWindowInfos[MdiInfo[i]->MdiRadInfo->SelectingItem[i3]]->pos.y++;
[609]1789 }
[3]1790 }
[609]1791 DrawRadWindow(i,pWindowInfo);
1792 SetStatusText(NULL);
1793
1794 //サポートダイアログの内容をセット
[612]1795 SetSupportDlgData( i, *pWindowInfo );
[3]1796 }
[609]1797 else if(wParam==VK_DELETE)
1798 SendMessage(hwnd,WM_COMMAND,IDM_RAD_ITEM_DELETE,0);
[3]1799 }
1800 }
[609]1801 return 0;
[3]1802 }
1803 case WM_SETFOCUS:
1804 i=GetWndNum(GetParent(hwnd));
[629]1805 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==NON_TOOL)
1806 MdiInfo[i]->MdiRadInfo->ButtonSelect=IDC_TOOL_MOUSE;
[3]1807 InvalidateRect(hwnd,NULL,0);
1808 return 0;
1809 case WM_KILLFOCUS:
1810 i=GetWndNum(GetParent(hwnd));
1811 if(i==-1) return 0; //ウィンドウが破棄された場合
[629]1812 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_MOUSE)
1813 MdiInfo[i]->MdiRadInfo->ButtonSelect=NON_TOOL;
[3]1814 InvalidateRect(hwnd,NULL,0);
1815 return 0;
1816 case WM_PAINT:
[772]1817 {
1818 WTL::CPaintDC dc(hwnd);
1819 SendMessage(hwnd, WM_PRINTCLIENT, reinterpret_cast<WPARAM>(dc.m_hDC), 0);
1820 return 0;
1821 }
1822 case WM_PRINTCLIENT:
[3]1823 i=GetWndNum(GetParent(hwnd));
[772]1824 if(i==-1) break; //ウィンドウが初期状態の場合
[629]1825 i2=GetWndInfoNum(MdiInfo[i]->path);
[3]1826
1827 ScrollInfo.cbSize=sizeof(SCROLLINFO);
1828 ScrollInfo.fMask=SIF_RANGE|SIF_POS;
1829 GetScrollInfo(hwnd,SB_VERT,&ScrollInfo);
1830 si2.cbSize=sizeof(SCROLLINFO);
1831 si2.fMask=SIF_RANGE|SIF_POS;
1832 GetScrollInfo(hwnd,SB_HORZ,&si2);
1833
[772]1834 hdc=reinterpret_cast<HDC>(wParam);
[3]1835 BitBlt(hdc,0,0,ScreenX*2,ScreenY*2,
[629]1836 MdiInfo[i]->MdiRadInfo->hMemDC,si2.nPos,ScrollInfo.nPos,SRCCOPY);
[3]1837
[629]1838 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_MOUSE||MdiInfo[i]->MdiRadInfo->ButtonSelect==NON_TOOL)
1839 DrawSelectingRect(hwnd,i,i2,MdiInfo[i]->MdiRadInfo->ButtonSelect);
[3]1840 return 0;
1841 case WM_CONTEXTMENU:
1842 if(RadInfo.NowDragging) return 0;
1843
1844 hParent=GetParent(hwnd);
1845 BringWindowToTop(hParent);
1846 SetFocus(hwnd);
1847 i=GetWndNum(hParent);
[629]1848 i2=GetWndInfoNum(MdiInfo[i]->path);
[3]1849
[629]1850 if(MdiInfo[i]->MdiRadInfo->ButtonSelect==IDC_TOOL_MOUSE){
[772]1851 mouse.x=GET_X_LPARAM(lParam);
1852 mouse.y=GET_Y_LPARAM(lParam);
[3]1853 ScreenToClient(hwnd,&mouse);
1854 CursorPos_LocalToGlobal(hwnd,&mouse.x,&mouse.y);
1855 SelectItemNumOnMouse(i,i2,mouse.x,mouse.y);
1856 InvalidateRect(hwnd,NULL,0);
1857 extern HMENU hRadMenuBase;
[629]1858 if(MdiInfo[i]->MdiRadInfo->SelectingItem[0]==SELECT_WINDOW)
[772]1859 TrackPopupMenu(GetSubMenu(hRadMenuBase,0),TPM_LEFTALIGN,GET_X_LPARAM(lParam),GET_Y_LPARAM(lParam),0,hwnd,0);
1860 else TrackPopupMenu(GetSubMenu(hRadMenuBase,1),TPM_LEFTALIGN,GET_X_LPARAM(lParam),GET_Y_LPARAM(lParam),0,hwnd,0);
[3]1861 }
1862 return 0;
1863 case WM_COMMAND:
1864 switch(LOWORD(wParam)){
1865 case IDM_RAD_WINDOW_EVENTCODE:
1866 i=GetWndNum(GetParent(hwnd));
[828]1867 ActiveBasic::Resource::DialogBoxAlt(hResInst, IDD_RAD_EVENTCODE, hwnd, DlgEventCode, 0);
[3]1868 break;
1869 case IDM_RAD_WINDOW_MENUEVENTCODE:
1870 i=GetWndNum(GetParent(hwnd));
[828]1871 ActiveBasic::Resource::DialogBoxAlt(hResInst, IDD_RAD_EVENTCODE, hwnd, DlgEventCode, 1);
[3]1872 break;
1873 case IDM_RAD_ITEM_DELETE:
1874 hParent=GetParent(hwnd);
1875 i=GetWndNum(hParent);
[629]1876 i2=GetWndInfoNum(MdiInfo[i]->path);
[3]1877
1878 //削除順序を考慮しなければならないので、バブルソートを行う
1879 int i5,i6;
1880 for(i5=0;;i5++){
[629]1881 if(MdiInfo[i]->MdiRadInfo->SelectingItem[i5]==-1) break;
[3]1882 }
1883 for(i3=0;i3<i5-1;i3++){
1884 for(i4=i5-1;i4>i3;i4--){
[629]1885 if(MdiInfo[i]->MdiRadInfo->SelectingItem[i4] >
1886 MdiInfo[i]->MdiRadInfo->SelectingItem[i4-1]){
1887 i6=MdiInfo[i]->MdiRadInfo->SelectingItem[i4];
1888 MdiInfo[i]->MdiRadInfo->SelectingItem[i4]=
1889 MdiInfo[i]->MdiRadInfo->SelectingItem[i4-1];
1890 MdiInfo[i]->MdiRadInfo->SelectingItem[i4-1]=i6;
[3]1891 }
1892 }
1893 }
1894
1895
1896 for(i3=0;;i3++){
[629]1897 if(MdiInfo[i]->MdiRadInfo->SelectingItem[i3]==-1) break;
1898 DeleteDlgItem(i,i2,MdiInfo[i]->MdiRadInfo->SelectingItem[i3],1);
[3]1899 }
[629]1900 for(i3=0;i3<MAX_RAD_SELITEM;i3++) MdiInfo[i]->MdiRadInfo->SelectingItem[i3]=-1;
[3]1901
1902 ResetState_EditMenu();
1903 break;
1904 }
1905 return 0;
1906 case WM_VSCROLL:
1907 ScrollInfo.cbSize=sizeof(SCROLLINFO);
1908 ScrollInfo.fMask=SIF_POS|SIF_PAGE|SIF_RANGE;
1909 GetScrollInfo(hwnd,SB_VERT,&ScrollInfo);
1910 if(LOWORD(wParam)==SB_LINEUP) i=-20;
1911 else if(LOWORD(wParam)==SB_LINEDOWN) i=20;
1912 else if(LOWORD(wParam)==SB_PAGEUP) i=-(signed int)ScrollInfo.nPage;
1913 else if(LOWORD(wParam)==SB_PAGEDOWN) i=ScrollInfo.nPage;
1914 else if(LOWORD(wParam)==SB_THUMBTRACK) i=HIWORD(wParam)-ScrollInfo.nPos;
1915 else i=0;
1916 GetClientRect(hwnd,&rect);
1917 i=max(-ScrollInfo.nPos,min(i,ScrollInfo.nMax-rect.bottom-ScrollInfo.nPos));
1918 if(i!=0){
1919 ScrollInfo.nPos+=i;
1920 SetScrollInfo(hwnd,SB_VERT,&ScrollInfo,1);
1921 ScrollWindow(hwnd,0,-i,NULL,NULL);
1922 UpdateWindow(hwnd);
1923 }
1924 return 0;
1925 case WM_HSCROLL:
1926 ScrollInfo.cbSize=sizeof(SCROLLINFO);
1927 ScrollInfo.fMask=SIF_POS|SIF_PAGE|SIF_RANGE;
1928 GetScrollInfo(hwnd,SB_HORZ,&ScrollInfo);
1929 if(LOWORD(wParam)==SB_LINEUP) i=-20;
1930 else if(LOWORD(wParam)==SB_LINEDOWN) i=20;
1931 else if(LOWORD(wParam)==SB_PAGEUP) i=-(signed int)ScrollInfo.nPage;
1932 else if(LOWORD(wParam)==SB_PAGEDOWN) i=ScrollInfo.nPage;
1933 else if(LOWORD(wParam)==SB_THUMBTRACK) i=HIWORD(wParam)-ScrollInfo.nPos;
1934 else i=0;
1935 GetClientRect(hwnd,&rect);
1936 i=max(-ScrollInfo.nPos,min(i,ScrollInfo.nMax-rect.right-ScrollInfo.nPos));
1937 if(i!=0){
1938 ScrollInfo.nPos+=i;
1939 SetScrollInfo(hwnd,SB_HORZ,&ScrollInfo,1);
1940 ScrollWindow(hwnd,-i,0,NULL,NULL);
1941 UpdateWindow(hwnd);
1942 }
1943 return 0;
1944 case WM_SIZE:
1945 i=GetWndNum(GetParent(hwnd));
1946 if(i==-1) break; //ウィンドウが初期状態の場合
1947 ResetScrollbarOfRadEditor(i,LOWORD(lParam),HIWORD(lParam));
1948 return 0;
1949 }
1950 return DefWindowProc(hwnd,message,wParam,lParam);
1951}
1952void ResizeToRadToolWindows(int WndNum,int weight,int height){
1953 int i,i2;
1954 RECT rect;
1955
1956 if(height<200){
1957 i=100;
1958 i2=100;
1959 }
1960 else{
1961 //ツールボタンウィンドウ(長さ、i)
[629]1962 GetClientRect(GetWindow(MdiInfo[WndNum]->MdiRadInfo->hTools,GW_CHILD),&rect);
[3]1963 if(height>rect.bottom+1) i=rect.bottom+1;
1964 else i=height;
1965
1966 //プロパティウィンドウ(長さ、i2)
[629]1967 GetClientRect(GetWindow(MdiInfo[WndNum]->MdiRadInfo->hProperty,GW_CHILD),&rect);
[3]1968 i2=height-i;
1969
1970 if(i2<100){
1971 i=height-100;
1972 i2=100;
1973 }
1974 }
[629]1975 MoveWindow(MdiInfo[WndNum]->MdiRadInfo->hTools,weight-172,0,172,i,1);
1976 MoveWindow(MdiInfo[WndNum]->MdiRadInfo->hProperty,weight-172,i,172,i2,1);
[3]1977
[629]1978 GetWindowRect(MdiInfo[WndNum]->MdiRadInfo->hSupport,&rect);
[3]1979 rect.right-=rect.left;
1980 rect.bottom-=rect.top;
1981
1982 //RADウィンドウ
[629]1983 MoveWindow(MdiInfo[WndNum]->MdiRadInfo->hRad,0,0,weight-172,height-rect.bottom,1);
[3]1984
1985 //サポートウィンドウ
[629]1986 MoveWindow(MdiInfo[WndNum]->MdiRadInfo->hSupport,0,height-rect.bottom,weight-172,rect.bottom,1);
[3]1987}
1988LRESULT CALLBACK MDIClientWindow_Rad(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1989 extern HWND hDocCombo;
1990 int i,WndNum;
1991
1992 switch(message){
1993 case WM_CREATE:
1994 extern HICON hWindowDocumentIcon;
[772]1995 SendMessage(hwnd,WM_SETICON,ICON_SMALL,(LPARAM)hWindowDocumentIcon);
[3]1996 break;
1997 case WM_MDIACTIVATE:
1998 if(!lParam) return 0;
1999 i=GetWndNum((HWND)lParam);
2000 if(i==-1) return 0; //ウィンドウが初期状態の場合
2001
[772]2002 i=SendMessage(hDocCombo,CB_FINDSTRINGEXACT,0,(LPARAM)MdiInfo[i]->title.c_str());
[3]2003 SendMessage(hDocCombo,CB_SETCURSEL,i,0);
2004 SetStatusText(NULL);
2005 ResetState_EditMenu();
2006 return 0;
2007 case WM_SIZE:
2008 WndNum=GetWndNum(hwnd);
2009 if(WndNum==-1) break;
2010 ResizeToRadToolWindows(WndNum,LOWORD(lParam),HIWORD(lParam));
2011 break;
2012 case WM_CLOSE:
2013 CloseDocWindow(GetWndNum(hwnd));
2014 pobj_nv->bMDIZoomed=IsZoomed(hwnd);
2015 i=DefMDIChildProc(hwnd,message,wParam,lParam);
2016
2017 //メニュー状態を設定
2018 ResetState_DocMenu();
2019
2020 return i;
2021 }
2022 return DefMDIChildProc(hwnd,message,wParam,lParam);
2023}
Note: See TracBrowser for help on using the repository browser.