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

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

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

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