source: dev/trunk/ab5.0/abdev/ProjectEditor/ChildWndOnRebar.cpp@ 477

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

構成管理を大幅に改良。

File size: 12.9 KB
Line 
1#include "stdafx.h"
2
3#include "Common.h"
4
5
6
7//ファイル選択コンボボックス
8HWND hDocCombo;
9
10//スタンダードツールバー
11HWND hStandardToolbarPager; //ページャー
12ILuxToolbar *pobj_StandardToolbar;
13
14//デバッガツールバー
15HWND hDebuggerToolbarPager; //ページャー
16ILuxToolbar *pobj_DebuggerToolbar;
17
18//ビルドツールバー
19HWND hReleaseToolbarPager;
20ILuxToolbar *pobj_ReleaseToolbar;
21
22//プラットフォーム選択コンボボックス
23HWND hSelectCompilerCombo;
24
25//WebSearchコンボボックス
26HWND hWebSearchCombo;
27
28
29
30
31/////////////////
32// レバー追加
33// ※Add~プロシージャを追加
34/////////////////
35
36
37/* 以下は各バンドのメッセージプロシージャ */
38
39//hDocCombo(Rebar)プロシージャ
40LRESULT CALLBACK DocComboProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
41 extern WNDPROC OldDocComboProc;
42 extern MDIINFO MdiInfo[MAX_WNDNUM];
43 int i;
44 char str[MAX_PATH];
45 RECT rect;
46 switch(message){
47 case WM_COMMAND:
48 if(HIWORD(wParam)==CBN_SELCHANGE){
49 SendMessage(hwnd,CB_GETLBTEXT,SendMessage(hwnd,CB_GETCURSEL,0,0),(long)str);
50 for(i=0;i<MAX_WNDNUM;i++){
51 if(lstrcmpi(str,MdiInfo[i].title)==0) break;
52 }
53 BringWindowToTop(MdiInfo[i].hwnd);
54 }
55 break;
56 case WM_LBUTTONDOWN:
57 GetClientRect(hwnd,&rect);
58 SetWindowPos(hwnd,NULL,0,0,rect.right,120,SWP_NOMOVE);
59 break;
60 case WM_RBUTTONUP:
61 pobj_Rebar->menu_popup(hwnd,LOWORD(lParam),HIWORD(lParam));
62 break;
63 }
64 return CallWindowProc(OldDocComboProc,hwnd,message,wParam,lParam);
65}
66
67//hStandardToolbar(Rebar)プロシージャ
68LRESULT CALLBACK StandardToolbarProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
69 extern char CmdMsg[255];
70 extern WNDPROC OldStandardToolbarProc;
71 if(message==WM_RBUTTONUP){
72 pobj_Rebar->menu_popup(hwnd,LOWORD(lParam),HIWORD(lParam));
73 InvalidateRect(hwnd,NULL,0);
74 }
75 return CallWindowProc(OldStandardToolbarProc,hwnd,message,wParam,lParam);
76}
77
78//hSelectCompilerCombo(Rebar)プロシージャ
79LRESULT CALLBACK SelectCompilerComboProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
80 extern WNDPROC OldSelectCompilerComboProc;
81 int i;
82 switch(message){
83 case WM_COMMAND:
84 if(HIWORD(wParam)==CBN_SELCHANGE){
85 i=SendMessage(hwnd,CB_GETCURSEL,0,0);
86
87 extern ActiveBasic::Common::Platform::EnumType selectingPlatform;
88 if( i == 0 )
89 {
90 selectingPlatform = ActiveBasic::Common::Platform::X86;
91 }
92 else if( i == 1 )
93 {
94 selectingPlatform = ActiveBasic::Common::Platform::X64;
95 }
96 }
97 break;
98 case WM_LBUTTONDOWN:
99 RECT rect;
100 GetClientRect(hwnd,&rect);
101 SetWindowPos(hwnd,NULL,0,0,rect.right,120,SWP_NOMOVE);
102 break;
103 case WM_RBUTTONUP:
104 pobj_Rebar->menu_popup(hwnd,LOWORD(lParam),HIWORD(lParam));
105 break;
106 }
107 return CallWindowProc(OldSelectCompilerComboProc,hwnd,message,wParam,lParam);
108}
109
110//hWebSearchCombo(Rebar)プロシージャ
111LRESULT CALLBACK WebSearchProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
112 extern WNDPROC OldWebSearchProc;
113 switch(message){
114 case WM_LBUTTONDOWN:
115 RECT rect;
116 GetClientRect(hwnd,&rect);
117 SetWindowPos(hwnd,NULL,0,0,rect.right,120,SWP_NOMOVE);
118 break;
119 }
120 return CallWindowProc(OldWebSearchProc,hwnd,message,wParam,lParam);
121}
122
123LRESULT CALLBACK WebSearchEditProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
124 extern WNDPROC OldWebSearchEditProc;
125 switch(message){
126 case WM_CHAR:
127 if(LOWORD(wParam)==VK_RETURN){
128 char *buffer,*temporary;
129 buffer=(char *)HeapAlloc(hHeap,0,MAX_PATH*3+1024);
130 temporary=(char *)HeapAlloc(hHeap,0,MAX_PATH*3+1024);
131
132 GetWindowText(hwnd,temporary,MAX_PATH);
133
134 int i=0;
135 while(temporary[i]==' ') i++;
136
137 char temp2[MAX_PATH];
138 strncpy(temp2,temporary+i,MAX_PATH);
139
140 i=lstrlen(temp2);
141 while(i>0){
142 if(temp2[i-1]==' ') i--;
143 else break;
144 }
145 temp2[i]=0;
146
147 //EUCに変換
148 nkf.pSetNkfOption("-wx");
149 nkf.pNkfConvert(buffer,temp2);
150
151 //URLエンコード
152 URLEncode(buffer);
153
154
155 //埋め込み型で表示
156 lstrcpy(temporary,"http://www.activebasic.com/application_search.php?query=");
157 lstrcat(temporary,buffer);
158 lstrcat(temporary,"&type=web&utf_sw=1");
159
160 pobj_SideWeb->GoPage(temporary);
161
162
163 AddFindData(GetParent(hwnd),pobj_nv->WebStr,temp2);
164
165 HeapDefaultFree(buffer);
166 HeapDefaultFree(temporary);
167 }
168 break;
169 }
170 return CallWindowProc(OldWebSearchEditProc,hwnd,message,wParam,lParam);
171}
172
173
174
175/*----- 以下はRebarの初期生成 -----*/
176
177//ドキュメント選択コンボボックスをレバーに追加
178HWND AddDocCombo(HWND hRebar,int num,char *lpszText){
179 extern HINSTANCE hInst;
180 extern HWND hDocCombo,hClient;
181 extern WNDPROC OldDocComboProc;
182 extern HFONT hStatusFont;
183 extern MDIINFO MdiInfo[MAX_WNDNUM];
184 int i,i2;
185 HWND hTempWnd;
186 char buffer[MAX_PATH];
187
188 //コンボボックスを生成
189 hDocCombo=CreateWindow("COMBOBOX",NULL,
190 WS_CHILD|WS_VSCROLL|WS_VISIBLE|CBS_DROPDOWNLIST|CBS_DROPDOWN|CBS_HASSTRINGS|CBS_SORT,
191 0,0,0,120,hRebar,NULL,hInst,NULL);
192
193 //サブクラス化
194 OldDocComboProc=(WNDPROC)GetWindowLongPtr(hDocCombo,GWLP_WNDPROC);
195 SetWindowLongPtr(hDocCombo,GWLP_WNDPROC,(long)DocComboProc);
196
197 //フォントを設定
198 SendMessage(hDocCombo,WM_SETFONT,(unsigned int)hStatusFont,0);
199
200 hTempWnd=GetWindow(hClient,GW_CHILD);
201 if(IsWindow(hTempWnd)){
202 for(i=0,i2=0;i<MAX_WNDNUM;i++){
203 if(MdiInfo[i].hwnd){
204 GetWindowText(MdiInfo[i].hwnd,buffer,MAX_PATH);
205 if(MdiInfo[i].hwnd==hTempWnd) i2=SendMessage(hDocCombo,CB_ADDSTRING,0,(long)buffer);
206 else SendMessage(hDocCombo,CB_ADDSTRING,0,(long)buffer);
207 }
208 }
209 SendMessage(hDocCombo,CB_SETCURSEL,i2,0);
210 }
211
212 lstrcpy(lpszText,"File:");
213 return hDocCombo;
214}
215
216//ファイル管理ツールバーをレバーに追加
217HWND AddStandardToolbar(HWND hRebar,int num,char *lpszText){
218 extern HWND hStandardToolbarPager;
219
220 //ページャーウィンドウを生成
221 hStandardToolbarPager=CreateWindow(WC_PAGESCROLLER,NULL,
222 WS_CHILD|WS_VISIBLE|PGS_HORZ,
223 0,0,0,0,
224 hRebar,NULL,hInst,NULL);
225
226
227 //LuxToolbarオブジェクトを生成
228 if(pobj_StandardToolbar) pobj_StandardToolbar->Release();
229 pobj_StandardToolbar=LuxToolbar_CreateInstance();
230 pobj_StandardToolbar->Create(hStandardToolbarPager);
231
232
233#define ADD_TOOLBAR_BUTTON(id,iconID,lpszToolTip) pobj_StandardToolbar->Add(id,(HICON)LoadImage(hIconResInst,MAKEINTRESOURCE(iconID),IMAGE_ICON,16,16,0),lpszToolTip)
234#define ADD_TOOLBAR_SEPARATOR pobj_StandardToolbar->Add(0,0,0)
235 //ボタン類を追加
236 ADD_TOOLBAR_BUTTON(IDM_NEW,IDI_NEW,"新規作成(Ctrl+N)");
237 ADD_TOOLBAR_SEPARATOR;
238 ADD_TOOLBAR_BUTTON(IDM_OPEN,IDI_OPEN,"開く(Ctrl+O)");
239 ADD_TOOLBAR_BUTTON(IDM_SAVE,IDI_SAVE,"保存(Ctrl+S)");
240 ADD_TOOLBAR_BUTTON(IDM_ALLSAVE,IDI_ALLSAVE,"すべて保存");
241 ADD_TOOLBAR_SEPARATOR;
242 ADD_TOOLBAR_BUTTON(IDM_CUT,IDI_CUT,"切り取り(Ctrl+X)");
243 ADD_TOOLBAR_BUTTON(IDM_COPY,IDI_COPY,"コピー(Ctrl+C)");
244 ADD_TOOLBAR_BUTTON(IDM_PASTE,IDI_PASTE,"貼り付け(Ctrl+V)");
245 ADD_TOOLBAR_SEPARATOR;
246 ADD_TOOLBAR_BUTTON(IDM_UNDO,IDI_UNDO,"元に戻す(Ctrl+Z)");
247 ADD_TOOLBAR_BUTTON(IDM_REDO,IDI_REDO,"やり直し(Ctrl+Y)");
248 ADD_TOOLBAR_SEPARATOR;
249 ADD_TOOLBAR_BUTTON(IDM_FIND,IDI_FIND,"検索(Ctrl+F)");
250#undef ADD_TOOLBAR_SEPARATOR
251#undef ADD_TOOLBAR_BUTTON
252
253
254 //ページャー設定
255 Pager_SetChild(hStandardToolbarPager,pobj_StandardToolbar->GetHandle());
256
257
258 //サブクラス化
259 extern WNDPROC OldStandardToolbarProc;
260 OldStandardToolbarProc=(WNDPROC)GetWindowLongPtr(pobj_StandardToolbar->GetHandle(),GWLP_WNDPROC);
261 SetWindowLongPtr(pobj_StandardToolbar->GetHandle(),GWLP_WNDPROC,(long)StandardToolbarProc);
262
263 lpszText[0]=0;
264 return hStandardToolbarPager;
265}
266
267//デバッガツールバーをレバーに追加
268HWND AddDebuggerToolbar(HWND hRebar,int num,char *lpszText){
269#ifndef THETEXT
270
271 extern HWND hDebuggerToolbarPager;
272
273 hDebuggerToolbarPager=CreateWindow(WC_PAGESCROLLER,NULL,
274 WS_CHILD|WS_VISIBLE|PGS_HORZ,
275 0,0,0,0,
276 hRebar,NULL,hInst,NULL);
277
278 //LuxToolbarオブジェクトを生成
279 if(pobj_DebuggerToolbar) pobj_DebuggerToolbar->Release();
280 pobj_DebuggerToolbar=LuxToolbar_CreateInstance();
281 pobj_DebuggerToolbar->Create(hDebuggerToolbarPager);
282
283#define ADD_TOOLBAR_BUTTON(id,iconID,lpszToolTip) pobj_DebuggerToolbar->Add(id,(HICON)LoadImage(hIconResInst,MAKEINTRESOURCE(iconID),IMAGE_ICON,16,16,0),lpszToolTip)
284#define ADD_TOOLBAR_SEPARATOR pobj_DebuggerToolbar->Add(0,0,0)
285 //ボタン類を追加
286 ADD_TOOLBAR_BUTTON(IDM_DEBUGCOMPILE,IDI_DEBUGCOMPILE,"デバッグ ビルド(F7)");
287 ADD_TOOLBAR_SEPARATOR;
288 ADD_TOOLBAR_BUTTON(IDM_DEBUG,IDI_DEBUGRUN,"デバッグ実行(F5)");
289 ADD_TOOLBAR_BUTTON(IDM_DEBUG_PAUSE,IDI_DEBUGPAUSE,"デバッグを一時停止");
290 ADD_TOOLBAR_BUTTON(IDM_DEBUG_STOP,IDI_DEBUGSTOP,"デバッグを中断");
291 ADD_TOOLBAR_SEPARATOR;
292 ADD_TOOLBAR_BUTTON(IDM_STEP_IN,IDI_STEPIN,"ステップ イン(F11)");
293 ADD_TOOLBAR_BUTTON(IDM_STEP_OVER,IDI_STEPOVER,"ステップ オーバー(F10)");
294 ADD_TOOLBAR_BUTTON(IDM_STEP_CURSOR,IDI_STEPTOCURSOR,"カーソル行まで実行(Ctrl+F11)");
295 ADD_TOOLBAR_SEPARATOR;
296 ADD_TOOLBAR_BUTTON(IDM_BREAKPOINT,IDI_BREAKPOINT,"ブレークポイントの設置/解除(F9)");
297#undef ADD_TOOLBAR_SEPARATOR
298#undef ADD_TOOLBAR_BUTTON
299
300 //ページャー設定
301 Pager_SetChild(hDebuggerToolbarPager,pobj_DebuggerToolbar->GetHandle());
302
303 //サブクラス化
304 extern WNDPROC OldStandardToolbarProc;
305 OldStandardToolbarProc=(WNDPROC)GetWindowLongPtr(pobj_DebuggerToolbar->GetHandle(),GWLP_WNDPROC);
306 SetWindowLongPtr(pobj_DebuggerToolbar->GetHandle(),GWLP_WNDPROC,(long)StandardToolbarProc);
307
308 lpszText[0]=0;
309 return hDebuggerToolbarPager;
310#else //THETEXT
311 return 0;
312#endif //THETEXT
313}
314
315//リリースツールバーをレバーに追加
316HWND AddReleaseToolbar(HWND hRebar,int num,char *lpszText){
317#ifndef THETEXT
318
319 extern HWND hReleaseToolbarPager;
320
321 hReleaseToolbarPager=CreateWindow(WC_PAGESCROLLER,NULL,
322 WS_CHILD|WS_VISIBLE|PGS_HORZ,
323 0,0,0,0,
324 hRebar,NULL,hInst,NULL);
325
326 //LuxToolbarオブジェクトを生成
327 if(pobj_ReleaseToolbar) pobj_ReleaseToolbar->Release();
328 pobj_ReleaseToolbar=LuxToolbar_CreateInstance();
329 pobj_ReleaseToolbar->Create(hReleaseToolbarPager);
330
331#define ADD_TOOLBAR_BUTTON(id,iconID,lpszToolTip) pobj_ReleaseToolbar->Add(id,(HICON)LoadImage(hIconResInst,MAKEINTRESOURCE(iconID),IMAGE_ICON,16,16,0),lpszToolTip)
332#define ADD_TOOLBAR_SEPARATOR pobj_ReleaseToolbar->Add(0,0,0)
333 //ボタン類を追加
334 ADD_TOOLBAR_BUTTON(IDM_RELEASECOMPILE,IDI_RELEASECOMPILE,"リリース コンパイル(F6)");
335 ADD_TOOLBAR_BUTTON(IDM_RELEASERUN,IDI_RELEASERUN,"実行");
336#undef ADD_TOOLBAR_SEPARATOR
337#undef ADD_TOOLBAR_BUTTON
338
339 //ページャー設定
340 Pager_SetChild(hReleaseToolbarPager,pobj_ReleaseToolbar->GetHandle());
341
342 //サブクラス化
343 extern WNDPROC OldStandardToolbarProc;
344 OldStandardToolbarProc=(WNDPROC)GetWindowLongPtr(pobj_ReleaseToolbar->GetHandle(),GWLP_WNDPROC);
345 SetWindowLongPtr(pobj_ReleaseToolbar->GetHandle(),GWLP_WNDPROC,(long)StandardToolbarProc);
346
347 lpszText[0]=0;
348 return hReleaseToolbarPager;
349#else //THETEXT
350 return 0;
351#endif //THETEXT
352}
353
354//コンパイラ選択コンボボックスをレバーに追加
355HWND AddBand_SelectCompiler(HWND hRebar,int num,char *lpszText){
356
357 //コンボボックスを生成
358 extern HINSTANCE hInst;
359 extern HWND hSelectCompilerCombo;
360 hSelectCompilerCombo=CreateWindow("COMBOBOX",NULL,
361 WS_CHILD|WS_VSCROLL|WS_VISIBLE|CBS_DROPDOWNLIST|CBS_DROPDOWN|CBS_HASSTRINGS|CBS_SORT,
362 0,0,0,120,hRebar,NULL,hInst,NULL);
363
364 //サブクラス化
365 extern WNDPROC OldSelectCompilerComboProc;
366 OldSelectCompilerComboProc=(WNDPROC)GetWindowLongPtr(hSelectCompilerCombo,GWLP_WNDPROC);
367 SetWindowLongPtr(hSelectCompilerCombo,GWLP_WNDPROC,(long)SelectCompilerComboProc);
368
369 //フォントを設定
370 extern HFONT hStatusFont;
371 SendMessage(hSelectCompilerCombo,WM_SETFONT,(WPARAM)hStatusFont,0);
372
373 //コンボボックスに文字列を挿入
374 SendMessage(hSelectCompilerCombo,CB_ADDSTRING,0,(long)"Win32");
375 if(IsWow64()) SendMessage(hSelectCompilerCombo,CB_ADDSTRING,0,(long)"Win64");
376
377 //Win32を選択
378 SendMessage(hSelectCompilerCombo,CB_SETCURSEL,0,0);
379
380 lpszText[0]=0;
381 return hSelectCompilerCombo;
382}
383
384HWND AddBand_WebSearch(HWND hRebar,int num,char *lpszText){
385 //コンボボックスを生成
386 extern HINSTANCE hInst;
387 extern HWND hWebSearchCombo;
388 hWebSearchCombo=CreateWindow("COMBOBOX",NULL,
389 WS_CHILD|WS_VSCROLL|WS_VISIBLE|CBS_DROPDOWN|CBS_HASSTRINGS|CBS_AUTOHSCROLL,
390 0,0,0,120,hRebar,NULL,hInst,NULL);
391
392 //サブクラス化
393 extern WNDPROC OldWebSearchProc;
394 OldWebSearchProc=(WNDPROC)GetWindowLongPtr(hWebSearchCombo,GWLP_WNDPROC);
395 SetWindowLongPtr(hWebSearchCombo,GWLP_WNDPROC,(long)WebSearchProc);
396 extern WNDPROC OldWebSearchEditProc;
397 OldWebSearchEditProc=(WNDPROC)GetWindowLongPtr(GetWindow(hWebSearchCombo,GW_CHILD),GWLP_WNDPROC);
398 SetWindowLongPtr(GetWindow(hWebSearchCombo,GW_CHILD),GWLP_WNDPROC,(long)WebSearchEditProc);
399
400 //フォントを設定
401 extern HFONT hStatusFont;
402 SendMessage(hWebSearchCombo,WM_SETFONT,(WPARAM)hStatusFont,0);
403
404 lstrcpy(lpszText,"WebSearch(F5):");
405
406
407
408 //Web検索文字列コンボボックスを初期化
409 int i;
410 SendMessage(hWebSearchCombo,CB_RESETCONTENT,0,0);
411 for(i=0;i<MAX_FINDLIST;i++){
412 if(pobj_nv->WebStr[i][0]=='\0') break;
413 SendMessage(hWebSearchCombo,CB_ADDSTRING,0,(long)pobj_nv->WebStr[i]);
414 }
415 SendMessage(hWebSearchCombo,CB_LIMITTEXT,8192,0);
416
417 return hWebSearchCombo;
418}
Note: See TracBrowser for help on using the repository browser.