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

Last change on this file since 829 was 829, checked in by イグトランス (egtra), 12 years ago

svn:eol-styleとsvn:mime-type(文字コード指定含む)の設定

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