source: dev/trunk/abdev/ProjectEditor/DialogBoxes.cpp@ 302

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