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

Last change on this file since 717 was 717, checked in by dai, 16 years ago

#188への対応。UserSettingディレクトリを廃止し、正規のユーザ空間ディレクトリを取り入れた。

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 //SideWebウィンドウを再表示
1127 //delete pobj_SideWeb;
1128 //pobj_SideWeb=new CSideWeb(hOwner);
1129 //ActiveBasic::IDE::Program::mainFrame.Resized();
1130 }
1131 return;
1132}
1133BOOL CALLBACK Dlg_Option_Whole(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1134 NMHDR *nmhdr;
1135 switch(message){
1136 case WM_INITDIALOG:
1137 SetPosCenter(GetParent(hwnd));
1138
1139 bOptionWhole=1;
1140
1141 //実行時の、プロジェクトの保存確認の有無
1142 if(pobj_nv->bSaveCheckProject) SendDlgItemMessage(hwnd,IDC_SAVECHECK,BM_SETCHECK,BST_CHECKED,0);
1143
1144 //ドキュメントを保存したときにタブを先頭に再配置するかどうか
1145 if(pobj_nv->bSaveTabToHead) SendDlgItemMessage(hwnd,IDC_SAVE_TAB_TO_HEAD,BM_SETCHECK,BST_CHECKED,0);
1146
1147 break;
1148 case WM_COMMAND:
1149 switch(LOWORD(wParam)){
1150 case IDC_LINKFILE:
1151 ExtensionLink(hwnd);
1152 return 1;
1153 }
1154 break;
1155 case WM_NOTIFY:
1156 nmhdr=(NMHDR *)lParam;
1157 if(nmhdr->code==PSN_APPLY||nmhdr->code==PSN_KILLACTIVE){
1158 //実行時の、プロジェクトの保存確認の有無
1159 if(SendDlgItemMessage(hwnd,IDC_SAVECHECK,BM_GETCHECK,0,0)) temp_bSaveCheckProject=1;
1160 else temp_bSaveCheckProject=0;
1161
1162 //ドキュメントを保存したときにタブを先頭に再配置するかどうか
1163 if(SendDlgItemMessage(hwnd,IDC_SAVE_TAB_TO_HEAD,BM_GETCHECK,0,0)) temp_bSaveTabToHead=1;
1164 else temp_bSaveTabToHead=0;
1165
1166 if(nmhdr->code==PSN_APPLY) SaveSetting();
1167 }
1168 return 1;
1169 case WM_HELP:
1170 HELPINFO *lpHelpInfo;
1171 lpHelpInfo = (HELPINFO *)lParam;
1172
1173 HH_POPUP hp;
1174 memset(&hp, 0, sizeof(HH_POPUP));
1175 hp.cbStruct = sizeof(HH_POPUP);
1176 hp.pt.x = lpHelpInfo->MousePos.x;
1177 hp.pt.y = lpHelpInfo->MousePos.y+10;
1178 hp.clrForeground = RGB(0, 0, 0);
1179 hp.clrBackground = -1;
1180 hp.rcMargins.left = -1;
1181 hp.rcMargins.right = -1;
1182 hp.rcMargins.top = -1;
1183 hp.rcMargins.bottom = -1;
1184 hp.idString = 0;
1185 hp.pszFont="MS Sans Serif,10";
1186
1187 switch(lpHelpInfo->iCtrlId){
1188 case IDC_SAVECHECK:
1189#if defined(JPN)
1190 //日本語
1191 hp.pszText="このチェックボックスをオンにすると、プロジェクトが未保存の状態であるとき、コンパイル時に保存確認のダイアログボックスが表示されるようになります。\nチェックをオフにすると、プロジェクトはコンパイル時に自動的に保存されます(デフォルトはオフです)。";
1192#else
1193 //英語
1194 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).";
1195#endif
1196 break;
1197 case IDC_LINKFILE:
1198#if defined(JPN)
1199 //日本語
1200 hp.pszText="ファイルの関連付けを行います。";
1201#else
1202 //英語
1203 hp.pszText="Relate the files.";
1204#endif
1205 break;
1206 default:
1207 hp.pszText="";
1208 break;
1209 }
1210 HtmlHelp(hwnd, 0, HH_DISPLAY_TEXT_POPUP, (DWORD)&hp);
1211 return 1;
1212 }
1213 return 0;
1214}
1215BOOL CALLBACK Dlg_Option_Editor(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1216 extern METHODCHECKINFO MethodCheckInfo;
1217 char str[255];
1218 NMHDR *nmhdr;
1219 switch(message){
1220 case WM_INITDIALOG:
1221 bOptionEditor=1;
1222
1223 //フォント
1224 sprintf(str,"%s",pobj_nv->lf.lfFaceName);
1225 SetDlgItemText(hwnd,IDC_SETFONT,str);
1226 temp_lf=pobj_nv->lf;
1227
1228 //タブサイズ
1229 sprintf(str,"%d",pobj_nv->TabSize);
1230 SetDlgItemText(hwnd,IDC_TABSIZE,str);
1231
1232 //エディタの行番号を表示するかどうか
1233 if(pobj_nv->bEditor_LineNumber) SendDlgItemMessage(hwnd,IDC_LINENUMBER,BM_SETCHECK,BST_CHECKED,0);
1234
1235 //エディタのルーラーを表示するかどうか
1236 if(pobj_nv->bEditor_Ruler) SendDlgItemMessage(hwnd,IDC_RULER,BM_SETCHECK,BST_CHECKED,0);
1237
1238 //カーソル行を強調表示するかどうか
1239 if(pobj_nv->bEditor_CaretLine_BackGround) SendDlgItemMessage(hwnd,IDC_CARETLINE_BACKGROUND,BM_SETCHECK,BST_CHECKED,0);
1240
1241#ifdef THETEXT
1242 //自動折り返し時の一行あたりの文字数
1243 sprintf(str,"%d",pobj_nv->iMaxOneLineTextLength);
1244 SetDlgItemText(hwnd,IDC_MAX_ONELINE_TEXT_LENGTH,str);
1245#endif
1246
1247 //自動インデント
1248 if(pobj_nv->bAutoIndent) SendDlgItemMessage(hwnd,IDC_ISAUTOINDENT,BM_SETCHECK,BST_CHECKED,0);
1249
1250 //貼り付け時のインデント調整
1251 if(pobj_nv->bPasteIndent) SendDlgItemMessage(hwnd,IDC_PASTEINDENT,BM_SETCHECK,BST_CHECKED,0);
1252
1253 //コード補完
1254 if(pobj_nv->bShowComplementWnd)
1255 SendDlgItemMessage(hwnd,IDC_COMPLEMENT,BM_SETCHECK,BST_CHECKED,0);
1256
1257 //ペアステートメント補完
1258 SendDlgItemMessage(hwnd,IDC_BACKNUM,EM_SETLIMITTEXT,4,0);
1259 if(pobj_nv->BackNum_PairStatementComplement){
1260 SendDlgItemMessage(hwnd,IDC_PAIRSTATEMENT,BM_SETCHECK,BST_CHECKED,0);
1261 sprintf(str,"%d",pobj_nv->BackNum_PairStatementComplement);
1262 SetDlgItemText(hwnd,IDC_BACKNUM,str);
1263 }
1264
1265 SendMessage(hwnd,WM_COMMAND,IDC_COMPLEMENT,0);
1266
1267 //パラメータ ヒント
1268 if(pobj_nv->dwParameterHint){
1269 SendDlgItemMessage(hwnd,IDC_PARAMHINT,BM_SETCHECK,BST_CHECKED,0);
1270 if(pobj_nv->dwParameterHint==1)
1271 SendDlgItemMessage(hwnd,IDC_POPUP,BM_SETCHECK,BST_CHECKED,0);
1272 else
1273 SendDlgItemMessage(hwnd,IDC_STATUSBAR,BM_SETCHECK,BST_CHECKED,0);
1274 SendMessage(hwnd,WM_COMMAND,IDC_PARAMHINT,0);
1275 }
1276 else SendDlgItemMessage(hwnd,IDC_POPUP,BM_SETCHECK,BST_CHECKED,0);
1277
1278 //パラメータ ヒント フォント
1279 sprintf(str,"%s",MethodCheckInfo.LogFont.lfFaceName);
1280 SetDlgItemText(hwnd,IDC_HINTFONT,str);
1281 temp_HintFont=MethodCheckInfo.LogFont;
1282
1283 //検索・置換文字列を保存するかどうか
1284 if(pobj_nv->bSaveFindStr) SendDlgItemMessage(hwnd,IDC_SAVE_FINDSTR,BM_SETCHECK,BST_CHECKED,0);
1285
1286 break;
1287 case WM_COMMAND:
1288 switch(LOWORD(wParam)){
1289 case IDC_SETFONT:
1290 if(!SetFontDialog(hwnd,&temp_lf,1)) return 1;
1291 sprintf(str,"%s",temp_lf.lfFaceName);
1292 SetDlgItemText(hwnd,IDC_SETFONT,str);
1293 return 1;
1294 case IDC_HINTFONT:
1295 if(!SetFontDialog(hwnd,&temp_HintFont,0)) return 1;
1296 sprintf(str,"%s",temp_HintFont.lfFaceName);
1297 SetDlgItemText(hwnd,IDC_HINTFONT,str);
1298 return 1;
1299
1300 case IDC_ISAUTOINDENT:
1301 case IDC_COMPLEMENT:
1302 if(SendDlgItemMessage(hwnd,IDC_ISAUTOINDENT,BM_GETCHECK,0,0)&&
1303 SendDlgItemMessage(hwnd,IDC_COMPLEMENT,BM_GETCHECK,0,0)){
1304 EnableWindow(GetDlgItem(hwnd,IDC_PAIRSTATEMENT),1);
1305 SendMessage(hwnd,WM_COMMAND,IDC_PAIRSTATEMENT,0);
1306 }
1307 else{
1308 EnableWindow(GetDlgItem(hwnd,IDC_PAIRSTATEMENT),0);
1309 EnableWindow(GetDlgItem(hwnd,IDC_BACKNUM),0);
1310 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_PAIRSTATEMENT),0);
1311 }
1312 return 1;
1313
1314 case IDC_PAIRSTATEMENT:
1315 if(SendDlgItemMessage(hwnd,IDC_PAIRSTATEMENT,BM_GETCHECK,0,0)){
1316 EnableWindow(GetDlgItem(hwnd,IDC_BACKNUM),1);
1317 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_PAIRSTATEMENT),1);
1318
1319 if(GetWindowTextLength(GetDlgItem(hwnd,IDC_BACKNUM))==0)
1320 SetDlgItemText(hwnd,IDC_BACKNUM,"100");
1321 }
1322 else{
1323 EnableWindow(GetDlgItem(hwnd,IDC_BACKNUM),0);
1324 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_PAIRSTATEMENT),0);
1325 }
1326 return 1;
1327
1328 case IDC_PARAMHINT:
1329 if(SendDlgItemMessage(hwnd,IDC_PARAMHINT,BM_GETCHECK,0,0)){
1330 EnableWindow(GetDlgItem(hwnd,IDC_POPUP),1);
1331 EnableWindow(GetDlgItem(hwnd,IDC_STATUSBAR),1);
1332 if(SendDlgItemMessage(hwnd,IDC_POPUP,BM_GETCHECK,0,0)){
1333 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_HINTFONT),1);
1334 EnableWindow(GetDlgItem(hwnd,IDC_HINTFONT),1);
1335 }
1336 }
1337 else{
1338 EnableWindow(GetDlgItem(hwnd,IDC_POPUP),0);
1339 EnableWindow(GetDlgItem(hwnd,IDC_STATUSBAR),0);
1340 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_HINTFONT),0);
1341 EnableWindow(GetDlgItem(hwnd,IDC_HINTFONT),0);
1342 }
1343 return 1;
1344 case IDC_POPUP:
1345 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_HINTFONT),1);
1346 EnableWindow(GetDlgItem(hwnd,IDC_HINTFONT),1);
1347 return 1;
1348 case IDC_STATUSBAR:
1349 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_HINTFONT),0);
1350 EnableWindow(GetDlgItem(hwnd,IDC_HINTFONT),0);
1351 return 1;
1352 }
1353 break;
1354 case WM_NOTIFY:
1355 nmhdr=(NMHDR *)lParam;
1356 if(nmhdr->code==PSN_APPLY||nmhdr->code==PSN_KILLACTIVE){
1357 GetDlgItemText(hwnd,IDC_TABSIZE,str,255);
1358 sscanf(str,"%d",&temp_TabSize);
1359
1360 //エディタの行番号を表示するかどうか
1361 if(SendDlgItemMessage(hwnd,IDC_LINENUMBER,BM_GETCHECK,0,0)) temp_bEditor_LineNumber=1;
1362 else temp_bEditor_LineNumber=0;
1363
1364 //エディタのルーラーを表示するかどうか
1365 if(SendDlgItemMessage(hwnd,IDC_RULER,BM_GETCHECK,0,0)) temp_bEditor_Ruler=1;
1366 else temp_bEditor_Ruler=0;
1367
1368 //カーソル行を強調表示するかどうか
1369 if(SendDlgItemMessage(hwnd,IDC_CARETLINE_BACKGROUND,BM_GETCHECK,0,0)) temp_bEditor_CaretLine_BackGround=1;
1370 else temp_bEditor_CaretLine_BackGround=0;
1371
1372#ifdef THETEXT
1373 //自動折り返し時の一行あたりの文字数
1374 GetDlgItemText(hwnd,IDC_MAX_ONELINE_TEXT_LENGTH,str,255);
1375 sscanf(str,"%d",&temp_iMaxOneLineTextLength);
1376 if(temp_iMaxOneLineTextLength<=0){
1377 temp_iMaxOneLineTextLength=75;
1378 }
1379#endif
1380
1381 //自動インデント
1382 if(SendDlgItemMessage(hwnd,IDC_ISAUTOINDENT,BM_GETCHECK,0,0)) temp_bAutoIndent=1;
1383 else temp_bAutoIndent=0;
1384
1385 //貼り付け時のインデント調整
1386 if(SendDlgItemMessage(hwnd,IDC_PASTEINDENT,BM_GETCHECK,0,0)) temp_bPasteIndent=1;
1387 else temp_bPasteIndent=0;
1388
1389 //コード補完機能
1390 if(SendDlgItemMessage(hwnd,IDC_COMPLEMENT,BM_GETCHECK,0,0))
1391 temp_bShowComplementWnd=1;
1392 else temp_bShowComplementWnd=0;
1393
1394 //ペアステートメント補完
1395 if(IsWindowEnabled(GetDlgItem(hwnd,IDC_PAIRSTATEMENT))){
1396 if(SendDlgItemMessage(hwnd,IDC_PAIRSTATEMENT,BM_GETCHECK,0,0)){
1397 GetDlgItemText(hwnd,IDC_BACKNUM,str,255);
1398 sscanf(str,"%d",&temp_BackNum_PairStatementComplement);
1399 }
1400 else temp_BackNum_PairStatementComplement=0;
1401 }
1402 else temp_BackNum_PairStatementComplement=0;
1403
1404 //パラメータヒント
1405 if(SendDlgItemMessage(hwnd,IDC_PARAMHINT,BM_GETCHECK,0,0)){
1406 if(SendDlgItemMessage(hwnd,IDC_POPUP,BM_GETCHECK,0,0)) temp_dwParameterHint=1;
1407 else temp_dwParameterHint=2;
1408 }
1409 else temp_dwParameterHint=0;
1410
1411 if(SendDlgItemMessage(hwnd,IDC_SAVE_FINDSTR,BM_GETCHECK,0,0))
1412 temp_bSaveFindStr=1;
1413 else temp_bSaveFindStr=0;
1414
1415 if(nmhdr->code==PSN_APPLY) SaveSetting();
1416 }
1417 return 1;
1418
1419 case WM_HELP:
1420 HELPINFO *lpHelpInfo;
1421 lpHelpInfo = (HELPINFO *)lParam;
1422
1423 HH_POPUP hp;
1424 memset(&hp, 0, sizeof(HH_POPUP));
1425 hp.cbStruct = sizeof(HH_POPUP);
1426 hp.pt.x = lpHelpInfo->MousePos.x;
1427 hp.pt.y = lpHelpInfo->MousePos.y+10;
1428 hp.clrForeground = RGB(0, 0, 0);
1429 hp.clrBackground = -1;
1430 hp.rcMargins.left = -1;
1431 hp.rcMargins.right = -1;
1432 hp.rcMargins.top = -1;
1433 hp.rcMargins.bottom = -1;
1434 hp.idString = 0;
1435 hp.pszFont="MS Sans Serif,10";
1436
1437 switch(lpHelpInfo->iCtrlId){
1438 case IDC_STATIC_SETFONT:
1439 case IDC_SETFONT:
1440#if defined(JPN)
1441 //日本語
1442 hp.pszText="エディタで使用するフォントを選択することができます。";
1443#else
1444 //英語
1445 hp.pszText="Choose the font displayed on the editor";
1446#endif
1447 break;
1448 case IDC_STATIC_TABSIZE:
1449 case IDC_TABSIZE:
1450#if defined(JPN)
1451 //日本語
1452 hp.pszText="タブサイズを指定します。デフォルト値は4です。";
1453#else
1454 //英語
1455 hp.pszText="Set the tab size. Value of default is 4.";
1456#endif
1457 break;
1458 case IDC_ISAUTOINDENT:
1459#if defined(JPN)
1460 //日本語
1461 hp.pszText="このチェックをオンにすると、必要に応じて、自動的にインデント用のタブ文字が挿入されます。";
1462#else
1463 //英語
1464 hp.pszText="If this check is on, the indent tabs will be inserted automatically.";
1465#endif
1466 break;
1467 case IDC_COMPLEMENT:
1468#if defined(JPN)
1469 //日本語
1470 hp.pszText="このチェックをオンにすると、クラスまたは構造体のメンバを入力するときに、予想されるキーワードがリスト表示されます。";
1471#else
1472 //英語
1473 hp.pszText="If this check is on, the member expected is displayed in a list when inputting the member of the class object.";
1474#endif
1475 break;
1476 case IDC_PARAMHINT:
1477#if defined(JPN)
1478 //日本語
1479 hp.pszText="このチェックをオンにすると、関数またはステートメントを入力するときに、該当するパラメータのヒント文字列が表示されます。文字列の表示方法はポップアップまたはステータスバーのいずれかを選択することができます。";
1480#else
1481 //英語
1482 hp.pszText="If this check is on, parameter hint is displayed when inputting a function or a statement.";
1483#endif
1484 break;
1485 case IDC_POPUP:
1486#if defined(JPN)
1487 //日本語
1488 hp.pszText="パラメータヒントをポップアップ表示するときは、ここをチェックします。";
1489#else
1490 //英語
1491 hp.pszText="If this check is on, parameter hint is displayed on a popup window.";
1492#endif
1493 break;
1494 case IDC_STATUSBAR:
1495#if defined(JPN)
1496 //日本語
1497 hp.pszText="パラメータヒントをステータスバーに表示するときは、ここをチェックします。";
1498#else
1499 //英語
1500 hp.pszText="If this check is on, parameter hint is displayed in a status bar.";
1501#endif
1502 break;
1503 case IDC_STATIC_HINTFONT:
1504 case IDC_HINTFONT:
1505#if defined(JPN)
1506 //日本語
1507 hp.pszText="ポップアップ表示されるパラメータヒントのフォントを指定します。";
1508#else
1509 //英語
1510 hp.pszText="Choose the font displayed on the popup hint.";
1511#endif
1512 break;
1513 default:
1514 hp.pszText="";
1515 break;
1516 }
1517 HtmlHelp(hwnd, 0, HH_DISPLAY_TEXT_POPUP, (DWORD)&hp);
1518 return 1;
1519 }
1520 return 0;
1521}
1522COLORREF GetColorFromSelection(int iPos,TEXTEDIT_COLOR_INFO *ptci){
1523 if(iPos==0) return ptci->rgbComment;
1524 else if(iPos==1) return ptci->rgbString;
1525 else if(iPos==2) return ptci->rgbDefault;
1526 else if(iPos==3) return ptci->rgbStatement;
1527 else if(iPos==4) return ptci->rgbCursorBack;
1528 else if(iPos==5) return ptci->rgbBackground;
1529 return 0;
1530}
1531void SetColorFromSelection(int iPos,COLORREF rgb,TEXTEDIT_COLOR_INFO *ptci){
1532 if(iPos==0) ptci->rgbComment=rgb;
1533 else if(iPos==1) ptci->rgbString=rgb;
1534 else if(iPos==2) ptci->rgbDefault=rgb;
1535 else if(iPos==3) ptci->rgbStatement=rgb;
1536 else if(iPos==4) ptci->rgbCursorBack=rgb;
1537 else if(iPos==5) ptci->rgbBackground=rgb;
1538}
1539#ifdef THETEXT
1540char szNewThemeName[MAX_PATH];
1541BOOL bThemeOverwirte;
1542BOOL CALLBACK DlgOptionThemeSave(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1543 switch(message){
1544 case WM_INITDIALOG:
1545 SetPosCenter(hwnd);
1546
1547 SendMessage(hwnd,WM_COMMAND,IDC_NAME,0);
1548 SetFocus(GetDlgItem(hwnd,IDC_NAME));
1549 break;
1550 case WM_COMMAND:
1551 switch(LOWORD(wParam)){
1552 case IDOK:
1553 GetDlgItemText(hwnd,IDC_NAME,szNewThemeName,MAX_PATH);
1554
1555 if(SendDlgItemMessage(hwnd,IDC_OVERWRITE,BM_GETCHECK,0,0))
1556 bThemeOverwirte=1;
1557 else bThemeOverwirte=0;
1558
1559 if(pobj_DBTheme->dupli_check(szNewThemeName)){
1560 if(!bThemeOverwirte){
1561 char temporary[MAX_PATH];
1562 sprintf(temporary,"テーマ \"%s\" は既に存在します。「上書きを許可する」をチェックした後、保存してください。",szNewThemeName);
1563 MessageBox(hwnd,temporary,APPLICATION_NAME,MB_OK);
1564 return 1;
1565 }
1566 }
1567
1568 EndDialog(hwnd,1);
1569 return 1;
1570 case IDCANCEL:
1571 EndDialog(hwnd,0);
1572 return 1;
1573 case IDC_NAME:
1574 if(GetWindowTextLength(GetDlgItem(hwnd,IDC_NAME)))
1575 EnableWindow(GetDlgItem(hwnd,IDOK),1);
1576 else EnableWindow(GetDlgItem(hwnd,IDOK),0);
1577 return 1;
1578 }
1579 break;
1580 }
1581 return 0;
1582}
1583#endif
1584BOOL CALLBACK Dlg_Option_Color(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1585 int iPos;
1586 CTheme *pobj_Theme;
1587 char temporary[MAX_PATH];
1588 switch(message){
1589 case WM_INITDIALOG:
1590 bOptionColor=1;
1591
1592 //一時保存値を初期化
1593 pobj_Theme=pobj_DBTheme->GetActiveTheme();
1594 obj_temp_Theme=*pobj_Theme;
1595
1596 //指定する部分
1597 SendDlgItemMessage(hwnd,IDC_TARGET,CB_ADDSTRING,0,(LPARAM)"コメント");
1598 SendDlgItemMessage(hwnd,IDC_TARGET,CB_ADDSTRING,0,(LPARAM)"ダブルクォート内の文字列");
1599 SendDlgItemMessage(hwnd,IDC_TARGET,CB_ADDSTRING,0,(LPARAM)"通常の文字");
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_SETCURSEL,0,0);
1604
1605
1606 //テーマ名をコンボボックスにセット
1607 pobj_DBTheme->ResetTheme_ToComboBox(GetDlgItem(hwnd,IDC_THEME));
1608
1609
1610 SendMessage(hwnd,WM_COMMAND,MAKELONG(IDC_THEME,CBN_SELCHANGE),0);
1611 break;
1612
1613 case WM_COMMAND:
1614 switch(LOWORD(wParam)){
1615#ifdef THETEXT
1616 case IDC_SAVE:
1617 if(!DialogBox(hResInst,MAKEINTRESOURCE(IDD_OPTION_THEME_SAVE),hwnd,(DLGPROC)DlgOptionThemeSave)) return 1;
1618
1619 pobj_Theme=pobj_DBTheme->dupli_check(szNewThemeName);
1620 if(pobj_Theme){
1621 }
1622 else{
1623 //新規に追加
1624 pobj_Theme=pobj_DBTheme->add(0,szNewThemeName);
1625 }
1626 *pobj_Theme=obj_temp_Theme;
1627 lstrcpy(pobj_Theme->m_name,szNewThemeName);
1628
1629 //ファイルに保存
1630 pobj_Theme->save();
1631
1632 //テーマ コンボボックスのカーソル位置をセット
1633 ComboBox_SetSelText(GetDlgItem(hwnd,IDC_THEME),szNewThemeName);
1634
1635 return 1;
1636#endif //THETEXT
1637 case IDC_THEME:
1638 if(HIWORD(wParam)==CBN_SELCHANGE){
1639 if(!SendDlgItemMessage(hwnd,IDC_THEME,CB_GETLBTEXT,
1640 SendDlgItemMessage(hwnd,IDC_THEME,CB_GETCURSEL,0,0),
1641 (LPARAM)temporary)) return 1;
1642
1643 pobj_Theme=pobj_DBTheme->dupli_check(temporary);
1644 obj_temp_Theme=*pobj_Theme;
1645
1646 InvalidateRect(GetDlgItem(hwnd,IDC_SAMPLE),NULL,0);
1647 InvalidateRect(GetDlgItem(hwnd,IDC_COLOR_BUTTON),NULL,0);
1648 }
1649 return 1;
1650 case IDC_TARGET:
1651 if(HIWORD(wParam)==CBN_SELCHANGE){
1652 InvalidateRect(GetDlgItem(hwnd,IDC_COLOR_BUTTON),NULL,0);
1653 }
1654 return 1;
1655 case IDC_COLOR_BUTTON:
1656 iPos=SendDlgItemMessage(hwnd,IDC_TARGET,CB_GETCURSEL,0,0);
1657
1658 CHOOSECOLOR cc;
1659 static COLORREF CustColors[16];
1660 cc.lStructSize=sizeof(CHOOSECOLOR);
1661 cc.hwndOwner=hwnd;
1662 cc.rgbResult=GetColorFromSelection(iPos,&obj_temp_Theme.TextColorInfo);
1663 cc.lpCustColors=CustColors;
1664 cc.Flags=CC_FULLOPEN | CC_RGBINIT;
1665 if(!ChooseColor(&cc)) return 1;
1666
1667 SetColorFromSelection(iPos,cc.rgbResult,&obj_temp_Theme.TextColorInfo);
1668
1669 InvalidateRect(GetDlgItem(hwnd,IDC_COLOR_BUTTON),NULL,0);
1670 InvalidateRect(GetDlgItem(hwnd,IDC_SAMPLE),NULL,0);
1671
1672 lstrcpy(obj_temp_Theme.m_name,THEMENAME_USER);
1673
1674 //ユーザー設定を選択
1675 ComboBox_SetSelText(GetDlgItem(hwnd,IDC_THEME),THEMENAME_USER);
1676 return 1;
1677 }
1678 break;
1679
1680 case WM_NOTIFY:
1681 NMHDR *nmhdr;
1682 nmhdr=(NMHDR *)lParam;
1683
1684 if(nmhdr->code==PSN_APPLY) SaveSetting();
1685 return 1;
1686
1687 case WM_DRAWITEM:
1688 LPDRAWITEMSTRUCT pds;
1689 pds=(LPDRAWITEMSTRUCT)lParam;
1690
1691 HBRUSH hBrush,hOldBrush;
1692
1693 if(wParam==IDC_COLOR_BUTTON){
1694 iPos=SendDlgItemMessage(hwnd,IDC_TARGET,CB_GETCURSEL,0,0);
1695
1696 //////////////
1697 // 色を描画
1698 //////////////
1699
1700 //ペンとブラシを生成
1701 HPEN hPen,hOldPen;
1702 hPen=(HPEN)GetStockObject(WHITE_PEN);
1703 if(IsWindowEnabled(GetDlgItem(hwnd,IDC_COLOR_BUTTON)))
1704 hBrush=CreateSolidBrush(GetColorFromSelection(iPos,&obj_temp_Theme.TextColorInfo));
1705 else
1706 hBrush=CreateSolidBrush(GetSysColor(COLOR_3DFACE));
1707
1708 //塗りつぶす
1709 hOldPen=(HPEN)SelectObject(pds->hDC,hPen);
1710 hOldBrush=(HBRUSH)SelectObject(pds->hDC,hBrush);
1711 Rectangle(pds->hDC,0,0,pds->rcItem.right,pds->rcItem.bottom);
1712 SelectObject(pds->hDC,hOldPen);
1713 SelectObject(pds->hDC,hOldBrush);
1714
1715 //ブラシを破棄
1716 DeleteObject(hBrush);
1717 }
1718 else if(wParam==IDC_SAMPLE){
1719 TEXTEDIT_COLOR_INFO ColorInfo;
1720 ColorInfo=obj_temp_Theme.TextColorInfo;
1721
1722 //背景色で塗りつぶす
1723 hBrush=CreateSolidBrush(ColorInfo.rgbBackground);
1724 hOldBrush=(HBRUSH)SelectObject(pds->hDC,hBrush);
1725 PatBlt(pds->hDC,0,0,pds->rcItem.right,pds->rcItem.bottom,PATCOPY);
1726 SelectObject(pds->hDC,hOldBrush);
1727 DeleteObject(hBrush);
1728
1729 //フォントを選択
1730 extern HFONT hFont_TextEdit;
1731 HFONT hOldFont;
1732 hOldFont=(HFONT)SelectObject(pds->hDC,hFont_TextEdit);
1733
1734 ///////////////////
1735 // サンプルを描画
1736 ///////////////////
1737
1738 extern int font_width,font_height;
1739 int x=0,y=0;
1740
1741#ifdef THETEXT
1742#define SAMPLESTR_STATEMENT "div"
1743#define SAMPLESTR_COMMENT "<!-- この行にカーソルがあります -->"
1744#define SAMPLESTR_DEFAULT "< style= >Hello World!</ >"
1745#define SAMPLESTR_STRING "\"color:#123456\""
1746
1747 y+=font_height;
1748
1749 //"< style= >Hello World!</ >"
1750 SetTextColor(pds->hDC,ColorInfo.rgbDefault);
1751 SetBkColor(pds->hDC,ColorInfo.rgbBackground);
1752 TextOut(pds->hDC,x,y,SAMPLESTR_DEFAULT,lstrlen(SAMPLESTR_DEFAULT));
1753
1754 //div
1755 x=font_width*1;
1756 SetTextColor(pds->hDC,ColorInfo.rgbStatement);
1757 TextOut(pds->hDC,x,y,SAMPLESTR_STATEMENT,lstrlen(SAMPLESTR_STATEMENT));
1758 x=font_width*41;
1759 TextOut(pds->hDC,x,y,SAMPLESTR_STATEMENT,lstrlen(SAMPLESTR_STATEMENT));
1760
1761 //"color:#123456"
1762 x=font_width*11;
1763 SetTextColor(pds->hDC,ColorInfo.rgbString);
1764 TextOut(pds->hDC,x,y,SAMPLESTR_STRING,lstrlen(SAMPLESTR_STRING));
1765
1766 x=0;
1767 y+=font_height*2;
1768
1769 //"'この行にカーソルがあります
1770 hBrush=CreateSolidBrush(ColorInfo.rgbCursorBack);
1771 hOldBrush=(HBRUSH)SelectObject(pds->hDC,hBrush);
1772 PatBlt(pds->hDC,x,y,pds->rcItem.right,font_height,PATCOPY);
1773 SelectObject(pds->hDC,hOldBrush);
1774 DeleteObject(hBrush);
1775
1776 SetTextColor(pds->hDC,ColorInfo.rgbComment);
1777 SetBkColor(pds->hDC,ColorInfo.rgbCursorBack);
1778 TextOut(pds->hDC,x,y,SAMPLESTR_COMMENT,lstrlen(SAMPLESTR_COMMENT));
1779#else
1780#define SAMPLESTR_STATEMENT "#console"
1781#define SAMPLESTR_COMMENT "'この行にカーソルがあります"
1782#define SAMPLESTR_DEFAULT "Print "
1783#define SAMPLESTR_STRING "\"Hello World!\""
1784
1785 //"#console"
1786 SetTextColor(pds->hDC,ColorInfo.rgbStatement);
1787 SetBkColor(pds->hDC,ColorInfo.rgbBackground);
1788 TextOut(pds->hDC,0,0,SAMPLESTR_STATEMENT,lstrlen(SAMPLESTR_STATEMENT));
1789 y+=font_height*2;
1790
1791 //"'この行にカーソルがあります
1792 hBrush=CreateSolidBrush(ColorInfo.rgbCursorBack);
1793 hOldBrush=(HBRUSH)SelectObject(pds->hDC,hBrush);
1794 PatBlt(pds->hDC,x,y,pds->rcItem.right,font_height,PATCOPY);
1795 SelectObject(pds->hDC,hOldBrush);
1796 DeleteObject(hBrush);
1797
1798 SetTextColor(pds->hDC,ColorInfo.rgbComment);
1799 SetBkColor(pds->hDC,ColorInfo.rgbCursorBack);
1800 TextOut(pds->hDC,x,y,SAMPLESTR_COMMENT,lstrlen(SAMPLESTR_COMMENT));
1801 y+=font_height*2;
1802
1803 //Print
1804 SetTextColor(pds->hDC,ColorInfo.rgbDefault);
1805 SetBkColor(pds->hDC,ColorInfo.rgbBackground);
1806 TextOut(pds->hDC,x,y,SAMPLESTR_DEFAULT,lstrlen(SAMPLESTR_DEFAULT));
1807 x+=lstrlen(SAMPLESTR_DEFAULT)*font_width;
1808
1809 //"Hello World!"
1810 SetTextColor(pds->hDC,ColorInfo.rgbString);
1811 TextOut(pds->hDC,x,y,SAMPLESTR_STRING,lstrlen(SAMPLESTR_STRING));
1812#endif
1813
1814 SelectObject(pds->hDC,hOldFont);
1815 }
1816 return 0;
1817
1818 case WM_HELP:
1819 HELPINFO *lpHelpInfo;
1820 lpHelpInfo = (HELPINFO *)lParam;
1821
1822 HH_POPUP hp;
1823 memset(&hp, 0, sizeof(HH_POPUP));
1824 hp.cbStruct = sizeof(HH_POPUP);
1825 hp.pt.x = lpHelpInfo->MousePos.x;
1826 hp.pt.y = lpHelpInfo->MousePos.y+10;
1827 hp.clrForeground = RGB(0, 0, 0);
1828 hp.clrBackground = -1;
1829 hp.rcMargins.left = -1;
1830 hp.rcMargins.right = -1;
1831 hp.rcMargins.top = -1;
1832 hp.rcMargins.bottom = -1;
1833 hp.idString = 0;
1834 hp.pszFont="MS Sans Serif,10";
1835
1836 switch(lpHelpInfo->iCtrlId){
1837 case IDC_TARGET:
1838 hp.pszText="どの部分の色を設定するかを選択します。";
1839 break;
1840 default:
1841 hp.pszText="";
1842 break;
1843 }
1844 HtmlHelp(hwnd, 0, HH_DISPLAY_TEXT_POPUP, (DWORD)&hp);
1845 return 1;
1846 }
1847 return 0;
1848}
1849BOOL CALLBACK Dlg_Option_Toolbar(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1850 switch(message){
1851 case WM_INITDIALOG:
1852 bOptionToolbar=1;
1853 break;
1854 case WM_COMMAND:
1855 switch(LOWORD(wParam)){
1856 case IDC_RESETTOOLBAR:
1857 //"ツールバーの配置をすべて初期状態に戻します。\nよろしいですか?"
1858 if(IDCANCEL==MessageBox(hwnd,STRING_TOOLBAR_RESET,APPLICATION_NAME,MB_OKCANCEL|MB_ICONEXCLAMATION)) break;
1859
1860 //レバーコントロールを再生成
1861 pobj_Rebar->ResetInitRebar();
1862
1863 //メニュー状態を設定
1864 ResetState_DocMenu();
1865 return 1;
1866 }
1867 break;
1868
1869 case WM_HELP:
1870 HELPINFO *lpHelpInfo;
1871 lpHelpInfo = (HELPINFO *)lParam;
1872
1873 HH_POPUP hp;
1874 memset(&hp, 0, sizeof(HH_POPUP));
1875 hp.cbStruct = sizeof(HH_POPUP);
1876 hp.pt.x = lpHelpInfo->MousePos.x;
1877 hp.pt.y = lpHelpInfo->MousePos.y+10;
1878 hp.clrForeground = RGB(0, 0, 0);
1879 hp.clrBackground = -1;
1880 hp.rcMargins.left = -1;
1881 hp.rcMargins.right = -1;
1882 hp.rcMargins.top = -1;
1883 hp.rcMargins.bottom = -1;
1884 hp.idString = 0;
1885 hp.pszFont="MS Sans Serif,10";
1886
1887 switch(lpHelpInfo->iCtrlId){
1888 case IDC_RESETTOOLBAR:
1889#if defined(JPN)
1890 //日本語
1891 hp.pszText="ツールバーの配置を初期状態に戻します。";
1892#else
1893 //英語
1894 hp.pszText="Reset the state of the toolbar.";
1895#endif
1896 break;
1897 default:
1898 hp.pszText="";
1899 break;
1900 }
1901 HtmlHelp(hwnd, 0, HH_DISPLAY_TEXT_POPUP, (DWORD)&hp);
1902 return 1;
1903 }
1904 return 0;
1905}
1906BOOL CALLBACK Dlg_Option_Rad(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1907 NMHDR *nmhdr;
1908 switch(message){
1909 case WM_INITDIALOG:
1910
1911 bOptionRad=1;
1912
1913 //ライン アジャスタ
1914 if(pobj_nv->bLineAdjust) SendDlgItemMessage(hwnd,IDC_LINEADJUST,BM_SETCHECK,BST_CHECKED,0);
1915
1916 break;
1917 case WM_NOTIFY:
1918 nmhdr=(NMHDR *)lParam;
1919 if(nmhdr->code==PSN_APPLY||nmhdr->code==PSN_KILLACTIVE){
1920 if(SendDlgItemMessage(hwnd,IDC_LINEADJUST,BM_GETCHECK,0,0)) temp_bLineAdjust=1;
1921 else temp_bLineAdjust=0;
1922
1923 if(nmhdr->code==PSN_APPLY) SaveSetting();
1924 }
1925 return 1;
1926
1927 case WM_HELP:
1928 HELPINFO *lpHelpInfo;
1929 lpHelpInfo = (HELPINFO *)lParam;
1930
1931 HH_POPUP hp;
1932 memset(&hp, 0, sizeof(HH_POPUP));
1933 hp.cbStruct = sizeof(HH_POPUP);
1934 hp.pt.x = lpHelpInfo->MousePos.x;
1935 hp.pt.y = lpHelpInfo->MousePos.y+10;
1936 hp.clrForeground = RGB(0, 0, 0);
1937 hp.clrBackground = -1;
1938 hp.rcMargins.left = -1;
1939 hp.rcMargins.right = -1;
1940 hp.rcMargins.top = -1;
1941 hp.rcMargins.bottom = -1;
1942 hp.idString = 0;
1943 hp.pszFont="MS Sans Serif,10";
1944
1945 switch(lpHelpInfo->iCtrlId){
1946 case IDC_LINEADJUST:
1947#if defined(JPN)
1948 //日本語
1949 hp.pszText="このチェックボックスをオンにすると、ラインアジャスタ機能が有効になります。ラインアジャスタ機能をオンにすると、マウスを使ってコントロールの移動を行う際に他のコントロール同士との位置合わせが容易に行えるようになります。";
1950#else
1951 //英語
1952 hp.pszText="If this check is on, line adjuster becomes effective.";
1953#endif
1954 break;
1955 default:
1956 hp.pszText="";
1957 break;
1958 }
1959 HtmlHelp(hwnd, 0, HH_DISPLAY_TEXT_POPUP, (DWORD)&hp);
1960 return 1;
1961 }
1962 return 0;
1963}
1964char szDomainAdd_Name[255];
1965char szDomainAdd_Domain[255];
1966BOOL CALLBACK Dlg_Option_Web_Domain_Add(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1967 switch(message){
1968 case WM_INITDIALOG:
1969 SetPosCenter(hwnd);
1970 SetFocus(GetDlgItem(hwnd,IDC_NAME));
1971
1972 if(lParam!=-1){
1973 SetWindowText(hwnd,"Web検索用ドメインを編集");
1974 SetDlgItemText(hwnd,IDC_NAME,szDomainAdd_Name);
1975 SetDlgItemText(hwnd,IDC_DOMAIN,szDomainAdd_Domain);
1976 }
1977 break;
1978 case WM_COMMAND:
1979 switch(LOWORD(wParam)){
1980 case IDOK:
1981 GetDlgItemText(hwnd,IDC_NAME,szDomainAdd_Name,255);
1982 GetDlgItemText(hwnd,IDC_DOMAIN,szDomainAdd_Domain,255);
1983 EndDialog(hwnd,1);
1984 return 1;
1985 case IDCANCEL:
1986 EndDialog(hwnd,0);
1987 return 1;
1988 }
1989 return 0;
1990 }
1991 return 0;
1992}
1993BOOL CALLBACK Dlg_Option_Web(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1994 HWND hListView;
1995 NMHDR *nmhdr;
1996 int i;
1997 char temporary[255];
1998 switch(message){
1999 case WM_INITDIALOG:
2000
2001 bOptionWeb=1;
2002
2003
2004 //Ctrlキーによるハイパーリンク
2005 if(pobj_nv->bCtrlKeyHyperLink) SendDlgItemMessage(hwnd,IDC_CTRLKEY_HYPERLINK,BM_SETCHECK,BST_CHECKED,0);
2006
2007 //Web検索文字列を保存するかどうか
2008 if(pobj_nv->bSaveWebFindStr) SendDlgItemMessage(hwnd,IDC_SAVE_WEBFINDSTR,BM_SETCHECK,BST_CHECKED,0);
2009
2010
2011 //拡張スタイル
2012 DWORD dwStyle;
2013 hListView=GetDlgItem(hwnd,IDC_DOMAIN_LIST);
2014 dwStyle=ListView_GetExtendedListViewStyle(hListView);
2015 dwStyle|=LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES;
2016 ListView_SetExtendedListViewStyle(hListView,dwStyle);
2017
2018 LV_COLUMN ListView_Column;
2019 ListView_Column.mask=LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
2020 ListView_Column.fmt=LVCFMT_LEFT;
2021
2022 ListView_Column.cx=80;
2023 ListView_Column.pszText="表示名";
2024 ListView_Column.iSubItem=0;
2025 ListView_InsertColumn(hListView,ListView_Column.iSubItem,&ListView_Column);
2026
2027 ListView_Column.cx=200;
2028 ListView_Column.pszText="ドメイン";
2029 ListView_Column.iSubItem++;
2030 ListView_InsertColumn(hListView,ListView_Column.iSubItem,&ListView_Column);
2031
2032 //一時オブジェクトにコピー
2033 pobj_temp_DBDomain->copy_get(pobj_nv->pobj_DBDomain);
2034
2035 //ドメインリストにデータをセット
2036 pobj_temp_DBDomain->SetListView(hListView);
2037
2038 break;
2039 case WM_COMMAND:
2040 switch(LOWORD(wParam)){
2041 case IDC_ADD:
2042 if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_OPTION_WEB_DOMAIN_ADD),hwnd,(DLGPROC)Dlg_Option_Web_Domain_Add,-1)) return 1;
2043
2044 pobj_temp_DBDomain->add(szDomainAdd_Name,szDomainAdd_Domain);
2045 return 1;
2046 case IDC_DELETE:
2047 hListView=GetDlgItem(hwnd,IDC_DOMAIN_LIST);
2048 for(i=0;i<ListView_GetItemCount(hListView);i++){
2049 if(ListView_GetItemState(hListView,i,LVIS_SELECTED)){
2050 ListView_GetItemText(hListView,i,0,temporary,255);
2051 pobj_temp_DBDomain->del(temporary);
2052 break;
2053 }
2054 }
2055 return 1;
2056 case IDC_EDIT:
2057 hListView=GetDlgItem(hwnd,IDC_DOMAIN_LIST);
2058 for(i=0;i<ListView_GetItemCount(hListView);i++){
2059 if(ListView_GetItemState(hListView,i,LVIS_SELECTED)){
2060 ListView_GetItemText(hListView,i,0,temporary,255);
2061
2062 ListView_GetItemText(hListView,i,0,szDomainAdd_Name,255);
2063 ListView_GetItemText(hListView,i,1,szDomainAdd_Domain,255);
2064 lstrcpy(temporary,szDomainAdd_Name);
2065 if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_OPTION_WEB_DOMAIN_ADD),hwnd,(DLGPROC)Dlg_Option_Web_Domain_Add,i)) return 1;
2066
2067 pobj_temp_DBDomain->change(temporary,szDomainAdd_Name,szDomainAdd_Domain);
2068 }
2069 }
2070 return 1;
2071 }
2072 return 0;
2073 case WM_NOTIFY:
2074 nmhdr=(NMHDR *)lParam;
2075 if(nmhdr->code==PSN_APPLY||nmhdr->code==PSN_KILLACTIVE){
2076
2077 //Ctrlキーによるハイパーリンク
2078 if(SendDlgItemMessage(hwnd,IDC_CTRLKEY_HYPERLINK,BM_GETCHECK,0,0)) temp_bCtrlKeyHyperLink=1;
2079 else temp_bCtrlKeyHyperLink=0;
2080
2081 //Web検索文字列を保存するかどうか
2082 if(SendDlgItemMessage(hwnd,IDC_SAVE_WEBFINDSTR,BM_GETCHECK,0,0)) temp_bSaveWebFindStr=1;
2083 else temp_bSaveWebFindStr=0;
2084
2085 if(nmhdr->code==PSN_APPLY) SaveSetting();
2086 }
2087 if(nmhdr->idFrom==IDC_DOMAIN_LIST){
2088 if(nmhdr->code==NM_DBLCLK){
2089 LPNMLISTVIEW lpnmListView;
2090 lpnmListView=(LPNMLISTVIEW)lParam;
2091
2092 char szBeforeName[255];
2093 ListView_GetItemText(nmhdr->hwndFrom,lpnmListView->iItem,0,szDomainAdd_Name,255);
2094 ListView_GetItemText(nmhdr->hwndFrom,lpnmListView->iItem,1,szDomainAdd_Domain,255);
2095 lstrcpy(szBeforeName,szDomainAdd_Name);
2096 if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_OPTION_WEB_DOMAIN_ADD),hwnd,(DLGPROC)Dlg_Option_Web_Domain_Add,lpnmListView->iItem)) return 1;
2097
2098 pobj_temp_DBDomain->change(szBeforeName,szDomainAdd_Name,szDomainAdd_Domain);
2099 }
2100 }
2101 return 1;
2102 }
2103 return 0;
2104}
2105void DlgOptionSetting(HWND hwnd){
2106 PROPSHEETHEADER psh;
2107#define MAX_SETDLG 32
2108 PROPSHEETPAGE psp[MAX_SETDLG];
2109 HPROPSHEETPAGE hpsp[MAX_SETDLG];
2110 int i;
2111
2112 bOptionWhole=0;
2113 bOptionEditor=0;
2114 bOptionColor=0;
2115 bOptionToolbar=0;
2116 bOptionRad=0;
2117 bOptionWeb=0;
2118
2119 i=0;
2120
2121 //各ページのセッティング
2122 psp[i].dwSize=sizeof(PROPSHEETPAGE);
2123 psp[i].dwFlags=PSP_DEFAULT;
2124 psp[i].hInstance=hResInst;
2125 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_OPTION_WHOLE);
2126 psp[i].pfnDlgProc=(DLGPROC)Dlg_Option_Whole;
2127 hpsp[i]=CreatePropertySheetPage(&psp[i]);
2128 i++;
2129 psp[i].dwSize=sizeof(PROPSHEETPAGE);
2130 psp[i].dwFlags=PSP_DEFAULT;
2131 psp[i].hInstance=hResInst;
2132 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_OPTION_EDITOR);
2133 psp[i].pfnDlgProc=(DLGPROC)Dlg_Option_Editor;
2134 hpsp[i]=CreatePropertySheetPage(&psp[i]);
2135 i++;
2136 psp[i].dwSize=sizeof(PROPSHEETPAGE);
2137 psp[i].dwFlags=PSP_DEFAULT;
2138 psp[i].hInstance=hResInst;
2139 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_OPTION_COLOR);
2140 psp[i].pfnDlgProc=(DLGPROC)Dlg_Option_Color;
2141 hpsp[i]=CreatePropertySheetPage(&psp[i]);
2142 i++;
2143 psp[i].dwSize=sizeof(PROPSHEETPAGE);
2144 psp[i].dwFlags=PSP_DEFAULT;
2145 psp[i].hInstance=hResInst;
2146 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_OPTION_TOOLBAR);
2147 psp[i].pfnDlgProc=(DLGPROC)Dlg_Option_Toolbar;
2148 hpsp[i]=CreatePropertySheetPage(&psp[i]);
2149
2150#ifndef THETEXT
2151 //RADツールに関するオプションはProjectEditorのみ表示
2152 i++;
2153 psp[i].dwSize=sizeof(PROPSHEETPAGE);
2154 psp[i].dwFlags=PSP_DEFAULT;
2155 psp[i].hInstance=hResInst;
2156 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_OPTION_RAD);
2157 psp[i].pfnDlgProc=(DLGPROC)Dlg_Option_Rad;
2158 hpsp[i]=CreatePropertySheetPage(&psp[i]);
2159#endif
2160
2161 i++;
2162 psp[i].dwSize=sizeof(PROPSHEETPAGE);
2163 psp[i].dwFlags=PSP_DEFAULT;
2164 psp[i].hInstance=hResInst;
2165 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_OPTION_WEB);
2166 psp[i].pfnDlgProc=(DLGPROC)Dlg_Option_Web;
2167 hpsp[i]=CreatePropertySheetPage(&psp[i]);
2168
2169 i++;
2170
2171
2172
2173 ///////////////////////////
2174 // 一時オブジェクトを生成
2175 ///////////////////////////
2176
2177 pobj_temp_DBDomain=new CDBDomain();
2178
2179
2180
2181 memset(&psh,0,sizeof(PROPSHEETHEADER));
2182 psh.dwSize=sizeof(PROPSHEETHEADER);
2183 psh.dwFlags=PSH_PROPSHEETPAGE|PSH_NOAPPLYNOW;
2184 psh.phpage=hpsp;
2185 psh.hwndParent=hwnd;
2186 psh.pszCaption=STRING_OPTION; //"オプション"
2187 psh.nPages=i;
2188 psh.nStartPage=0;
2189 psh.ppsp=psp;
2190 PropertySheet(&psh);
2191
2192
2193
2194 ///////////////////////////
2195 // 一時オブジェクトを破棄
2196 ///////////////////////////
2197
2198 delete pobj_temp_DBDomain;
2199}
2200BOOL CALLBACK DialogAbout(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
2201 if(message==WM_INITDIALOG){
2202 SetPosCenter(hwnd);
2203
2204 SetDlgItemText(hwnd,IDC_STATIC_NAME,VERSION_APPLI_NAME);
2205
2206 char temporary[1024];
2207 sprintf(temporary,"Version %s",VERSION_STRING);
2208 SetDlgItemText(hwnd,IDC_STATIC_VERSION,temporary);
2209
2210
2211#ifndef THETEXT
2212 //ライブラリ開発チーム
2213 LoadString(hResInst,IDS_DEV_GROUP,temporary,1024);
2214 SetDlgItemText(hwnd,IDC_DEV_GROUP,temporary);
2215#endif
2216 }
2217 if(message==WM_COMMAND){
2218 switch(LOWORD(wParam)){
2219 case IDCANCEL:
2220 EndDialog(hwnd,NULL);
2221 return 1;
2222 }
2223 }
2224 return 0;
2225}
Note: See TracBrowser for help on using the repository browser.