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

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

・PROJECTINFO構造体を廃止し、Projectクラスを採用した。
・ProjectInfoをprojectInfoにリネーム

File size: 71.1 KB
RevLine 
[475]1#include "stdafx.h"
2
[3]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)を作成します。"
[608]66#define TEXT_SLL "静的 リンク ライブラリ(lib)を作成します。"
[3]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 }
[608]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 }
[3]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;
[55]341 if(SendDlgItemMessage(hwnd,IDC_UNICODE,BM_GETCHECK,0,0))
342 NewProjectInfo.dwOption|=PJ_OP_UNICODE;
[3]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;
[608]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;
[3]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);
[302]463 SetWindowLongPtr(hwnd,DWLP_MSGRESULT,-1);
[3]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);
[302]471 SetWindowLongPtr(hwnd,DWLP_MSGRESULT,-1);
[3]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;
[608]490 else if(SendDlgItemMessage(hwnd,IDC_SLL,BM_GETCHECK,0,0))
491 NewProjectInfo.dwTypeID=IDC_SLL;
[3]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);
[302]516 psp.pfnDlgProc=(DLGPROC)DlgNewProject_Page1;
[3]517 hpsp[i]=CreatePropertySheetPage(&psp);
518 i++;
519 psp.pszTemplate=MAKEINTRESOURCE(IDD_NEWPROJECT_PAGE2);
[302]520 psp.pfnDlgProc=(DLGPROC)DlgNewProject_Page2;
[3]521 hpsp[i]=CreatePropertySheetPage(&psp);
522 i++;
523 psp.pszTemplate=MAKEINTRESOURCE(IDD_NEWPROJECT_PAGE3);
[302]524 psp.pfnDlgProc=(DLGPROC)DlgNewProject_Page3;
[3]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
[618]643 if(projectInfo.name[0]){
[3]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 }
[618]731 if(i!=ListView_GetItemCount(hListView)&&projectInfo.name[0]&&(
[3]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 //出力ファイル
[618]768 lstrcpy(projectInfo.lpszOutput_Release,temp_lpszOutputRelease);
769 lstrcpy(projectInfo.lpszOutput_Debug,temp_lpszOutputDebug);
[3]770
771 //コメントの有無
[618]772 projectInfo.dwOption=temp_dwPjOption;
[3]773 }
774 if(SetSwitch[1]){
775 //Win32API
[618]776 projectInfo.dwOption=temp_dwPjOption;
[3]777 }
778 if(SetSwitch[2]){
779 //マニフェスト
780
781 //パス
[618]782 lstrcpy(projectInfo.szManifestPath,temp_szManifestPath);
[3]783
[618]784 projectInfo.dwOption=temp_dwPjOption;
[3]785
[618]786 projectInfo.ModifuOfResource=1;
[3]787 }
788 if(SetSwitch[3]){
789 //デバッグ
790
791 //コマンドライン
[618]792 lstrcpy(projectInfo.szCmdLine,temp_szDebugCmdLine);
[3]793
794 //デバッグセッション用の実行可能ファイル
[618]795 lstrcpy(projectInfo.szExePath,temp_szDebugExePath);
[3]796 }
797
[618]798 projectInfo.modify=1;
[3]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 //出力ファイル
[618]810 SetDlgItemText(hwnd,IDC_EDIT_RELEASE,projectInfo.lpszOutput_Release);
811 SetDlgItemText(hwnd,IDC_EDIT_DEBUG,projectInfo.lpszOutput_Debug);
[3]812
[55]813 //Unicode
814 if(temp_dwPjOption&PJ_OP_UNICODE)
815 SendDlgItemMessage(hwnd,IDC_UNICODE,BM_SETCHECK,BST_CHECKED,0);
816
[3]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
[55]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
[3]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 //パス
[618]879 SetDlgItemText(hwnd,IDC_PATH,projectInfo.szManifestPath);
[3]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
[618]929 if(projectInfo.dwModuleType!=MT_DLL){
[3]930 EnableWindow(GetDlgItem(hwnd,IDC_EXE_PATH),0);
931 EnableWindow(GetDlgItem(hwnd,IDC_DIR),0);
932 }
933
[618]934 SetDlgItemText(hwnd,IDC_CMD_LINE,projectInfo.szCmdLine);
935 SetDlgItemText(hwnd,IDC_EXE_PATH,projectInfo.szExePath);
[3]936
937 break;
938 case WM_COMMAND:
939 switch(LOWORD(wParam)){
940 case IDC_DIR:
941 extern LPSTR ExeFileFilter;
942 if(!GetFilePathDialog(hwnd,temporary,ExeFileFilter,"DLLデバッグ用の実行可能ファイルを指定してください",1)) break;
943
944 SetDlgItemText(hwnd,IDC_EXE_PATH,temporary);
945 return 1;
946 }
947 break;
948 case WM_NOTIFY:
949 nmhdr=(NMHDR *)lParam;
950 if(nmhdr->code==PSN_APPLY||nmhdr->code==PSN_KILLACTIVE){
951 GetDlgItemText(hwnd,IDC_CMD_LINE,temp_szDebugCmdLine,8192);
952 GetDlgItemText(hwnd,IDC_EXE_PATH,temp_szDebugExePath,MAX_PATH);
953
954 if(nmhdr->code==PSN_APPLY) SaveSetting_DlgPjOption();
955 }
956 return 1;
957 }
958 return 0;
959}
960void DlgProjectOptionSetting(HWND hwnd){
961 PROPSHEETHEADER psh;
962 PROPSHEETPAGE psp[MAX_PJSETDLG];
963 HPROPSHEETPAGE hpsp[MAX_PJSETDLG];
964 int i;
965 memset(&SetSwitch,0,MAX_PJSETDLG);
966
967 //各ページのセッティング
968 i=0;
969 psp[i].dwSize=sizeof(PROPSHEETPAGE);
970 psp[i].dwFlags=PSP_DEFAULT;
971 psp[i].hInstance=hResInst;
972 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_PJ_OPTION1);
[302]973 psp[i].pfnDlgProc=(DLGPROC)DlgProjectOption_Whole;
[3]974 hpsp[i]=CreatePropertySheetPage(&psp[i]);
975 i++;
976 psp[i].dwSize=sizeof(PROPSHEETPAGE);
977 psp[i].dwFlags=PSP_DEFAULT;
978 psp[i].hInstance=hResInst;
979 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_PJ_OPTION2);
[302]980 psp[i].pfnDlgProc=(DLGPROC)DlgProjectOption_Win32API;
[3]981 hpsp[i]=CreatePropertySheetPage(&psp[i]);
982 i++;
983 psp[i].dwSize=sizeof(PROPSHEETPAGE);
984 psp[i].dwFlags=PSP_DEFAULT;
985 psp[i].hInstance=hResInst;
986 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_PJ_OPTION3);
[302]987 psp[i].pfnDlgProc=(DLGPROC)DlgProjectOption_Manifest;
[3]988 hpsp[i]=CreatePropertySheetPage(&psp[i]);
989 i++;
990 psp[i].dwSize=sizeof(PROPSHEETPAGE);
991 psp[i].dwFlags=PSP_DEFAULT;
992 psp[i].hInstance=hResInst;
993 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_PJ_OPTION4);
[302]994 psp[i].pfnDlgProc=(DLGPROC)DlgProjectOption_Debug;
[3]995 hpsp[i]=CreatePropertySheetPage(&psp[i]);
996
[618]997 temp_dwPjOption=projectInfo.dwOption;
[3]998
999 memset(&psh,0,sizeof(PROPSHEETHEADER));
1000 psh.dwSize=sizeof(PROPSHEETHEADER);
1001 psh.dwFlags=PSH_PROPSHEETPAGE|PSH_NOAPPLYNOW;
1002 psh.phpage=hpsp;
1003 psh.hwndParent=hwnd;
1004 psh.pszCaption=STRING_PROJECTOPTION; //"プロジェクト オプション"
1005 psh.nPages=MAX_PJSETDLG;
1006 psh.nStartPage=0;
1007 psh.ppsp=psp;
1008 PropertySheet(&psh);
1009}
1010
1011
1012/////////////////////
1013// オプション項目
1014/////////////////////
1015
1016BOOL bOptionWhole;
1017BOOL bOptionEditor;
1018BOOL bOptionColor;
1019BOOL bOptionToolbar;
1020BOOL bOptionRad;
1021BOOL bOptionWeb;
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
1040BOOL temp_bCtrlKeyHyperLink;
1041BOOL temp_bSaveWebFindStr;
1042CDBDomain *pobj_temp_DBDomain;
1043
1044void SaveSetting(void){
1045 int i;
1046 if(bOptionWhole){
1047 //実行時の、プロジェクトの保存確認の有無
1048 pobj_nv->bSaveCheckProject=temp_bSaveCheckProject;
1049
1050 //ドキュメントを保存したときにタブを先頭に再配置するかどうか
1051 pobj_nv->bSaveTabToHead=temp_bSaveTabToHead;
1052 }
1053 if(bOptionEditor){
1054 //フォント
1055 pobj_nv->lf=temp_lf;
1056
1057 //タブサイズ
1058 pobj_nv->TabSize=temp_TabSize;
1059
1060 //エディタの行番号を表示するかどうか
1061 pobj_nv->bEditor_LineNumber=temp_bEditor_LineNumber;
1062
1063 //エディタのルーラーを表示するかどうか
1064 pobj_nv->bEditor_Ruler=temp_bEditor_Ruler;
1065
1066 //カーソル行を強調表示するかどうか
1067 pobj_nv->bEditor_CaretLine_BackGround=temp_bEditor_CaretLine_BackGround;
1068
1069 //自動折り返し時の一行あたりの文字数
1070 pobj_nv->iMaxOneLineTextLength=temp_iMaxOneLineTextLength;
1071
1072 //コード補完機能
1073 pobj_nv->bShowComplementWnd=temp_bShowComplementWnd;
1074
1075 pobj_nv->BackNum_PairStatementComplement=temp_BackNum_PairStatementComplement;
1076
1077 //パラメータ ヒント
1078 pobj_nv->dwParameterHint=temp_dwParameterHint;
1079
1080 //パラメータ ヒント フォント
1081 extern METHODCHECKINFO MethodCheckInfo;
1082 MethodCheckInfo.LogFont=temp_HintFont;
1083 DeleteObject(MethodCheckInfo.hFont);
1084 DeleteObject(MethodCheckInfo.hBoldFont);
1085
1086 MethodCheckInfo.hFont=CreateFontIndirect(&MethodCheckInfo.LogFont);
1087 i=MethodCheckInfo.LogFont.lfWeight;
1088 MethodCheckInfo.LogFont.lfWeight=FW_BOLD;
1089 MethodCheckInfo.hBoldFont=CreateFontIndirect(&MethodCheckInfo.LogFont);
1090 MethodCheckInfo.LogFont.lfWeight=i;
1091
1092 //自動インデント
1093 pobj_nv->bAutoIndent=temp_bAutoIndent;
1094
1095 //貼り付け時のインデント調整
1096 pobj_nv->bPasteIndent=temp_bPasteIndent;
1097
1098 //検索・置換文字列を保存するかどうか
1099 pobj_nv->bSaveFindStr=temp_bSaveFindStr;
1100
1101 RedrawAllWindow(); //すべてのウィンドウを再描画
1102 }
1103 if(bOptionColor){
1104 //カラーデザインを更新
1105 CTheme *pobj_Theme;
1106 pobj_Theme=pobj_DBTheme->dupli_check(obj_temp_Theme.m_name);
1107 *pobj_Theme=obj_temp_Theme;
1108 if(lstrcmp(pobj_Theme->m_name,THEMENAME_USER)==0){
1109 //ユーザー設定の場合は自動的にファイルに保存する
1110 pobj_Theme->save();
1111 }
1112
1113 //再描画
1114 SetTextEditColorDesign(&tci,pobj_Theme,1);
1115 }
1116 if(bOptionRad){
1117 //ライン アジャスタ
1118 pobj_nv->bLineAdjust=temp_bLineAdjust;
1119 }
1120 if(bOptionWeb){
1121 pobj_nv->bCtrlKeyHyperLink=temp_bCtrlKeyHyperLink;
1122
1123 pobj_nv->bSaveWebFindStr=temp_bSaveWebFindStr;
1124
1125 //Web検索
1126 pobj_nv->pobj_DBDomain->copy_get(pobj_temp_DBDomain);
1127
1128 //SideWebウィンドウを再表示
[455]1129 //delete pobj_SideWeb;
1130 //pobj_SideWeb=new CSideWeb(hOwner);
1131 //ResizeOwnerWnd();
[3]1132 }
1133 return;
1134}
1135BOOL CALLBACK Dlg_Option_Whole(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1136 NMHDR *nmhdr;
1137 switch(message){
1138 case WM_INITDIALOG:
1139 SetPosCenter(GetParent(hwnd));
1140
1141 bOptionWhole=1;
1142
1143 //実行時の、プロジェクトの保存確認の有無
1144 if(pobj_nv->bSaveCheckProject) SendDlgItemMessage(hwnd,IDC_SAVECHECK,BM_SETCHECK,BST_CHECKED,0);
1145
1146 //ドキュメントを保存したときにタブを先頭に再配置するかどうか
1147 if(pobj_nv->bSaveTabToHead) SendDlgItemMessage(hwnd,IDC_SAVE_TAB_TO_HEAD,BM_SETCHECK,BST_CHECKED,0);
1148
1149 break;
1150 case WM_COMMAND:
1151 switch(LOWORD(wParam)){
1152 case IDC_LINKFILE:
1153 ExtensionLink(hwnd);
1154 return 1;
1155 }
1156 break;
1157 case WM_NOTIFY:
1158 nmhdr=(NMHDR *)lParam;
1159 if(nmhdr->code==PSN_APPLY||nmhdr->code==PSN_KILLACTIVE){
1160 //実行時の、プロジェクトの保存確認の有無
1161 if(SendDlgItemMessage(hwnd,IDC_SAVECHECK,BM_GETCHECK,0,0)) temp_bSaveCheckProject=1;
1162 else temp_bSaveCheckProject=0;
1163
1164 //ドキュメントを保存したときにタブを先頭に再配置するかどうか
1165 if(SendDlgItemMessage(hwnd,IDC_SAVE_TAB_TO_HEAD,BM_GETCHECK,0,0)) temp_bSaveTabToHead=1;
1166 else temp_bSaveTabToHead=0;
1167
1168 if(nmhdr->code==PSN_APPLY) SaveSetting();
1169 }
1170 return 1;
1171 case WM_HELP:
1172 HELPINFO *lpHelpInfo;
1173 lpHelpInfo = (HELPINFO *)lParam;
1174
1175 HH_POPUP hp;
1176 memset(&hp, 0, sizeof(HH_POPUP));
1177 hp.cbStruct = sizeof(HH_POPUP);
1178 hp.pt.x = lpHelpInfo->MousePos.x;
1179 hp.pt.y = lpHelpInfo->MousePos.y+10;
1180 hp.clrForeground = RGB(0, 0, 0);
1181 hp.clrBackground = -1;
1182 hp.rcMargins.left = -1;
1183 hp.rcMargins.right = -1;
1184 hp.rcMargins.top = -1;
1185 hp.rcMargins.bottom = -1;
1186 hp.idString = 0;
1187 hp.pszFont="MS Sans Serif,10";
1188
1189 switch(lpHelpInfo->iCtrlId){
1190 case IDC_SAVECHECK:
1191#if defined(JPN)
1192 //日本語
1193 hp.pszText="このチェックボックスをオンにすると、プロジェクトが未保存の状態であるとき、コンパイル時に保存確認のダイアログボックスが表示されるようになります。\nチェックをオフにすると、プロジェクトはコンパイル時に自動的に保存されます(デフォルトはオフです)。";
1194#else
1195 //英語
1196 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).";
1197#endif
1198 break;
1199 case IDC_LINKFILE:
1200#if defined(JPN)
1201 //日本語
1202 hp.pszText="ファイルの関連付けを行います。";
1203#else
1204 //英語
1205 hp.pszText="Relate the files.";
1206#endif
1207 break;
1208 default:
1209 hp.pszText="";
1210 break;
1211 }
1212 HtmlHelp(hwnd, 0, HH_DISPLAY_TEXT_POPUP, (DWORD)&hp);
1213 return 1;
1214 }
1215 return 0;
1216}
1217BOOL CALLBACK Dlg_Option_Editor(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1218 extern METHODCHECKINFO MethodCheckInfo;
1219 char str[255];
1220 NMHDR *nmhdr;
1221 switch(message){
1222 case WM_INITDIALOG:
1223 bOptionEditor=1;
1224
1225 //フォント
1226 sprintf(str,"%s",pobj_nv->lf.lfFaceName);
1227 SetDlgItemText(hwnd,IDC_SETFONT,str);
1228 temp_lf=pobj_nv->lf;
1229
1230 //タブサイズ
1231 sprintf(str,"%d",pobj_nv->TabSize);
1232 SetDlgItemText(hwnd,IDC_TABSIZE,str);
1233
1234 //エディタの行番号を表示するかどうか
1235 if(pobj_nv->bEditor_LineNumber) SendDlgItemMessage(hwnd,IDC_LINENUMBER,BM_SETCHECK,BST_CHECKED,0);
1236
1237 //エディタのルーラーを表示するかどうか
1238 if(pobj_nv->bEditor_Ruler) SendDlgItemMessage(hwnd,IDC_RULER,BM_SETCHECK,BST_CHECKED,0);
1239
1240 //カーソル行を強調表示するかどうか
1241 if(pobj_nv->bEditor_CaretLine_BackGround) SendDlgItemMessage(hwnd,IDC_CARETLINE_BACKGROUND,BM_SETCHECK,BST_CHECKED,0);
1242
1243#ifdef THETEXT
1244 //自動折り返し時の一行あたりの文字数
1245 sprintf(str,"%d",pobj_nv->iMaxOneLineTextLength);
1246 SetDlgItemText(hwnd,IDC_MAX_ONELINE_TEXT_LENGTH,str);
1247#endif
1248
1249 //自動インデント
1250 if(pobj_nv->bAutoIndent) SendDlgItemMessage(hwnd,IDC_ISAUTOINDENT,BM_SETCHECK,BST_CHECKED,0);
1251
1252 //貼り付け時のインデント調整
1253 if(pobj_nv->bPasteIndent) SendDlgItemMessage(hwnd,IDC_PASTEINDENT,BM_SETCHECK,BST_CHECKED,0);
1254
1255 //コード補完
1256 if(pobj_nv->bShowComplementWnd)
1257 SendDlgItemMessage(hwnd,IDC_COMPLEMENT,BM_SETCHECK,BST_CHECKED,0);
1258
1259 //ペアステートメント補完
1260 SendDlgItemMessage(hwnd,IDC_BACKNUM,EM_SETLIMITTEXT,4,0);
1261 if(pobj_nv->BackNum_PairStatementComplement){
1262 SendDlgItemMessage(hwnd,IDC_PAIRSTATEMENT,BM_SETCHECK,BST_CHECKED,0);
1263 sprintf(str,"%d",pobj_nv->BackNum_PairStatementComplement);
1264 SetDlgItemText(hwnd,IDC_BACKNUM,str);
1265 }
1266
1267 SendMessage(hwnd,WM_COMMAND,IDC_COMPLEMENT,0);
1268
1269 //パラメータ ヒント
1270 if(pobj_nv->dwParameterHint){
1271 SendDlgItemMessage(hwnd,IDC_PARAMHINT,BM_SETCHECK,BST_CHECKED,0);
1272 if(pobj_nv->dwParameterHint==1)
1273 SendDlgItemMessage(hwnd,IDC_POPUP,BM_SETCHECK,BST_CHECKED,0);
1274 else
1275 SendDlgItemMessage(hwnd,IDC_STATUSBAR,BM_SETCHECK,BST_CHECKED,0);
1276 SendMessage(hwnd,WM_COMMAND,IDC_PARAMHINT,0);
1277 }
1278 else SendDlgItemMessage(hwnd,IDC_POPUP,BM_SETCHECK,BST_CHECKED,0);
1279
1280 //パラメータ ヒント フォント
1281 sprintf(str,"%s",MethodCheckInfo.LogFont.lfFaceName);
1282 SetDlgItemText(hwnd,IDC_HINTFONT,str);
1283 temp_HintFont=MethodCheckInfo.LogFont;
1284
1285 //検索・置換文字列を保存するかどうか
1286 if(pobj_nv->bSaveFindStr) SendDlgItemMessage(hwnd,IDC_SAVE_FINDSTR,BM_SETCHECK,BST_CHECKED,0);
1287
1288 break;
1289 case WM_COMMAND:
1290 switch(LOWORD(wParam)){
1291 case IDC_SETFONT:
1292 if(!SetFontDialog(hwnd,&temp_lf,1)) return 1;
1293 sprintf(str,"%s",temp_lf.lfFaceName);
1294 SetDlgItemText(hwnd,IDC_SETFONT,str);
1295 return 1;
1296 case IDC_HINTFONT:
1297 if(!SetFontDialog(hwnd,&temp_HintFont,0)) return 1;
1298 sprintf(str,"%s",temp_HintFont.lfFaceName);
1299 SetDlgItemText(hwnd,IDC_HINTFONT,str);
1300 return 1;
1301
1302 case IDC_ISAUTOINDENT:
1303 case IDC_COMPLEMENT:
1304 if(SendDlgItemMessage(hwnd,IDC_ISAUTOINDENT,BM_GETCHECK,0,0)&&
1305 SendDlgItemMessage(hwnd,IDC_COMPLEMENT,BM_GETCHECK,0,0)){
1306 EnableWindow(GetDlgItem(hwnd,IDC_PAIRSTATEMENT),1);
1307 SendMessage(hwnd,WM_COMMAND,IDC_PAIRSTATEMENT,0);
1308 }
1309 else{
1310 EnableWindow(GetDlgItem(hwnd,IDC_PAIRSTATEMENT),0);
1311 EnableWindow(GetDlgItem(hwnd,IDC_BACKNUM),0);
1312 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_PAIRSTATEMENT),0);
1313 }
1314 return 1;
1315
1316 case IDC_PAIRSTATEMENT:
1317 if(SendDlgItemMessage(hwnd,IDC_PAIRSTATEMENT,BM_GETCHECK,0,0)){
1318 EnableWindow(GetDlgItem(hwnd,IDC_BACKNUM),1);
1319 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_PAIRSTATEMENT),1);
1320
1321 if(GetWindowTextLength(GetDlgItem(hwnd,IDC_BACKNUM))==0)
1322 SetDlgItemText(hwnd,IDC_BACKNUM,"100");
1323 }
1324 else{
1325 EnableWindow(GetDlgItem(hwnd,IDC_BACKNUM),0);
1326 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_PAIRSTATEMENT),0);
1327 }
1328 return 1;
1329
1330 case IDC_PARAMHINT:
1331 if(SendDlgItemMessage(hwnd,IDC_PARAMHINT,BM_GETCHECK,0,0)){
1332 EnableWindow(GetDlgItem(hwnd,IDC_POPUP),1);
1333 EnableWindow(GetDlgItem(hwnd,IDC_STATUSBAR),1);
1334 if(SendDlgItemMessage(hwnd,IDC_POPUP,BM_GETCHECK,0,0)){
1335 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_HINTFONT),1);
1336 EnableWindow(GetDlgItem(hwnd,IDC_HINTFONT),1);
1337 }
1338 }
1339 else{
1340 EnableWindow(GetDlgItem(hwnd,IDC_POPUP),0);
1341 EnableWindow(GetDlgItem(hwnd,IDC_STATUSBAR),0);
1342 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_HINTFONT),0);
1343 EnableWindow(GetDlgItem(hwnd,IDC_HINTFONT),0);
1344 }
1345 return 1;
1346 case IDC_POPUP:
1347 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_HINTFONT),1);
1348 EnableWindow(GetDlgItem(hwnd,IDC_HINTFONT),1);
1349 return 1;
1350 case IDC_STATUSBAR:
1351 EnableWindow(GetDlgItem(hwnd,IDC_STATIC_HINTFONT),0);
1352 EnableWindow(GetDlgItem(hwnd,IDC_HINTFONT),0);
1353 return 1;
1354 }
1355 break;
1356 case WM_NOTIFY:
1357 nmhdr=(NMHDR *)lParam;
1358 if(nmhdr->code==PSN_APPLY||nmhdr->code==PSN_KILLACTIVE){
1359 GetDlgItemText(hwnd,IDC_TABSIZE,str,255);
1360 sscanf(str,"%d",&temp_TabSize);
1361
1362 //エディタの行番号を表示するかどうか
1363 if(SendDlgItemMessage(hwnd,IDC_LINENUMBER,BM_GETCHECK,0,0)) temp_bEditor_LineNumber=1;
1364 else temp_bEditor_LineNumber=0;
1365
1366 //エディタのルーラーを表示するかどうか
1367 if(SendDlgItemMessage(hwnd,IDC_RULER,BM_GETCHECK,0,0)) temp_bEditor_Ruler=1;
1368 else temp_bEditor_Ruler=0;
1369
1370 //カーソル行を強調表示するかどうか
1371 if(SendDlgItemMessage(hwnd,IDC_CARETLINE_BACKGROUND,BM_GETCHECK,0,0)) temp_bEditor_CaretLine_BackGround=1;
1372 else temp_bEditor_CaretLine_BackGround=0;
1373
1374#ifdef THETEXT
1375 //自動折り返し時の一行あたりの文字数
1376 GetDlgItemText(hwnd,IDC_MAX_ONELINE_TEXT_LENGTH,str,255);
1377 sscanf(str,"%d",&temp_iMaxOneLineTextLength);
1378 if(temp_iMaxOneLineTextLength<=0){
1379 temp_iMaxOneLineTextLength=75;
1380 }
1381#endif
1382
1383 //自動インデント
1384 if(SendDlgItemMessage(hwnd,IDC_ISAUTOINDENT,BM_GETCHECK,0,0)) temp_bAutoIndent=1;
1385 else temp_bAutoIndent=0;
1386
1387 //貼り付け時のインデント調整
1388 if(SendDlgItemMessage(hwnd,IDC_PASTEINDENT,BM_GETCHECK,0,0)) temp_bPasteIndent=1;
1389 else temp_bPasteIndent=0;
1390
1391 //コード補完機能
1392 if(SendDlgItemMessage(hwnd,IDC_COMPLEMENT,BM_GETCHECK,0,0))
1393 temp_bShowComplementWnd=1;
1394 else temp_bShowComplementWnd=0;
1395
1396 //ペアステートメント補完
1397 if(IsWindowEnabled(GetDlgItem(hwnd,IDC_PAIRSTATEMENT))){
1398 if(SendDlgItemMessage(hwnd,IDC_PAIRSTATEMENT,BM_GETCHECK,0,0)){
1399 GetDlgItemText(hwnd,IDC_BACKNUM,str,255);
1400 sscanf(str,"%d",&temp_BackNum_PairStatementComplement);
1401 }
1402 else temp_BackNum_PairStatementComplement=0;
1403 }
1404 else temp_BackNum_PairStatementComplement=0;
1405
1406 //パラメータヒント
1407 if(SendDlgItemMessage(hwnd,IDC_PARAMHINT,BM_GETCHECK,0,0)){
1408 if(SendDlgItemMessage(hwnd,IDC_POPUP,BM_GETCHECK,0,0)) temp_dwParameterHint=1;
1409 else temp_dwParameterHint=2;
1410 }
1411 else temp_dwParameterHint=0;
1412
1413 if(SendDlgItemMessage(hwnd,IDC_SAVE_FINDSTR,BM_GETCHECK,0,0))
1414 temp_bSaveFindStr=1;
1415 else temp_bSaveFindStr=0;
1416
1417 if(nmhdr->code==PSN_APPLY) SaveSetting();
1418 }
1419 return 1;
1420
1421 case WM_HELP:
1422 HELPINFO *lpHelpInfo;
1423 lpHelpInfo = (HELPINFO *)lParam;
1424
1425 HH_POPUP hp;
1426 memset(&hp, 0, sizeof(HH_POPUP));
1427 hp.cbStruct = sizeof(HH_POPUP);
1428 hp.pt.x = lpHelpInfo->MousePos.x;
1429 hp.pt.y = lpHelpInfo->MousePos.y+10;
1430 hp.clrForeground = RGB(0, 0, 0);
1431 hp.clrBackground = -1;
1432 hp.rcMargins.left = -1;
1433 hp.rcMargins.right = -1;
1434 hp.rcMargins.top = -1;
1435 hp.rcMargins.bottom = -1;
1436 hp.idString = 0;
1437 hp.pszFont="MS Sans Serif,10";
1438
1439 switch(lpHelpInfo->iCtrlId){
1440 case IDC_STATIC_SETFONT:
1441 case IDC_SETFONT:
1442#if defined(JPN)
1443 //日本語
1444 hp.pszText="エディタで使用するフォントを選択することができます。";
1445#else
1446 //英語
1447 hp.pszText="Choose the font displayed on the editor";
1448#endif
1449 break;
1450 case IDC_STATIC_TABSIZE:
1451 case IDC_TABSIZE:
1452#if defined(JPN)
1453 //日本語
1454 hp.pszText="タブサイズを指定します。デフォルト値は4です。";
1455#else
1456 //英語
1457 hp.pszText="Set the tab size. Value of default is 4.";
1458#endif
1459 break;
1460 case IDC_ISAUTOINDENT:
1461#if defined(JPN)
1462 //日本語
1463 hp.pszText="このチェックをオンにすると、必要に応じて、自動的にインデント用のタブ文字が挿入されます。";
1464#else
1465 //英語
1466 hp.pszText="If this check is on, the indent tabs will be inserted automatically.";
1467#endif
1468 break;
1469 case IDC_COMPLEMENT:
1470#if defined(JPN)
1471 //日本語
1472 hp.pszText="このチェックをオンにすると、クラスまたは構造体のメンバを入力するときに、予想されるキーワードがリスト表示されます。";
1473#else
1474 //英語
1475 hp.pszText="If this check is on, the member expected is displayed in a list when inputting the member of the class object.";
1476#endif
1477 break;
1478 case IDC_PARAMHINT:
1479#if defined(JPN)
1480 //日本語
1481 hp.pszText="このチェックをオンにすると、関数またはステートメントを入力するときに、該当するパラメータのヒント文字列が表示されます。文字列の表示方法はポップアップまたはステータスバーのいずれかを選択することができます。";
1482#else
1483 //英語
1484 hp.pszText="If this check is on, parameter hint is displayed when inputting a function or a statement.";
1485#endif
1486 break;
1487 case IDC_POPUP:
1488#if defined(JPN)
1489 //日本語
1490 hp.pszText="パラメータヒントをポップアップ表示するときは、ここをチェックします。";
1491#else
1492 //英語
1493 hp.pszText="If this check is on, parameter hint is displayed on a popup window.";
1494#endif
1495 break;
1496 case IDC_STATUSBAR:
1497#if defined(JPN)
1498 //日本語
1499 hp.pszText="パラメータヒントをステータスバーに表示するときは、ここをチェックします。";
1500#else
1501 //英語
1502 hp.pszText="If this check is on, parameter hint is displayed in a status bar.";
1503#endif
1504 break;
1505 case IDC_STATIC_HINTFONT:
1506 case IDC_HINTFONT:
1507#if defined(JPN)
1508 //日本語
1509 hp.pszText="ポップアップ表示されるパラメータヒントのフォントを指定します。";
1510#else
1511 //英語
1512 hp.pszText="Choose the font displayed on the popup hint.";
1513#endif
1514 break;
1515 default:
1516 hp.pszText="";
1517 break;
1518 }
1519 HtmlHelp(hwnd, 0, HH_DISPLAY_TEXT_POPUP, (DWORD)&hp);
1520 return 1;
1521 }
1522 return 0;
1523}
1524COLORREF GetColorFromSelection(int iPos,TEXTEDIT_COLOR_INFO *ptci){
1525 if(iPos==0) return ptci->rgbComment;
1526 else if(iPos==1) return ptci->rgbString;
1527 else if(iPos==2) return ptci->rgbDefault;
1528 else if(iPos==3) return ptci->rgbStatement;
1529 else if(iPos==4) return ptci->rgbCursorBack;
1530 else if(iPos==5) return ptci->rgbBackground;
1531 return 0;
1532}
1533void SetColorFromSelection(int iPos,COLORREF rgb,TEXTEDIT_COLOR_INFO *ptci){
1534 if(iPos==0) ptci->rgbComment=rgb;
1535 else if(iPos==1) ptci->rgbString=rgb;
1536 else if(iPos==2) ptci->rgbDefault=rgb;
1537 else if(iPos==3) ptci->rgbStatement=rgb;
1538 else if(iPos==4) ptci->rgbCursorBack=rgb;
1539 else if(iPos==5) ptci->rgbBackground=rgb;
1540}
1541#ifdef THETEXT
1542char szNewThemeName[MAX_PATH];
1543BOOL bThemeOverwirte;
1544BOOL CALLBACK DlgOptionThemeSave(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1545 switch(message){
1546 case WM_INITDIALOG:
1547 SetPosCenter(hwnd);
1548
1549 SendMessage(hwnd,WM_COMMAND,IDC_NAME,0);
1550 SetFocus(GetDlgItem(hwnd,IDC_NAME));
1551 break;
1552 case WM_COMMAND:
1553 switch(LOWORD(wParam)){
1554 case IDOK:
1555 GetDlgItemText(hwnd,IDC_NAME,szNewThemeName,MAX_PATH);
1556
1557 if(SendDlgItemMessage(hwnd,IDC_OVERWRITE,BM_GETCHECK,0,0))
1558 bThemeOverwirte=1;
1559 else bThemeOverwirte=0;
1560
1561 if(pobj_DBTheme->dupli_check(szNewThemeName)){
1562 if(!bThemeOverwirte){
1563 char temporary[MAX_PATH];
1564 sprintf(temporary,"テーマ \"%s\" は既に存在します。「上書きを許可する」をチェックした後、保存してください。",szNewThemeName);
1565 MessageBox(hwnd,temporary,APPLICATION_NAME,MB_OK);
1566 return 1;
1567 }
1568 }
1569
1570 EndDialog(hwnd,1);
1571 return 1;
1572 case IDCANCEL:
1573 EndDialog(hwnd,0);
1574 return 1;
1575 case IDC_NAME:
1576 if(GetWindowTextLength(GetDlgItem(hwnd,IDC_NAME)))
1577 EnableWindow(GetDlgItem(hwnd,IDOK),1);
1578 else EnableWindow(GetDlgItem(hwnd,IDOK),0);
1579 return 1;
1580 }
1581 break;
1582 }
1583 return 0;
1584}
1585#endif
1586BOOL CALLBACK Dlg_Option_Color(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1587 int iPos;
1588 CTheme *pobj_Theme;
1589 char temporary[MAX_PATH];
1590 switch(message){
1591 case WM_INITDIALOG:
1592 bOptionColor=1;
1593
1594 //一時保存値を初期化
1595 pobj_Theme=pobj_DBTheme->GetActiveTheme();
1596 obj_temp_Theme=*pobj_Theme;
1597
1598 //指定する部分
1599 SendDlgItemMessage(hwnd,IDC_TARGET,CB_ADDSTRING,0,(LPARAM)"コメント");
1600 SendDlgItemMessage(hwnd,IDC_TARGET,CB_ADDSTRING,0,(LPARAM)"ダブルクォート内の文字列");
1601 SendDlgItemMessage(hwnd,IDC_TARGET,CB_ADDSTRING,0,(LPARAM)"通常の文字");
1602 SendDlgItemMessage(hwnd,IDC_TARGET,CB_ADDSTRING,0,(LPARAM)"特殊ステートメント");
1603 SendDlgItemMessage(hwnd,IDC_TARGET,CB_ADDSTRING,0,(LPARAM)"背景色(カーソル行)");
1604 SendDlgItemMessage(hwnd,IDC_TARGET,CB_ADDSTRING,0,(LPARAM)"背景色(一般)");
1605 SendDlgItemMessage(hwnd,IDC_TARGET,CB_SETCURSEL,0,0);
1606
1607
1608 //テーマ名をコンボボックスにセット
1609 pobj_DBTheme->ResetTheme_ToComboBox(GetDlgItem(hwnd,IDC_THEME));
1610
1611
1612 SendMessage(hwnd,WM_COMMAND,MAKELONG(IDC_THEME,CBN_SELCHANGE),0);
1613 break;
1614
1615 case WM_COMMAND:
1616 switch(LOWORD(wParam)){
1617#ifdef THETEXT
1618 case IDC_SAVE:
[302]1619 if(!DialogBox(hResInst,MAKEINTRESOURCE(IDD_OPTION_THEME_SAVE),hwnd,(DLGPROC)DlgOptionThemeSave)) return 1;
[3]1620
1621 pobj_Theme=pobj_DBTheme->dupli_check(szNewThemeName);
1622 if(pobj_Theme){
1623 }
1624 else{
1625 //新規に追加
1626 pobj_Theme=pobj_DBTheme->add(0,szNewThemeName);
1627 }
1628 *pobj_Theme=obj_temp_Theme;
1629 lstrcpy(pobj_Theme->m_name,szNewThemeName);
1630
1631 //ファイルに保存
1632 pobj_Theme->save();
1633
1634 //テーマ コンボボックスのカーソル位置をセット
1635 ComboBox_SetSelText(GetDlgItem(hwnd,IDC_THEME),szNewThemeName);
1636
1637 return 1;
1638#endif //THETEXT
1639 case IDC_THEME:
1640 if(HIWORD(wParam)==CBN_SELCHANGE){
1641 if(!SendDlgItemMessage(hwnd,IDC_THEME,CB_GETLBTEXT,
1642 SendDlgItemMessage(hwnd,IDC_THEME,CB_GETCURSEL,0,0),
1643 (LPARAM)temporary)) return 1;
1644
1645 pobj_Theme=pobj_DBTheme->dupli_check(temporary);
1646 obj_temp_Theme=*pobj_Theme;
1647
1648 InvalidateRect(GetDlgItem(hwnd,IDC_SAMPLE),NULL,0);
1649 InvalidateRect(GetDlgItem(hwnd,IDC_COLOR_BUTTON),NULL,0);
1650 }
1651 return 1;
1652 case IDC_TARGET:
1653 if(HIWORD(wParam)==CBN_SELCHANGE){
1654 InvalidateRect(GetDlgItem(hwnd,IDC_COLOR_BUTTON),NULL,0);
1655 }
1656 return 1;
1657 case IDC_COLOR_BUTTON:
1658 iPos=SendDlgItemMessage(hwnd,IDC_TARGET,CB_GETCURSEL,0,0);
1659
1660 CHOOSECOLOR cc;
1661 static COLORREF CustColors[16];
1662 cc.lStructSize=sizeof(CHOOSECOLOR);
1663 cc.hwndOwner=hwnd;
1664 cc.rgbResult=GetColorFromSelection(iPos,&obj_temp_Theme.TextColorInfo);
1665 cc.lpCustColors=CustColors;
1666 cc.Flags=CC_FULLOPEN | CC_RGBINIT;
1667 if(!ChooseColor(&cc)) return 1;
1668
1669 SetColorFromSelection(iPos,cc.rgbResult,&obj_temp_Theme.TextColorInfo);
1670
1671 InvalidateRect(GetDlgItem(hwnd,IDC_COLOR_BUTTON),NULL,0);
1672 InvalidateRect(GetDlgItem(hwnd,IDC_SAMPLE),NULL,0);
1673
1674 lstrcpy(obj_temp_Theme.m_name,THEMENAME_USER);
1675
1676 //ユーザー設定を選択
1677 ComboBox_SetSelText(GetDlgItem(hwnd,IDC_THEME),THEMENAME_USER);
1678 return 1;
1679 }
1680 break;
1681
1682 case WM_NOTIFY:
1683 NMHDR *nmhdr;
1684 nmhdr=(NMHDR *)lParam;
1685
1686 if(nmhdr->code==PSN_APPLY) SaveSetting();
1687 return 1;
1688
1689 case WM_DRAWITEM:
1690 LPDRAWITEMSTRUCT pds;
1691 pds=(LPDRAWITEMSTRUCT)lParam;
1692
1693 HBRUSH hBrush,hOldBrush;
1694
1695 if(wParam==IDC_COLOR_BUTTON){
1696 iPos=SendDlgItemMessage(hwnd,IDC_TARGET,CB_GETCURSEL,0,0);
1697
1698 //////////////
1699 // 色を描画
1700 //////////////
1701
1702 //ペンとブラシを生成
1703 HPEN hPen,hOldPen;
1704 hPen=(HPEN)GetStockObject(WHITE_PEN);
1705 if(IsWindowEnabled(GetDlgItem(hwnd,IDC_COLOR_BUTTON)))
1706 hBrush=CreateSolidBrush(GetColorFromSelection(iPos,&obj_temp_Theme.TextColorInfo));
1707 else
1708 hBrush=CreateSolidBrush(GetSysColor(COLOR_3DFACE));
1709
1710 //塗りつぶす
1711 hOldPen=(HPEN)SelectObject(pds->hDC,hPen);
1712 hOldBrush=(HBRUSH)SelectObject(pds->hDC,hBrush);
1713 Rectangle(pds->hDC,0,0,pds->rcItem.right,pds->rcItem.bottom);
1714 SelectObject(pds->hDC,hOldPen);
1715 SelectObject(pds->hDC,hOldBrush);
1716
1717 //ブラシを破棄
1718 DeleteObject(hBrush);
1719 }
1720 else if(wParam==IDC_SAMPLE){
1721 TEXTEDIT_COLOR_INFO ColorInfo;
1722 ColorInfo=obj_temp_Theme.TextColorInfo;
1723
1724 //背景色で塗りつぶす
1725 hBrush=CreateSolidBrush(ColorInfo.rgbBackground);
1726 hOldBrush=(HBRUSH)SelectObject(pds->hDC,hBrush);
1727 PatBlt(pds->hDC,0,0,pds->rcItem.right,pds->rcItem.bottom,PATCOPY);
1728 SelectObject(pds->hDC,hOldBrush);
1729 DeleteObject(hBrush);
1730
1731 //フォントを選択
1732 extern HFONT hFont_TextEdit;
1733 HFONT hOldFont;
1734 hOldFont=(HFONT)SelectObject(pds->hDC,hFont_TextEdit);
1735
1736 ///////////////////
1737 // サンプルを描画
1738 ///////////////////
1739
1740 extern int font_width,font_height;
1741 int x=0,y=0;
1742
1743#ifdef THETEXT
1744#define SAMPLESTR_STATEMENT "div"
1745#define SAMPLESTR_COMMENT "<!-- この行にカーソルがあります -->"
1746#define SAMPLESTR_DEFAULT "< style= >Hello World!</ >"
1747#define SAMPLESTR_STRING "\"color:#123456\""
1748
1749 y+=font_height;
1750
1751 //"< style= >Hello World!</ >"
1752 SetTextColor(pds->hDC,ColorInfo.rgbDefault);
1753 SetBkColor(pds->hDC,ColorInfo.rgbBackground);
1754 TextOut(pds->hDC,x,y,SAMPLESTR_DEFAULT,lstrlen(SAMPLESTR_DEFAULT));
1755
1756 //div
1757 x=font_width*1;
1758 SetTextColor(pds->hDC,ColorInfo.rgbStatement);
1759 TextOut(pds->hDC,x,y,SAMPLESTR_STATEMENT,lstrlen(SAMPLESTR_STATEMENT));
1760 x=font_width*41;
1761 TextOut(pds->hDC,x,y,SAMPLESTR_STATEMENT,lstrlen(SAMPLESTR_STATEMENT));
1762
1763 //"color:#123456"
1764 x=font_width*11;
1765 SetTextColor(pds->hDC,ColorInfo.rgbString);
1766 TextOut(pds->hDC,x,y,SAMPLESTR_STRING,lstrlen(SAMPLESTR_STRING));
1767
1768 x=0;
1769 y+=font_height*2;
1770
1771 //"'この行にカーソルがあります
1772 hBrush=CreateSolidBrush(ColorInfo.rgbCursorBack);
1773 hOldBrush=(HBRUSH)SelectObject(pds->hDC,hBrush);
1774 PatBlt(pds->hDC,x,y,pds->rcItem.right,font_height,PATCOPY);
1775 SelectObject(pds->hDC,hOldBrush);
1776 DeleteObject(hBrush);
1777
1778 SetTextColor(pds->hDC,ColorInfo.rgbComment);
1779 SetBkColor(pds->hDC,ColorInfo.rgbCursorBack);
1780 TextOut(pds->hDC,x,y,SAMPLESTR_COMMENT,lstrlen(SAMPLESTR_COMMENT));
1781#else
1782#define SAMPLESTR_STATEMENT "#console"
1783#define SAMPLESTR_COMMENT "'この行にカーソルがあります"
1784#define SAMPLESTR_DEFAULT "Print "
1785#define SAMPLESTR_STRING "\"Hello World!\""
1786
1787 //"#console"
1788 SetTextColor(pds->hDC,ColorInfo.rgbStatement);
1789 SetBkColor(pds->hDC,ColorInfo.rgbBackground);
1790 TextOut(pds->hDC,0,0,SAMPLESTR_STATEMENT,lstrlen(SAMPLESTR_STATEMENT));
1791 y+=font_height*2;
1792
1793 //"'この行にカーソルがあります
1794 hBrush=CreateSolidBrush(ColorInfo.rgbCursorBack);
1795 hOldBrush=(HBRUSH)SelectObject(pds->hDC,hBrush);
1796 PatBlt(pds->hDC,x,y,pds->rcItem.right,font_height,PATCOPY);
1797 SelectObject(pds->hDC,hOldBrush);
1798 DeleteObject(hBrush);
1799
1800 SetTextColor(pds->hDC,ColorInfo.rgbComment);
1801 SetBkColor(pds->hDC,ColorInfo.rgbCursorBack);
1802 TextOut(pds->hDC,x,y,SAMPLESTR_COMMENT,lstrlen(SAMPLESTR_COMMENT));
1803 y+=font_height*2;
1804
1805 //Print
1806 SetTextColor(pds->hDC,ColorInfo.rgbDefault);
1807 SetBkColor(pds->hDC,ColorInfo.rgbBackground);
1808 TextOut(pds->hDC,x,y,SAMPLESTR_DEFAULT,lstrlen(SAMPLESTR_DEFAULT));
1809 x+=lstrlen(SAMPLESTR_DEFAULT)*font_width;
1810
1811 //"Hello World!"
1812 SetTextColor(pds->hDC,ColorInfo.rgbString);
1813 TextOut(pds->hDC,x,y,SAMPLESTR_STRING,lstrlen(SAMPLESTR_STRING));
1814#endif
1815
1816 SelectObject(pds->hDC,hOldFont);
1817 }
1818 return 0;
1819
1820 case WM_HELP:
1821 HELPINFO *lpHelpInfo;
1822 lpHelpInfo = (HELPINFO *)lParam;
1823
1824 HH_POPUP hp;
1825 memset(&hp, 0, sizeof(HH_POPUP));
1826 hp.cbStruct = sizeof(HH_POPUP);
1827 hp.pt.x = lpHelpInfo->MousePos.x;
1828 hp.pt.y = lpHelpInfo->MousePos.y+10;
1829 hp.clrForeground = RGB(0, 0, 0);
1830 hp.clrBackground = -1;
1831 hp.rcMargins.left = -1;
1832 hp.rcMargins.right = -1;
1833 hp.rcMargins.top = -1;
1834 hp.rcMargins.bottom = -1;
1835 hp.idString = 0;
1836 hp.pszFont="MS Sans Serif,10";
1837
1838 switch(lpHelpInfo->iCtrlId){
1839 case IDC_TARGET:
1840 hp.pszText="どの部分の色を設定するかを選択します。";
1841 break;
1842 default:
1843 hp.pszText="";
1844 break;
1845 }
1846 HtmlHelp(hwnd, 0, HH_DISPLAY_TEXT_POPUP, (DWORD)&hp);
1847 return 1;
1848 }
1849 return 0;
1850}
1851BOOL CALLBACK Dlg_Option_Toolbar(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1852 switch(message){
1853 case WM_INITDIALOG:
1854 bOptionToolbar=1;
1855 break;
1856 case WM_COMMAND:
1857 switch(LOWORD(wParam)){
1858 case IDC_RESETTOOLBAR:
1859 //"ツールバーの配置をすべて初期状態に戻します。\nよろしいですか?"
1860 if(IDCANCEL==MessageBox(hwnd,STRING_TOOLBAR_RESET,APPLICATION_NAME,MB_OKCANCEL|MB_ICONEXCLAMATION)) break;
1861
1862 //レバーコントロールを再生成
1863 pobj_Rebar->ResetInitRebar();
1864
1865 //メニュー状態を設定
1866 ResetState_DocMenu();
1867 return 1;
1868 }
1869 break;
1870
1871 case WM_HELP:
1872 HELPINFO *lpHelpInfo;
1873 lpHelpInfo = (HELPINFO *)lParam;
1874
1875 HH_POPUP hp;
1876 memset(&hp, 0, sizeof(HH_POPUP));
1877 hp.cbStruct = sizeof(HH_POPUP);
1878 hp.pt.x = lpHelpInfo->MousePos.x;
1879 hp.pt.y = lpHelpInfo->MousePos.y+10;
1880 hp.clrForeground = RGB(0, 0, 0);
1881 hp.clrBackground = -1;
1882 hp.rcMargins.left = -1;
1883 hp.rcMargins.right = -1;
1884 hp.rcMargins.top = -1;
1885 hp.rcMargins.bottom = -1;
1886 hp.idString = 0;
1887 hp.pszFont="MS Sans Serif,10";
1888
1889 switch(lpHelpInfo->iCtrlId){
1890 case IDC_RESETTOOLBAR:
1891#if defined(JPN)
1892 //日本語
1893 hp.pszText="ツールバーの配置を初期状態に戻します。";
1894#else
1895 //英語
1896 hp.pszText="Reset the state of the toolbar.";
1897#endif
1898 break;
1899 default:
1900 hp.pszText="";
1901 break;
1902 }
1903 HtmlHelp(hwnd, 0, HH_DISPLAY_TEXT_POPUP, (DWORD)&hp);
1904 return 1;
1905 }
1906 return 0;
1907}
1908BOOL CALLBACK Dlg_Option_Rad(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1909 NMHDR *nmhdr;
1910 switch(message){
1911 case WM_INITDIALOG:
1912
1913 bOptionRad=1;
1914
1915 //ライン アジャスタ
1916 if(pobj_nv->bLineAdjust) SendDlgItemMessage(hwnd,IDC_LINEADJUST,BM_SETCHECK,BST_CHECKED,0);
1917
1918 break;
1919 case WM_NOTIFY:
1920 nmhdr=(NMHDR *)lParam;
1921 if(nmhdr->code==PSN_APPLY||nmhdr->code==PSN_KILLACTIVE){
1922 if(SendDlgItemMessage(hwnd,IDC_LINEADJUST,BM_GETCHECK,0,0)) temp_bLineAdjust=1;
1923 else temp_bLineAdjust=0;
1924
1925 if(nmhdr->code==PSN_APPLY) SaveSetting();
1926 }
1927 return 1;
1928
1929 case WM_HELP:
1930 HELPINFO *lpHelpInfo;
1931 lpHelpInfo = (HELPINFO *)lParam;
1932
1933 HH_POPUP hp;
1934 memset(&hp, 0, sizeof(HH_POPUP));
1935 hp.cbStruct = sizeof(HH_POPUP);
1936 hp.pt.x = lpHelpInfo->MousePos.x;
1937 hp.pt.y = lpHelpInfo->MousePos.y+10;
1938 hp.clrForeground = RGB(0, 0, 0);
1939 hp.clrBackground = -1;
1940 hp.rcMargins.left = -1;
1941 hp.rcMargins.right = -1;
1942 hp.rcMargins.top = -1;
1943 hp.rcMargins.bottom = -1;
1944 hp.idString = 0;
1945 hp.pszFont="MS Sans Serif,10";
1946
1947 switch(lpHelpInfo->iCtrlId){
1948 case IDC_LINEADJUST:
1949#if defined(JPN)
1950 //日本語
1951 hp.pszText="このチェックボックスをオンにすると、ラインアジャスタ機能が有効になります。ラインアジャスタ機能をオンにすると、マウスを使ってコントロールの移動を行う際に他のコントロール同士との位置合わせが容易に行えるようになります。";
1952#else
1953 //英語
1954 hp.pszText="If this check is on, line adjuster becomes effective.";
1955#endif
1956 break;
1957 default:
1958 hp.pszText="";
1959 break;
1960 }
1961 HtmlHelp(hwnd, 0, HH_DISPLAY_TEXT_POPUP, (DWORD)&hp);
1962 return 1;
1963 }
1964 return 0;
1965}
1966char szDomainAdd_Name[255];
1967char szDomainAdd_Domain[255];
1968BOOL CALLBACK Dlg_Option_Web_Domain_Add(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1969 switch(message){
1970 case WM_INITDIALOG:
1971 SetPosCenter(hwnd);
1972 SetFocus(GetDlgItem(hwnd,IDC_NAME));
1973
1974 if(lParam!=-1){
1975 SetWindowText(hwnd,"Web検索用ドメインを編集");
1976 SetDlgItemText(hwnd,IDC_NAME,szDomainAdd_Name);
1977 SetDlgItemText(hwnd,IDC_DOMAIN,szDomainAdd_Domain);
1978 }
1979 break;
1980 case WM_COMMAND:
1981 switch(LOWORD(wParam)){
1982 case IDOK:
1983 GetDlgItemText(hwnd,IDC_NAME,szDomainAdd_Name,255);
1984 GetDlgItemText(hwnd,IDC_DOMAIN,szDomainAdd_Domain,255);
1985 EndDialog(hwnd,1);
1986 return 1;
1987 case IDCANCEL:
1988 EndDialog(hwnd,0);
1989 return 1;
1990 }
1991 return 0;
1992 }
1993 return 0;
1994}
1995BOOL CALLBACK Dlg_Option_Web(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
1996 HWND hListView;
1997 NMHDR *nmhdr;
1998 int i;
1999 char temporary[255];
2000 switch(message){
2001 case WM_INITDIALOG:
2002
2003 bOptionWeb=1;
2004
2005
2006 //Ctrlキーによるハイパーリンク
2007 if(pobj_nv->bCtrlKeyHyperLink) SendDlgItemMessage(hwnd,IDC_CTRLKEY_HYPERLINK,BM_SETCHECK,BST_CHECKED,0);
2008
2009 //Web検索文字列を保存するかどうか
2010 if(pobj_nv->bSaveWebFindStr) SendDlgItemMessage(hwnd,IDC_SAVE_WEBFINDSTR,BM_SETCHECK,BST_CHECKED,0);
2011
2012
2013 //拡張スタイル
2014 DWORD dwStyle;
2015 hListView=GetDlgItem(hwnd,IDC_DOMAIN_LIST);
2016 dwStyle=ListView_GetExtendedListViewStyle(hListView);
2017 dwStyle|=LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES;
2018 ListView_SetExtendedListViewStyle(hListView,dwStyle);
2019
2020 LV_COLUMN ListView_Column;
2021 ListView_Column.mask=LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
2022 ListView_Column.fmt=LVCFMT_LEFT;
2023
2024 ListView_Column.cx=80;
2025 ListView_Column.pszText="表示名";
2026 ListView_Column.iSubItem=0;
2027 ListView_InsertColumn(hListView,ListView_Column.iSubItem,&ListView_Column);
2028
2029 ListView_Column.cx=200;
2030 ListView_Column.pszText="ドメイン";
2031 ListView_Column.iSubItem++;
2032 ListView_InsertColumn(hListView,ListView_Column.iSubItem,&ListView_Column);
2033
2034 //一時オブジェクトにコピー
2035 pobj_temp_DBDomain->copy_get(pobj_nv->pobj_DBDomain);
2036
2037 //ドメインリストにデータをセット
2038 pobj_temp_DBDomain->SetListView(hListView);
2039
2040 break;
2041 case WM_COMMAND:
2042 switch(LOWORD(wParam)){
2043 case IDC_ADD:
[302]2044 if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_OPTION_WEB_DOMAIN_ADD),hwnd,(DLGPROC)Dlg_Option_Web_Domain_Add,-1)) return 1;
[3]2045
2046 pobj_temp_DBDomain->add(szDomainAdd_Name,szDomainAdd_Domain);
2047 return 1;
2048 case IDC_DELETE:
2049 hListView=GetDlgItem(hwnd,IDC_DOMAIN_LIST);
2050 for(i=0;i<ListView_GetItemCount(hListView);i++){
2051 if(ListView_GetItemState(hListView,i,LVIS_SELECTED)){
2052 ListView_GetItemText(hListView,i,0,temporary,255);
2053 pobj_temp_DBDomain->del(temporary);
2054 break;
2055 }
2056 }
2057 return 1;
2058 case IDC_EDIT:
2059 hListView=GetDlgItem(hwnd,IDC_DOMAIN_LIST);
2060 for(i=0;i<ListView_GetItemCount(hListView);i++){
2061 if(ListView_GetItemState(hListView,i,LVIS_SELECTED)){
2062 ListView_GetItemText(hListView,i,0,temporary,255);
2063
2064 ListView_GetItemText(hListView,i,0,szDomainAdd_Name,255);
2065 ListView_GetItemText(hListView,i,1,szDomainAdd_Domain,255);
2066 lstrcpy(temporary,szDomainAdd_Name);
[302]2067 if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_OPTION_WEB_DOMAIN_ADD),hwnd,(DLGPROC)Dlg_Option_Web_Domain_Add,i)) return 1;
[3]2068
2069 pobj_temp_DBDomain->change(temporary,szDomainAdd_Name,szDomainAdd_Domain);
2070 }
2071 }
2072 return 1;
2073 }
2074 return 0;
2075 case WM_NOTIFY:
2076 nmhdr=(NMHDR *)lParam;
2077 if(nmhdr->code==PSN_APPLY||nmhdr->code==PSN_KILLACTIVE){
2078
2079 //Ctrlキーによるハイパーリンク
2080 if(SendDlgItemMessage(hwnd,IDC_CTRLKEY_HYPERLINK,BM_GETCHECK,0,0)) temp_bCtrlKeyHyperLink=1;
2081 else temp_bCtrlKeyHyperLink=0;
2082
2083 //Web検索文字列を保存するかどうか
2084 if(SendDlgItemMessage(hwnd,IDC_SAVE_WEBFINDSTR,BM_GETCHECK,0,0)) temp_bSaveWebFindStr=1;
2085 else temp_bSaveWebFindStr=0;
2086
2087 if(nmhdr->code==PSN_APPLY) SaveSetting();
2088 }
2089 if(nmhdr->idFrom==IDC_DOMAIN_LIST){
2090 if(nmhdr->code==NM_DBLCLK){
2091 LPNMLISTVIEW lpnmListView;
2092 lpnmListView=(LPNMLISTVIEW)lParam;
2093
2094 char szBeforeName[255];
2095 ListView_GetItemText(nmhdr->hwndFrom,lpnmListView->iItem,0,szDomainAdd_Name,255);
2096 ListView_GetItemText(nmhdr->hwndFrom,lpnmListView->iItem,1,szDomainAdd_Domain,255);
2097 lstrcpy(szBeforeName,szDomainAdd_Name);
[302]2098 if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_OPTION_WEB_DOMAIN_ADD),hwnd,(DLGPROC)Dlg_Option_Web_Domain_Add,lpnmListView->iItem)) return 1;
[3]2099
2100 pobj_temp_DBDomain->change(szBeforeName,szDomainAdd_Name,szDomainAdd_Domain);
2101 }
2102 }
2103 return 1;
2104 }
2105 return 0;
2106}
2107void DlgOptionSetting(HWND hwnd){
2108 PROPSHEETHEADER psh;
2109#define MAX_SETDLG 32
2110 PROPSHEETPAGE psp[MAX_SETDLG];
2111 HPROPSHEETPAGE hpsp[MAX_SETDLG];
2112 int i;
2113
2114 bOptionWhole=0;
2115 bOptionEditor=0;
2116 bOptionColor=0;
2117 bOptionToolbar=0;
2118 bOptionRad=0;
2119 bOptionWeb=0;
2120
2121 i=0;
2122
2123 //各ページのセッティング
2124 psp[i].dwSize=sizeof(PROPSHEETPAGE);
2125 psp[i].dwFlags=PSP_DEFAULT;
2126 psp[i].hInstance=hResInst;
2127 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_OPTION_WHOLE);
[302]2128 psp[i].pfnDlgProc=(DLGPROC)Dlg_Option_Whole;
[3]2129 hpsp[i]=CreatePropertySheetPage(&psp[i]);
2130 i++;
2131 psp[i].dwSize=sizeof(PROPSHEETPAGE);
2132 psp[i].dwFlags=PSP_DEFAULT;
2133 psp[i].hInstance=hResInst;
2134 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_OPTION_EDITOR);
[302]2135 psp[i].pfnDlgProc=(DLGPROC)Dlg_Option_Editor;
[3]2136 hpsp[i]=CreatePropertySheetPage(&psp[i]);
2137 i++;
2138 psp[i].dwSize=sizeof(PROPSHEETPAGE);
2139 psp[i].dwFlags=PSP_DEFAULT;
2140 psp[i].hInstance=hResInst;
2141 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_OPTION_COLOR);
[302]2142 psp[i].pfnDlgProc=(DLGPROC)Dlg_Option_Color;
[3]2143 hpsp[i]=CreatePropertySheetPage(&psp[i]);
2144 i++;
2145 psp[i].dwSize=sizeof(PROPSHEETPAGE);
2146 psp[i].dwFlags=PSP_DEFAULT;
2147 psp[i].hInstance=hResInst;
2148 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_OPTION_TOOLBAR);
[302]2149 psp[i].pfnDlgProc=(DLGPROC)Dlg_Option_Toolbar;
[3]2150 hpsp[i]=CreatePropertySheetPage(&psp[i]);
2151
2152#ifndef THETEXT
2153 //RADツールに関するオプションはProjectEditorのみ表示
2154 i++;
2155 psp[i].dwSize=sizeof(PROPSHEETPAGE);
2156 psp[i].dwFlags=PSP_DEFAULT;
2157 psp[i].hInstance=hResInst;
2158 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_OPTION_RAD);
[302]2159 psp[i].pfnDlgProc=(DLGPROC)Dlg_Option_Rad;
[3]2160 hpsp[i]=CreatePropertySheetPage(&psp[i]);
2161#endif
2162
[22]2163 i++;
2164 psp[i].dwSize=sizeof(PROPSHEETPAGE);
2165 psp[i].dwFlags=PSP_DEFAULT;
2166 psp[i].hInstance=hResInst;
2167 psp[i].pszTemplate=MAKEINTRESOURCE(IDD_OPTION_WEB);
[302]2168 psp[i].pfnDlgProc=(DLGPROC)Dlg_Option_Web;
[22]2169 hpsp[i]=CreatePropertySheetPage(&psp[i]);
[3]2170
2171 i++;
2172
2173
2174
2175 ///////////////////////////
2176 // 一時オブジェクトを生成
2177 ///////////////////////////
2178
2179 pobj_temp_DBDomain=new CDBDomain();
2180
2181
2182
2183 memset(&psh,0,sizeof(PROPSHEETHEADER));
2184 psh.dwSize=sizeof(PROPSHEETHEADER);
2185 psh.dwFlags=PSH_PROPSHEETPAGE|PSH_NOAPPLYNOW;
2186 psh.phpage=hpsp;
2187 psh.hwndParent=hwnd;
2188 psh.pszCaption=STRING_OPTION; //"オプション"
2189 psh.nPages=i;
2190 psh.nStartPage=0;
2191 psh.ppsp=psp;
2192 PropertySheet(&psh);
2193
2194
2195
2196 ///////////////////////////
2197 // 一時オブジェクトを破棄
2198 ///////////////////////////
2199
2200 delete pobj_temp_DBDomain;
2201}
2202BOOL CALLBACK DialogAbout(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
2203 if(message==WM_INITDIALOG){
2204 SetPosCenter(hwnd);
2205
2206 SetDlgItemText(hwnd,IDC_STATIC_NAME,VERSION_APPLI_NAME);
2207
2208 char temporary[1024];
2209 sprintf(temporary,"Version %s",VERSION_STRING);
2210 SetDlgItemText(hwnd,IDC_STATIC_VERSION,temporary);
2211
2212
2213#ifndef THETEXT
2214 //ライブラリ開発チーム
2215 LoadString(hResInst,IDS_DEV_GROUP,temporary,1024);
2216 SetDlgItemText(hwnd,IDC_DEV_GROUP,temporary);
2217#endif
2218 }
2219 if(message==WM_COMMAND){
2220 switch(LOWORD(wParam)){
2221 case IDCANCEL:
2222 EndDialog(hwnd,NULL);
2223 return 1;
2224 }
2225 }
2226 return 0;
2227}
Note: See TracBrowser for help on using the repository browser.