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

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