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

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

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

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