source: dev/ProjectEditor/DialogBoxes.cpp@ 22

Last change on this file since 22 was 22, checked in by dai_9181, 17 years ago

バックアップ用ディレクトリが消去されていたときは、自動生成する。
プロ版の概念を除去。機能制限を解除。

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