source: dev/ProjectEditor/DialogBoxes.cpp@ 55

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

・コマンドラインオプション "/unicode" に対応。
・Unicode文字セットを使用する場合に "UNICODE" が自動的に#defineされるようにしました。
・SByte型(8ビット符号付き整数型)を追加。
・Char型を文字型に変更。
・プロジェクトオプションから「Unicode文字セットを使用する」チェックを選択できるようにしました。

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