source: dev/trunk/ab5.0/abdev/abdev/DialogBoxes.cpp@ 673

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

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

File size: 71.1 KB
Line 
1#include "stdafx.h"
2
3#include "Common.h"
4
5//タブ用
6BOOL SetSwitch[32];
7
8
9void SetPosCenter(HWND hParent,HWND hwnd){
10 RECT owrect,rect;
11 int x,y;
12
13 if(IsWindow(hParent)) GetWindowRect(hParent,&owrect);
14 else{
15 owrect.left=0;
16 owrect.top=0;
17 owrect.right=ScreenX;
18 owrect.bottom=ScreenY;
19 }
20 GetWindowRect(hwnd,&rect);
21 x=((owrect.right-owrect.left)-(rect.right-rect.left))/2+owrect.left;
22 y=((owrect.bottom-owrect.top)-(rect.bottom-rect.top))/2+owrect.top;
23 SetWindowPos(hwnd,0,x,y,0,0,SWP_NOSIZE);
24}
25void SetPosCenter(HWND hwnd){
26 SetPosCenter(hOwner,hwnd);
27}
28BOOL SetFontDialog(HWND hwnd,LOGFONT *lf,BOOL bFixedPitchOnly,int *lpiPointSize){
29 CHOOSEFONT cf;
30 LOGFONT lfDummy;
31
32 lfDummy=*lf;
33 memset(&cf,0,sizeof(CHOOSEFONT));
34 cf.lStructSize=sizeof(CHOOSEFONT);
35 cf.hwndOwner=hwnd;
36 cf.lpLogFont=&lfDummy;
37 cf.Flags=CF_SCREENFONTS|CF_INITTOLOGFONTSTRUCT;
38 if(bFixedPitchOnly) cf.Flags|=CF_FIXEDPITCHONLY|CF_NOVERTFONTS;
39 cf.nFontType=SCREEN_FONTTYPE;
40 lstrcpy((char *)cf.lpTemplateName,"Font select");
41
42 if(!ChooseFont(&cf)) return 0;
43
44 memcpy(lf,&lfDummy,sizeof(LOGFONT));
45
46 if(lpiPointSize) *lpiPointSize=cf.iPointSize;
47
48 return 1;
49}
50
51
52
53//////////////////////////////////
54// プロジェクト新規作成ウィザード
55//////////////////////////////////
56
57//プロジェクト作成項目
58#if defined(JPN)
59//日本語
60#define TEXT_BASE_NORMAL "ノーマル ウィンドウをベースに、GUIアプリケーションを作成します。"
61#define TEXT_BASE_PROMPT "プロンプト ウィンドウをベースに、N88BASIC互換プログラムを作成します。"
62#define TEXT_BASE_DOSPROMPT "コンソール アプリケーションを作成します。Windows上で稼動するDOSプロンプトでの入出力が可能になります。"
63#define TEXT_NOBASE "空のプロジェクトを作成します。"
64#define TEXT_DIRECTX "DirectXに対応したアプリケーションを作成します。2Dまたは3Dの描画を高速に行うことができ、ゲームアプリケーションなどの開発に最適です。"
65#define TEXT_DLL "ダイナミック リンク ライブラリ(DLL)を作成します。"
66#define TEXT_SLL "静的 リンク ライブラリ(lib)を作成します。"
67#else
68//英語
69#define TEXT_BASE_NORMAL "You can make a GUI application of a normal window base."
70#define TEXT_BASE_PROMPT "You can make a N88 compatible program of a prompt window base."
71#define TEXT_BASE_DOSPROMPT "You can make a console application."
72#define TEXT_NOBASE "Empty project is created."
73#define TEXT_DIRECTX "You can make a DirectX application. It can draw 2D or 3D graphics at high speed and it is useful to a game programing."
74#define TEXT_DLL "You can make a DLL(Dynamic Link Library)."
75#endif
76
77void GetCheckTextBuffer(char *buffer){
78 extern NEWPROJECTINFO NewProjectInfo;
79 int i;
80
81#if defined(JPN)
82 //日本語
83 lstrcpy(buffer,"作成するプロジェクトの内容を確認して \"完了\" ボタンを押して下さい。\r\n\r\n");
84 i=lstrlen(buffer);
85 sprintf(buffer+i,"プロジェクト名: \"%s\"\r\n",NewProjectInfo.name);
86 i+=lstrlen(buffer+i);
87 sprintf(buffer+i,"ワーク ディレクトリ: \"%s\\%s\"\r\n\r\n",pobj_nv->ProjectSaveDir,NewProjectInfo.name);
88 i+=lstrlen(buffer+i);
89
90 if(NewProjectInfo.dwTypeID==IDC_EXE_WINDOWBASE){
91 lstrcpy(buffer+i,"ノーマル ウィンドウを持つEXE形式の実行ファイルを作成します。\r\n\r\n");
92 i+=lstrlen(buffer+i);
93 lstrcpy(buffer+i,"--- 以下のファイルが生成されます ---\r\n");
94 i+=lstrlen(buffer+i);
95 sprintf(buffer+i,"%s.pj … プロジェクト ファイル\r\n",NewProjectInfo.name);
96 i+=lstrlen(buffer+i);
97 sprintf(buffer+i,"%s.idx … インデックス ファイル\r\n",NewProjectInfo.name);
98 i+=lstrlen(buffer+i);
99 sprintf(buffer+i,"%s.ab … メイン ソースコード ファイル\r\n",NewProjectInfo.name);
100 i+=lstrlen(buffer+i);
101 sprintf(buffer+i,"%s.wnd … ウィンドウ デザイン保存用\r\n",NewProjectInfo.name);
102 i+=lstrlen(buffer+i);
103 sprintf(buffer+i,"%s.wrk … 作業状況の管理用\r\n",NewProjectInfo.name);
104 i+=lstrlen(buffer+i);
105 sprintf(buffer+i,"MainWnd.ab … メイン ウィンドウのイベント プロシージャ用\r\n",NewProjectInfo.name);
106 }
107 else if(NewProjectInfo.dwTypeID==IDC_EXE_PROMPTBASE){
108 lstrcpy(buffer+i,"プロンプト ウィンドウを持つEXE形式の実行ファイルを作成します。\r\n\r\n");
109 i+=lstrlen(buffer+i);
110 lstrcpy(buffer+i,"--- 以下のファイルが生成されます ---\r\n");
111 i+=lstrlen(buffer+i);
112 sprintf(buffer+i,"%s.pj … プロジェクト ファイル\r\n",NewProjectInfo.name);
113 i+=lstrlen(buffer+i);
114 sprintf(buffer+i,"%s.idx … インデックス ファイル\r\n",NewProjectInfo.name);
115 i+=lstrlen(buffer+i);
116 sprintf(buffer+i,"%s.ab … メイン ソースコード ファイル\r\n",NewProjectInfo.name);
117 i+=lstrlen(buffer+i);
118 sprintf(buffer+i,"%s.wrk … 作業状況の管理用\r\n",NewProjectInfo.name);
119 }
120 else if(NewProjectInfo.dwTypeID==IDC_EXE_DOSPROMPTBASE){
121 lstrcpy(buffer+i,"EXE形式のコンソール アプリケーションを作成します。\r\n\r\n");
122 i+=lstrlen(buffer+i);
123 lstrcpy(buffer+i,"--- 以下のファイルが生成されます ---\r\n");
124 i+=lstrlen(buffer+i);
125 sprintf(buffer+i,"%s.pj … プロジェクト ファイル\r\n",NewProjectInfo.name);
126 i+=lstrlen(buffer+i);
127 sprintf(buffer+i,"%s.idx … インデックス ファイル\r\n",NewProjectInfo.name);
128 i+=lstrlen(buffer+i);
129 sprintf(buffer+i,"%s.ab … メイン ソースコード ファイル\r\n",NewProjectInfo.name);
130 i+=lstrlen(buffer+i);
131 sprintf(buffer+i,"%s.wrk … 作業状況の管理用\r\n",NewProjectInfo.name);
132 }
133 else if(NewProjectInfo.dwTypeID==IDC_EXE_NOBASE){
134 lstrcpy(buffer+i,"EXE形式の実行ファイルを作成します。\r\n\r\n");
135 i+=lstrlen(buffer+i);
136 lstrcpy(buffer+i,"--- 以下のファイルが生成されます ---\r\n");
137 i+=lstrlen(buffer+i);
138 sprintf(buffer+i,"%s.pj … プロジェクト ファイル\r\n",NewProjectInfo.name);
139 i+=lstrlen(buffer+i);
140 sprintf(buffer+i,"%s.idx … インデックス ファイル\r\n",NewProjectInfo.name);
141 i+=lstrlen(buffer+i);
142 sprintf(buffer+i,"%s.ab … メイン ソースコード ファイル\r\n",NewProjectInfo.name);
143 i+=lstrlen(buffer+i);
144 sprintf(buffer+i,"%s.wrk … 作業状況の管理用\r\n",NewProjectInfo.name);
145 }
146 else if(NewProjectInfo.dwTypeID==IDC_EXE_DIRECTX){
147 lstrcpy(buffer+i,"EXE形式の実行ファイルを作成します。同時に、DirectXの操作に必要なソースコードを生成します。\r\n\r\n");
148 i+=lstrlen(buffer+i);
149 lstrcpy(buffer+i,"--- 以下のファイルが生成されます ---\r\n");
150 i+=lstrlen(buffer+i);
151 sprintf(buffer+i,"%s.pj … プロジェクト ファイル\r\n",NewProjectInfo.name);
152 i+=lstrlen(buffer+i);
153 sprintf(buffer+i,"%s.idx … インデックス ファイル\r\n",NewProjectInfo.name);
154 i+=lstrlen(buffer+i);
155 sprintf(buffer+i,"%s.ab … メイン ソースコード ファイル\r\n",NewProjectInfo.name);
156 i+=lstrlen(buffer+i);
157 lstrcpy(buffer+i,"dx_graphics.sbp … DirectGraphicsサポート用ソースコード ファイル\r\n");
158 i+=lstrlen(buffer+i);
159 lstrcpy(buffer+i,"dx_input.sbp … DirectInputサポート用ソースコード ファイル\r\n");
160 i+=lstrlen(buffer+i);
161 lstrcpy(buffer+i,"dx_music.sbp … DirectMusicサポート用ソースコード ファイル\r\n");
162 i+=lstrlen(buffer+i);
163 sprintf(buffer+i,"%s.wrk … 作業状況の管理用\r\n",NewProjectInfo.name);
164 }
165 else if(NewProjectInfo.dwTypeID==IDC_DLL){
166 lstrcpy(buffer+i,"ダイナミック リンク ライブラリ(DLL)を作成します。\r\n\r\n");
167 i+=lstrlen(buffer+i);
168 lstrcpy(buffer+i,"--- 以下のファイルが生成されます ---\r\n");
169 i+=lstrlen(buffer+i);
170 sprintf(buffer+i,"%s.pj … プロジェクト ファイル\r\n",NewProjectInfo.name);
171 i+=lstrlen(buffer+i);
172 sprintf(buffer+i,"%s.idx … インデックス ファイル\r\n",NewProjectInfo.name);
173 i+=lstrlen(buffer+i);
174 sprintf(buffer+i,"%s.ab … メイン ソースコード ファイル\r\n",NewProjectInfo.name);
175 i+=lstrlen(buffer+i);
176 sprintf(buffer+i,"%s.wrk … 作業状況の管理用\r\n",NewProjectInfo.name);
177 }
178 else if(NewProjectInfo.dwTypeID==IDC_SLL){
179 lstrcpy(buffer+i,"静的 リンク ライブラリ(lib)を作成します。\r\n\r\n");
180 i+=lstrlen(buffer+i);
181 lstrcpy(buffer+i,"--- 以下のファイルが生成されます ---\r\n");
182 i+=lstrlen(buffer+i);
183 sprintf(buffer+i,"%s.pj … プロジェクト ファイル\r\n",NewProjectInfo.name);
184 i+=lstrlen(buffer+i);
185 sprintf(buffer+i,"%s.idx … インデックス ファイル\r\n",NewProjectInfo.name);
186 i+=lstrlen(buffer+i);
187 sprintf(buffer+i,"%s.ab … メイン ソースコード ファイル\r\n",NewProjectInfo.name);
188 i+=lstrlen(buffer+i);
189 sprintf(buffer+i,"%s.wrk … 作業状況の管理用\r\n",NewProjectInfo.name);
190 }
191#else
192 //英語
193 lstrcpy(buffer,"Please check following points and click the \"Finish\" button.\r\n\r\n");
194 i=lstrlen(buffer);
195 sprintf(buffer+i,"Project Name: \"%s\"\r\n",NewProjectInfo.name);
196 i+=lstrlen(buffer+i);
197 sprintf(buffer+i,"Work Directory: \"%s\\%s\"\r\n\r\n",pobj_nv->ProjectSaveDir,NewProjectInfo.name);
198 i+=lstrlen(buffer+i);
199
200 if(NewProjectInfo.dwTypeID==IDC_EXE_WINDOWBASE){
201 sprintf(buffer+i,"%s\r\n\r\n",TEXT_BASE_NORMAL);
202 i+=lstrlen(buffer+i);
203 lstrcpy(buffer+i,"--- Creation Files ---\r\n");
204 i+=lstrlen(buffer+i);
205 sprintf(buffer+i,"%s.pj … Project file\r\n",NewProjectInfo.name);
206 i+=lstrlen(buffer+i);
207 sprintf(buffer+i,"%s.idx … Index file\r\n",NewProjectInfo.name);
208 i+=lstrlen(buffer+i);
209 sprintf(buffer+i,"%s.ab … Main Source Code file\r\n",NewProjectInfo.name);
210 i+=lstrlen(buffer+i);
211 sprintf(buffer+i,"%s.wnd … Data of Window Design\r\n",NewProjectInfo.name);
212 i+=lstrlen(buffer+i);
213 sprintf(buffer+i,"%s.wrk … Data of Work State\r\n",NewProjectInfo.name);
214 i+=lstrlen(buffer+i);
215 sprintf(buffer+i,"MainWnd.ab … Data of Event Procedures of the Main Window\r\n",NewProjectInfo.name);
216 }
217 else if(NewProjectInfo.dwTypeID==IDC_EXE_PROMPTBASE){
218 sprintf(buffer+i,"%s\r\n\r\n",TEXT_BASE_PROMPT);
219 i+=lstrlen(buffer+i);
220 lstrcpy(buffer+i,"--- Creation Files ---\r\n");
221 i+=lstrlen(buffer+i);
222 sprintf(buffer+i,"%s.pj … Creation Files\r\n",NewProjectInfo.name);
223 i+=lstrlen(buffer+i);
224 sprintf(buffer+i,"%s.idx … Index file\r\n",NewProjectInfo.name);
225 i+=lstrlen(buffer+i);
226 sprintf(buffer+i,"%s.ab … Main Source Code file\r\n",NewProjectInfo.name);
227 i+=lstrlen(buffer+i);
228 sprintf(buffer+i,"%s.wrk … Data of Work State\r\n",NewProjectInfo.name);
229 }
230 else if(NewProjectInfo.dwTypeID==IDC_EXE_DOSPROMPTBASE){
231 sprintf(buffer+i,"%s\r\n\r\n",TEXT_BASE_DOSPROMPT);
232 i+=lstrlen(buffer+i);
233 lstrcpy(buffer+i,"--- Creation Files ---\r\n");
234 i+=lstrlen(buffer+i);
235 sprintf(buffer+i,"%s.pj … Creation Files\r\n",NewProjectInfo.name);
236 i+=lstrlen(buffer+i);
237 sprintf(buffer+i,"%s.idx … Index file\r\n",NewProjectInfo.name);
238 i+=lstrlen(buffer+i);
239 sprintf(buffer+i,"%s.ab … Main Source Code file\r\n",NewProjectInfo.name);
240 i+=lstrlen(buffer+i);
241 sprintf(buffer+i,"%s.wrk … Data of Work State\r\n",NewProjectInfo.name);
242 }
243 else if(NewProjectInfo.dwTypeID==IDC_EXE_NOBASE){
244 sprintf(buffer+i,"%s\r\n\r\n",TEXT_NOBASE);
245 i+=lstrlen(buffer+i);
246 lstrcpy(buffer+i,"--- Creation Files ---\r\n");
247 i+=lstrlen(buffer+i);
248 sprintf(buffer+i,"%s.pj … Creation Files\r\n",NewProjectInfo.name);
249 i+=lstrlen(buffer+i);
250 sprintf(buffer+i,"%s.idx … Index file\r\n",NewProjectInfo.name);
251 i+=lstrlen(buffer+i);
252 sprintf(buffer+i,"%s.ab … Main Source Code file\r\n",NewProjectInfo.name);
253 i+=lstrlen(buffer+i);
254 sprintf(buffer+i,"%s.wrk … Data of Work State\r\n",NewProjectInfo.name);
255 }
256 else if(NewProjectInfo.dwTypeID==IDC_EXE_DIRECTX){
257 sprintf(buffer+i,"%s\r\n\r\n",TEXT_DIRECTX);
258 i+=lstrlen(buffer+i);
259 lstrcpy(buffer+i,"--- Creation Files ---\r\n");
260 i+=lstrlen(buffer+i);
261 sprintf(buffer+i,"%s.pj … Creation Files\r\n",NewProjectInfo.name);
262 i+=lstrlen(buffer+i);
263 sprintf(buffer+i,"%s.idx … Index file\r\n",NewProjectInfo.name);
264 i+=lstrlen(buffer+i);
265 sprintf(buffer+i,"%s.ab … Main Source Code file\r\n",NewProjectInfo.name);
266 i+=lstrlen(buffer+i);
267 lstrcpy(buffer+i,"dx_graphics.sbp … DirectGraphics is supported at this source file\r\n");
268 i+=lstrlen(buffer+i);
269 lstrcpy(buffer+i,"dx_input.sbp … DirectInput is supported at this source file\r\n");
270 i+=lstrlen(buffer+i);
271 lstrcpy(buffer+i,"dx_music.sbp … DirectMusic is supported at this source file\r\n");
272 i+=lstrlen(buffer+i);
273 sprintf(buffer+i,"%s.wrk … Data of Work State\r\n",NewProjectInfo.name);
274 }
275 else if(NewProjectInfo.dwTypeID==IDC_DLL){
276 sprintf(buffer+i,"%s\r\n\r\n",TEXT_DLL);
277 i+=lstrlen(buffer+i);
278 lstrcpy(buffer+i,"--- Creation Files ---\r\n");
279 i+=lstrlen(buffer+i);
280 sprintf(buffer+i,"%s.pj … Creation Files\r\n",NewProjectInfo.name);
281 i+=lstrlen(buffer+i);
282 sprintf(buffer+i,"%s.idx … Index file\r\n",NewProjectInfo.name);
283 i+=lstrlen(buffer+i);
284 sprintf(buffer+i,"%s.ab … Main Source Code file\r\n",NewProjectInfo.name);
285 i+=lstrlen(buffer+i);
286 sprintf(buffer+i,"%s.wrk … Data of Work State\r\n",NewProjectInfo.name);
287 }
288#endif
289}
290BOOL CALLBACK DlgNewProject_Page3(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
291 char buffer[GENERAL_SIZE];
292 LPPSHNOTIFY lpPshNotify;
293 switch(message){
294 case WM_NOTIFY:
295 lpPshNotify=(LPPSHNOTIFY)lParam;
296 switch(lpPshNotify->hdr.code){
297 case PSN_SETACTIVE:
298 PropSheet_SetWizButtons(GetParent(hwnd),PSWIZB_FINISH|PSWIZB_BACK);
299
300 GetCheckTextBuffer(buffer);
301
302 SetDlgItemText(hwnd,IDC_PROJECTINFO,buffer);
303 SetTimer(hwnd,1,10,0);
304 return 1;
305 case PSN_WIZFINISH:
306 MakeNewProject();
307 return 1;
308 }
309 break;
310 case WM_TIMER:
311 KillTimer(hwnd,1);
312 SendDlgItemMessage(hwnd,IDC_PROJECTINFO,EM_SETSEL,0,0);
313 return 1;
314 }
315 return 0;
316}
317BOOL CALLBACK DlgNewProject_Page2(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
318 extern NEWPROJECTINFO NewProjectInfo;
319 LPPSHNOTIFY lpPshNotify;
320 switch(message){
321 case WM_INITDIALOG:
322
323 break;
324 case WM_NOTIFY:
325 lpPshNotify=(LPPSHNOTIFY)lParam;
326 switch(lpPshNotify->hdr.code){
327 case PSN_SETACTIVE:
328 //DirectXアプリのときはMMSYSをチェック
329 if(NewProjectInfo.dwTypeID==IDC_EXE_DIRECTX){
330 SendDlgItemMessage(hwnd,IDC_API_MMSYS,BM_SETCHECK,BST_CHECKED,0);
331 EnableWindow(GetDlgItem(hwnd,IDC_API_MMSYS),0);
332 }
333 else{
334 EnableWindow(GetDlgItem(hwnd,IDC_API_MMSYS),1);
335 }
336
337 PropSheet_SetWizButtons(GetParent(hwnd),PSWIZB_NEXT|PSWIZB_BACK);
338 return 1;
339 case PSN_WIZNEXT:
340 NewProjectInfo.dwOption=PJ_OP_RC_MANIFEST;
341 if(SendDlgItemMessage(hwnd,IDC_UNICODE,BM_GETCHECK,0,0))
342 NewProjectInfo.dwOption|=PJ_OP_UNICODE;
343 if(SendDlgItemMessage(hwnd,IDC_API_COMMCTRL,BM_GETCHECK,0,0))
344 NewProjectInfo.dwOption|=PJ_OP_COMMCTRL;
345 if(SendDlgItemMessage(hwnd,IDC_API_MMSYS,BM_GETCHECK,0,0))
346 NewProjectInfo.dwOption|=PJ_OP_MMSYSTEM;
347 if(SendDlgItemMessage(hwnd,IDC_API_RICHEDIT,BM_GETCHECK,0,0))
348 NewProjectInfo.dwOption|=PJ_OP_RICHEDIT;
349 if(SendDlgItemMessage(hwnd,IDC_API_WINSOCK,BM_GETCHECK,0,0))
350 NewProjectInfo.dwOption|=PJ_OP_WINSOCK;
351 return 1;
352 }
353 break;
354 }
355 return 0;
356}
357void AppImage_ShowOrHide(HWND hDlg,int id){
358 int nCmd;
359
360 if(id==IDC_EXE_WINDOWBASE) nCmd=SW_SHOW;
361 else nCmd=SW_HIDE;
362 ShowWindow(GetDlgItem(hDlg,IDC_IMAGE_WINDOW),nCmd);
363
364 if(id==IDC_EXE_PROMPTBASE) nCmd=SW_SHOW;
365 else nCmd=SW_HIDE;
366 ShowWindow(GetDlgItem(hDlg,IDC_IMAGE_PROMPT),nCmd);
367
368 if(id==IDC_EXE_DOSPROMPTBASE) nCmd=SW_SHOW;
369 else nCmd=SW_HIDE;
370 ShowWindow(GetDlgItem(hDlg,IDC_IMAGE_DOSPROMPT),nCmd);
371
372 if(id==IDC_EXE_NOBASE) nCmd=SW_SHOW;
373 else nCmd=SW_HIDE;
374 ShowWindow(GetDlgItem(hDlg,IDC_IMAGE_NON),nCmd);
375
376 if(id==IDC_EXE_DIRECTX) nCmd=SW_SHOW;
377 else nCmd=SW_HIDE;
378 ShowWindow(GetDlgItem(hDlg,IDC_IMAGE_DIRECTX),nCmd);
379}
380BOOL CALLBACK DlgNewProject_Page1(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
381 extern NEWPROJECTINFO NewProjectInfo;
382 int i;
383 char temporary[MAX_PATH];
384 LPPSHNOTIFY lpPshNotify;
385
386 switch(message){
387 case WM_INITDIALOG:
388 SetPosCenter(GetParent(hwnd));
389
390 SetDlgItemText(hwnd,IDC_DIRPATH,pobj_nv->ProjectSaveDir);
391 SendDlgItemMessage(hwnd,IDC_EXE_WINDOWBASE,BM_SETCHECK,BST_CHECKED,0);
392 SetDlgItemText(hwnd,IDC_HELPTEXT_OFBASE,TEXT_BASE_NORMAL);
393 break;
394 case WM_COMMAND:
395 if(HIWORD(wParam)==EN_CHANGE){
396 if(GetWindowTextLength(GetDlgItem(hwnd,IDC_PROJECTNAME))==0||
397 GetWindowTextLength(GetDlgItem(hwnd,IDC_DIRPATH))==0){
398 PropSheet_SetWizButtons(GetParent(hwnd),0);
399 }
400 else PropSheet_SetWizButtons(GetParent(hwnd),PSWIZB_NEXT);
401 }
402 switch(LOWORD(wParam)){
403 case IDC_PATHBROWSE:
404 //"ディレクトリを選択して下さい"
405 if(!GetFolder(hwnd,temporary,STRING_DIRECTORY_SELECT)) return 1;
406 SetDlgItemText(hwnd,IDC_DIRPATH,temporary);
407 return 1;
408 case IDC_EXE_WINDOWBASE:
409 AppImage_ShowOrHide(hwnd,LOWORD(wParam));
410
411 SetDlgItemText(hwnd,IDC_HELPTEXT_OFBASE,TEXT_BASE_NORMAL);
412 EnableWindow(GetDlgItem(hwnd,IDC_SHOWHELLOWORLD),1);
413 return 1;
414 case IDC_EXE_PROMPTBASE:
415 AppImage_ShowOrHide(hwnd,LOWORD(wParam));
416
417 SetDlgItemText(hwnd,IDC_HELPTEXT_OFBASE,TEXT_BASE_PROMPT);
418 EnableWindow(GetDlgItem(hwnd,IDC_SHOWHELLOWORLD),1);
419 return 1;
420 case IDC_EXE_DOSPROMPTBASE:
421 AppImage_ShowOrHide(hwnd,LOWORD(wParam));
422
423 SetDlgItemText(hwnd,IDC_HELPTEXT_OFBASE,TEXT_BASE_DOSPROMPT);
424 EnableWindow(GetDlgItem(hwnd,IDC_SHOWHELLOWORLD),1);
425 return 1;
426 case IDC_EXE_NOBASE:
427 AppImage_ShowOrHide(hwnd,LOWORD(wParam));
428
429 SetDlgItemText(hwnd,IDC_HELPTEXT_OFBASE,TEXT_NOBASE);
430 EnableWindow(GetDlgItem(hwnd,IDC_SHOWHELLOWORLD),0);
431 return 1;
432 case IDC_EXE_DIRECTX:
433 AppImage_ShowOrHide(hwnd,LOWORD(wParam));
434
435 SetDlgItemText(hwnd,IDC_HELPTEXT_OFBASE,TEXT_DIRECTX);
436 EnableWindow(GetDlgItem(hwnd,IDC_SHOWHELLOWORLD),0);
437 return 1;
438 case IDC_DLL:
439 AppImage_ShowOrHide(hwnd,LOWORD(wParam));
440
441 SetDlgItemText(hwnd,IDC_HELPTEXT_OFBASE,TEXT_DLL);
442 EnableWindow(GetDlgItem(hwnd,IDC_SHOWHELLOWORLD),0);
443 return 1;
444 case IDC_SLL:
445 AppImage_ShowOrHide(hwnd,LOWORD(wParam));
446
447 SetDlgItemText(hwnd,IDC_HELPTEXT_OFBASE,TEXT_SLL);
448 EnableWindow(GetDlgItem(hwnd,IDC_SHOWHELLOWORLD),0);
449 return 1;
450 }
451 break;
452 case WM_NOTIFY:
453 lpPshNotify=(LPPSHNOTIFY)lParam;
454 switch(lpPshNotify->hdr.code){
455 case PSN_SETACTIVE:
456 SendMessage(hwnd,WM_COMMAND,MAKELONG(0,EN_CHANGE),0);
457 return 1;
458 case PSN_WIZNEXT:
459 GetDlgItemText(hwnd,IDC_PROJECTNAME,NewProjectInfo.name,MAX_PATH);
460 if(!IsVariableTopChar(NewProjectInfo.name[0])){
461 //"プロジェクト名の先頭文字はアルファベット(A~Z、a~z)またはアンダーバー(_)でなければなりません。"
462 MessageBox(hwnd,STRING_ERROR_PROJECTTOPCHAR,STRING_ERROR,MB_OK|MB_ICONEXCLAMATION);
463 SetWindowLongPtr(hwnd,DWLP_MSGRESULT,-1);
464 return 1;
465 }
466 for(i=1;;i++){
467 if(NewProjectInfo.name[i]=='\0') break;
468 if(!IsVariableChar(NewProjectInfo.name[i])){
469 //"プロジェクト名に不正な文字コードが含まれています。"
470 MessageBox(hwnd,STRING_ERROR_PROJECTNAME,STRING_ERROR,MB_OK|MB_ICONEXCLAMATION);
471 SetWindowLongPtr(hwnd,DWLP_MSGRESULT,-1);
472 return 1;
473 }
474 }
475 GetDlgItemText(hwnd,IDC_DIRPATH,pobj_nv->ProjectSaveDir,MAX_PATH);
476
477 //ベース選択
478 if(SendDlgItemMessage(hwnd,IDC_EXE_WINDOWBASE,BM_GETCHECK,0,0))
479 NewProjectInfo.dwTypeID=IDC_EXE_WINDOWBASE;
480 else if(SendDlgItemMessage(hwnd,IDC_EXE_PROMPTBASE,BM_GETCHECK,0,0))
481 NewProjectInfo.dwTypeID=IDC_EXE_PROMPTBASE;
482 else if(SendDlgItemMessage(hwnd,IDC_EXE_DOSPROMPTBASE,BM_GETCHECK,0,0))
483 NewProjectInfo.dwTypeID=IDC_EXE_DOSPROMPTBASE;
484 else if(SendDlgItemMessage(hwnd,IDC_EXE_NOBASE,BM_GETCHECK,0,0))
485 NewProjectInfo.dwTypeID=IDC_EXE_NOBASE;
486 else if(SendDlgItemMessage(hwnd,IDC_EXE_DIRECTX,BM_GETCHECK,0,0))
487 NewProjectInfo.dwTypeID=IDC_EXE_DIRECTX;
488 else if(SendDlgItemMessage(hwnd,IDC_DLL,BM_GETCHECK,0,0))
489 NewProjectInfo.dwTypeID=IDC_DLL;
490 else if(SendDlgItemMessage(hwnd,IDC_SLL,BM_GETCHECK,0,0))
491 NewProjectInfo.dwTypeID=IDC_SLL;
492
493 //"Hello World!"を表示するか
494 if(SendDlgItemMessage(hwnd,IDC_SHOWHELLOWORLD,BM_GETCHECK,0,0)) NewProjectInfo.ShowHelloWorld=1;
495 else NewProjectInfo.ShowHelloWorld=0;
496 return 1;
497 }
498 break;
499 }
500 return 0;
501}
502void DlgNewProjectWizard(HWND hwnd){
503#define MAX_NEWPROJECTPAGE 3
504 PROPSHEETHEADER psh;
505 PROPSHEETPAGE psp;
506 HPROPSHEETPAGE hpsp[MAX_NEWPROJECTPAGE];
507 int i;
508
509 psp.dwSize=sizeof(PROPSHEETPAGE);
510 psp.hInstance=hResInst;
511 psp.dwFlags=PSP_DEFAULT;
512
513 //各ページのセッティング
514 i=0;
515 psp.pszTemplate=MAKEINTRESOURCE(IDD_NEWPROJECT_PAGE1);
516 psp.pfnDlgProc=(DLGPROC)DlgNewProject_Page1;
517 hpsp[i]=CreatePropertySheetPage(&psp);
518 i++;
519 psp.pszTemplate=MAKEINTRESOURCE(IDD_NEWPROJECT_PAGE2);
520 psp.pfnDlgProc=(DLGPROC)DlgNewProject_Page2;
521 hpsp[i]=CreatePropertySheetPage(&psp);
522 i++;
523 psp.pszTemplate=MAKEINTRESOURCE(IDD_NEWPROJECT_PAGE3);
524 psp.pfnDlgProc=(DLGPROC)DlgNewProject_Page3;
525 hpsp[i]=CreatePropertySheetPage(&psp);
526
527 memset(&psh,0,sizeof(PROPSHEETHEADER));
528 psh.dwSize=sizeof(PROPSHEETHEADER);
529 psh.dwFlags=PSH_WIZARD;
530 psh.phpage=hpsp;
531 psh.hwndParent=hwnd;
532 psh.nPages=MAX_NEWPROJECTPAGE;
533 PropertySheet(&psh);
534}
535
536#define CATEGORY_TEXT_BASIC "Basic"
537#define CATEGORY_TEXT_TEXT "テキスト"
538#define CATEGORY_TEXT_OTHER "その他"
539
540#define CATEGORY_BASIC 1
541#define CATEGORY_TEXT 2
542#define CATEGORY_OTHER 3
543void ResetNewFileTypeListView(HWND hListView,int fCategory){
544 ListView_DeleteAllItems(hListView);
545
546 LV_ITEM lvItem;
547 lvItem.mask = LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM;
548 lvItem.iItem=0;
549 lvItem.iSubItem=0;
550
551 if(fCategory==CATEGORY_BASIC){
552 lvItem.pszText="Basic ソース ファイル";
553 lvItem.iImage=0;
554 lvItem.lParam=FT_BASICPROGRAM;
555 ListView_InsertItem(hListView,&lvItem);
556 lvItem.iItem++;
557
558 lvItem.pszText="プロジェクト";
559 lvItem.iImage=2;
560 lvItem.lParam=FT_PROJECT;
561 ListView_InsertItem(hListView,&lvItem);
562 }
563 else if(fCategory==CATEGORY_TEXT){
564 lvItem.pszText="テキスト ファイル";
565 lvItem.iImage=3;
566 lvItem.lParam=FT_TEXT;
567 ListView_InsertItem(hListView,&lvItem);
568 lvItem.iItem++;
569
570 lvItem.pszText="HTML ファイル";
571 lvItem.iImage=4;
572 lvItem.lParam=FT_HTML;
573 ListView_InsertItem(hListView,&lvItem);
574 }
575 else if(fCategory==CATEGORY_OTHER){
576 lvItem.pszText="アイコン ファイル";
577 lvItem.iImage=5;
578 lvItem.lParam=FT_ICON;
579 ListView_InsertItem(hListView,&lvItem);
580 }
581
582 ListView_SetItemState(hListView,0,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
583}
584
585#ifndef THETEXT
586BOOL CALLBACK DlgNewFile(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
587 extern char NewFileName[MAX_PATH];
588
589 static HIMAGELIST hImageList;
590 static HWND hTree;
591 static HWND hListView;
592 int i;
593 LVITEM lvItem;
594 switch(message){
595 case WM_INITDIALOG:
596 SetPosCenter(hwnd);
597
598
599 ///////////////////////////////////
600 // カテゴリツリービューを初期化
601 ///////////////////////////////////
602 HTREEITEM hBasicTreeItem;
603
604 hTree=GetDlgItem(hwnd,IDC_CATEGORY_TREE);
605
606 TV_INSERTSTRUCT tv;
607 tv.hInsertAfter=TVI_LAST;
608 tv.item.mask=TVIF_TEXT;
609 tv.hParent=TVI_ROOT;
610
611 tv.item.pszText=CATEGORY_TEXT_BASIC;
612 hBasicTreeItem=TreeView_InsertItem(hTree,&tv);
613 tv.item.pszText=CATEGORY_TEXT_TEXT;
614 TreeView_InsertItem(hTree,&tv);
615 tv.item.pszText=CATEGORY_TEXT_OTHER;
616 TreeView_InsertItem(hTree,&tv);
617
618 TreeView_SelectItem(hTree,hBasicTreeItem);
619
620
621
622 /////////////////////////////////////////
623 // ファイルタイプ リストビューを初期化
624 /////////////////////////////////////////
625
626 hListView=GetDlgItem(hwnd,IDC_FILETYPELIST);
627
628 hImageList=ImageList_Create(32, 32, ILC_COLOR24|ILC_MASK, 6, 0);
629 ListView_SetImageList(hListView, hImageList, LVSIL_NORMAL);
630 ImageList_AddIcon(hImageList, LoadIcon(hInst, MAKEINTRESOURCE(IDI_FILE_BAS)));
631 ImageList_AddIcon(hImageList, LoadIcon(hInst, MAKEINTRESOURCE(IDI_FILE_SBP)));
632 ImageList_AddIcon(hImageList, LoadIcon(hResInst, MAKEINTRESOURCE(IDI_NEWFILE_PJ)));
633 ImageList_AddIcon(hImageList, LoadIcon(hResInst, MAKEINTRESOURCE(IDI_NEWFILE_TEXT)));
634 ImageList_AddIcon(hImageList, LoadIcon(hResInst, MAKEINTRESOURCE(IDI_NEWFILE_HTML)));
635 ImageList_AddIcon(hImageList, LoadIcon(hResInst, MAKEINTRESOURCE(IDI_NEWFILE_ICON)));
636
637
638 ResetNewFileTypeListView(hListView,CATEGORY_BASIC);
639
640
641 SetFocus(GetDlgItem(hwnd,IDC_FILETYPELIST));
642
643 if( projectInfo.IsOpened() ){
644 SendDlgItemMessage(hwnd,IDC_ADDTOPROJECT,BM_SETCHECK,BST_CHECKED,0);
645 }
646
647 SendMessage(hwnd,WM_COMMAND,IDC_ADDTOPROJECT,0);
648 break;
649 case WM_COMMAND:
650 switch(LOWORD(wParam)){
651 case IDOK:
652 for(i=0;i<ListView_GetItemCount(hListView);i++){
653 if(ListView_GetItemState(hListView,i,LVIS_SELECTED)){
654 lvItem.mask=LVIF_PARAM;
655 lvItem.iItem=i;
656 lvItem.iSubItem=0;
657 ListView_GetItem(hListView,&lvItem);
658 break;
659 }
660 }
661 if(i==ListView_GetItemCount(hListView)) return 1;
662
663 //ファイルタイプ
664 i=lvItem.lParam;
665
666 //プロジェクトへ追加するかどうか
667 if(IsWindowEnabled(GetDlgItem(hwnd,IDC_ADDTOPROJECT))){
668 if(SendDlgItemMessage(hwnd,IDC_ADDTOPROJECT,BM_GETCHECK,0,0)){
669 i|=0x00008000;
670 GetDlgItemText(hwnd,IDC_FILENAME,NewFileName,MAX_PATH);
671
672 if(NewFileName[0]=='\0'){
673 MessageBox(hwnd,"ファイル名を入力してください。",APPLICATION_NAME,MB_OK);
674 return 1;
675 }
676 }
677 }
678
679 EndDialog(hwnd,i);
680 return 1;
681 case IDCANCEL:
682 EndDialog(hwnd,-1);
683 return 1;
684 case IDC_ADDTOPROJECT:
685 if(IsWindowEnabled(GetDlgItem(hwnd,IDC_ADDTOPROJECT))&&
686 SendDlgItemMessage(hwnd,IDC_ADDTOPROJECT,BM_GETCHECK,0,0)){
687 EnableWindow(GetDlgItem(hwnd,IDC_FILENAME),1);
688 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_FILENAME),1);
689 }
690 else{
691 EnableWindow(GetDlgItem(hwnd,IDC_FILENAME),0);
692 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_FILENAME),0);
693 }
694 return 1;
695 }
696 break;
697
698 case WM_NOTIFY:
699 NMHDR *hdr;
700 hdr=(NMHDR *)lParam;
701 if(hdr->hwndFrom==hTree&&hdr->code==TVN_SELCHANGED){
702 NMTREEVIEW *lpnmTree;
703 lpnmTree=(NMTREEVIEW *)lParam;
704
705 char temporary[255];
706 TVITEM tvItem;
707 tvItem.mask=TVIF_TEXT|TVIF_HANDLE;
708 tvItem.hItem=lpnmTree->itemNew.hItem;
709 tvItem.pszText=temporary;
710 tvItem.cchTextMax=255;
711 TreeView_GetItem(hTree,&tvItem);
712
713 if(lstrcmpi(tvItem.pszText,CATEGORY_TEXT_BASIC)==0)
714 ResetNewFileTypeListView(hListView,CATEGORY_BASIC);
715 else if(lstrcmpi(tvItem.pszText,CATEGORY_TEXT_TEXT)==0)
716 ResetNewFileTypeListView(hListView,CATEGORY_TEXT);
717 else if(lstrcmpi(tvItem.pszText,CATEGORY_TEXT_OTHER)==0)
718 ResetNewFileTypeListView(hListView,CATEGORY_OTHER);
719 }
720 if(hdr->hwndFrom==hListView){
721 if(hdr->code==LVN_ITEMCHANGED){
722 for(i=0;i<ListView_GetItemCount(hListView);i++){
723 if(ListView_GetItemState(hListView,i,LVIS_SELECTED)){
724 lvItem.mask=LVIF_PARAM;
725 lvItem.iItem=i;
726 lvItem.iSubItem=0;
727 ListView_GetItem(hListView,&lvItem);
728 break;
729 }
730 }
731 if(i!=ListView_GetItemCount(hListView)&& projectInfo.IsOpened() &&(
732 lvItem.lParam==FT_BASICPROGRAM||
733 lvItem.lParam==FT_SUBPROGRAM
734 )){
735 EnableWindow(GetDlgItem(hwnd,IDC_ADDTOPROJECT),1);
736 }
737 else EnableWindow(GetDlgItem(hwnd,IDC_ADDTOPROJECT),0);
738
739 SendMessage(hwnd,WM_COMMAND,IDC_ADDTOPROJECT,0);
740 }
741 else if(hdr->code==NM_DBLCLK){
742 SendMessage(hwnd,WM_COMMAND,IDOK,0);
743 }
744 }
745 return 0;
746
747 case WM_DESTROY:
748 ImageList_Destroy(hImageList);
749 return 0;
750 }
751 return 0;
752}
753#endif
754
755
756//プロジェクトオプション項目
757#define MAX_PJSETDLG 4
758DWORD temp_dwPjOption;
759char temp_lpszOutputRelease[MAX_PATH];
760char temp_lpszOutputDebug[MAX_PATH];
761char temp_szManifestPath[MAX_PATH];
762char temp_szDebugCmdLine[8192];
763char temp_szDebugExePath[MAX_PATH];
764
765void SaveSetting_DlgPjOption(void){
766 if(SetSwitch[0]){
767 //出力ファイル
768 lstrcpy(projectInfo.lpszOutput_Release,temp_lpszOutputRelease);
769 lstrcpy(projectInfo.lpszOutput_Debug,temp_lpszOutputDebug);
770
771 //コメントの有無
772 projectInfo.dwOption=temp_dwPjOption;
773 }
774 if(SetSwitch[1]){
775 //Win32API
776 projectInfo.dwOption=temp_dwPjOption;
777 }
778 if(SetSwitch[2]){
779 //マニフェスト
780
781 //パス
782 lstrcpy(projectInfo.szManifestPath,temp_szManifestPath);
783
784 projectInfo.dwOption=temp_dwPjOption;
785
786 projectInfo.ModifuOfResource=1;
787 }
788 if(SetSwitch[3]){
789 //デバッグ
790
791 //コマンドライン
792 lstrcpy(projectInfo.szCmdLine,temp_szDebugCmdLine);
793
794 //デバッグセッション用の実行可能ファイル
795 lstrcpy(projectInfo.szExePath,temp_szDebugExePath);
796 }
797
798 projectInfo.modify=1;
799}
800BOOL CALLBACK DlgProjectOption_Whole(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
801 NMHDR *nmhdr;
802
803 switch(message){
804 case WM_INITDIALOG:
805 SetPosCenter(GetParent(hwnd));
806
807 SetSwitch[0]=1;
808
809 //出力ファイル
810 SetDlgItemText(hwnd,IDC_EDIT_RELEASE,projectInfo.lpszOutput_Release);
811 SetDlgItemText(hwnd,IDC_EDIT_DEBUG,projectInfo.lpszOutput_Debug);
812
813 //Unicode
814 if(temp_dwPjOption&PJ_OP_UNICODE)
815 SendDlgItemMessage(hwnd,IDC_UNICODE,BM_SETCHECK,BST_CHECKED,0);
816
817 break;
818 case WM_NOTIFY:
819 nmhdr=(NMHDR *)lParam;
820 if(nmhdr->code==PSN_APPLY||nmhdr->code==PSN_KILLACTIVE){
821 GetDlgItemText(hwnd,IDC_EDIT_RELEASE,temp_lpszOutputRelease,MAX_PATH);
822 GetDlgItemText(hwnd,IDC_EDIT_DEBUG,temp_lpszOutputDebug,MAX_PATH);
823
824 //Unicode
825 if(SendDlgItemMessage(hwnd,IDC_UNICODE,BM_GETCHECK,0,0))
826 temp_dwPjOption|=PJ_OP_UNICODE;
827 else temp_dwPjOption&=~PJ_OP_UNICODE;
828
829 if(nmhdr->code==PSN_APPLY) SaveSetting_DlgPjOption();
830 }
831 return 1;
832 }
833 return 0;
834}
835BOOL CALLBACK DlgProjectOption_Win32API(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
836 NMHDR *nmhdr;
837
838 switch(message){
839 case WM_INITDIALOG:
840 SetSwitch[1]=1;
841
842 if(temp_dwPjOption&PJ_OP_MMSYSTEM)
843 SendDlgItemMessage(hwnd,IDC_API_MMSYS,BM_SETCHECK,BST_CHECKED,0);
844 if(temp_dwPjOption&PJ_OP_COMMCTRL)
845 SendDlgItemMessage(hwnd,IDC_API_COMMCTRL,BM_SETCHECK,BST_CHECKED,0);
846 if(temp_dwPjOption&PJ_OP_RICHEDIT)
847 SendDlgItemMessage(hwnd,IDC_API_RICHEDIT,BM_SETCHECK,BST_CHECKED,0);
848 if(temp_dwPjOption&PJ_OP_WINSOCK)
849 SendDlgItemMessage(hwnd,IDC_API_WINSOCK,BM_SETCHECK,BST_CHECKED,0);
850 break;
851 case WM_NOTIFY:
852 nmhdr=(NMHDR *)lParam;
853 if(nmhdr->code==PSN_APPLY||nmhdr->code==PSN_KILLACTIVE){
854 if(SendDlgItemMessage(hwnd,IDC_API_MMSYS,BM_GETCHECK,0,0))
855 temp_dwPjOption|=PJ_OP_MMSYSTEM;
856 else temp_dwPjOption&=~PJ_OP_MMSYSTEM;
857 if(SendDlgItemMessage(hwnd,IDC_API_COMMCTRL,BM_GETCHECK,0,0))
858 temp_dwPjOption|=PJ_OP_COMMCTRL;
859 else temp_dwPjOption&=~PJ_OP_COMMCTRL;
860 if(SendDlgItemMessage(hwnd,IDC_API_RICHEDIT,BM_GETCHECK,0,0))
861 temp_dwPjOption|=PJ_OP_RICHEDIT;
862 else temp_dwPjOption&=~PJ_OP_RICHEDIT;
863 if(SendDlgItemMessage(hwnd,IDC_API_WINSOCK,BM_GETCHECK,0,0))
864 temp_dwPjOption|=PJ_OP_WINSOCK;
865 else temp_dwPjOption&=~PJ_OP_WINSOCK;
866
867 if(nmhdr->code==PSN_APPLY) SaveSetting_DlgPjOption();
868 }
869 return 1;
870 }
871 return 0;
872}
873BOOL CALLBACK DlgProjectOption_Manifest(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
874 switch(message){
875 case WM_INITDIALOG:
876 SetSwitch[2]=1;
877
878 //パス
879 SetDlgItemText(hwnd,IDC_PATH,projectInfo.szManifestPath);
880
881 //マニフェストをリソースに埋め込む
882 if(temp_dwPjOption&PJ_OP_RC_MANIFEST)
883 SendDlgItemMessage(hwnd,IDC_RC_MANIFEST,BM_SETCHECK,BST_CHECKED,0);
884
885 SendMessage(hwnd,WM_COMMAND,IDC_RC_MANIFEST,0);
886
887 break;
888 case WM_COMMAND:
889 switch(LOWORD(wParam)){
890 case IDC_RC_MANIFEST:
891 if(SendDlgItemMessage(hwnd,IDC_RC_MANIFEST,BM_GETCHECK,0,0)){
892 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_PATH),1);
893 EnableWindow(GetDlgItem(hwnd,IDC_PATH),1);
894 }
895 else{
896 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_PATH),0);
897 EnableWindow(GetDlgItem(hwnd,IDC_PATH),0);
898 }
899 return 1;
900 }
901 break;
902 case WM_NOTIFY:
903 NMHDR *nmhdr;
904 nmhdr=(NMHDR *)lParam;
905 if(nmhdr->code==PSN_APPLY||nmhdr->code==PSN_KILLACTIVE){
906
907 //パス
908 GetDlgItemText(hwnd,IDC_PATH,temp_szManifestPath,MAX_PATH);
909
910 //マニフェストをリソースに埋め込む
911 if(SendDlgItemMessage(hwnd,IDC_RC_MANIFEST,BM_GETCHECK,0,0))
912 temp_dwPjOption|=PJ_OP_RC_MANIFEST;
913 else temp_dwPjOption&=~PJ_OP_RC_MANIFEST;
914
915 if(nmhdr->code==PSN_APPLY) SaveSetting_DlgPjOption();
916 }
917 return 1;
918 }
919 return 0;
920}
921BOOL CALLBACK DlgProjectOption_Debug(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
922 NMHDR *nmhdr;
923 char temporary[MAX_PATH];
924
925 switch(message){
926 case WM_INITDIALOG:
927 SetSwitch[3]=1;
928
929 if( projectInfo.GetModuleType() != ActiveBasic::Common::TargetModuleType::Dll )
930 {
931 EnableWindow(GetDlgItem(hwnd,IDC_EXE_PATH),0);
932 EnableWindow(GetDlgItem(hwnd,IDC_DIR),0);
933 }
934
935 SetDlgItemText(hwnd,IDC_CMD_LINE,projectInfo.szCmdLine);
936 SetDlgItemText(hwnd,IDC_EXE_PATH,projectInfo.szExePath);
937
938 break;
939 case WM_COMMAND:
940 switch(LOWORD(wParam)){
941 case IDC_DIR:
942 extern LPSTR ExeFileFilter;
943 if(!GetFilePathDialog(hwnd,temporary,ExeFileFilter,"DLLデバッグ用の実行可能ファイルを指定してください",1)) break;
944
945 SetDlgItemText(hwnd,IDC_EXE_PATH,temporary);
946 return 1;
947 }
948 break;
949 case WM_NOTIFY:
950 nmhdr=(NMHDR *)lParam;
951 if(nmhdr->code==PSN_APPLY||nmhdr->code==PSN_KILLACTIVE){
952 GetDlgItemText(hwnd,IDC_CMD_LINE,temp_szDebugCmdLine,8192);
953 GetDlgItemText(hwnd,IDC_EXE_PATH,temp_szDebugExePath,MAX_PATH);
954
955 if(nmhdr->code==PSN_APPLY) SaveSetting_DlgPjOption();
956 }
957 return 1;
958 }
959 return 0;
960}
961void DlgProjectOptionSetting(HWND hwnd){
962 PROPSHEETHEADER psh;
963 PROPSHEETPAGE psp[MAX_PJSETDLG];
964 HPROPSHEETPAGE hpsp[MAX_PJSETDLG];
965 int i;
966 memset(&SetSwitch,0,MAX_PJSETDLG);
967
968 //各ページのセッティング
969 i=0;
970 psp[i].dwSize=sizeof(PROPSHEETPAGE);
971 psp[i].dwFlags=PSP_DEFAULT;
972 psp[i].hInstance=hResInst;
973 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_PJ_OPTION1);
974 psp[i].pfnDlgProc=(DLGPROC)DlgProjectOption_Whole;
975 hpsp[i]=CreatePropertySheetPage(&psp[i]);
976 i++;
977 psp[i].dwSize=sizeof(PROPSHEETPAGE);
978 psp[i].dwFlags=PSP_DEFAULT;
979 psp[i].hInstance=hResInst;
980 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_PJ_OPTION2);
981 psp[i].pfnDlgProc=(DLGPROC)DlgProjectOption_Win32API;
982 hpsp[i]=CreatePropertySheetPage(&psp[i]);
983 i++;
984 psp[i].dwSize=sizeof(PROPSHEETPAGE);
985 psp[i].dwFlags=PSP_DEFAULT;
986 psp[i].hInstance=hResInst;
987 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_PJ_OPTION3);
988 psp[i].pfnDlgProc=(DLGPROC)DlgProjectOption_Manifest;
989 hpsp[i]=CreatePropertySheetPage(&psp[i]);
990 i++;
991 psp[i].dwSize=sizeof(PROPSHEETPAGE);
992 psp[i].dwFlags=PSP_DEFAULT;
993 psp[i].hInstance=hResInst;
994 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_PJ_OPTION4);
995 psp[i].pfnDlgProc=(DLGPROC)DlgProjectOption_Debug;
996 hpsp[i]=CreatePropertySheetPage(&psp[i]);
997
998 temp_dwPjOption=projectInfo.dwOption;
999
1000 memset(&psh,0,sizeof(PROPSHEETHEADER));
1001 psh.dwSize=sizeof(PROPSHEETHEADER);
1002 psh.dwFlags=PSH_PROPSHEETPAGE|PSH_NOAPPLYNOW;
1003 psh.phpage=hpsp;
1004 psh.hwndParent=hwnd;
1005 psh.pszCaption=STRING_PROJECTOPTION; //"プロジェクト オプション"
1006 psh.nPages=MAX_PJSETDLG;
1007 psh.nStartPage=0;
1008 psh.ppsp=psp;
1009 PropertySheet(&psh);
1010}
1011
1012
1013/////////////////////
1014// オプション項目
1015/////////////////////
1016
1017BOOL bOptionWhole;
1018BOOL bOptionEditor;
1019BOOL bOptionColor;
1020BOOL bOptionToolbar;
1021BOOL bOptionRad;
1022BOOL bOptionWeb;
1023BOOL temp_bSaveCheckProject;
1024BOOL temp_bLineAdjust;
1025BOOL temp_bSaveTabToHead;
1026LOGFONT temp_lf,temp_HintFont;
1027int temp_TabSize;
1028BOOL temp_bEditor_LineNumber;
1029BOOL temp_bEditor_Ruler;
1030BOOL temp_bEditor_CaretLine_BackGround;
1031int temp_iMaxOneLineTextLength;
1032BOOL temp_bAutoIndent;
1033BOOL temp_bPasteIndent;
1034DWORD temp_dwParameterHint;
1035BOOL temp_bShowComplementWnd;
1036int temp_BackNum_PairStatementComplement;
1037BOOL temp_bSaveFindStr;
1038
1039CTheme obj_temp_Theme;
1040
1041BOOL temp_bCtrlKeyHyperLink;
1042BOOL temp_bSaveWebFindStr;
1043CDBDomain *pobj_temp_DBDomain;
1044
1045void SaveSetting(void){
1046 int i;
1047 if(bOptionWhole){
1048 //実行時の、プロジェクトの保存確認の有無
1049 pobj_nv->bSaveCheckProject=temp_bSaveCheckProject;
1050
1051 //ドキュメントを保存したときにタブを先頭に再配置するかどうか
1052 pobj_nv->bSaveTabToHead=temp_bSaveTabToHead;
1053 }
1054 if(bOptionEditor){
1055 //フォント
1056 pobj_nv->lf=temp_lf;
1057
1058 //タブサイズ
1059 pobj_nv->TabSize=temp_TabSize;
1060
1061 //エディタの行番号を表示するかどうか
1062 pobj_nv->bEditor_LineNumber=temp_bEditor_LineNumber;
1063
1064 //エディタのルーラーを表示するかどうか
1065 pobj_nv->bEditor_Ruler=temp_bEditor_Ruler;
1066
1067 //カーソル行を強調表示するかどうか
1068 pobj_nv->bEditor_CaretLine_BackGround=temp_bEditor_CaretLine_BackGround;
1069
1070 //自動折り返し時の一行あたりの文字数
1071 pobj_nv->iMaxOneLineTextLength=temp_iMaxOneLineTextLength;
1072
1073 //コード補完機能
1074 pobj_nv->bShowComplementWnd=temp_bShowComplementWnd;
1075
1076 pobj_nv->BackNum_PairStatementComplement=temp_BackNum_PairStatementComplement;
1077
1078 //パラメータ ヒント
1079 pobj_nv->dwParameterHint=temp_dwParameterHint;
1080
1081 //パラメータ ヒント フォント
1082 extern METHODCHECKINFO MethodCheckInfo;
1083 MethodCheckInfo.LogFont=temp_HintFont;
1084 DeleteObject(MethodCheckInfo.hFont);
1085 DeleteObject(MethodCheckInfo.hBoldFont);
1086
1087 MethodCheckInfo.hFont=CreateFontIndirect(&MethodCheckInfo.LogFont);
1088 i=MethodCheckInfo.LogFont.lfWeight;
1089 MethodCheckInfo.LogFont.lfWeight=FW_BOLD;
1090 MethodCheckInfo.hBoldFont=CreateFontIndirect(&MethodCheckInfo.LogFont);
1091 MethodCheckInfo.LogFont.lfWeight=i;
1092
1093 //自動インデント
1094 pobj_nv->bAutoIndent=temp_bAutoIndent;
1095
1096 //貼り付け時のインデント調整
1097 pobj_nv->bPasteIndent=temp_bPasteIndent;
1098
1099 //検索・置換文字列を保存するかどうか
1100 pobj_nv->bSaveFindStr=temp_bSaveFindStr;
1101
1102 RedrawAllWindow(); //すべてのウィンドウを再描画
1103 }
1104 if(bOptionColor){
1105 //カラーデザインを更新
1106 CTheme *pobj_Theme;
1107 pobj_Theme=pobj_DBTheme->dupli_check(obj_temp_Theme.m_name);
1108 *pobj_Theme=obj_temp_Theme;
1109 if(lstrcmp(pobj_Theme->m_name,THEMENAME_USER)==0){
1110 //ユーザー設定の場合は自動的にファイルに保存する
1111 pobj_Theme->save();
1112 }
1113
1114 //再描画
1115 SetTextEditColorDesign(&tci,pobj_Theme,1);
1116 }
1117 if(bOptionRad){
1118 //ライン アジャスタ
1119 pobj_nv->bLineAdjust=temp_bLineAdjust;
1120 }
1121 if(bOptionWeb){
1122 pobj_nv->bCtrlKeyHyperLink=temp_bCtrlKeyHyperLink;
1123
1124 pobj_nv->bSaveWebFindStr=temp_bSaveWebFindStr;
1125
1126 //Web検索
1127 pobj_nv->pobj_DBDomain->copy_get(pobj_temp_DBDomain);
1128
1129 //SideWebウィンドウを再表示
1130 //delete pobj_SideWeb;
1131 //pobj_SideWeb=new CSideWeb(hOwner);
1132 //ActiveBasic::IDE::Program::mainFrame.Resized();
1133 }
1134 return;
1135}
1136BOOL CALLBACK Dlg_Option_Whole(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1137 NMHDR *nmhdr;
1138 switch(message){
1139 case WM_INITDIALOG:
1140 SetPosCenter(GetParent(hwnd));
1141
1142 bOptionWhole=1;
1143
1144 //実行時の、プロジェクトの保存確認の有無
1145 if(pobj_nv->bSaveCheckProject) SendDlgItemMessage(hwnd,IDC_SAVECHECK,BM_SETCHECK,BST_CHECKED,0);
1146
1147 //ドキュメントを保存したときにタブを先頭に再配置するかどうか
1148 if(pobj_nv->bSaveTabToHead) SendDlgItemMessage(hwnd,IDC_SAVE_TAB_TO_HEAD,BM_SETCHECK,BST_CHECKED,0);
1149
1150 break;
1151 case WM_COMMAND:
1152 switch(LOWORD(wParam)){
1153 case IDC_LINKFILE:
1154 ExtensionLink(hwnd);
1155 return 1;
1156 }
1157 break;
1158 case WM_NOTIFY:
1159 nmhdr=(NMHDR *)lParam;
1160 if(nmhdr->code==PSN_APPLY||nmhdr->code==PSN_KILLACTIVE){
1161 //実行時の、プロジェクトの保存確認の有無
1162 if(SendDlgItemMessage(hwnd,IDC_SAVECHECK,BM_GETCHECK,0,0)) temp_bSaveCheckProject=1;
1163 else temp_bSaveCheckProject=0;
1164
1165 //ドキュメントを保存したときにタブを先頭に再配置するかどうか
1166 if(SendDlgItemMessage(hwnd,IDC_SAVE_TAB_TO_HEAD,BM_GETCHECK,0,0)) temp_bSaveTabToHead=1;
1167 else temp_bSaveTabToHead=0;
1168
1169 if(nmhdr->code==PSN_APPLY) SaveSetting();
1170 }
1171 return 1;
1172 case WM_HELP:
1173 HELPINFO *lpHelpInfo;
1174 lpHelpInfo = (HELPINFO *)lParam;
1175
1176 HH_POPUP hp;
1177 memset(&hp, 0, sizeof(HH_POPUP));
1178 hp.cbStruct = sizeof(HH_POPUP);
1179 hp.pt.x = lpHelpInfo->MousePos.x;
1180 hp.pt.y = lpHelpInfo->MousePos.y+10;
1181 hp.clrForeground = RGB(0, 0, 0);
1182 hp.clrBackground = -1;
1183 hp.rcMargins.left = -1;
1184 hp.rcMargins.right = -1;
1185 hp.rcMargins.top = -1;
1186 hp.rcMargins.bottom = -1;
1187 hp.idString = 0;
1188 hp.pszFont="MS Sans Serif,10";
1189
1190 switch(lpHelpInfo->iCtrlId){
1191 case IDC_SAVECHECK:
1192#if defined(JPN)
1193 //日本語
1194 hp.pszText="このチェックボックスをオンにすると、プロジェクトが未保存の状態であるとき、コンパイル時に保存確認のダイアログボックスが表示されるようになります。\nチェックをオフにすると、プロジェクトはコンパイル時に自動的に保存されます(デフォルトはオフです)。";
1195#else
1196 //英語
1197 hp.pszText="When the compiling button is clicked, if this check is on, the DialogBox to save modification is displayed.\nIf this check is off, the project is saved automatically(Default).";
1198#endif
1199 break;
1200 case IDC_LINKFILE:
1201#if defined(JPN)
1202 //日本語
1203 hp.pszText="ファイルの関連付けを行います。";
1204#else
1205 //英語
1206 hp.pszText="Relate the files.";
1207#endif
1208 break;
1209 default:
1210 hp.pszText="";
1211 break;
1212 }
1213 HtmlHelp(hwnd, 0, HH_DISPLAY_TEXT_POPUP, (DWORD)&hp);
1214 return 1;
1215 }
1216 return 0;
1217}
1218BOOL CALLBACK Dlg_Option_Editor(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1219 extern METHODCHECKINFO MethodCheckInfo;
1220 char str[255];
1221 NMHDR *nmhdr;
1222 switch(message){
1223 case WM_INITDIALOG:
1224 bOptionEditor=1;
1225
1226 //フォント
1227 sprintf(str,"%s",pobj_nv->lf.lfFaceName);
1228 SetDlgItemText(hwnd,IDC_SETFONT,str);
1229 temp_lf=pobj_nv->lf;
1230
1231 //タブサイズ
1232 sprintf(str,"%d",pobj_nv->TabSize);
1233 SetDlgItemText(hwnd,IDC_TABSIZE,str);
1234
1235 //エディタの行番号を表示するかどうか
1236 if(pobj_nv->bEditor_LineNumber) SendDlgItemMessage(hwnd,IDC_LINENUMBER,BM_SETCHECK,BST_CHECKED,0);
1237
1238 //エディタのルーラーを表示するかどうか
1239 if(pobj_nv->bEditor_Ruler) SendDlgItemMessage(hwnd,IDC_RULER,BM_SETCHECK,BST_CHECKED,0);
1240
1241 //カーソル行を強調表示するかどうか
1242 if(pobj_nv->bEditor_CaretLine_BackGround) SendDlgItemMessage(hwnd,IDC_CARETLINE_BACKGROUND,BM_SETCHECK,BST_CHECKED,0);
1243
1244#ifdef THETEXT
1245 //自動折り返し時の一行あたりの文字数
1246 sprintf(str,"%d",pobj_nv->iMaxOneLineTextLength);
1247 SetDlgItemText(hwnd,IDC_MAX_ONELINE_TEXT_LENGTH,str);
1248#endif
1249
1250 //自動インデント
1251 if(pobj_nv->bAutoIndent) SendDlgItemMessage(hwnd,IDC_ISAUTOINDENT,BM_SETCHECK,BST_CHECKED,0);
1252
1253 //貼り付け時のインデント調整
1254 if(pobj_nv->bPasteIndent) SendDlgItemMessage(hwnd,IDC_PASTEINDENT,BM_SETCHECK,BST_CHECKED,0);
1255
1256 //コード補完
1257 if(pobj_nv->bShowComplementWnd)
1258 SendDlgItemMessage(hwnd,IDC_COMPLEMENT,BM_SETCHECK,BST_CHECKED,0);
1259
1260 //ペアステートメント補完
1261 SendDlgItemMessage(hwnd,IDC_BACKNUM,EM_SETLIMITTEXT,4,0);
1262 if(pobj_nv->BackNum_PairStatementComplement){
1263 SendDlgItemMessage(hwnd,IDC_PAIRSTATEMENT,BM_SETCHECK,BST_CHECKED,0);
1264 sprintf(str,"%d",pobj_nv->BackNum_PairStatementComplement);
1265 SetDlgItemText(hwnd,IDC_BACKNUM,str);
1266 }
1267
1268 SendMessage(hwnd,WM_COMMAND,IDC_COMPLEMENT,0);
1269
1270 //パラメータ ヒント
1271 if(pobj_nv->dwParameterHint){
1272 SendDlgItemMessage(hwnd,IDC_PARAMHINT,BM_SETCHECK,BST_CHECKED,0);
1273 if(pobj_nv->dwParameterHint==1)
1274 SendDlgItemMessage(hwnd,IDC_POPUP,BM_SETCHECK,BST_CHECKED,0);
1275 else
1276 SendDlgItemMessage(hwnd,IDC_STATUSBAR,BM_SETCHECK,BST_CHECKED,0);
1277 SendMessage(hwnd,WM_COMMAND,IDC_PARAMHINT,0);
1278 }
1279 else SendDlgItemMessage(hwnd,IDC_POPUP,BM_SETCHECK,BST_CHECKED,0);
1280
1281 //パラメータ ヒント フォント
1282 sprintf(str,"%s",MethodCheckInfo.LogFont.lfFaceName);
1283 SetDlgItemText(hwnd,IDC_HINTFONT,str);
1284 temp_HintFont=MethodCheckInfo.LogFont;
1285
1286 //検索・置換文字列を保存するかどうか
1287 if(pobj_nv->bSaveFindStr) SendDlgItemMessage(hwnd,IDC_SAVE_FINDSTR,BM_SETCHECK,BST_CHECKED,0);
1288
1289 break;
1290 case WM_COMMAND:
1291 switch(LOWORD(wParam)){
1292 case IDC_SETFONT:
1293 if(!SetFontDialog(hwnd,&temp_lf,1)) return 1;
1294 sprintf(str,"%s",temp_lf.lfFaceName);
1295 SetDlgItemText(hwnd,IDC_SETFONT,str);
1296 return 1;
1297 case IDC_HINTFONT:
1298 if(!SetFontDialog(hwnd,&temp_HintFont,0)) return 1;
1299 sprintf(str,"%s",temp_HintFont.lfFaceName);
1300 SetDlgItemText(hwnd,IDC_HINTFONT,str);
1301 return 1;
1302
1303 case IDC_ISAUTOINDENT:
1304 case IDC_COMPLEMENT:
1305 if(SendDlgItemMessage(hwnd,IDC_ISAUTOINDENT,BM_GETCHECK,0,0)&&
1306 SendDlgItemMessage(hwnd,IDC_COMPLEMENT,BM_GETCHECK,0,0)){
1307 EnableWindow(GetDlgItem(hwnd,IDC_PAIRSTATEMENT),1);
1308 SendMessage(hwnd,WM_COMMAND,IDC_PAIRSTATEMENT,0);
1309 }
1310 else{
1311 EnableWindow(GetDlgItem(hwnd,IDC_PAIRSTATEMENT),0);
1312 EnableWindow(GetDlgItem(hwnd,IDC_BACKNUM),0);
1313 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_PAIRSTATEMENT),0);
1314 }
1315 return 1;
1316
1317 case IDC_PAIRSTATEMENT:
1318 if(SendDlgItemMessage(hwnd,IDC_PAIRSTATEMENT,BM_GETCHECK,0,0)){
1319 EnableWindow(GetDlgItem(hwnd,IDC_BACKNUM),1);
1320 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_PAIRSTATEMENT),1);
1321
1322 if(GetWindowTextLength(GetDlgItem(hwnd,IDC_BACKNUM))==0)
1323 SetDlgItemText(hwnd,IDC_BACKNUM,"100");
1324 }
1325 else{
1326 EnableWindow(GetDlgItem(hwnd,IDC_BACKNUM),0);
1327 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_PAIRSTATEMENT),0);
1328 }
1329 return 1;
1330
1331 case IDC_PARAMHINT:
1332 if(SendDlgItemMessage(hwnd,IDC_PARAMHINT,BM_GETCHECK,0,0)){
1333 EnableWindow(GetDlgItem(hwnd,IDC_POPUP),1);
1334 EnableWindow(GetDlgItem(hwnd,IDC_STATUSBAR),1);
1335 if(SendDlgItemMessage(hwnd,IDC_POPUP,BM_GETCHECK,0,0)){
1336 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_HINTFONT),1);
1337 EnableWindow(GetDlgItem(hwnd,IDC_HINTFONT),1);
1338 }
1339 }
1340 else{
1341 EnableWindow(GetDlgItem(hwnd,IDC_POPUP),0);
1342 EnableWindow(GetDlgItem(hwnd,IDC_STATUSBAR),0);
1343 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_HINTFONT),0);
1344 EnableWindow(GetDlgItem(hwnd,IDC_HINTFONT),0);
1345 }
1346 return 1;
1347 case IDC_POPUP:
1348 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_HINTFONT),1);
1349 EnableWindow(GetDlgItem(hwnd,IDC_HINTFONT),1);
1350 return 1;
1351 case IDC_STATUSBAR:
1352 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_HINTFONT),0);
1353 EnableWindow(GetDlgItem(hwnd,IDC_HINTFONT),0);
1354 return 1;
1355 }
1356 break;
1357 case WM_NOTIFY:
1358 nmhdr=(NMHDR *)lParam;
1359 if(nmhdr->code==PSN_APPLY||nmhdr->code==PSN_KILLACTIVE){
1360 GetDlgItemText(hwnd,IDC_TABSIZE,str,255);
1361 sscanf(str,"%d",&temp_TabSize);
1362
1363 //エディタの行番号を表示するかどうか
1364 if(SendDlgItemMessage(hwnd,IDC_LINENUMBER,BM_GETCHECK,0,0)) temp_bEditor_LineNumber=1;
1365 else temp_bEditor_LineNumber=0;
1366
1367 //エディタのルーラーを表示するかどうか
1368 if(SendDlgItemMessage(hwnd,IDC_RULER,BM_GETCHECK,0,0)) temp_bEditor_Ruler=1;
1369 else temp_bEditor_Ruler=0;
1370
1371 //カーソル行を強調表示するかどうか
1372 if(SendDlgItemMessage(hwnd,IDC_CARETLINE_BACKGROUND,BM_GETCHECK,0,0)) temp_bEditor_CaretLine_BackGround=1;
1373 else temp_bEditor_CaretLine_BackGround=0;
1374
1375#ifdef THETEXT
1376 //自動折り返し時の一行あたりの文字数
1377 GetDlgItemText(hwnd,IDC_MAX_ONELINE_TEXT_LENGTH,str,255);
1378 sscanf(str,"%d",&temp_iMaxOneLineTextLength);
1379 if(temp_iMaxOneLineTextLength<=0){
1380 temp_iMaxOneLineTextLength=75;
1381 }
1382#endif
1383
1384 //自動インデント
1385 if(SendDlgItemMessage(hwnd,IDC_ISAUTOINDENT,BM_GETCHECK,0,0)) temp_bAutoIndent=1;
1386 else temp_bAutoIndent=0;
1387
1388 //貼り付け時のインデント調整
1389 if(SendDlgItemMessage(hwnd,IDC_PASTEINDENT,BM_GETCHECK,0,0)) temp_bPasteIndent=1;
1390 else temp_bPasteIndent=0;
1391
1392 //コード補完機能
1393 if(SendDlgItemMessage(hwnd,IDC_COMPLEMENT,BM_GETCHECK,0,0))
1394 temp_bShowComplementWnd=1;
1395 else temp_bShowComplementWnd=0;
1396
1397 //ペアステートメント補完
1398 if(IsWindowEnabled(GetDlgItem(hwnd,IDC_PAIRSTATEMENT))){
1399 if(SendDlgItemMessage(hwnd,IDC_PAIRSTATEMENT,BM_GETCHECK,0,0)){
1400 GetDlgItemText(hwnd,IDC_BACKNUM,str,255);
1401 sscanf(str,"%d",&temp_BackNum_PairStatementComplement);
1402 }
1403 else temp_BackNum_PairStatementComplement=0;
1404 }
1405 else temp_BackNum_PairStatementComplement=0;
1406
1407 //パラメータヒント
1408 if(SendDlgItemMessage(hwnd,IDC_PARAMHINT,BM_GETCHECK,0,0)){
1409 if(SendDlgItemMessage(hwnd,IDC_POPUP,BM_GETCHECK,0,0)) temp_dwParameterHint=1;
1410 else temp_dwParameterHint=2;
1411 }
1412 else temp_dwParameterHint=0;
1413
1414 if(SendDlgItemMessage(hwnd,IDC_SAVE_FINDSTR,BM_GETCHECK,0,0))
1415 temp_bSaveFindStr=1;
1416 else temp_bSaveFindStr=0;
1417
1418 if(nmhdr->code==PSN_APPLY) SaveSetting();
1419 }
1420 return 1;
1421
1422 case WM_HELP:
1423 HELPINFO *lpHelpInfo;
1424 lpHelpInfo = (HELPINFO *)lParam;
1425
1426 HH_POPUP hp;
1427 memset(&hp, 0, sizeof(HH_POPUP));
1428 hp.cbStruct = sizeof(HH_POPUP);
1429 hp.pt.x = lpHelpInfo->MousePos.x;
1430 hp.pt.y = lpHelpInfo->MousePos.y+10;
1431 hp.clrForeground = RGB(0, 0, 0);
1432 hp.clrBackground = -1;
1433 hp.rcMargins.left = -1;
1434 hp.rcMargins.right = -1;
1435 hp.rcMargins.top = -1;
1436 hp.rcMargins.bottom = -1;
1437 hp.idString = 0;
1438 hp.pszFont="MS Sans Serif,10";
1439
1440 switch(lpHelpInfo->iCtrlId){
1441 case IDC_STATIC_SETFONT:
1442 case IDC_SETFONT:
1443#if defined(JPN)
1444 //日本語
1445 hp.pszText="エディタで使用するフォントを選択することができます。";
1446#else
1447 //英語
1448 hp.pszText="Choose the font displayed on the editor";
1449#endif
1450 break;
1451 case IDC_STATIC_TABSIZE:
1452 case IDC_TABSIZE:
1453#if defined(JPN)
1454 //日本語
1455 hp.pszText="タブサイズを指定します。デフォルト値は4です。";
1456#else
1457 //英語
1458 hp.pszText="Set the tab size. Value of default is 4.";
1459#endif
1460 break;
1461 case IDC_ISAUTOINDENT:
1462#if defined(JPN)
1463 //日本語
1464 hp.pszText="このチェックをオンにすると、必要に応じて、自動的にインデント用のタブ文字が挿入されます。";
1465#else
1466 //英語
1467 hp.pszText="If this check is on, the indent tabs will be inserted automatically.";
1468#endif
1469 break;
1470 case IDC_COMPLEMENT:
1471#if defined(JPN)
1472 //日本語
1473 hp.pszText="このチェックをオンにすると、クラスまたは構造体のメンバを入力するときに、予想されるキーワードがリスト表示されます。";
1474#else
1475 //英語
1476 hp.pszText="If this check is on, the member expected is displayed in a list when inputting the member of the class object.";
1477#endif
1478 break;
1479 case IDC_PARAMHINT:
1480#if defined(JPN)
1481 //日本語
1482 hp.pszText="このチェックをオンにすると、関数またはステートメントを入力するときに、該当するパラメータのヒント文字列が表示されます。文字列の表示方法はポップアップまたはステータスバーのいずれかを選択することができます。";
1483#else
1484 //英語
1485 hp.pszText="If this check is on, parameter hint is displayed when inputting a function or a statement.";
1486#endif
1487 break;
1488 case IDC_POPUP:
1489#if defined(JPN)
1490 //日本語
1491 hp.pszText="パラメータヒントをポップアップ表示するときは、ここをチェックします。";
1492#else
1493 //英語
1494 hp.pszText="If this check is on, parameter hint is displayed on a popup window.";
1495#endif
1496 break;
1497 case IDC_STATUSBAR:
1498#if defined(JPN)
1499 //日本語
1500 hp.pszText="パラメータヒントをステータスバーに表示するときは、ここをチェックします。";
1501#else
1502 //英語
1503 hp.pszText="If this check is on, parameter hint is displayed in a status bar.";
1504#endif
1505 break;
1506 case IDC_STATIC_HINTFONT:
1507 case IDC_HINTFONT:
1508#if defined(JPN)
1509 //日本語
1510 hp.pszText="ポップアップ表示されるパラメータヒントのフォントを指定します。";
1511#else
1512 //英語
1513 hp.pszText="Choose the font displayed on the popup hint.";
1514#endif
1515 break;
1516 default:
1517 hp.pszText="";
1518 break;
1519 }
1520 HtmlHelp(hwnd, 0, HH_DISPLAY_TEXT_POPUP, (DWORD)&hp);
1521 return 1;
1522 }
1523 return 0;
1524}
1525COLORREF GetColorFromSelection(int iPos,TEXTEDIT_COLOR_INFO *ptci){
1526 if(iPos==0) return ptci->rgbComment;
1527 else if(iPos==1) return ptci->rgbString;
1528 else if(iPos==2) return ptci->rgbDefault;
1529 else if(iPos==3) return ptci->rgbStatement;
1530 else if(iPos==4) return ptci->rgbCursorBack;
1531 else if(iPos==5) return ptci->rgbBackground;
1532 return 0;
1533}
1534void SetColorFromSelection(int iPos,COLORREF rgb,TEXTEDIT_COLOR_INFO *ptci){
1535 if(iPos==0) ptci->rgbComment=rgb;
1536 else if(iPos==1) ptci->rgbString=rgb;
1537 else if(iPos==2) ptci->rgbDefault=rgb;
1538 else if(iPos==3) ptci->rgbStatement=rgb;
1539 else if(iPos==4) ptci->rgbCursorBack=rgb;
1540 else if(iPos==5) ptci->rgbBackground=rgb;
1541}
1542#ifdef THETEXT
1543char szNewThemeName[MAX_PATH];
1544BOOL bThemeOverwirte;
1545BOOL CALLBACK DlgOptionThemeSave(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1546 switch(message){
1547 case WM_INITDIALOG:
1548 SetPosCenter(hwnd);
1549
1550 SendMessage(hwnd,WM_COMMAND,IDC_NAME,0);
1551 SetFocus(GetDlgItem(hwnd,IDC_NAME));
1552 break;
1553 case WM_COMMAND:
1554 switch(LOWORD(wParam)){
1555 case IDOK:
1556 GetDlgItemText(hwnd,IDC_NAME,szNewThemeName,MAX_PATH);
1557
1558 if(SendDlgItemMessage(hwnd,IDC_OVERWRITE,BM_GETCHECK,0,0))
1559 bThemeOverwirte=1;
1560 else bThemeOverwirte=0;
1561
1562 if(pobj_DBTheme->dupli_check(szNewThemeName)){
1563 if(!bThemeOverwirte){
1564 char temporary[MAX_PATH];
1565 sprintf(temporary,"テーマ \"%s\" は既に存在します。「上書きを許可する」をチェックした後、保存してください。",szNewThemeName);
1566 MessageBox(hwnd,temporary,APPLICATION_NAME,MB_OK);
1567 return 1;
1568 }
1569 }
1570
1571 EndDialog(hwnd,1);
1572 return 1;
1573 case IDCANCEL:
1574 EndDialog(hwnd,0);
1575 return 1;
1576 case IDC_NAME:
1577 if(GetWindowTextLength(GetDlgItem(hwnd,IDC_NAME)))
1578 EnableWindow(GetDlgItem(hwnd,IDOK),1);
1579 else EnableWindow(GetDlgItem(hwnd,IDOK),0);
1580 return 1;
1581 }
1582 break;
1583 }
1584 return 0;
1585}
1586#endif
1587BOOL CALLBACK Dlg_Option_Color(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1588 int iPos;
1589 CTheme *pobj_Theme;
1590 char temporary[MAX_PATH];
1591 switch(message){
1592 case WM_INITDIALOG:
1593 bOptionColor=1;
1594
1595 //一時保存値を初期化
1596 pobj_Theme=pobj_DBTheme->GetActiveTheme();
1597 obj_temp_Theme=*pobj_Theme;
1598
1599 //指定する部分
1600 SendDlgItemMessage(hwnd,IDC_TARGET,CB_ADDSTRING,0,(LPARAM)"コメント");
1601 SendDlgItemMessage(hwnd,IDC_TARGET,CB_ADDSTRING,0,(LPARAM)"ダブルクォート内の文字列");
1602 SendDlgItemMessage(hwnd,IDC_TARGET,CB_ADDSTRING,0,(LPARAM)"通常の文字");
1603 SendDlgItemMessage(hwnd,IDC_TARGET,CB_ADDSTRING,0,(LPARAM)"特殊ステートメント");
1604 SendDlgItemMessage(hwnd,IDC_TARGET,CB_ADDSTRING,0,(LPARAM)"背景色(カーソル行)");
1605 SendDlgItemMessage(hwnd,IDC_TARGET,CB_ADDSTRING,0,(LPARAM)"背景色(一般)");
1606 SendDlgItemMessage(hwnd,IDC_TARGET,CB_SETCURSEL,0,0);
1607
1608
1609 //テーマ名をコンボボックスにセット
1610 pobj_DBTheme->ResetTheme_ToComboBox(GetDlgItem(hwnd,IDC_THEME));
1611
1612
1613 SendMessage(hwnd,WM_COMMAND,MAKELONG(IDC_THEME,CBN_SELCHANGE),0);
1614 break;
1615
1616 case WM_COMMAND:
1617 switch(LOWORD(wParam)){
1618#ifdef THETEXT
1619 case IDC_SAVE:
1620 if(!DialogBox(hResInst,MAKEINTRESOURCE(IDD_OPTION_THEME_SAVE),hwnd,(DLGPROC)DlgOptionThemeSave)) return 1;
1621
1622 pobj_Theme=pobj_DBTheme->dupli_check(szNewThemeName);
1623 if(pobj_Theme){
1624 }
1625 else{
1626 //新規に追加
1627 pobj_Theme=pobj_DBTheme->add(0,szNewThemeName);
1628 }
1629 *pobj_Theme=obj_temp_Theme;
1630 lstrcpy(pobj_Theme->m_name,szNewThemeName);
1631
1632 //ファイルに保存
1633 pobj_Theme->save();
1634
1635 //テーマ コンボボックスのカーソル位置をセット
1636 ComboBox_SetSelText(GetDlgItem(hwnd,IDC_THEME),szNewThemeName);
1637
1638 return 1;
1639#endif //THETEXT
1640 case IDC_THEME:
1641 if(HIWORD(wParam)==CBN_SELCHANGE){
1642 if(!SendDlgItemMessage(hwnd,IDC_THEME,CB_GETLBTEXT,
1643 SendDlgItemMessage(hwnd,IDC_THEME,CB_GETCURSEL,0,0),
1644 (LPARAM)temporary)) return 1;
1645
1646 pobj_Theme=pobj_DBTheme->dupli_check(temporary);
1647 obj_temp_Theme=*pobj_Theme;
1648
1649 InvalidateRect(GetDlgItem(hwnd,IDC_SAMPLE),NULL,0);
1650 InvalidateRect(GetDlgItem(hwnd,IDC_COLOR_BUTTON),NULL,0);
1651 }
1652 return 1;
1653 case IDC_TARGET:
1654 if(HIWORD(wParam)==CBN_SELCHANGE){
1655 InvalidateRect(GetDlgItem(hwnd,IDC_COLOR_BUTTON),NULL,0);
1656 }
1657 return 1;
1658 case IDC_COLOR_BUTTON:
1659 iPos=SendDlgItemMessage(hwnd,IDC_TARGET,CB_GETCURSEL,0,0);
1660
1661 CHOOSECOLOR cc;
1662 static COLORREF CustColors[16];
1663 cc.lStructSize=sizeof(CHOOSECOLOR);
1664 cc.hwndOwner=hwnd;
1665 cc.rgbResult=GetColorFromSelection(iPos,&obj_temp_Theme.TextColorInfo);
1666 cc.lpCustColors=CustColors;
1667 cc.Flags=CC_FULLOPEN | CC_RGBINIT;
1668 if(!ChooseColor(&cc)) return 1;
1669
1670 SetColorFromSelection(iPos,cc.rgbResult,&obj_temp_Theme.TextColorInfo);
1671
1672 InvalidateRect(GetDlgItem(hwnd,IDC_COLOR_BUTTON),NULL,0);
1673 InvalidateRect(GetDlgItem(hwnd,IDC_SAMPLE),NULL,0);
1674
1675 lstrcpy(obj_temp_Theme.m_name,THEMENAME_USER);
1676
1677 //ユーザー設定を選択
1678 ComboBox_SetSelText(GetDlgItem(hwnd,IDC_THEME),THEMENAME_USER);
1679 return 1;
1680 }
1681 break;
1682
1683 case WM_NOTIFY:
1684 NMHDR *nmhdr;
1685 nmhdr=(NMHDR *)lParam;
1686
1687 if(nmhdr->code==PSN_APPLY) SaveSetting();
1688 return 1;
1689
1690 case WM_DRAWITEM:
1691 LPDRAWITEMSTRUCT pds;
1692 pds=(LPDRAWITEMSTRUCT)lParam;
1693
1694 HBRUSH hBrush,hOldBrush;
1695
1696 if(wParam==IDC_COLOR_BUTTON){
1697 iPos=SendDlgItemMessage(hwnd,IDC_TARGET,CB_GETCURSEL,0,0);
1698
1699 //////////////
1700 // 色を描画
1701 //////////////
1702
1703 //ペンとブラシを生成
1704 HPEN hPen,hOldPen;
1705 hPen=(HPEN)GetStockObject(WHITE_PEN);
1706 if(IsWindowEnabled(GetDlgItem(hwnd,IDC_COLOR_BUTTON)))
1707 hBrush=CreateSolidBrush(GetColorFromSelection(iPos,&obj_temp_Theme.TextColorInfo));
1708 else
1709 hBrush=CreateSolidBrush(GetSysColor(COLOR_3DFACE));
1710
1711 //塗りつぶす
1712 hOldPen=(HPEN)SelectObject(pds->hDC,hPen);
1713 hOldBrush=(HBRUSH)SelectObject(pds->hDC,hBrush);
1714 Rectangle(pds->hDC,0,0,pds->rcItem.right,pds->rcItem.bottom);
1715 SelectObject(pds->hDC,hOldPen);
1716 SelectObject(pds->hDC,hOldBrush);
1717
1718 //ブラシを破棄
1719 DeleteObject(hBrush);
1720 }
1721 else if(wParam==IDC_SAMPLE){
1722 TEXTEDIT_COLOR_INFO ColorInfo;
1723 ColorInfo=obj_temp_Theme.TextColorInfo;
1724
1725 //背景色で塗りつぶす
1726 hBrush=CreateSolidBrush(ColorInfo.rgbBackground);
1727 hOldBrush=(HBRUSH)SelectObject(pds->hDC,hBrush);
1728 PatBlt(pds->hDC,0,0,pds->rcItem.right,pds->rcItem.bottom,PATCOPY);
1729 SelectObject(pds->hDC,hOldBrush);
1730 DeleteObject(hBrush);
1731
1732 //フォントを選択
1733 extern HFONT hFont_TextEdit;
1734 HFONT hOldFont;
1735 hOldFont=(HFONT)SelectObject(pds->hDC,hFont_TextEdit);
1736
1737 ///////////////////
1738 // サンプルを描画
1739 ///////////////////
1740
1741 extern int font_width,font_height;
1742 int x=0,y=0;
1743
1744#ifdef THETEXT
1745#define SAMPLESTR_STATEMENT "div"
1746#define SAMPLESTR_COMMENT "<!-- この行にカーソルがあります -->"
1747#define SAMPLESTR_DEFAULT "< style= >Hello World!</ >"
1748#define SAMPLESTR_STRING "\"color:#123456\""
1749
1750 y+=font_height;
1751
1752 //"< style= >Hello World!</ >"
1753 SetTextColor(pds->hDC,ColorInfo.rgbDefault);
1754 SetBkColor(pds->hDC,ColorInfo.rgbBackground);
1755 TextOut(pds->hDC,x,y,SAMPLESTR_DEFAULT,lstrlen(SAMPLESTR_DEFAULT));
1756
1757 //div
1758 x=font_width*1;
1759 SetTextColor(pds->hDC,ColorInfo.rgbStatement);
1760 TextOut(pds->hDC,x,y,SAMPLESTR_STATEMENT,lstrlen(SAMPLESTR_STATEMENT));
1761 x=font_width*41;
1762 TextOut(pds->hDC,x,y,SAMPLESTR_STATEMENT,lstrlen(SAMPLESTR_STATEMENT));
1763
1764 //"color:#123456"
1765 x=font_width*11;
1766 SetTextColor(pds->hDC,ColorInfo.rgbString);
1767 TextOut(pds->hDC,x,y,SAMPLESTR_STRING,lstrlen(SAMPLESTR_STRING));
1768
1769 x=0;
1770 y+=font_height*2;
1771
1772 //"'この行にカーソルがあります
1773 hBrush=CreateSolidBrush(ColorInfo.rgbCursorBack);
1774 hOldBrush=(HBRUSH)SelectObject(pds->hDC,hBrush);
1775 PatBlt(pds->hDC,x,y,pds->rcItem.right,font_height,PATCOPY);
1776 SelectObject(pds->hDC,hOldBrush);
1777 DeleteObject(hBrush);
1778
1779 SetTextColor(pds->hDC,ColorInfo.rgbComment);
1780 SetBkColor(pds->hDC,ColorInfo.rgbCursorBack);
1781 TextOut(pds->hDC,x,y,SAMPLESTR_COMMENT,lstrlen(SAMPLESTR_COMMENT));
1782#else
1783#define SAMPLESTR_STATEMENT "#console"
1784#define SAMPLESTR_COMMENT "'この行にカーソルがあります"
1785#define SAMPLESTR_DEFAULT "Print "
1786#define SAMPLESTR_STRING "\"Hello World!\""
1787
1788 //"#console"
1789 SetTextColor(pds->hDC,ColorInfo.rgbStatement);
1790 SetBkColor(pds->hDC,ColorInfo.rgbBackground);
1791 TextOut(pds->hDC,0,0,SAMPLESTR_STATEMENT,lstrlen(SAMPLESTR_STATEMENT));
1792 y+=font_height*2;
1793
1794 //"'この行にカーソルがあります
1795 hBrush=CreateSolidBrush(ColorInfo.rgbCursorBack);
1796 hOldBrush=(HBRUSH)SelectObject(pds->hDC,hBrush);
1797 PatBlt(pds->hDC,x,y,pds->rcItem.right,font_height,PATCOPY);
1798 SelectObject(pds->hDC,hOldBrush);
1799 DeleteObject(hBrush);
1800
1801 SetTextColor(pds->hDC,ColorInfo.rgbComment);
1802 SetBkColor(pds->hDC,ColorInfo.rgbCursorBack);
1803 TextOut(pds->hDC,x,y,SAMPLESTR_COMMENT,lstrlen(SAMPLESTR_COMMENT));
1804 y+=font_height*2;
1805
1806 //Print
1807 SetTextColor(pds->hDC,ColorInfo.rgbDefault);
1808 SetBkColor(pds->hDC,ColorInfo.rgbBackground);
1809 TextOut(pds->hDC,x,y,SAMPLESTR_DEFAULT,lstrlen(SAMPLESTR_DEFAULT));
1810 x+=lstrlen(SAMPLESTR_DEFAULT)*font_width;
1811
1812 //"Hello World!"
1813 SetTextColor(pds->hDC,ColorInfo.rgbString);
1814 TextOut(pds->hDC,x,y,SAMPLESTR_STRING,lstrlen(SAMPLESTR_STRING));
1815#endif
1816
1817 SelectObject(pds->hDC,hOldFont);
1818 }
1819 return 0;
1820
1821 case WM_HELP:
1822 HELPINFO *lpHelpInfo;
1823 lpHelpInfo = (HELPINFO *)lParam;
1824
1825 HH_POPUP hp;
1826 memset(&hp, 0, sizeof(HH_POPUP));
1827 hp.cbStruct = sizeof(HH_POPUP);
1828 hp.pt.x = lpHelpInfo->MousePos.x;
1829 hp.pt.y = lpHelpInfo->MousePos.y+10;
1830 hp.clrForeground = RGB(0, 0, 0);
1831 hp.clrBackground = -1;
1832 hp.rcMargins.left = -1;
1833 hp.rcMargins.right = -1;
1834 hp.rcMargins.top = -1;
1835 hp.rcMargins.bottom = -1;
1836 hp.idString = 0;
1837 hp.pszFont="MS Sans Serif,10";
1838
1839 switch(lpHelpInfo->iCtrlId){
1840 case IDC_TARGET:
1841 hp.pszText="どの部分の色を設定するかを選択します。";
1842 break;
1843 default:
1844 hp.pszText="";
1845 break;
1846 }
1847 HtmlHelp(hwnd, 0, HH_DISPLAY_TEXT_POPUP, (DWORD)&hp);
1848 return 1;
1849 }
1850 return 0;
1851}
1852BOOL CALLBACK Dlg_Option_Toolbar(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1853 switch(message){
1854 case WM_INITDIALOG:
1855 bOptionToolbar=1;
1856 break;
1857 case WM_COMMAND:
1858 switch(LOWORD(wParam)){
1859 case IDC_RESETTOOLBAR:
1860 //"ツールバーの配置をすべて初期状態に戻します。\nよろしいですか?"
1861 if(IDCANCEL==MessageBox(hwnd,STRING_TOOLBAR_RESET,APPLICATION_NAME,MB_OKCANCEL|MB_ICONEXCLAMATION)) break;
1862
1863 //レバーコントロールを再生成
1864 pobj_Rebar->ResetInitRebar();
1865
1866 //メニュー状態を設定
1867 ResetState_DocMenu();
1868 return 1;
1869 }
1870 break;
1871
1872 case WM_HELP:
1873 HELPINFO *lpHelpInfo;
1874 lpHelpInfo = (HELPINFO *)lParam;
1875
1876 HH_POPUP hp;
1877 memset(&hp, 0, sizeof(HH_POPUP));
1878 hp.cbStruct = sizeof(HH_POPUP);
1879 hp.pt.x = lpHelpInfo->MousePos.x;
1880 hp.pt.y = lpHelpInfo->MousePos.y+10;
1881 hp.clrForeground = RGB(0, 0, 0);
1882 hp.clrBackground = -1;
1883 hp.rcMargins.left = -1;
1884 hp.rcMargins.right = -1;
1885 hp.rcMargins.top = -1;
1886 hp.rcMargins.bottom = -1;
1887 hp.idString = 0;
1888 hp.pszFont="MS Sans Serif,10";
1889
1890 switch(lpHelpInfo->iCtrlId){
1891 case IDC_RESETTOOLBAR:
1892#if defined(JPN)
1893 //日本語
1894 hp.pszText="ツールバーの配置を初期状態に戻します。";
1895#else
1896 //英語
1897 hp.pszText="Reset the state of the toolbar.";
1898#endif
1899 break;
1900 default:
1901 hp.pszText="";
1902 break;
1903 }
1904 HtmlHelp(hwnd, 0, HH_DISPLAY_TEXT_POPUP, (DWORD)&hp);
1905 return 1;
1906 }
1907 return 0;
1908}
1909BOOL CALLBACK Dlg_Option_Rad(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1910 NMHDR *nmhdr;
1911 switch(message){
1912 case WM_INITDIALOG:
1913
1914 bOptionRad=1;
1915
1916 //ライン アジャスタ
1917 if(pobj_nv->bLineAdjust) SendDlgItemMessage(hwnd,IDC_LINEADJUST,BM_SETCHECK,BST_CHECKED,0);
1918
1919 break;
1920 case WM_NOTIFY:
1921 nmhdr=(NMHDR *)lParam;
1922 if(nmhdr->code==PSN_APPLY||nmhdr->code==PSN_KILLACTIVE){
1923 if(SendDlgItemMessage(hwnd,IDC_LINEADJUST,BM_GETCHECK,0,0)) temp_bLineAdjust=1;
1924 else temp_bLineAdjust=0;
1925
1926 if(nmhdr->code==PSN_APPLY) SaveSetting();
1927 }
1928 return 1;
1929
1930 case WM_HELP:
1931 HELPINFO *lpHelpInfo;
1932 lpHelpInfo = (HELPINFO *)lParam;
1933
1934 HH_POPUP hp;
1935 memset(&hp, 0, sizeof(HH_POPUP));
1936 hp.cbStruct = sizeof(HH_POPUP);
1937 hp.pt.x = lpHelpInfo->MousePos.x;
1938 hp.pt.y = lpHelpInfo->MousePos.y+10;
1939 hp.clrForeground = RGB(0, 0, 0);
1940 hp.clrBackground = -1;
1941 hp.rcMargins.left = -1;
1942 hp.rcMargins.right = -1;
1943 hp.rcMargins.top = -1;
1944 hp.rcMargins.bottom = -1;
1945 hp.idString = 0;
1946 hp.pszFont="MS Sans Serif,10";
1947
1948 switch(lpHelpInfo->iCtrlId){
1949 case IDC_LINEADJUST:
1950#if defined(JPN)
1951 //日本語
1952 hp.pszText="このチェックボックスをオンにすると、ラインアジャスタ機能が有効になります。ラインアジャスタ機能をオンにすると、マウスを使ってコントロールの移動を行う際に他のコントロール同士との位置合わせが容易に行えるようになります。";
1953#else
1954 //英語
1955 hp.pszText="If this check is on, line adjuster becomes effective.";
1956#endif
1957 break;
1958 default:
1959 hp.pszText="";
1960 break;
1961 }
1962 HtmlHelp(hwnd, 0, HH_DISPLAY_TEXT_POPUP, (DWORD)&hp);
1963 return 1;
1964 }
1965 return 0;
1966}
1967char szDomainAdd_Name[255];
1968char szDomainAdd_Domain[255];
1969BOOL CALLBACK Dlg_Option_Web_Domain_Add(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1970 switch(message){
1971 case WM_INITDIALOG:
1972 SetPosCenter(hwnd);
1973 SetFocus(GetDlgItem(hwnd,IDC_NAME));
1974
1975 if(lParam!=-1){
1976 SetWindowText(hwnd,"Web検索用ドメインを編集");
1977 SetDlgItemText(hwnd,IDC_NAME,szDomainAdd_Name);
1978 SetDlgItemText(hwnd,IDC_DOMAIN,szDomainAdd_Domain);
1979 }
1980 break;
1981 case WM_COMMAND:
1982 switch(LOWORD(wParam)){
1983 case IDOK:
1984 GetDlgItemText(hwnd,IDC_NAME,szDomainAdd_Name,255);
1985 GetDlgItemText(hwnd,IDC_DOMAIN,szDomainAdd_Domain,255);
1986 EndDialog(hwnd,1);
1987 return 1;
1988 case IDCANCEL:
1989 EndDialog(hwnd,0);
1990 return 1;
1991 }
1992 return 0;
1993 }
1994 return 0;
1995}
1996BOOL CALLBACK Dlg_Option_Web(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1997 HWND hListView;
1998 NMHDR *nmhdr;
1999 int i;
2000 char temporary[255];
2001 switch(message){
2002 case WM_INITDIALOG:
2003
2004 bOptionWeb=1;
2005
2006
2007 //Ctrlキーによるハイパーリンク
2008 if(pobj_nv->bCtrlKeyHyperLink) SendDlgItemMessage(hwnd,IDC_CTRLKEY_HYPERLINK,BM_SETCHECK,BST_CHECKED,0);
2009
2010 //Web検索文字列を保存するかどうか
2011 if(pobj_nv->bSaveWebFindStr) SendDlgItemMessage(hwnd,IDC_SAVE_WEBFINDSTR,BM_SETCHECK,BST_CHECKED,0);
2012
2013
2014 //拡張スタイル
2015 DWORD dwStyle;
2016 hListView=GetDlgItem(hwnd,IDC_DOMAIN_LIST);
2017 dwStyle=ListView_GetExtendedListViewStyle(hListView);
2018 dwStyle|=LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES;
2019 ListView_SetExtendedListViewStyle(hListView,dwStyle);
2020
2021 LV_COLUMN ListView_Column;
2022 ListView_Column.mask=LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
2023 ListView_Column.fmt=LVCFMT_LEFT;
2024
2025 ListView_Column.cx=80;
2026 ListView_Column.pszText="表示名";
2027 ListView_Column.iSubItem=0;
2028 ListView_InsertColumn(hListView,ListView_Column.iSubItem,&ListView_Column);
2029
2030 ListView_Column.cx=200;
2031 ListView_Column.pszText="ドメイン";
2032 ListView_Column.iSubItem++;
2033 ListView_InsertColumn(hListView,ListView_Column.iSubItem,&ListView_Column);
2034
2035 //一時オブジェクトにコピー
2036 pobj_temp_DBDomain->copy_get(pobj_nv->pobj_DBDomain);
2037
2038 //ドメインリストにデータをセット
2039 pobj_temp_DBDomain->SetListView(hListView);
2040
2041 break;
2042 case WM_COMMAND:
2043 switch(LOWORD(wParam)){
2044 case IDC_ADD:
2045 if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_OPTION_WEB_DOMAIN_ADD),hwnd,(DLGPROC)Dlg_Option_Web_Domain_Add,-1)) return 1;
2046
2047 pobj_temp_DBDomain->add(szDomainAdd_Name,szDomainAdd_Domain);
2048 return 1;
2049 case IDC_DELETE:
2050 hListView=GetDlgItem(hwnd,IDC_DOMAIN_LIST);
2051 for(i=0;i<ListView_GetItemCount(hListView);i++){
2052 if(ListView_GetItemState(hListView,i,LVIS_SELECTED)){
2053 ListView_GetItemText(hListView,i,0,temporary,255);
2054 pobj_temp_DBDomain->del(temporary);
2055 break;
2056 }
2057 }
2058 return 1;
2059 case IDC_EDIT:
2060 hListView=GetDlgItem(hwnd,IDC_DOMAIN_LIST);
2061 for(i=0;i<ListView_GetItemCount(hListView);i++){
2062 if(ListView_GetItemState(hListView,i,LVIS_SELECTED)){
2063 ListView_GetItemText(hListView,i,0,temporary,255);
2064
2065 ListView_GetItemText(hListView,i,0,szDomainAdd_Name,255);
2066 ListView_GetItemText(hListView,i,1,szDomainAdd_Domain,255);
2067 lstrcpy(temporary,szDomainAdd_Name);
2068 if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_OPTION_WEB_DOMAIN_ADD),hwnd,(DLGPROC)Dlg_Option_Web_Domain_Add,i)) return 1;
2069
2070 pobj_temp_DBDomain->change(temporary,szDomainAdd_Name,szDomainAdd_Domain);
2071 }
2072 }
2073 return 1;
2074 }
2075 return 0;
2076 case WM_NOTIFY:
2077 nmhdr=(NMHDR *)lParam;
2078 if(nmhdr->code==PSN_APPLY||nmhdr->code==PSN_KILLACTIVE){
2079
2080 //Ctrlキーによるハイパーリンク
2081 if(SendDlgItemMessage(hwnd,IDC_CTRLKEY_HYPERLINK,BM_GETCHECK,0,0)) temp_bCtrlKeyHyperLink=1;
2082 else temp_bCtrlKeyHyperLink=0;
2083
2084 //Web検索文字列を保存するかどうか
2085 if(SendDlgItemMessage(hwnd,IDC_SAVE_WEBFINDSTR,BM_GETCHECK,0,0)) temp_bSaveWebFindStr=1;
2086 else temp_bSaveWebFindStr=0;
2087
2088 if(nmhdr->code==PSN_APPLY) SaveSetting();
2089 }
2090 if(nmhdr->idFrom==IDC_DOMAIN_LIST){
2091 if(nmhdr->code==NM_DBLCLK){
2092 LPNMLISTVIEW lpnmListView;
2093 lpnmListView=(LPNMLISTVIEW)lParam;
2094
2095 char szBeforeName[255];
2096 ListView_GetItemText(nmhdr->hwndFrom,lpnmListView->iItem,0,szDomainAdd_Name,255);
2097 ListView_GetItemText(nmhdr->hwndFrom,lpnmListView->iItem,1,szDomainAdd_Domain,255);
2098 lstrcpy(szBeforeName,szDomainAdd_Name);
2099 if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_OPTION_WEB_DOMAIN_ADD),hwnd,(DLGPROC)Dlg_Option_Web_Domain_Add,lpnmListView->iItem)) return 1;
2100
2101 pobj_temp_DBDomain->change(szBeforeName,szDomainAdd_Name,szDomainAdd_Domain);
2102 }
2103 }
2104 return 1;
2105 }
2106 return 0;
2107}
2108void DlgOptionSetting(HWND hwnd){
2109 PROPSHEETHEADER psh;
2110#define MAX_SETDLG 32
2111 PROPSHEETPAGE psp[MAX_SETDLG];
2112 HPROPSHEETPAGE hpsp[MAX_SETDLG];
2113 int i;
2114
2115 bOptionWhole=0;
2116 bOptionEditor=0;
2117 bOptionColor=0;
2118 bOptionToolbar=0;
2119 bOptionRad=0;
2120 bOptionWeb=0;
2121
2122 i=0;
2123
2124 //各ページのセッティング
2125 psp[i].dwSize=sizeof(PROPSHEETPAGE);
2126 psp[i].dwFlags=PSP_DEFAULT;
2127 psp[i].hInstance=hResInst;
2128 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_OPTION_WHOLE);
2129 psp[i].pfnDlgProc=(DLGPROC)Dlg_Option_Whole;
2130 hpsp[i]=CreatePropertySheetPage(&psp[i]);
2131 i++;
2132 psp[i].dwSize=sizeof(PROPSHEETPAGE);
2133 psp[i].dwFlags=PSP_DEFAULT;
2134 psp[i].hInstance=hResInst;
2135 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_OPTION_EDITOR);
2136 psp[i].pfnDlgProc=(DLGPROC)Dlg_Option_Editor;
2137 hpsp[i]=CreatePropertySheetPage(&psp[i]);
2138 i++;
2139 psp[i].dwSize=sizeof(PROPSHEETPAGE);
2140 psp[i].dwFlags=PSP_DEFAULT;
2141 psp[i].hInstance=hResInst;
2142 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_OPTION_COLOR);
2143 psp[i].pfnDlgProc=(DLGPROC)Dlg_Option_Color;
2144 hpsp[i]=CreatePropertySheetPage(&psp[i]);
2145 i++;
2146 psp[i].dwSize=sizeof(PROPSHEETPAGE);
2147 psp[i].dwFlags=PSP_DEFAULT;
2148 psp[i].hInstance=hResInst;
2149 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_OPTION_TOOLBAR);
2150 psp[i].pfnDlgProc=(DLGPROC)Dlg_Option_Toolbar;
2151 hpsp[i]=CreatePropertySheetPage(&psp[i]);
2152
2153#ifndef THETEXT
2154 //RADツールに関するオプションはProjectEditorのみ表示
2155 i++;
2156 psp[i].dwSize=sizeof(PROPSHEETPAGE);
2157 psp[i].dwFlags=PSP_DEFAULT;
2158 psp[i].hInstance=hResInst;
2159 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_OPTION_RAD);
2160 psp[i].pfnDlgProc=(DLGPROC)Dlg_Option_Rad;
2161 hpsp[i]=CreatePropertySheetPage(&psp[i]);
2162#endif
2163
2164 i++;
2165 psp[i].dwSize=sizeof(PROPSHEETPAGE);
2166 psp[i].dwFlags=PSP_DEFAULT;
2167 psp[i].hInstance=hResInst;
2168 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_OPTION_WEB);
2169 psp[i].pfnDlgProc=(DLGPROC)Dlg_Option_Web;
2170 hpsp[i]=CreatePropertySheetPage(&psp[i]);
2171
2172 i++;
2173
2174
2175
2176 ///////////////////////////
2177 // 一時オブジェクトを生成
2178 ///////////////////////////
2179
2180 pobj_temp_DBDomain=new CDBDomain();
2181
2182
2183
2184 memset(&psh,0,sizeof(PROPSHEETHEADER));
2185 psh.dwSize=sizeof(PROPSHEETHEADER);
2186 psh.dwFlags=PSH_PROPSHEETPAGE|PSH_NOAPPLYNOW;
2187 psh.phpage=hpsp;
2188 psh.hwndParent=hwnd;
2189 psh.pszCaption=STRING_OPTION; //"オプション"
2190 psh.nPages=i;
2191 psh.nStartPage=0;
2192 psh.ppsp=psp;
2193 PropertySheet(&psh);
2194
2195
2196
2197 ///////////////////////////
2198 // 一時オブジェクトを破棄
2199 ///////////////////////////
2200
2201 delete pobj_temp_DBDomain;
2202}
2203BOOL CALLBACK DialogAbout(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
2204 if(message==WM_INITDIALOG){
2205 SetPosCenter(hwnd);
2206
2207 SetDlgItemText(hwnd,IDC_STATIC_NAME,VERSION_APPLI_NAME);
2208
2209 char temporary[1024];
2210 sprintf(temporary,"Version %s",VERSION_STRING);
2211 SetDlgItemText(hwnd,IDC_STATIC_VERSION,temporary);
2212
2213
2214#ifndef THETEXT
2215 //ライブラリ開発チーム
2216 LoadString(hResInst,IDS_DEV_GROUP,temporary,1024);
2217 SetDlgItemText(hwnd,IDC_DEV_GROUP,temporary);
2218#endif
2219 }
2220 if(message==WM_COMMAND){
2221 switch(LOWORD(wParam)){
2222 case IDCANCEL:
2223 EndDialog(hwnd,NULL);
2224 return 1;
2225 }
2226 }
2227 return 0;
2228}
Note: See TracBrowser for help on using the repository browser.