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

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

静的リンクライブラリプロジェクトの作成(IDE側)に対応。

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