source: dev/trunk/ab5.0/abdev/ProjectEditor/RadSupport.cpp@ 475

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

構成管理を変更中・・・(いったんコミット)

File size: 11.9 KB
Line 
1#include "stdafx.h"
2
3#include "common.h"
4
5#if defined(JPN)
6//日本語
7#include "rad_msg_jpn.h"
8#else
9//英語
10#include "rad_msg_eng.h"
11#endif
12
13int bSupportDlg_NoChange;
14
15LRESULT CALLBACK TestWindowProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
16 switch(message){
17 case WM_CREATE:
18 SetPosCenter(hwnd);
19 break;
20 case WM_KEYDOWN:
21 if(wParam==VK_ESCAPE) DestroyWindow(hwnd);
22 break;
23 case WM_PAINT:
24 break;
25 case WM_CLOSE:
26 DestroyWindow(hwnd);
27 break;
28 case WM_DESTROY:
29 PostQuitMessage(0);
30 break;
31 }
32 return DefWindowProc(hwnd,message,wParam,lParam);
33}
34
35void ShowTestWindow(int WndInfoNum){
36 extern HINSTANCE hInst;
37 extern HANDLE hHeap;
38 extern PROJECTINFO ProjectInfo;
39 static HWND hWnd;
40 WINDOW_INFO *pWindowInfo;
41 HWND hChild;
42 HFONT *lphFont;
43 HANDLE *lphImage;
44 int i2,i3;
45 char temporary[MAX_PATH];
46
47 if(hWnd){
48 OpenIcon(hWnd);
49
50 _endthread();
51 return;
52 }
53
54 pWindowInfo=&ProjectInfo.pWindowInfo[WndInfoNum];
55
56 if(pWindowInfo->style&WS_CHILD){
57 //"チャイルドウィンドウをテスト表示することはできません"
58 MessageBox(hOwner,STRING_RAD_ERROR_CANT_CHILDTEST,STRING_ERROR,MB_OK|MB_ICONEXCLAMATION);
59
60 _endthread();
61 return;
62 }
63
64 lphFont=(HFONT *)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,pWindowInfo->NumberOfChildWindows*sizeof(DWORD));
65 lphImage=(HANDLE *)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,pWindowInfo->NumberOfChildWindows*sizeof(DWORD));
66
67 //テスト用のメインウィンドウを作成
68 hWnd=CreateWindowEx(pWindowInfo->ExStyle,
69 "TestWindow",
70 pWindowInfo->name,
71 pWindowInfo->style|WS_VISIBLE,
72 CW_USEDEFAULT,CW_USEDEFAULT,
73 pWindowInfo->size.cx,pWindowInfo->size.cy,
74 hOwner,NULL,hInst,NULL);
75
76 //子ウィンドウ作成
77 for(i2=0;i2<pWindowInfo->NumberOfChildWindows;i2++){
78 if(pWindowInfo->pChildInfo[i2].Control==CT_UPDOWN){
79 CreateUpDownControl(
80 pWindowInfo->pChildInfo[i2].style,
81 pWindowInfo->pChildInfo[i2].pos.x,pWindowInfo->pChildInfo[i2].pos.y,
82 pWindowInfo->pChildInfo[i2].size.cx,pWindowInfo->pChildInfo[i2].size.cy,
83 hWnd,0,hInst,
84 0,0,100,0);
85 }
86 else{
87 GetItemClassName(temporary,pWindowInfo->pChildInfo[i2].Control);
88 hChild=CreateWindowEx(
89 pWindowInfo->pChildInfo[i2].ExStyle,
90 temporary,
91 pWindowInfo->pChildInfo[i2].caption,
92 pWindowInfo->pChildInfo[i2].style,
93 pWindowInfo->pChildInfo[i2].pos.x,
94 pWindowInfo->pChildInfo[i2].pos.y,
95 pWindowInfo->pChildInfo[i2].size.cx,
96 pWindowInfo->pChildInfo[i2].size.cy,
97 hWnd,0,hInst,0);
98
99 lphFont[i2]=CreateFontIndirect(&pWindowInfo->LogFont);
100 SendMessage(hChild,WM_SETFONT,(long)lphFont[i2],0);
101
102 if(pWindowInfo->pChildInfo[i2].Control==CT_IMAGEBOX){
103 ///////////////////////////
104 // イメージ ボックスの場合
105 ///////////////////////////
106 if((pWindowInfo->pChildInfo[i2].style&0x000F)==SS_ICON){
107 if(pWindowInfo->pChildInfo[i2].ImageCtrlInfo.type==IMGTYPE_FILE)
108 lstrcpy(temporary,pWindowInfo->pChildInfo[i2].ImageCtrlInfo.path);
109 else{
110 for(i3=0;i3<ProjectInfo.res.NumberOfIconRes;i3++){
111 if(lstrcmp(pWindowInfo->pChildInfo[i2].ImageCtrlInfo.path,
112 ProjectInfo.res.pIconResInfo[i3].IdName)==0) break;
113 }
114 if(i3==ProjectInfo.res.NumberOfIconRes) temporary[0]=0;
115 else lstrcpy(temporary,ProjectInfo.res.pIconResInfo[i3].path);
116 }
117 if(temporary[0]){
118 GetFullPath(temporary,ProjectInfo.dir);
119 lphImage[i2]=LoadImage(hInst,temporary,IMAGE_ICON,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);
120
121 SendMessage(hChild,STM_SETICON,(long)lphImage[i2],0);
122 }
123 }
124 else if((pWindowInfo->pChildInfo[i2].style&0x000F)==SS_BITMAP){
125 if(pWindowInfo->pChildInfo[i2].ImageCtrlInfo.type==IMGTYPE_FILE)
126 lstrcpy(temporary,pWindowInfo->pChildInfo[i2].ImageCtrlInfo.path);
127 else{
128 for(i3=0;i3<ProjectInfo.res.NumberOfBitmapRes;i3++){
129 if(lstrcmp(pWindowInfo->pChildInfo[i2].ImageCtrlInfo.path,
130 ProjectInfo.res.pBitmapResInfo[i3].IdName)==0) break;
131 }
132 if(i3==ProjectInfo.res.NumberOfBitmapRes) temporary[0]=0;
133 else lstrcpy(temporary,ProjectInfo.res.pBitmapResInfo[i3].path);
134 }
135 if(temporary[0]){
136 GetFullPath(temporary,ProjectInfo.dir);
137 lphImage[i2]=LoadImage(hInst,temporary,IMAGE_BITMAP,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);
138
139 SendMessage(hChild,STM_SETIMAGE,IMAGE_BITMAP,(long)lphImage[i2]);
140 }
141 }
142 }
143 }
144 }
145
146 MSG msg;
147 while(GetMessage(&msg,NULL,0,0)){
148 if(IsDialogMessage(hWnd,&msg)) continue;
149 TranslateMessage(&msg);
150 DispatchMessage(&msg);
151 }
152
153 //フォントハンドルを破棄
154 for(i2=0;i2<pWindowInfo->NumberOfChildWindows;i2++){
155 if(lphFont[i2]) DeleteObject(lphFont[i2]);
156 }
157 HeapDefaultFree(lphFont);
158
159 //イメージハンドルを破棄
160 for(i2=0;i2<pWindowInfo->NumberOfChildWindows;i2++){
161 if(lphImage[i2]){
162 if((pWindowInfo->pChildInfo[i2].style&0x000F)==SS_ICON)
163 DestroyIcon((HICON)lphImage[i2]);
164 else if((pWindowInfo->pChildInfo[i2].style&0x000F)==SS_BITMAP)
165 DeleteObject(lphImage[i2]);
166 }
167 }
168 HeapDefaultFree(lphImage);
169
170 hWnd=0;
171
172 _endthread();
173}
174
175void SetSupportDlgData(int WndNum,int WndInfoNum){
176 ////////////////////////////////////
177 // サポートダイアログの内容をセット
178 ////////////////////////////////////
179 extern PROJECTINFO ProjectInfo;
180 extern MDIINFO MdiInfo[MAX_WNDNUM];
181 extern RADINFO RadInfo;
182 char temporary[255];
183 HWND hSupport;
184
185 bSupportDlg_NoChange=1;
186
187 hSupport=MdiInfo[WndNum].MdiRadInfo->hSupport;
188
189 if(RadInfo.NowDragging>=FRAME_CHANGEPOS_START&&RadInfo.NowDragging<=FRAME_CHANGEPOS_END&&
190 (!(MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]!=-1&&MdiInfo[WndNum].MdiRadInfo->SelectingItem[1]!=-1))){
191 sprintf(temporary,"%d",RadInfo.DraggingRect[0].left-MdiInfo[WndNum].MdiRadInfo->ClientPos.x);
192 SetDlgItemText(hSupport,IDC_XPOS,temporary);
193
194 sprintf(temporary,"%d",RadInfo.DraggingRect[0].top-MdiInfo[WndNum].MdiRadInfo->ClientPos.y);
195 SetDlgItemText(hSupport,IDC_YPOS,temporary);
196
197 sprintf(temporary,"%d",RadInfo.DraggingRect[0].right-RadInfo.DraggingRect[0].left);
198 SetDlgItemText(hSupport,IDC_WIDTH,temporary);
199
200 sprintf(temporary,"%d",RadInfo.DraggingRect[0].bottom-RadInfo.DraggingRect[0].top);
201 SetDlgItemText(hSupport,IDC_HEIGHT,temporary);
202 }
203 else if(MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]==SELECT_WINDOW){
204 EnableWindow(GetDlgItem(hSupport,IDC_XPOS),0);
205 EnableWindow(GetDlgItem(hSupport,IDC_YPOS),0);
206 EnableWindow(GetDlgItem(hSupport,IDC_SPIN1),0);
207 EnableWindow(GetDlgItem(hSupport,IDC_SPIN2),0);
208 EnableWindow(GetDlgItem(hSupport,IDC_SPIN3),1);
209 EnableWindow(GetDlgItem(hSupport,IDC_SPIN4),1);
210
211 SetDlgItemText(hSupport,IDC_XPOS,"");
212 SetDlgItemText(hSupport,IDC_YPOS,"");
213
214 sprintf(temporary,"%d",ProjectInfo.pWindowInfo[WndInfoNum].size.cx);
215 SetDlgItemText(hSupport,IDC_WIDTH,temporary);
216
217 sprintf(temporary,"%d",ProjectInfo.pWindowInfo[WndInfoNum].size.cy);
218 SetDlgItemText(hSupport,IDC_HEIGHT,temporary);
219 }
220 else{
221 EnableWindow(GetDlgItem(hSupport,IDC_XPOS),1);
222 EnableWindow(GetDlgItem(hSupport,IDC_YPOS),1);
223
224 if(MdiInfo[WndNum].MdiRadInfo->SelectingItem[1]!=-1){
225 EnableWindow(GetDlgItem(hSupport,IDC_SPIN1),0);
226 EnableWindow(GetDlgItem(hSupport,IDC_SPIN2),0);
227 EnableWindow(GetDlgItem(hSupport,IDC_SPIN3),0);
228 EnableWindow(GetDlgItem(hSupport,IDC_SPIN4),0);
229
230 SetDlgItemText(hSupport,IDC_XPOS,"");
231 SetDlgItemText(hSupport,IDC_YPOS,"");
232 SetDlgItemText(hSupport,IDC_WIDTH,"");
233 SetDlgItemText(hSupport,IDC_HEIGHT,"");
234 }
235 else{
236 EnableWindow(GetDlgItem(hSupport,IDC_SPIN1),1);
237 EnableWindow(GetDlgItem(hSupport,IDC_SPIN2),1);
238 EnableWindow(GetDlgItem(hSupport,IDC_SPIN3),1);
239 EnableWindow(GetDlgItem(hSupport,IDC_SPIN4),1);
240
241 sprintf(temporary,"%d",ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].pos.x);
242 SetDlgItemText(hSupport,IDC_XPOS,temporary);
243
244 sprintf(temporary,"%d",ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].pos.y);
245 SetDlgItemText(hSupport,IDC_YPOS,temporary);
246
247 sprintf(temporary,"%d",ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].size.cx);
248 SetDlgItemText(hSupport,IDC_WIDTH,temporary);
249
250 sprintf(temporary,"%d",ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].size.cy);
251 SetDlgItemText(hSupport,IDC_HEIGHT,temporary);
252 }
253 }
254
255 bSupportDlg_NoChange=0;
256}
257
258BOOL CALLBACK DlgRadSupport(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
259 extern PROJECTINFO ProjectInfo;
260 extern MDIINFO MdiInfo[MAX_WNDNUM];
261 static BOOL bTimer;
262 int i,i2,i3;
263 char temporary[255];
264 POINTANDSIZE PointAndSize;
265 RECT rect;
266
267 switch(message){
268 case WM_INITDIALOG:
269 SendDlgItemMessage(hwnd,IDC_SPIN1,UDM_SETBUDDY,(long)GetDlgItem(hwnd,IDC_XPOS),0);
270 SendDlgItemMessage(hwnd,IDC_SPIN2,UDM_SETBUDDY,(long)GetDlgItem(hwnd,IDC_YPOS),0);
271 SendDlgItemMessage(hwnd,IDC_SPIN3,UDM_SETBUDDY,(long)GetDlgItem(hwnd,IDC_WIDTH),0);
272 SendDlgItemMessage(hwnd,IDC_SPIN4,UDM_SETBUDDY,(long)GetDlgItem(hwnd,IDC_HEIGHT),0);
273
274 SendDlgItemMessage(hwnd,IDC_SPIN1,UDM_SETRANGE32,0,0x7FFF);
275 SendDlgItemMessage(hwnd,IDC_SPIN2,UDM_SETRANGE32,0,0x7FFF);
276 SendDlgItemMessage(hwnd,IDC_SPIN3,UDM_SETRANGE32,0,0x7FFF);
277 SendDlgItemMessage(hwnd,IDC_SPIN4,UDM_SETRANGE32,0,0x7FFF);
278 return 0;
279 case WM_COMMAND:
280 switch(LOWORD(wParam)){
281 case IDC_TEST:
282 _beginthread(
283 (void (__cdecl *)(void *))ShowTestWindow,
284 0,
285 (void *)GetWndInfoNum(MdiInfo[GetWndNum(GetParent(hwnd))].path));
286 return 1;
287 case IDC_XPOS:
288 case IDC_YPOS:
289 case IDC_WIDTH:
290 case IDC_HEIGHT:
291 if(HIWORD(wParam)==EN_UPDATE){
292 if(bSupportDlg_NoChange) return 1;
293
294 if(bTimer) KillTimer(hwnd,0);
295
296 bTimer=1;
297 SetTimer(hwnd,0,650,NULL);
298 }
299 return 1;
300 }
301 break;
302 case WM_TIMER:
303 KillTimer(hwnd,0);
304 bTimer=0;
305
306 i=GetWndNum(GetParent(hwnd));
307 i2=GetWndInfoNum(MdiInfo[i].path);
308
309 for(i3=0;;i3++){
310 if(MdiInfo[i].MdiRadInfo->SelectingItem[i3]==-1) break;
311 PointAndSize.pos=ProjectInfo.pWindowInfo[i2].pChildInfo[MdiInfo[i].MdiRadInfo->SelectingItem[i3]].pos;
312 PointAndSize.size=ProjectInfo.pWindowInfo[i2].pChildInfo[MdiInfo[i].MdiRadInfo->SelectingItem[i3]].size;
313 Rad_NoticeChanging(i,RAD_UNDO_POSITION,MdiInfo[i].MdiRadInfo->SelectingItem[i3],(DWORD)&PointAndSize);
314 }
315
316 GetDlgItemText(hwnd,IDC_XPOS,temporary,255);
317 if(temporary[0]){
318 for(i3=0;;i3++){
319 if(MdiInfo[i].MdiRadInfo->SelectingItem[i3]==-1) break;
320 ProjectInfo.pWindowInfo[i2].pChildInfo[MdiInfo[i].MdiRadInfo->SelectingItem[i3]].pos.x=atol(temporary);
321 }
322 }
323
324 GetDlgItemText(hwnd,IDC_YPOS,temporary,255);
325 if(temporary[0]){
326 for(i3=0;;i3++){
327 if(MdiInfo[i].MdiRadInfo->SelectingItem[i3]==-1) break;
328 ProjectInfo.pWindowInfo[i2].pChildInfo[MdiInfo[i].MdiRadInfo->SelectingItem[i3]].pos.y=atol(temporary);
329 }
330 }
331
332 GetDlgItemText(hwnd,IDC_WIDTH,temporary,255);
333 if(temporary[0]){
334 if(MdiInfo[i].MdiRadInfo->SelectingItem[0]==SELECT_WINDOW)
335 ProjectInfo.pWindowInfo[i2].size.cx=atol(temporary);
336 else{
337 for(i3=0;;i3++){
338 if(MdiInfo[i].MdiRadInfo->SelectingItem[i3]==-1) break;
339 ProjectInfo.pWindowInfo[i2].pChildInfo[MdiInfo[i].MdiRadInfo->SelectingItem[i3]].size.cx=atol(temporary);
340 }
341 }
342 }
343
344 GetDlgItemText(hwnd,IDC_HEIGHT,temporary,255);
345 if(temporary[0]){
346 if(MdiInfo[i].MdiRadInfo->SelectingItem[0]==SELECT_WINDOW)
347 ProjectInfo.pWindowInfo[i2].size.cy=atol(temporary);
348 else{
349 for(i3=0;;i3++){
350 if(MdiInfo[i].MdiRadInfo->SelectingItem[i3]==-1) break;
351 ProjectInfo.pWindowInfo[i2].pChildInfo[MdiInfo[i].MdiRadInfo->SelectingItem[i3]].size.cy=atol(temporary);
352 }
353 }
354 }
355
356 //描画
357 DrawRadWindow(i,&ProjectInfo.pWindowInfo[i2]);
358
359 //スクロールバーをリセット
360 GetClientRect(MdiInfo[i].MdiRadInfo->hRad,&rect);
361 ResetScrollbarOfRadEditor(i,rect.right,rect.bottom);
362
363 return 1;
364 }
365 return 0;
366}
Note: See TracBrowser for help on using the repository browser.