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

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

構成管理を変更中・・・(いったんコミット)

File size: 70.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#else
67//英語
68#define TEXT_BASE_NORMAL "You can make a GUI application of a normal window base."
69#define TEXT_BASE_PROMPT "You can make a N88 compatible program of a prompt window base."
70#define TEXT_BASE_DOSPROMPT "You can make a console application."
71#define TEXT_NOBASE "Empty project is created."
72#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."
73#define TEXT_DLL "You can make a DLL(Dynamic Link Library)."
74#endif
75
76void GetCheckTextBuffer(char *buffer){
77 extern NEWPROJECTINFO NewProjectInfo;
78 int i;
79
80#if defined(JPN)
81 //日本語
82 lstrcpy(buffer,"作成するプロジェクトの内容を確認して \"完了\" ボタンを押して下さい。\r\n\r\n");
83 i=lstrlen(buffer);
84 sprintf(buffer+i,"プロジェクト名: \"%s\"\r\n",NewProjectInfo.name);
85 i+=lstrlen(buffer+i);
86 sprintf(buffer+i,"ワーク ディレクトリ: \"%s\\%s\"\r\n\r\n",pobj_nv->ProjectSaveDir,NewProjectInfo.name);
87 i+=lstrlen(buffer+i);
88
89 if(NewProjectInfo.dwTypeID==IDC_EXE_WINDOWBASE){
90 lstrcpy(buffer+i,"ノーマル ウィンドウを持つEXE形式の実行ファイルを作成します。\r\n\r\n");
91 i+=lstrlen(buffer+i);
92 lstrcpy(buffer+i,"--- 以下のファイルが生成されます ---\r\n");
93 i+=lstrlen(buffer+i);
94 sprintf(buffer+i,"%s.pj … プロジェクト ファイル\r\n",NewProjectInfo.name);
95 i+=lstrlen(buffer+i);
96 sprintf(buffer+i,"%s.idx … インデックス ファイル\r\n",NewProjectInfo.name);
97 i+=lstrlen(buffer+i);
98 sprintf(buffer+i,"%s.ab … メイン ソースコード ファイル\r\n",NewProjectInfo.name);
99 i+=lstrlen(buffer+i);
100 sprintf(buffer+i,"%s.wnd … ウィンドウ デザイン保存用\r\n",NewProjectInfo.name);
101 i+=lstrlen(buffer+i);
102 sprintf(buffer+i,"%s.wrk … 作業状況の管理用\r\n",NewProjectInfo.name);
103 i+=lstrlen(buffer+i);
104 sprintf(buffer+i,"MainWnd.ab … メイン ウィンドウのイベント プロシージャ用\r\n",NewProjectInfo.name);
105 }
106 else if(NewProjectInfo.dwTypeID==IDC_EXE_PROMPTBASE){
107 lstrcpy(buffer+i,"プロンプト ウィンドウを持つEXE形式の実行ファイルを作成します。\r\n\r\n");
108 i+=lstrlen(buffer+i);
109 lstrcpy(buffer+i,"--- 以下のファイルが生成されます ---\r\n");
110 i+=lstrlen(buffer+i);
111 sprintf(buffer+i,"%s.pj … プロジェクト ファイル\r\n",NewProjectInfo.name);
112 i+=lstrlen(buffer+i);
113 sprintf(buffer+i,"%s.idx … インデックス ファイル\r\n",NewProjectInfo.name);
114 i+=lstrlen(buffer+i);
115 sprintf(buffer+i,"%s.ab … メイン ソースコード ファイル\r\n",NewProjectInfo.name);
116 i+=lstrlen(buffer+i);
117 sprintf(buffer+i,"%s.wrk … 作業状況の管理用\r\n",NewProjectInfo.name);
118 }
119 else if(NewProjectInfo.dwTypeID==IDC_EXE_DOSPROMPTBASE){
120 lstrcpy(buffer+i,"EXE形式のコンソール アプリケーションを作成します。\r\n\r\n");
121 i+=lstrlen(buffer+i);
122 lstrcpy(buffer+i,"--- 以下のファイルが生成されます ---\r\n");
123 i+=lstrlen(buffer+i);
124 sprintf(buffer+i,"%s.pj … プロジェクト ファイル\r\n",NewProjectInfo.name);
125 i+=lstrlen(buffer+i);
126 sprintf(buffer+i,"%s.idx … インデックス ファイル\r\n",NewProjectInfo.name);
127 i+=lstrlen(buffer+i);
128 sprintf(buffer+i,"%s.ab … メイン ソースコード ファイル\r\n",NewProjectInfo.name);
129 i+=lstrlen(buffer+i);
130 sprintf(buffer+i,"%s.wrk … 作業状況の管理用\r\n",NewProjectInfo.name);
131 }
132 else if(NewProjectInfo.dwTypeID==IDC_EXE_NOBASE){
133 lstrcpy(buffer+i,"EXE形式の実行ファイルを作成します。\r\n\r\n");
134 i+=lstrlen(buffer+i);
135 lstrcpy(buffer+i,"--- 以下のファイルが生成されます ---\r\n");
136 i+=lstrlen(buffer+i);
137 sprintf(buffer+i,"%s.pj … プロジェクト ファイル\r\n",NewProjectInfo.name);
138 i+=lstrlen(buffer+i);
139 sprintf(buffer+i,"%s.idx … インデックス ファイル\r\n",NewProjectInfo.name);
140 i+=lstrlen(buffer+i);
141 sprintf(buffer+i,"%s.ab … メイン ソースコード ファイル\r\n",NewProjectInfo.name);
142 i+=lstrlen(buffer+i);
143 sprintf(buffer+i,"%s.wrk … 作業状況の管理用\r\n",NewProjectInfo.name);
144 }
145 else if(NewProjectInfo.dwTypeID==IDC_EXE_DIRECTX){
146 lstrcpy(buffer+i,"EXE形式の実行ファイルを作成します。同時に、DirectXの操作に必要なソースコードを生成します。\r\n\r\n");
147 i+=lstrlen(buffer+i);
148 lstrcpy(buffer+i,"--- 以下のファイルが生成されます ---\r\n");
149 i+=lstrlen(buffer+i);
150 sprintf(buffer+i,"%s.pj … プロジェクト ファイル\r\n",NewProjectInfo.name);
151 i+=lstrlen(buffer+i);
152 sprintf(buffer+i,"%s.idx … インデックス ファイル\r\n",NewProjectInfo.name);
153 i+=lstrlen(buffer+i);
154 sprintf(buffer+i,"%s.ab … メイン ソースコード ファイル\r\n",NewProjectInfo.name);
155 i+=lstrlen(buffer+i);
156 lstrcpy(buffer+i,"dx_graphics.sbp … DirectGraphicsサポート用ソースコード ファイル\r\n");
157 i+=lstrlen(buffer+i);
158 lstrcpy(buffer+i,"dx_input.sbp … DirectInputサポート用ソースコード ファイル\r\n");
159 i+=lstrlen(buffer+i);
160 lstrcpy(buffer+i,"dx_music.sbp … DirectMusicサポート用ソースコード ファイル\r\n");
161 i+=lstrlen(buffer+i);
162 sprintf(buffer+i,"%s.wrk … 作業状況の管理用\r\n",NewProjectInfo.name);
163 }
164 else if(NewProjectInfo.dwTypeID==IDC_DLL){
165 lstrcpy(buffer+i,"ダイナミック リンク ライブラリ(DLL)を作成します。\r\n\r\n");
166 i+=lstrlen(buffer+i);
167 lstrcpy(buffer+i,"--- 以下のファイルが生成されます ---\r\n");
168 i+=lstrlen(buffer+i);
169 sprintf(buffer+i,"%s.pj … プロジェクト ファイル\r\n",NewProjectInfo.name);
170 i+=lstrlen(buffer+i);
171 sprintf(buffer+i,"%s.idx … インデックス ファイル\r\n",NewProjectInfo.name);
172 i+=lstrlen(buffer+i);
173 sprintf(buffer+i,"%s.ab … メイン ソースコード ファイル\r\n",NewProjectInfo.name);
174 i+=lstrlen(buffer+i);
175 sprintf(buffer+i,"%s.wrk … 作業状況の管理用\r\n",NewProjectInfo.name);
176 }
177#else
178 //英語
179 lstrcpy(buffer,"Please check following points and click the \"Finish\" button.\r\n\r\n");
180 i=lstrlen(buffer);
181 sprintf(buffer+i,"Project Name: \"%s\"\r\n",NewProjectInfo.name);
182 i+=lstrlen(buffer+i);
183 sprintf(buffer+i,"Work Directory: \"%s\\%s\"\r\n\r\n",pobj_nv->ProjectSaveDir,NewProjectInfo.name);
184 i+=lstrlen(buffer+i);
185
186 if(NewProjectInfo.dwTypeID==IDC_EXE_WINDOWBASE){
187 sprintf(buffer+i,"%s\r\n\r\n",TEXT_BASE_NORMAL);
188 i+=lstrlen(buffer+i);
189 lstrcpy(buffer+i,"--- Creation Files ---\r\n");
190 i+=lstrlen(buffer+i);
191 sprintf(buffer+i,"%s.pj … Project file\r\n",NewProjectInfo.name);
192 i+=lstrlen(buffer+i);
193 sprintf(buffer+i,"%s.idx … Index file\r\n",NewProjectInfo.name);
194 i+=lstrlen(buffer+i);
195 sprintf(buffer+i,"%s.ab … Main Source Code file\r\n",NewProjectInfo.name);
196 i+=lstrlen(buffer+i);
197 sprintf(buffer+i,"%s.wnd … Data of Window Design\r\n",NewProjectInfo.name);
198 i+=lstrlen(buffer+i);
199 sprintf(buffer+i,"%s.wrk … Data of Work State\r\n",NewProjectInfo.name);
200 i+=lstrlen(buffer+i);
201 sprintf(buffer+i,"MainWnd.ab … Data of Event Procedures of the Main Window\r\n",NewProjectInfo.name);
202 }
203 else if(NewProjectInfo.dwTypeID==IDC_EXE_PROMPTBASE){
204 sprintf(buffer+i,"%s\r\n\r\n",TEXT_BASE_PROMPT);
205 i+=lstrlen(buffer+i);
206 lstrcpy(buffer+i,"--- Creation Files ---\r\n");
207 i+=lstrlen(buffer+i);
208 sprintf(buffer+i,"%s.pj … Creation Files\r\n",NewProjectInfo.name);
209 i+=lstrlen(buffer+i);
210 sprintf(buffer+i,"%s.idx … Index file\r\n",NewProjectInfo.name);
211 i+=lstrlen(buffer+i);
212 sprintf(buffer+i,"%s.ab … Main Source Code file\r\n",NewProjectInfo.name);
213 i+=lstrlen(buffer+i);
214 sprintf(buffer+i,"%s.wrk … Data of Work State\r\n",NewProjectInfo.name);
215 }
216 else if(NewProjectInfo.dwTypeID==IDC_EXE_DOSPROMPTBASE){
217 sprintf(buffer+i,"%s\r\n\r\n",TEXT_BASE_DOSPROMPT);
218 i+=lstrlen(buffer+i);
219 lstrcpy(buffer+i,"--- Creation Files ---\r\n");
220 i+=lstrlen(buffer+i);
221 sprintf(buffer+i,"%s.pj … Creation Files\r\n",NewProjectInfo.name);
222 i+=lstrlen(buffer+i);
223 sprintf(buffer+i,"%s.idx … Index file\r\n",NewProjectInfo.name);
224 i+=lstrlen(buffer+i);
225 sprintf(buffer+i,"%s.ab … Main Source Code file\r\n",NewProjectInfo.name);
226 i+=lstrlen(buffer+i);
227 sprintf(buffer+i,"%s.wrk … Data of Work State\r\n",NewProjectInfo.name);
228 }
229 else if(NewProjectInfo.dwTypeID==IDC_EXE_NOBASE){
230 sprintf(buffer+i,"%s\r\n\r\n",TEXT_NOBASE);
231 i+=lstrlen(buffer+i);
232 lstrcpy(buffer+i,"--- Creation Files ---\r\n");
233 i+=lstrlen(buffer+i);
234 sprintf(buffer+i,"%s.pj … Creation Files\r\n",NewProjectInfo.name);
235 i+=lstrlen(buffer+i);
236 sprintf(buffer+i,"%s.idx … Index file\r\n",NewProjectInfo.name);
237 i+=lstrlen(buffer+i);
238 sprintf(buffer+i,"%s.ab … Main Source Code file\r\n",NewProjectInfo.name);
239 i+=lstrlen(buffer+i);
240 sprintf(buffer+i,"%s.wrk … Data of Work State\r\n",NewProjectInfo.name);
241 }
242 else if(NewProjectInfo.dwTypeID==IDC_EXE_DIRECTX){
243 sprintf(buffer+i,"%s\r\n\r\n",TEXT_DIRECTX);
244 i+=lstrlen(buffer+i);
245 lstrcpy(buffer+i,"--- Creation Files ---\r\n");
246 i+=lstrlen(buffer+i);
247 sprintf(buffer+i,"%s.pj … Creation Files\r\n",NewProjectInfo.name);
248 i+=lstrlen(buffer+i);
249 sprintf(buffer+i,"%s.idx … Index file\r\n",NewProjectInfo.name);
250 i+=lstrlen(buffer+i);
251 sprintf(buffer+i,"%s.ab … Main Source Code file\r\n",NewProjectInfo.name);
252 i+=lstrlen(buffer+i);
253 lstrcpy(buffer+i,"dx_graphics.sbp … DirectGraphics is supported at this source file\r\n");
254 i+=lstrlen(buffer+i);
255 lstrcpy(buffer+i,"dx_input.sbp … DirectInput is supported at this source file\r\n");
256 i+=lstrlen(buffer+i);
257 lstrcpy(buffer+i,"dx_music.sbp … DirectMusic is supported at this source file\r\n");
258 i+=lstrlen(buffer+i);
259 sprintf(buffer+i,"%s.wrk … Data of Work State\r\n",NewProjectInfo.name);
260 }
261 else if(NewProjectInfo.dwTypeID==IDC_DLL){
262 sprintf(buffer+i,"%s\r\n\r\n",TEXT_DLL);
263 i+=lstrlen(buffer+i);
264 lstrcpy(buffer+i,"--- Creation Files ---\r\n");
265 i+=lstrlen(buffer+i);
266 sprintf(buffer+i,"%s.pj … Creation Files\r\n",NewProjectInfo.name);
267 i+=lstrlen(buffer+i);
268 sprintf(buffer+i,"%s.idx … Index file\r\n",NewProjectInfo.name);
269 i+=lstrlen(buffer+i);
270 sprintf(buffer+i,"%s.ab … Main Source Code file\r\n",NewProjectInfo.name);
271 i+=lstrlen(buffer+i);
272 sprintf(buffer+i,"%s.wrk … Data of Work State\r\n",NewProjectInfo.name);
273 }
274#endif
275}
276BOOL CALLBACK DlgNewProject_Page3(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
277 char buffer[GENERAL_SIZE];
278 LPPSHNOTIFY lpPshNotify;
279 switch(message){
280 case WM_NOTIFY:
281 lpPshNotify=(LPPSHNOTIFY)lParam;
282 switch(lpPshNotify->hdr.code){
283 case PSN_SETACTIVE:
284 PropSheet_SetWizButtons(GetParent(hwnd),PSWIZB_FINISH|PSWIZB_BACK);
285
286 GetCheckTextBuffer(buffer);
287
288 SetDlgItemText(hwnd,IDC_PROJECTINFO,buffer);
289 SetTimer(hwnd,1,10,0);
290 return 1;
291 case PSN_WIZFINISH:
292 MakeNewProject();
293 return 1;
294 }
295 break;
296 case WM_TIMER:
297 KillTimer(hwnd,1);
298 SendDlgItemMessage(hwnd,IDC_PROJECTINFO,EM_SETSEL,0,0);
299 return 1;
300 }
301 return 0;
302}
303BOOL CALLBACK DlgNewProject_Page2(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
304 extern NEWPROJECTINFO NewProjectInfo;
305 LPPSHNOTIFY lpPshNotify;
306 switch(message){
307 case WM_INITDIALOG:
308
309 break;
310 case WM_NOTIFY:
311 lpPshNotify=(LPPSHNOTIFY)lParam;
312 switch(lpPshNotify->hdr.code){
313 case PSN_SETACTIVE:
314 //DirectXアプリのときはMMSYSをチェック
315 if(NewProjectInfo.dwTypeID==IDC_EXE_DIRECTX){
316 SendDlgItemMessage(hwnd,IDC_API_MMSYS,BM_SETCHECK,BST_CHECKED,0);
317 EnableWindow(GetDlgItem(hwnd,IDC_API_MMSYS),0);
318 }
319 else{
320 EnableWindow(GetDlgItem(hwnd,IDC_API_MMSYS),1);
321 }
322
323 PropSheet_SetWizButtons(GetParent(hwnd),PSWIZB_NEXT|PSWIZB_BACK);
324 return 1;
325 case PSN_WIZNEXT:
326 NewProjectInfo.dwOption=PJ_OP_RC_MANIFEST;
327 if(SendDlgItemMessage(hwnd,IDC_UNICODE,BM_GETCHECK,0,0))
328 NewProjectInfo.dwOption|=PJ_OP_UNICODE;
329 if(SendDlgItemMessage(hwnd,IDC_API_COMMCTRL,BM_GETCHECK,0,0))
330 NewProjectInfo.dwOption|=PJ_OP_COMMCTRL;
331 if(SendDlgItemMessage(hwnd,IDC_API_MMSYS,BM_GETCHECK,0,0))
332 NewProjectInfo.dwOption|=PJ_OP_MMSYSTEM;
333 if(SendDlgItemMessage(hwnd,IDC_API_RICHEDIT,BM_GETCHECK,0,0))
334 NewProjectInfo.dwOption|=PJ_OP_RICHEDIT;
335 if(SendDlgItemMessage(hwnd,IDC_API_WINSOCK,BM_GETCHECK,0,0))
336 NewProjectInfo.dwOption|=PJ_OP_WINSOCK;
337 return 1;
338 }
339 break;
340 }
341 return 0;
342}
343void AppImage_ShowOrHide(HWND hDlg,int id){
344 int nCmd;
345
346 if(id==IDC_EXE_WINDOWBASE) nCmd=SW_SHOW;
347 else nCmd=SW_HIDE;
348 ShowWindow(GetDlgItem(hDlg,IDC_IMAGE_WINDOW),nCmd);
349
350 if(id==IDC_EXE_PROMPTBASE) nCmd=SW_SHOW;
351 else nCmd=SW_HIDE;
352 ShowWindow(GetDlgItem(hDlg,IDC_IMAGE_PROMPT),nCmd);
353
354 if(id==IDC_EXE_DOSPROMPTBASE) nCmd=SW_SHOW;
355 else nCmd=SW_HIDE;
356 ShowWindow(GetDlgItem(hDlg,IDC_IMAGE_DOSPROMPT),nCmd);
357
358 if(id==IDC_EXE_NOBASE) nCmd=SW_SHOW;
359 else nCmd=SW_HIDE;
360 ShowWindow(GetDlgItem(hDlg,IDC_IMAGE_NON),nCmd);
361
362 if(id==IDC_EXE_DIRECTX) nCmd=SW_SHOW;
363 else nCmd=SW_HIDE;
364 ShowWindow(GetDlgItem(hDlg,IDC_IMAGE_DIRECTX),nCmd);
365}
366BOOL CALLBACK DlgNewProject_Page1(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
367 extern NEWPROJECTINFO NewProjectInfo;
368 int i;
369 char temporary[MAX_PATH];
370 LPPSHNOTIFY lpPshNotify;
371
372 switch(message){
373 case WM_INITDIALOG:
374 SetPosCenter(GetParent(hwnd));
375
376 SetDlgItemText(hwnd,IDC_DIRPATH,pobj_nv->ProjectSaveDir);
377 SendDlgItemMessage(hwnd,IDC_EXE_WINDOWBASE,BM_SETCHECK,BST_CHECKED,0);
378 SetDlgItemText(hwnd,IDC_HELPTEXT_OFBASE,TEXT_BASE_NORMAL);
379 break;
380 case WM_COMMAND:
381 if(HIWORD(wParam)==EN_CHANGE){
382 if(GetWindowTextLength(GetDlgItem(hwnd,IDC_PROJECTNAME))==0||
383 GetWindowTextLength(GetDlgItem(hwnd,IDC_DIRPATH))==0){
384 PropSheet_SetWizButtons(GetParent(hwnd),0);
385 }
386 else PropSheet_SetWizButtons(GetParent(hwnd),PSWIZB_NEXT);
387 }
388 switch(LOWORD(wParam)){
389 case IDC_PATHBROWSE:
390 //"ディレクトリを選択して下さい"
391 if(!GetFolder(hwnd,temporary,STRING_DIRECTORY_SELECT)) return 1;
392 SetDlgItemText(hwnd,IDC_DIRPATH,temporary);
393 return 1;
394 case IDC_EXE_WINDOWBASE:
395 AppImage_ShowOrHide(hwnd,LOWORD(wParam));
396
397 SetDlgItemText(hwnd,IDC_HELPTEXT_OFBASE,TEXT_BASE_NORMAL);
398 EnableWindow(GetDlgItem(hwnd,IDC_SHOWHELLOWORLD),1);
399 return 1;
400 case IDC_EXE_PROMPTBASE:
401 AppImage_ShowOrHide(hwnd,LOWORD(wParam));
402
403 SetDlgItemText(hwnd,IDC_HELPTEXT_OFBASE,TEXT_BASE_PROMPT);
404 EnableWindow(GetDlgItem(hwnd,IDC_SHOWHELLOWORLD),1);
405 return 1;
406 case IDC_EXE_DOSPROMPTBASE:
407 AppImage_ShowOrHide(hwnd,LOWORD(wParam));
408
409 SetDlgItemText(hwnd,IDC_HELPTEXT_OFBASE,TEXT_BASE_DOSPROMPT);
410 EnableWindow(GetDlgItem(hwnd,IDC_SHOWHELLOWORLD),1);
411 return 1;
412 case IDC_EXE_NOBASE:
413 AppImage_ShowOrHide(hwnd,LOWORD(wParam));
414
415 SetDlgItemText(hwnd,IDC_HELPTEXT_OFBASE,TEXT_NOBASE);
416 EnableWindow(GetDlgItem(hwnd,IDC_SHOWHELLOWORLD),0);
417 return 1;
418 case IDC_EXE_DIRECTX:
419 AppImage_ShowOrHide(hwnd,LOWORD(wParam));
420
421 SetDlgItemText(hwnd,IDC_HELPTEXT_OFBASE,TEXT_DIRECTX);
422 EnableWindow(GetDlgItem(hwnd,IDC_SHOWHELLOWORLD),0);
423 return 1;
424 case IDC_DLL:
425 AppImage_ShowOrHide(hwnd,LOWORD(wParam));
426
427 SetDlgItemText(hwnd,IDC_HELPTEXT_OFBASE,TEXT_DLL);
428 EnableWindow(GetDlgItem(hwnd,IDC_SHOWHELLOWORLD),0);
429 return 1;
430 }
431 break;
432 case WM_NOTIFY:
433 lpPshNotify=(LPPSHNOTIFY)lParam;
434 switch(lpPshNotify->hdr.code){
435 case PSN_SETACTIVE:
436 SendMessage(hwnd,WM_COMMAND,MAKELONG(0,EN_CHANGE),0);
437 return 1;
438 case PSN_WIZNEXT:
439 GetDlgItemText(hwnd,IDC_PROJECTNAME,NewProjectInfo.name,MAX_PATH);
440 if(!IsVariableTopChar(NewProjectInfo.name[0])){
441 //"プロジェクト名の先頭文字はアルファベット(A~Z、a~z)またはアンダーバー(_)でなければなりません。"
442 MessageBox(hwnd,STRING_ERROR_PROJECTTOPCHAR,STRING_ERROR,MB_OK|MB_ICONEXCLAMATION);
443 SetWindowLongPtr(hwnd,DWLP_MSGRESULT,-1);
444 return 1;
445 }
446 for(i=1;;i++){
447 if(NewProjectInfo.name[i]=='\0') break;
448 if(!IsVariableChar(NewProjectInfo.name[i])){
449 //"プロジェクト名に不正な文字コードが含まれています。"
450 MessageBox(hwnd,STRING_ERROR_PROJECTNAME,STRING_ERROR,MB_OK|MB_ICONEXCLAMATION);
451 SetWindowLongPtr(hwnd,DWLP_MSGRESULT,-1);
452 return 1;
453 }
454 }
455 GetDlgItemText(hwnd,IDC_DIRPATH,pobj_nv->ProjectSaveDir,MAX_PATH);
456
457 //ベース選択
458 if(SendDlgItemMessage(hwnd,IDC_EXE_WINDOWBASE,BM_GETCHECK,0,0))
459 NewProjectInfo.dwTypeID=IDC_EXE_WINDOWBASE;
460 else if(SendDlgItemMessage(hwnd,IDC_EXE_PROMPTBASE,BM_GETCHECK,0,0))
461 NewProjectInfo.dwTypeID=IDC_EXE_PROMPTBASE;
462 else if(SendDlgItemMessage(hwnd,IDC_EXE_DOSPROMPTBASE,BM_GETCHECK,0,0))
463 NewProjectInfo.dwTypeID=IDC_EXE_DOSPROMPTBASE;
464 else if(SendDlgItemMessage(hwnd,IDC_EXE_NOBASE,BM_GETCHECK,0,0))
465 NewProjectInfo.dwTypeID=IDC_EXE_NOBASE;
466 else if(SendDlgItemMessage(hwnd,IDC_EXE_DIRECTX,BM_GETCHECK,0,0))
467 NewProjectInfo.dwTypeID=IDC_EXE_DIRECTX;
468 else if(SendDlgItemMessage(hwnd,IDC_DLL,BM_GETCHECK,0,0))
469 NewProjectInfo.dwTypeID=IDC_DLL;
470
471 //"Hello World!"を表示するか
472 if(SendDlgItemMessage(hwnd,IDC_SHOWHELLOWORLD,BM_GETCHECK,0,0)) NewProjectInfo.ShowHelloWorld=1;
473 else NewProjectInfo.ShowHelloWorld=0;
474 return 1;
475 }
476 break;
477 }
478 return 0;
479}
480void DlgNewProjectWizard(HWND hwnd){
481#define MAX_NEWPROJECTPAGE 3
482 PROPSHEETHEADER psh;
483 PROPSHEETPAGE psp;
484 HPROPSHEETPAGE hpsp[MAX_NEWPROJECTPAGE];
485 int i;
486
487 psp.dwSize=sizeof(PROPSHEETPAGE);
488 psp.hInstance=hResInst;
489 psp.dwFlags=PSP_DEFAULT;
490
491 //各ページのセッティング
492 i=0;
493 psp.pszTemplate=MAKEINTRESOURCE(IDD_NEWPROJECT_PAGE1);
494 psp.pfnDlgProc=(DLGPROC)DlgNewProject_Page1;
495 hpsp[i]=CreatePropertySheetPage(&psp);
496 i++;
497 psp.pszTemplate=MAKEINTRESOURCE(IDD_NEWPROJECT_PAGE2);
498 psp.pfnDlgProc=(DLGPROC)DlgNewProject_Page2;
499 hpsp[i]=CreatePropertySheetPage(&psp);
500 i++;
501 psp.pszTemplate=MAKEINTRESOURCE(IDD_NEWPROJECT_PAGE3);
502 psp.pfnDlgProc=(DLGPROC)DlgNewProject_Page3;
503 hpsp[i]=CreatePropertySheetPage(&psp);
504
505 memset(&psh,0,sizeof(PROPSHEETHEADER));
506 psh.dwSize=sizeof(PROPSHEETHEADER);
507 psh.dwFlags=PSH_WIZARD;
508 psh.phpage=hpsp;
509 psh.hwndParent=hwnd;
510 psh.nPages=MAX_NEWPROJECTPAGE;
511 PropertySheet(&psh);
512}
513
514#define CATEGORY_TEXT_BASIC "Basic"
515#define CATEGORY_TEXT_TEXT "テキスト"
516#define CATEGORY_TEXT_OTHER "その他"
517
518#define CATEGORY_BASIC 1
519#define CATEGORY_TEXT 2
520#define CATEGORY_OTHER 3
521void ResetNewFileTypeListView(HWND hListView,int fCategory){
522 ListView_DeleteAllItems(hListView);
523
524 LV_ITEM lvItem;
525 lvItem.mask = LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM;
526 lvItem.iItem=0;
527 lvItem.iSubItem=0;
528
529 if(fCategory==CATEGORY_BASIC){
530 lvItem.pszText="Basic ソース ファイル";
531 lvItem.iImage=0;
532 lvItem.lParam=FT_BASICPROGRAM;
533 ListView_InsertItem(hListView,&lvItem);
534 lvItem.iItem++;
535
536 lvItem.pszText="プロジェクト";
537 lvItem.iImage=2;
538 lvItem.lParam=FT_PROJECT;
539 ListView_InsertItem(hListView,&lvItem);
540 }
541 else if(fCategory==CATEGORY_TEXT){
542 lvItem.pszText="テキスト ファイル";
543 lvItem.iImage=3;
544 lvItem.lParam=FT_TEXT;
545 ListView_InsertItem(hListView,&lvItem);
546 lvItem.iItem++;
547
548 lvItem.pszText="HTML ファイル";
549 lvItem.iImage=4;
550 lvItem.lParam=FT_HTML;
551 ListView_InsertItem(hListView,&lvItem);
552 }
553 else if(fCategory==CATEGORY_OTHER){
554 lvItem.pszText="アイコン ファイル";
555 lvItem.iImage=5;
556 lvItem.lParam=FT_ICON;
557 ListView_InsertItem(hListView,&lvItem);
558 }
559
560 ListView_SetItemState(hListView,0,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
561}
562
563#ifndef THETEXT
564BOOL CALLBACK DlgNewFile(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
565 extern PROJECTINFO ProjectInfo;
566 extern char NewFileName[MAX_PATH];
567
568 static HIMAGELIST hImageList;
569 static HWND hTree;
570 static HWND hListView;
571 int i;
572 LVITEM lvItem;
573 switch(message){
574 case WM_INITDIALOG:
575 SetPosCenter(hwnd);
576
577
578 ///////////////////////////////////
579 // カテゴリツリービューを初期化
580 ///////////////////////////////////
581 HTREEITEM hBasicTreeItem;
582
583 hTree=GetDlgItem(hwnd,IDC_CATEGORY_TREE);
584
585 TV_INSERTSTRUCT tv;
586 tv.hInsertAfter=TVI_LAST;
587 tv.item.mask=TVIF_TEXT;
588 tv.hParent=TVI_ROOT;
589
590 tv.item.pszText=CATEGORY_TEXT_BASIC;
591 hBasicTreeItem=TreeView_InsertItem(hTree,&tv);
592 tv.item.pszText=CATEGORY_TEXT_TEXT;
593 TreeView_InsertItem(hTree,&tv);
594 tv.item.pszText=CATEGORY_TEXT_OTHER;
595 TreeView_InsertItem(hTree,&tv);
596
597 TreeView_SelectItem(hTree,hBasicTreeItem);
598
599
600
601 /////////////////////////////////////////
602 // ファイルタイプ リストビューを初期化
603 /////////////////////////////////////////
604
605 hListView=GetDlgItem(hwnd,IDC_FILETYPELIST);
606
607 hImageList=ImageList_Create(32, 32, ILC_COLOR24|ILC_MASK, 6, 0);
608 ListView_SetImageList(hListView, hImageList, LVSIL_NORMAL);
609 ImageList_AddIcon(hImageList, LoadIcon(hInst, MAKEINTRESOURCE(IDI_FILE_BAS)));
610 ImageList_AddIcon(hImageList, LoadIcon(hInst, MAKEINTRESOURCE(IDI_FILE_SBP)));
611 ImageList_AddIcon(hImageList, LoadIcon(hResInst, MAKEINTRESOURCE(IDI_NEWFILE_PJ)));
612 ImageList_AddIcon(hImageList, LoadIcon(hResInst, MAKEINTRESOURCE(IDI_NEWFILE_TEXT)));
613 ImageList_AddIcon(hImageList, LoadIcon(hResInst, MAKEINTRESOURCE(IDI_NEWFILE_HTML)));
614 ImageList_AddIcon(hImageList, LoadIcon(hResInst, MAKEINTRESOURCE(IDI_NEWFILE_ICON)));
615
616
617 ResetNewFileTypeListView(hListView,CATEGORY_BASIC);
618
619
620 SetFocus(GetDlgItem(hwnd,IDC_FILETYPELIST));
621
622 if(ProjectInfo.name[0]){
623 SendDlgItemMessage(hwnd,IDC_ADDTOPROJECT,BM_SETCHECK,BST_CHECKED,0);
624 }
625
626 SendMessage(hwnd,WM_COMMAND,IDC_ADDTOPROJECT,0);
627 break;
628 case WM_COMMAND:
629 switch(LOWORD(wParam)){
630 case IDOK:
631 for(i=0;i<ListView_GetItemCount(hListView);i++){
632 if(ListView_GetItemState(hListView,i,LVIS_SELECTED)){
633 lvItem.mask=LVIF_PARAM;
634 lvItem.iItem=i;
635 lvItem.iSubItem=0;
636 ListView_GetItem(hListView,&lvItem);
637 break;
638 }
639 }
640 if(i==ListView_GetItemCount(hListView)) return 1;
641
642 //ファイルタイプ
643 i=lvItem.lParam;
644
645 //プロジェクトへ追加するかどうか
646 if(IsWindowEnabled(GetDlgItem(hwnd,IDC_ADDTOPROJECT))){
647 if(SendDlgItemMessage(hwnd,IDC_ADDTOPROJECT,BM_GETCHECK,0,0)){
648 i|=0x00008000;
649 GetDlgItemText(hwnd,IDC_FILENAME,NewFileName,MAX_PATH);
650
651 if(NewFileName[0]=='\0'){
652 MessageBox(hwnd,"ファイル名を入力してください。",APPLICATION_NAME,MB_OK);
653 return 1;
654 }
655 }
656 }
657
658 EndDialog(hwnd,i);
659 return 1;
660 case IDCANCEL:
661 EndDialog(hwnd,-1);
662 return 1;
663 case IDC_ADDTOPROJECT:
664 if(IsWindowEnabled(GetDlgItem(hwnd,IDC_ADDTOPROJECT))&&
665 SendDlgItemMessage(hwnd,IDC_ADDTOPROJECT,BM_GETCHECK,0,0)){
666 EnableWindow(GetDlgItem(hwnd,IDC_FILENAME),1);
667 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_FILENAME),1);
668 }
669 else{
670 EnableWindow(GetDlgItem(hwnd,IDC_FILENAME),0);
671 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_FILENAME),0);
672 }
673 return 1;
674 }
675 break;
676
677 case WM_NOTIFY:
678 NMHDR *hdr;
679 hdr=(NMHDR *)lParam;
680 if(hdr->hwndFrom==hTree&&hdr->code==TVN_SELCHANGED){
681 NMTREEVIEW *lpnmTree;
682 lpnmTree=(NMTREEVIEW *)lParam;
683
684 char temporary[255];
685 TVITEM tvItem;
686 tvItem.mask=TVIF_TEXT|TVIF_HANDLE;
687 tvItem.hItem=lpnmTree->itemNew.hItem;
688 tvItem.pszText=temporary;
689 tvItem.cchTextMax=255;
690 TreeView_GetItem(hTree,&tvItem);
691
692 if(lstrcmpi(tvItem.pszText,CATEGORY_TEXT_BASIC)==0)
693 ResetNewFileTypeListView(hListView,CATEGORY_BASIC);
694 else if(lstrcmpi(tvItem.pszText,CATEGORY_TEXT_TEXT)==0)
695 ResetNewFileTypeListView(hListView,CATEGORY_TEXT);
696 else if(lstrcmpi(tvItem.pszText,CATEGORY_TEXT_OTHER)==0)
697 ResetNewFileTypeListView(hListView,CATEGORY_OTHER);
698 }
699 if(hdr->hwndFrom==hListView){
700 if(hdr->code==LVN_ITEMCHANGED){
701 for(i=0;i<ListView_GetItemCount(hListView);i++){
702 if(ListView_GetItemState(hListView,i,LVIS_SELECTED)){
703 lvItem.mask=LVIF_PARAM;
704 lvItem.iItem=i;
705 lvItem.iSubItem=0;
706 ListView_GetItem(hListView,&lvItem);
707 break;
708 }
709 }
710 if(i!=ListView_GetItemCount(hListView)&&ProjectInfo.name[0]&&(
711 lvItem.lParam==FT_BASICPROGRAM||
712 lvItem.lParam==FT_SUBPROGRAM
713 )){
714 EnableWindow(GetDlgItem(hwnd,IDC_ADDTOPROJECT),1);
715 }
716 else EnableWindow(GetDlgItem(hwnd,IDC_ADDTOPROJECT),0);
717
718 SendMessage(hwnd,WM_COMMAND,IDC_ADDTOPROJECT,0);
719 }
720 else if(hdr->code==NM_DBLCLK){
721 SendMessage(hwnd,WM_COMMAND,IDOK,0);
722 }
723 }
724 return 0;
725
726 case WM_DESTROY:
727 ImageList_Destroy(hImageList);
728 return 0;
729 }
730 return 0;
731}
732#endif
733
734
735//プロジェクトオプション項目
736#define MAX_PJSETDLG 4
737DWORD temp_dwPjOption;
738char temp_lpszOutputRelease[MAX_PATH];
739char temp_lpszOutputDebug[MAX_PATH];
740char temp_szManifestPath[MAX_PATH];
741char temp_szDebugCmdLine[8192];
742char temp_szDebugExePath[MAX_PATH];
743
744void SaveSetting_DlgPjOption(void){
745 extern PROJECTINFO ProjectInfo;
746 if(SetSwitch[0]){
747 //出力ファイル
748 lstrcpy(ProjectInfo.lpszOutput_Release,temp_lpszOutputRelease);
749 lstrcpy(ProjectInfo.lpszOutput_Debug,temp_lpszOutputDebug);
750
751 //コメントの有無
752 ProjectInfo.dwOption=temp_dwPjOption;
753 }
754 if(SetSwitch[1]){
755 //Win32API
756 ProjectInfo.dwOption=temp_dwPjOption;
757 }
758 if(SetSwitch[2]){
759 //マニフェスト
760
761 //パス
762 lstrcpy(ProjectInfo.szManifestPath,temp_szManifestPath);
763
764 ProjectInfo.dwOption=temp_dwPjOption;
765
766 ProjectInfo.ModifuOfResource=1;
767 }
768 if(SetSwitch[3]){
769 //デバッグ
770
771 //コマンドライン
772 lstrcpy(ProjectInfo.szCmdLine,temp_szDebugCmdLine);
773
774 //デバッグセッション用の実行可能ファイル
775 lstrcpy(ProjectInfo.szExePath,temp_szDebugExePath);
776 }
777
778 ProjectInfo.modify=1;
779}
780BOOL CALLBACK DlgProjectOption_Whole(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
781 extern PROJECTINFO ProjectInfo;
782 NMHDR *nmhdr;
783
784 switch(message){
785 case WM_INITDIALOG:
786 SetPosCenter(GetParent(hwnd));
787
788 SetSwitch[0]=1;
789
790 //出力ファイル
791 SetDlgItemText(hwnd,IDC_EDIT_RELEASE,ProjectInfo.lpszOutput_Release);
792 SetDlgItemText(hwnd,IDC_EDIT_DEBUG,ProjectInfo.lpszOutput_Debug);
793
794 //Unicode
795 if(temp_dwPjOption&PJ_OP_UNICODE)
796 SendDlgItemMessage(hwnd,IDC_UNICODE,BM_SETCHECK,BST_CHECKED,0);
797
798 break;
799 case WM_NOTIFY:
800 nmhdr=(NMHDR *)lParam;
801 if(nmhdr->code==PSN_APPLY||nmhdr->code==PSN_KILLACTIVE){
802 GetDlgItemText(hwnd,IDC_EDIT_RELEASE,temp_lpszOutputRelease,MAX_PATH);
803 GetDlgItemText(hwnd,IDC_EDIT_DEBUG,temp_lpszOutputDebug,MAX_PATH);
804
805 //Unicode
806 if(SendDlgItemMessage(hwnd,IDC_UNICODE,BM_GETCHECK,0,0))
807 temp_dwPjOption|=PJ_OP_UNICODE;
808 else temp_dwPjOption&=~PJ_OP_UNICODE;
809
810 if(nmhdr->code==PSN_APPLY) SaveSetting_DlgPjOption();
811 }
812 return 1;
813 }
814 return 0;
815}
816BOOL CALLBACK DlgProjectOption_Win32API(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
817 extern PROJECTINFO ProjectInfo;
818 NMHDR *nmhdr;
819
820 switch(message){
821 case WM_INITDIALOG:
822 SetSwitch[1]=1;
823
824 if(temp_dwPjOption&PJ_OP_MMSYSTEM)
825 SendDlgItemMessage(hwnd,IDC_API_MMSYS,BM_SETCHECK,BST_CHECKED,0);
826 if(temp_dwPjOption&PJ_OP_COMMCTRL)
827 SendDlgItemMessage(hwnd,IDC_API_COMMCTRL,BM_SETCHECK,BST_CHECKED,0);
828 if(temp_dwPjOption&PJ_OP_RICHEDIT)
829 SendDlgItemMessage(hwnd,IDC_API_RICHEDIT,BM_SETCHECK,BST_CHECKED,0);
830 if(temp_dwPjOption&PJ_OP_WINSOCK)
831 SendDlgItemMessage(hwnd,IDC_API_WINSOCK,BM_SETCHECK,BST_CHECKED,0);
832 break;
833 case WM_NOTIFY:
834 nmhdr=(NMHDR *)lParam;
835 if(nmhdr->code==PSN_APPLY||nmhdr->code==PSN_KILLACTIVE){
836 if(SendDlgItemMessage(hwnd,IDC_API_MMSYS,BM_GETCHECK,0,0))
837 temp_dwPjOption|=PJ_OP_MMSYSTEM;
838 else temp_dwPjOption&=~PJ_OP_MMSYSTEM;
839 if(SendDlgItemMessage(hwnd,IDC_API_COMMCTRL,BM_GETCHECK,0,0))
840 temp_dwPjOption|=PJ_OP_COMMCTRL;
841 else temp_dwPjOption&=~PJ_OP_COMMCTRL;
842 if(SendDlgItemMessage(hwnd,IDC_API_RICHEDIT,BM_GETCHECK,0,0))
843 temp_dwPjOption|=PJ_OP_RICHEDIT;
844 else temp_dwPjOption&=~PJ_OP_RICHEDIT;
845 if(SendDlgItemMessage(hwnd,IDC_API_WINSOCK,BM_GETCHECK,0,0))
846 temp_dwPjOption|=PJ_OP_WINSOCK;
847 else temp_dwPjOption&=~PJ_OP_WINSOCK;
848
849 if(nmhdr->code==PSN_APPLY) SaveSetting_DlgPjOption();
850 }
851 return 1;
852 }
853 return 0;
854}
855BOOL CALLBACK DlgProjectOption_Manifest(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
856 switch(message){
857 case WM_INITDIALOG:
858 SetSwitch[2]=1;
859
860 //パス
861 SetDlgItemText(hwnd,IDC_PATH,ProjectInfo.szManifestPath);
862
863 //マニフェストをリソースに埋め込む
864 if(temp_dwPjOption&PJ_OP_RC_MANIFEST)
865 SendDlgItemMessage(hwnd,IDC_RC_MANIFEST,BM_SETCHECK,BST_CHECKED,0);
866
867 SendMessage(hwnd,WM_COMMAND,IDC_RC_MANIFEST,0);
868
869 break;
870 case WM_COMMAND:
871 switch(LOWORD(wParam)){
872 case IDC_RC_MANIFEST:
873 if(SendDlgItemMessage(hwnd,IDC_RC_MANIFEST,BM_GETCHECK,0,0)){
874 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_PATH),1);
875 EnableWindow(GetDlgItem(hwnd,IDC_PATH),1);
876 }
877 else{
878 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_PATH),0);
879 EnableWindow(GetDlgItem(hwnd,IDC_PATH),0);
880 }
881 return 1;
882 }
883 break;
884 case WM_NOTIFY:
885 NMHDR *nmhdr;
886 nmhdr=(NMHDR *)lParam;
887 if(nmhdr->code==PSN_APPLY||nmhdr->code==PSN_KILLACTIVE){
888
889 //パス
890 GetDlgItemText(hwnd,IDC_PATH,temp_szManifestPath,MAX_PATH);
891
892 //マニフェストをリソースに埋め込む
893 if(SendDlgItemMessage(hwnd,IDC_RC_MANIFEST,BM_GETCHECK,0,0))
894 temp_dwPjOption|=PJ_OP_RC_MANIFEST;
895 else temp_dwPjOption&=~PJ_OP_RC_MANIFEST;
896
897 if(nmhdr->code==PSN_APPLY) SaveSetting_DlgPjOption();
898 }
899 return 1;
900 }
901 return 0;
902}
903BOOL CALLBACK DlgProjectOption_Debug(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
904 extern PROJECTINFO ProjectInfo;
905 NMHDR *nmhdr;
906 char temporary[MAX_PATH];
907
908 switch(message){
909 case WM_INITDIALOG:
910 SetSwitch[3]=1;
911
912 if(ProjectInfo.dwModuleType!=MT_DLL){
913 EnableWindow(GetDlgItem(hwnd,IDC_EXE_PATH),0);
914 EnableWindow(GetDlgItem(hwnd,IDC_DIR),0);
915 }
916
917 SetDlgItemText(hwnd,IDC_CMD_LINE,ProjectInfo.szCmdLine);
918 SetDlgItemText(hwnd,IDC_EXE_PATH,ProjectInfo.szExePath);
919
920 break;
921 case WM_COMMAND:
922 switch(LOWORD(wParam)){
923 case IDC_DIR:
924 extern LPSTR ExeFileFilter;
925 if(!GetFilePathDialog(hwnd,temporary,ExeFileFilter,"DLLデバッグ用の実行可能ファイルを指定してください",1)) break;
926
927 SetDlgItemText(hwnd,IDC_EXE_PATH,temporary);
928 return 1;
929 }
930 break;
931 case WM_NOTIFY:
932 nmhdr=(NMHDR *)lParam;
933 if(nmhdr->code==PSN_APPLY||nmhdr->code==PSN_KILLACTIVE){
934 GetDlgItemText(hwnd,IDC_CMD_LINE,temp_szDebugCmdLine,8192);
935 GetDlgItemText(hwnd,IDC_EXE_PATH,temp_szDebugExePath,MAX_PATH);
936
937 if(nmhdr->code==PSN_APPLY) SaveSetting_DlgPjOption();
938 }
939 return 1;
940 }
941 return 0;
942}
943void DlgProjectOptionSetting(HWND hwnd){
944 PROPSHEETHEADER psh;
945 PROPSHEETPAGE psp[MAX_PJSETDLG];
946 HPROPSHEETPAGE hpsp[MAX_PJSETDLG];
947 int i;
948 memset(&SetSwitch,0,MAX_PJSETDLG);
949
950 //各ページのセッティング
951 i=0;
952 psp[i].dwSize=sizeof(PROPSHEETPAGE);
953 psp[i].dwFlags=PSP_DEFAULT;
954 psp[i].hInstance=hResInst;
955 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_PJ_OPTION1);
956 psp[i].pfnDlgProc=(DLGPROC)DlgProjectOption_Whole;
957 hpsp[i]=CreatePropertySheetPage(&psp[i]);
958 i++;
959 psp[i].dwSize=sizeof(PROPSHEETPAGE);
960 psp[i].dwFlags=PSP_DEFAULT;
961 psp[i].hInstance=hResInst;
962 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_PJ_OPTION2);
963 psp[i].pfnDlgProc=(DLGPROC)DlgProjectOption_Win32API;
964 hpsp[i]=CreatePropertySheetPage(&psp[i]);
965 i++;
966 psp[i].dwSize=sizeof(PROPSHEETPAGE);
967 psp[i].dwFlags=PSP_DEFAULT;
968 psp[i].hInstance=hResInst;
969 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_PJ_OPTION3);
970 psp[i].pfnDlgProc=(DLGPROC)DlgProjectOption_Manifest;
971 hpsp[i]=CreatePropertySheetPage(&psp[i]);
972 i++;
973 psp[i].dwSize=sizeof(PROPSHEETPAGE);
974 psp[i].dwFlags=PSP_DEFAULT;
975 psp[i].hInstance=hResInst;
976 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_PJ_OPTION4);
977 psp[i].pfnDlgProc=(DLGPROC)DlgProjectOption_Debug;
978 hpsp[i]=CreatePropertySheetPage(&psp[i]);
979
980 extern PROJECTINFO ProjectInfo;
981 temp_dwPjOption=ProjectInfo.dwOption;
982
983 memset(&psh,0,sizeof(PROPSHEETHEADER));
984 psh.dwSize=sizeof(PROPSHEETHEADER);
985 psh.dwFlags=PSH_PROPSHEETPAGE|PSH_NOAPPLYNOW;
986 psh.phpage=hpsp;
987 psh.hwndParent=hwnd;
988 psh.pszCaption=STRING_PROJECTOPTION; //"プロジェクト オプション"
989 psh.nPages=MAX_PJSETDLG;
990 psh.nStartPage=0;
991 psh.ppsp=psp;
992 PropertySheet(&psh);
993}
994
995
996/////////////////////
997// オプション項目
998/////////////////////
999
1000BOOL bOptionWhole;
1001BOOL bOptionEditor;
1002BOOL bOptionColor;
1003BOOL bOptionToolbar;
1004BOOL bOptionRad;
1005BOOL bOptionWeb;
1006BOOL temp_bSaveCheckProject;
1007BOOL temp_bLineAdjust;
1008BOOL temp_bSaveTabToHead;
1009LOGFONT temp_lf,temp_HintFont;
1010int temp_TabSize;
1011BOOL temp_bEditor_LineNumber;
1012BOOL temp_bEditor_Ruler;
1013BOOL temp_bEditor_CaretLine_BackGround;
1014int temp_iMaxOneLineTextLength;
1015BOOL temp_bAutoIndent;
1016BOOL temp_bPasteIndent;
1017DWORD temp_dwParameterHint;
1018BOOL temp_bShowComplementWnd;
1019int temp_BackNum_PairStatementComplement;
1020BOOL temp_bSaveFindStr;
1021
1022CTheme obj_temp_Theme;
1023
1024BOOL temp_bCtrlKeyHyperLink;
1025BOOL temp_bSaveWebFindStr;
1026CDBDomain *pobj_temp_DBDomain;
1027
1028void SaveSetting(void){
1029 int i;
1030 if(bOptionWhole){
1031 //実行時の、プロジェクトの保存確認の有無
1032 pobj_nv->bSaveCheckProject=temp_bSaveCheckProject;
1033
1034 //ドキュメントを保存したときにタブを先頭に再配置するかどうか
1035 pobj_nv->bSaveTabToHead=temp_bSaveTabToHead;
1036 }
1037 if(bOptionEditor){
1038 //フォント
1039 pobj_nv->lf=temp_lf;
1040
1041 //タブサイズ
1042 pobj_nv->TabSize=temp_TabSize;
1043
1044 //エディタの行番号を表示するかどうか
1045 pobj_nv->bEditor_LineNumber=temp_bEditor_LineNumber;
1046
1047 //エディタのルーラーを表示するかどうか
1048 pobj_nv->bEditor_Ruler=temp_bEditor_Ruler;
1049
1050 //カーソル行を強調表示するかどうか
1051 pobj_nv->bEditor_CaretLine_BackGround=temp_bEditor_CaretLine_BackGround;
1052
1053 //自動折り返し時の一行あたりの文字数
1054 pobj_nv->iMaxOneLineTextLength=temp_iMaxOneLineTextLength;
1055
1056 //コード補完機能
1057 pobj_nv->bShowComplementWnd=temp_bShowComplementWnd;
1058
1059 pobj_nv->BackNum_PairStatementComplement=temp_BackNum_PairStatementComplement;
1060
1061 //パラメータ ヒント
1062 pobj_nv->dwParameterHint=temp_dwParameterHint;
1063
1064 //パラメータ ヒント フォント
1065 extern METHODCHECKINFO MethodCheckInfo;
1066 MethodCheckInfo.LogFont=temp_HintFont;
1067 DeleteObject(MethodCheckInfo.hFont);
1068 DeleteObject(MethodCheckInfo.hBoldFont);
1069
1070 MethodCheckInfo.hFont=CreateFontIndirect(&MethodCheckInfo.LogFont);
1071 i=MethodCheckInfo.LogFont.lfWeight;
1072 MethodCheckInfo.LogFont.lfWeight=FW_BOLD;
1073 MethodCheckInfo.hBoldFont=CreateFontIndirect(&MethodCheckInfo.LogFont);
1074 MethodCheckInfo.LogFont.lfWeight=i;
1075
1076 //自動インデント
1077 pobj_nv->bAutoIndent=temp_bAutoIndent;
1078
1079 //貼り付け時のインデント調整
1080 pobj_nv->bPasteIndent=temp_bPasteIndent;
1081
1082 //検索・置換文字列を保存するかどうか
1083 pobj_nv->bSaveFindStr=temp_bSaveFindStr;
1084
1085 RedrawAllWindow(); //すべてのウィンドウを再描画
1086 }
1087 if(bOptionColor){
1088 //カラーデザインを更新
1089 CTheme *pobj_Theme;
1090 pobj_Theme=pobj_DBTheme->dupli_check(obj_temp_Theme.m_name);
1091 *pobj_Theme=obj_temp_Theme;
1092 if(lstrcmp(pobj_Theme->m_name,THEMENAME_USER)==0){
1093 //ユーザー設定の場合は自動的にファイルに保存する
1094 pobj_Theme->save();
1095 }
1096
1097 //再描画
1098 SetTextEditColorDesign(&tci,pobj_Theme,1);
1099 }
1100 if(bOptionRad){
1101 //ライン アジャスタ
1102 pobj_nv->bLineAdjust=temp_bLineAdjust;
1103 }
1104 if(bOptionWeb){
1105 pobj_nv->bCtrlKeyHyperLink=temp_bCtrlKeyHyperLink;
1106
1107 pobj_nv->bSaveWebFindStr=temp_bSaveWebFindStr;
1108
1109 //Web検索
1110 pobj_nv->pobj_DBDomain->copy_get(pobj_temp_DBDomain);
1111
1112 //SideWebウィンドウを再表示
1113 //delete pobj_SideWeb;
1114 //pobj_SideWeb=new CSideWeb(hOwner);
1115 //ResizeOwnerWnd();
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}
1950char szDomainAdd_Name[255];
1951char szDomainAdd_Domain[255];
1952BOOL CALLBACK Dlg_Option_Web_Domain_Add(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1953 switch(message){
1954 case WM_INITDIALOG:
1955 SetPosCenter(hwnd);
1956 SetFocus(GetDlgItem(hwnd,IDC_NAME));
1957
1958 if(lParam!=-1){
1959 SetWindowText(hwnd,"Web検索用ドメインを編集");
1960 SetDlgItemText(hwnd,IDC_NAME,szDomainAdd_Name);
1961 SetDlgItemText(hwnd,IDC_DOMAIN,szDomainAdd_Domain);
1962 }
1963 break;
1964 case WM_COMMAND:
1965 switch(LOWORD(wParam)){
1966 case IDOK:
1967 GetDlgItemText(hwnd,IDC_NAME,szDomainAdd_Name,255);
1968 GetDlgItemText(hwnd,IDC_DOMAIN,szDomainAdd_Domain,255);
1969 EndDialog(hwnd,1);
1970 return 1;
1971 case IDCANCEL:
1972 EndDialog(hwnd,0);
1973 return 1;
1974 }
1975 return 0;
1976 }
1977 return 0;
1978}
1979BOOL CALLBACK Dlg_Option_Web(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1980 HWND hListView;
1981 NMHDR *nmhdr;
1982 int i;
1983 char temporary[255];
1984 switch(message){
1985 case WM_INITDIALOG:
1986
1987 bOptionWeb=1;
1988
1989
1990 //Ctrlキーによるハイパーリンク
1991 if(pobj_nv->bCtrlKeyHyperLink) SendDlgItemMessage(hwnd,IDC_CTRLKEY_HYPERLINK,BM_SETCHECK,BST_CHECKED,0);
1992
1993 //Web検索文字列を保存するかどうか
1994 if(pobj_nv->bSaveWebFindStr) SendDlgItemMessage(hwnd,IDC_SAVE_WEBFINDSTR,BM_SETCHECK,BST_CHECKED,0);
1995
1996
1997 //拡張スタイル
1998 DWORD dwStyle;
1999 hListView=GetDlgItem(hwnd,IDC_DOMAIN_LIST);
2000 dwStyle=ListView_GetExtendedListViewStyle(hListView);
2001 dwStyle|=LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES;
2002 ListView_SetExtendedListViewStyle(hListView,dwStyle);
2003
2004 LV_COLUMN ListView_Column;
2005 ListView_Column.mask=LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
2006 ListView_Column.fmt=LVCFMT_LEFT;
2007
2008 ListView_Column.cx=80;
2009 ListView_Column.pszText="表示名";
2010 ListView_Column.iSubItem=0;
2011 ListView_InsertColumn(hListView,ListView_Column.iSubItem,&ListView_Column);
2012
2013 ListView_Column.cx=200;
2014 ListView_Column.pszText="ドメイン";
2015 ListView_Column.iSubItem++;
2016 ListView_InsertColumn(hListView,ListView_Column.iSubItem,&ListView_Column);
2017
2018 //一時オブジェクトにコピー
2019 pobj_temp_DBDomain->copy_get(pobj_nv->pobj_DBDomain);
2020
2021 //ドメインリストにデータをセット
2022 pobj_temp_DBDomain->SetListView(hListView);
2023
2024 break;
2025 case WM_COMMAND:
2026 switch(LOWORD(wParam)){
2027 case IDC_ADD:
2028 if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_OPTION_WEB_DOMAIN_ADD),hwnd,(DLGPROC)Dlg_Option_Web_Domain_Add,-1)) return 1;
2029
2030 pobj_temp_DBDomain->add(szDomainAdd_Name,szDomainAdd_Domain);
2031 return 1;
2032 case IDC_DELETE:
2033 hListView=GetDlgItem(hwnd,IDC_DOMAIN_LIST);
2034 for(i=0;i<ListView_GetItemCount(hListView);i++){
2035 if(ListView_GetItemState(hListView,i,LVIS_SELECTED)){
2036 ListView_GetItemText(hListView,i,0,temporary,255);
2037 pobj_temp_DBDomain->del(temporary);
2038 break;
2039 }
2040 }
2041 return 1;
2042 case IDC_EDIT:
2043 hListView=GetDlgItem(hwnd,IDC_DOMAIN_LIST);
2044 for(i=0;i<ListView_GetItemCount(hListView);i++){
2045 if(ListView_GetItemState(hListView,i,LVIS_SELECTED)){
2046 ListView_GetItemText(hListView,i,0,temporary,255);
2047
2048 ListView_GetItemText(hListView,i,0,szDomainAdd_Name,255);
2049 ListView_GetItemText(hListView,i,1,szDomainAdd_Domain,255);
2050 lstrcpy(temporary,szDomainAdd_Name);
2051 if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_OPTION_WEB_DOMAIN_ADD),hwnd,(DLGPROC)Dlg_Option_Web_Domain_Add,i)) return 1;
2052
2053 pobj_temp_DBDomain->change(temporary,szDomainAdd_Name,szDomainAdd_Domain);
2054 }
2055 }
2056 return 1;
2057 }
2058 return 0;
2059 case WM_NOTIFY:
2060 nmhdr=(NMHDR *)lParam;
2061 if(nmhdr->code==PSN_APPLY||nmhdr->code==PSN_KILLACTIVE){
2062
2063 //Ctrlキーによるハイパーリンク
2064 if(SendDlgItemMessage(hwnd,IDC_CTRLKEY_HYPERLINK,BM_GETCHECK,0,0)) temp_bCtrlKeyHyperLink=1;
2065 else temp_bCtrlKeyHyperLink=0;
2066
2067 //Web検索文字列を保存するかどうか
2068 if(SendDlgItemMessage(hwnd,IDC_SAVE_WEBFINDSTR,BM_GETCHECK,0,0)) temp_bSaveWebFindStr=1;
2069 else temp_bSaveWebFindStr=0;
2070
2071 if(nmhdr->code==PSN_APPLY) SaveSetting();
2072 }
2073 if(nmhdr->idFrom==IDC_DOMAIN_LIST){
2074 if(nmhdr->code==NM_DBLCLK){
2075 LPNMLISTVIEW lpnmListView;
2076 lpnmListView=(LPNMLISTVIEW)lParam;
2077
2078 char szBeforeName[255];
2079 ListView_GetItemText(nmhdr->hwndFrom,lpnmListView->iItem,0,szDomainAdd_Name,255);
2080 ListView_GetItemText(nmhdr->hwndFrom,lpnmListView->iItem,1,szDomainAdd_Domain,255);
2081 lstrcpy(szBeforeName,szDomainAdd_Name);
2082 if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_OPTION_WEB_DOMAIN_ADD),hwnd,(DLGPROC)Dlg_Option_Web_Domain_Add,lpnmListView->iItem)) return 1;
2083
2084 pobj_temp_DBDomain->change(szBeforeName,szDomainAdd_Name,szDomainAdd_Domain);
2085 }
2086 }
2087 return 1;
2088 }
2089 return 0;
2090}
2091void DlgOptionSetting(HWND hwnd){
2092 PROPSHEETHEADER psh;
2093#define MAX_SETDLG 32
2094 PROPSHEETPAGE psp[MAX_SETDLG];
2095 HPROPSHEETPAGE hpsp[MAX_SETDLG];
2096 int i;
2097
2098 bOptionWhole=0;
2099 bOptionEditor=0;
2100 bOptionColor=0;
2101 bOptionToolbar=0;
2102 bOptionRad=0;
2103 bOptionWeb=0;
2104
2105 i=0;
2106
2107 //各ページのセッティング
2108 psp[i].dwSize=sizeof(PROPSHEETPAGE);
2109 psp[i].dwFlags=PSP_DEFAULT;
2110 psp[i].hInstance=hResInst;
2111 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_OPTION_WHOLE);
2112 psp[i].pfnDlgProc=(DLGPROC)Dlg_Option_Whole;
2113 hpsp[i]=CreatePropertySheetPage(&psp[i]);
2114 i++;
2115 psp[i].dwSize=sizeof(PROPSHEETPAGE);
2116 psp[i].dwFlags=PSP_DEFAULT;
2117 psp[i].hInstance=hResInst;
2118 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_OPTION_EDITOR);
2119 psp[i].pfnDlgProc=(DLGPROC)Dlg_Option_Editor;
2120 hpsp[i]=CreatePropertySheetPage(&psp[i]);
2121 i++;
2122 psp[i].dwSize=sizeof(PROPSHEETPAGE);
2123 psp[i].dwFlags=PSP_DEFAULT;
2124 psp[i].hInstance=hResInst;
2125 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_OPTION_COLOR);
2126 psp[i].pfnDlgProc=(DLGPROC)Dlg_Option_Color;
2127 hpsp[i]=CreatePropertySheetPage(&psp[i]);
2128 i++;
2129 psp[i].dwSize=sizeof(PROPSHEETPAGE);
2130 psp[i].dwFlags=PSP_DEFAULT;
2131 psp[i].hInstance=hResInst;
2132 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_OPTION_TOOLBAR);
2133 psp[i].pfnDlgProc=(DLGPROC)Dlg_Option_Toolbar;
2134 hpsp[i]=CreatePropertySheetPage(&psp[i]);
2135
2136#ifndef THETEXT
2137 //RADツールに関するオプションはProjectEditorのみ表示
2138 i++;
2139 psp[i].dwSize=sizeof(PROPSHEETPAGE);
2140 psp[i].dwFlags=PSP_DEFAULT;
2141 psp[i].hInstance=hResInst;
2142 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_OPTION_RAD);
2143 psp[i].pfnDlgProc=(DLGPROC)Dlg_Option_Rad;
2144 hpsp[i]=CreatePropertySheetPage(&psp[i]);
2145#endif
2146
2147 i++;
2148 psp[i].dwSize=sizeof(PROPSHEETPAGE);
2149 psp[i].dwFlags=PSP_DEFAULT;
2150 psp[i].hInstance=hResInst;
2151 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_OPTION_WEB);
2152 psp[i].pfnDlgProc=(DLGPROC)Dlg_Option_Web;
2153 hpsp[i]=CreatePropertySheetPage(&psp[i]);
2154
2155 i++;
2156
2157
2158
2159 ///////////////////////////
2160 // 一時オブジェクトを生成
2161 ///////////////////////////
2162
2163 pobj_temp_DBDomain=new CDBDomain();
2164
2165
2166
2167 memset(&psh,0,sizeof(PROPSHEETHEADER));
2168 psh.dwSize=sizeof(PROPSHEETHEADER);
2169 psh.dwFlags=PSH_PROPSHEETPAGE|PSH_NOAPPLYNOW;
2170 psh.phpage=hpsp;
2171 psh.hwndParent=hwnd;
2172 psh.pszCaption=STRING_OPTION; //"オプション"
2173 psh.nPages=i;
2174 psh.nStartPage=0;
2175 psh.ppsp=psp;
2176 PropertySheet(&psh);
2177
2178
2179
2180 ///////////////////////////
2181 // 一時オブジェクトを破棄
2182 ///////////////////////////
2183
2184 delete pobj_temp_DBDomain;
2185}
2186BOOL CALLBACK DialogAbout(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
2187 if(message==WM_INITDIALOG){
2188 SetPosCenter(hwnd);
2189
2190 SetDlgItemText(hwnd,IDC_STATIC_NAME,VERSION_APPLI_NAME);
2191
2192 char temporary[1024];
2193 sprintf(temporary,"Version %s",VERSION_STRING);
2194 SetDlgItemText(hwnd,IDC_STATIC_VERSION,temporary);
2195
2196
2197#ifndef THETEXT
2198 //ライブラリ開発チーム
2199 LoadString(hResInst,IDS_DEV_GROUP,temporary,1024);
2200 SetDlgItemText(hwnd,IDC_DEV_GROUP,temporary);
2201#endif
2202 }
2203 if(message==WM_COMMAND){
2204 switch(LOWORD(wParam)){
2205 case IDCANCEL:
2206 EndDialog(hwnd,NULL);
2207 return 1;
2208 }
2209 }
2210 return 0;
2211}
Note: See TracBrowser for help on using the repository browser.