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

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

MDIINFO構造体をリファクタリング。

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