source: dev/trunk/ab5.0/abdev/abdev/IconEditor_Tool.cpp@ 613

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

"extern PROJECTINFO ProjectInfo;" をすべて除去した。
PROJECTINFO構造体の定義位置を移動した。

File size: 7.5 KB
Line 
1#include "stdafx.h"
2
3#include "common.h"
4
5char *GetIconEditToolName(DWORD id){
6 char *pTemp=0;
7
8#if defined(JPN)
9 //日本語
10 if(id==IDC_TOOL_SELECT) pTemp="選択";
11 else if(id==IDC_TOOL_PEN) pTemp="ペン";
12 else if(id==IDC_TOOL_LINE) pTemp="線";
13 else if(id==IDC_TOOL_FILL) pTemp="塗りつぶし";
14 else if(id==IDC_TOOL_RECTANGLE) pTemp="四角形";
15 else if(id==IDC_TOOL_FILLRECT) pTemp="縁付き四角形";
16 else if(id==IDC_TOOL_FILLRECT2) pTemp="塗りつぶし四角形";
17 else if(id==IDC_TOOL_ELLIPSE) pTemp="楕円";
18#else
19 //英語
20 if(id==IDC_TOOL_SELECT) pTemp="Tool";
21 else if(id==IDC_TOOL_PEN) pTemp="Pen";
22 else if(id==IDC_TOOL_LINE) pTemp="Line";
23 else if(id==IDC_TOOL_FILL) pTemp="Fill";
24 else if(id==IDC_TOOL_RECTANGLE) pTemp="Rectangle";
25 else if(id==IDC_TOOL_FILLRECT) pTemp="Rectangle with edge";
26 else if(id==IDC_TOOL_FILLRECT2) pTemp="Fill Rectangle";
27 else if(id==IDC_TOOL_ELLIPSE) pTemp="Ellipse";
28#endif
29
30 return pTemp;
31}
32
33BOOL CALLBACK DlgIconButtons(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
34 extern MDIINFO MdiInfo[MAX_WNDNUM];
35 int WndNum;
36 RECT rect;
37#define BMPNUM_ICONTOOLBAR 8
38 TBBUTTON IconToolBar[]={
39 {0,IDC_TOOL_SELECT,TBSTATE_ENABLED|TBSTATE_WRAP,TBSTYLE_CHECKGROUP,0,0},
40 {1,IDC_TOOL_PEN,TBSTATE_ENABLED|TBSTATE_CHECKED,TBSTYLE_CHECKGROUP,0,0},
41 {2,IDC_TOOL_LINE,TBSTATE_ENABLED,TBSTYLE_CHECKGROUP,0,0},
42 {3,IDC_TOOL_FILL,TBSTATE_ENABLED|TBSTATE_WRAP,TBSTYLE_CHECKGROUP,0,0},
43 {4,IDC_TOOL_RECTANGLE,TBSTATE_ENABLED,TBSTYLE_CHECKGROUP,0,0},
44 {5,IDC_TOOL_FILLRECT,TBSTATE_ENABLED,TBSTYLE_CHECKGROUP,0,0},
45 {6,IDC_TOOL_FILLRECT2,TBSTATE_ENABLED|TBSTATE_WRAP,TBSTYLE_CHECKGROUP,0,0},
46 {7,IDC_TOOL_ELLIPSE,TBSTATE_ENABLED,TBSTYLE_CHECKGROUP,0,0},
47 };
48 TOOLTIPTEXT *pTipText;
49 static HWND hToolBar;
50
51 switch(message){
52 case WM_INITDIALOG:
53 MoveWindow(hwnd,20,120,80,200,1);
54
55 hToolBar=CreateToolbarEx(hwnd,WS_CHILD|WS_VISIBLE|CCS_NODIVIDER|TBSTYLE_FLAT|TBSTYLE_TOOLTIPS,
56 NULL,
57 BMPNUM_ICONTOOLBAR, /*ビットマップの個数*/
58 hResInst,(unsigned int)MAKEINTRESOURCE(IDR_ICONTOOLBAR),IconToolBar,
59 BMPNUM_ICONTOOLBAR, /*アイテムの個数*/
60 0,0,16,15,sizeof(TBBUTTON));
61
62
63 //Windows9x系OSでの不具合を防ぐため
64 PostMessage(hwnd,WM_USER+120,0,0);
65
66 break;
67 case WM_USER+120:
68 GetClientRect(hwnd,&rect);
69 MoveWindow(hToolBar,0,0,rect.right,rect.bottom,1);
70 return 1;
71 case WM_COMMAND:
72 switch(LOWORD(wParam)){
73 case IDC_TOOL_SELECT:
74 case IDC_TOOL_PEN:
75 case IDC_TOOL_LINE:
76 case IDC_TOOL_FILL:
77 case IDC_TOOL_RECTANGLE:
78 case IDC_TOOL_FILLRECT:
79 case IDC_TOOL_FILLRECT2:
80 case IDC_TOOL_ELLIPSE:
81 WndNum=GetWndNum(GetParent(GetParent(hwnd)));
82 if(LOWORD(wParam)!=IDC_TOOL_SELECT&&
83 MdiInfo[WndNum].MdiIconEditInfo->NowTool==IDC_TOOL_SELECT){
84 MdiInfo[WndNum].MdiIconEditInfo->NowTool=LOWORD(wParam);
85 if(MdiInfo[WndNum].MdiIconEditInfo->SelectLevel){
86 if(MdiInfo[WndNum].MdiIconEditInfo->SelectLevel==2)
87 DeleteObject(MdiInfo[WndNum].MdiIconEditInfo->hSelectingBmp);
88 MdiInfo[WndNum].MdiIconEditInfo->SelectLevel=0;
89 }
90 InvalidateRect(MdiInfo[WndNum].MdiIconEditInfo->hMain,NULL,0);
91 }
92 else MdiInfo[WndNum].MdiIconEditInfo->NowTool=LOWORD(wParam);
93 return 1;
94 }
95 break;
96 case WM_NOTIFY:
97 pTipText=(TOOLTIPTEXT *)lParam;
98 if(pTipText->hdr.code==TTN_NEEDTEXT){
99 //ツールチップを表示
100 pTipText->lpszText=GetIconEditToolName(pTipText->hdr.idFrom);
101 }
102 break;
103 }
104 return 0;
105}
106BOOL CALLBACK DlgIconType(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
107 extern MDIINFO MdiInfo[MAX_WNDNUM];
108 int i,WndNum;
109 HWND hList;
110 BOOL bExist[4];
111 char temporary[32];
112
113 switch(message){
114 case WM_INITDIALOG:
115 SetPosCenter(hwnd);
116
117 WndNum=GetWndNum(GetWindow(hClient,GW_CHILD));
118
119 memset(bExist,0,sizeof(BOOL)*4);
120 for(i=0;i<MdiInfo[WndNum].MdiIconEditInfo->num;i++){
121 if(MdiInfo[WndNum].MdiIconEditInfo->pBmpHdr[i]->biWidth==16&&
122 MdiInfo[WndNum].MdiIconEditInfo->pBmpHdr[i]->biBitCount==4){
123 bExist[0]=1;
124 }
125 if(MdiInfo[WndNum].MdiIconEditInfo->pBmpHdr[i]->biWidth==16&&
126 MdiInfo[WndNum].MdiIconEditInfo->pBmpHdr[i]->biBitCount==8){
127 bExist[1]=1;
128 }
129 if(MdiInfo[WndNum].MdiIconEditInfo->pBmpHdr[i]->biWidth==32&&
130 MdiInfo[WndNum].MdiIconEditInfo->pBmpHdr[i]->biBitCount==4){
131 bExist[2]=1;
132 }
133 if(MdiInfo[WndNum].MdiIconEditInfo->pBmpHdr[i]->biWidth==32&&
134 MdiInfo[WndNum].MdiIconEditInfo->pBmpHdr[i]->biBitCount==8){
135 bExist[3]=1;
136 }
137 }
138
139 hList=GetDlgItem(hwnd,IDC_TYPELIST);
140 if(bExist[0]==0){
141 //"16*16 (16色)"
142 sprintf(temporary,"16*16 (16%s)",STRING_UNIT_COLORS);
143 SendMessage(hList,LB_ADDSTRING,0,(long)temporary);
144 }
145 if(bExist[1]==0){
146 //"16*16 (256色)"
147 sprintf(temporary,"16*16 (256%s)",STRING_UNIT_COLORS);
148 SendMessage(hList,LB_ADDSTRING,0,(long)temporary);
149 }
150 if(bExist[2]==0){
151 //"32*32 (16色)"
152 sprintf(temporary,"32*32 (16%s)",STRING_UNIT_COLORS);
153 SendMessage(hList,LB_ADDSTRING,0,(long)temporary);
154 }
155 if(bExist[3]==0){
156 //"32*32 (256色)"
157 sprintf(temporary,"32*32 (256%s)",STRING_UNIT_COLORS);
158 SendMessage(hList,LB_ADDSTRING,0,(long)temporary);
159 }
160 break;
161 case WM_COMMAND:
162 switch(LOWORD(wParam)){
163 case IDOK:
164 hList=GetDlgItem(hwnd,IDC_TYPELIST);
165 SendMessage(hList,LB_GETTEXT,SendMessage(hList,LB_GETCURSEL,0,0),(long)temporary);
166
167 if(temporary[0]=='1'&&temporary[7]=='1') i=ICONTYPE_16_16;
168 if(temporary[0]=='1'&&temporary[7]=='2') i=ICONTYPE_16_256;
169 if(temporary[0]=='3'&&temporary[7]=='1') i=ICONTYPE_32_16;
170 if(temporary[0]=='3'&&temporary[7]=='2') i=ICONTYPE_32_256;
171 EndDialog(hwnd,i);
172 return 1;
173 case IDCANCEL:
174 EndDialog(hwnd,-1);
175 return 1;
176 }
177 break;
178 }
179 return 0;
180}
181BOOL CALLBACK DlgIconToolProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
182 extern MDIINFO MdiInfo[MAX_WNDNUM];
183 int i,WndNum;
184
185 switch(message){
186 case WM_COMMAND:
187 switch(LOWORD(wParam)){
188 case IDC_ADD_ICONTYPE:
189 i=DialogBox(hResInst,MAKEINTRESOURCE(IDD_ICONEDIT_ICONTYPE),GetParent(hwnd),(DLGPROC)DlgIconType);
190 if(i==-1) return 1;
191
192 WndNum=GetWndNum(GetParent(hwnd));
193 AddIconType(WndNum,i);
194
195 EnableWindow(GetDlgItem(hwnd,IDC_DELETE_ICONTYPE),1);
196 return 1;
197 case IDC_DELETE_ICONTYPE:
198 WndNum=GetWndNum(GetParent(hwnd));
199 DeleteIconType(WndNum);
200
201 if(MdiInfo[WndNum].MdiIconEditInfo->num<=1)
202 EnableWindow(GetDlgItem(hwnd,IDC_DELETE_ICONTYPE),0);
203 return 1;
204 case IDC_ICONTYPECOMBO:
205 if(HIWORD(wParam)==CBN_SELCHANGE){
206 WndNum=GetWndNum(GetParent(hwnd));
207
208 //イメージ選択用のメモリを解放
209 if(MdiInfo[WndNum].MdiIconEditInfo->SelectLevel==2)
210 DeleteObject(MdiInfo[WndNum].MdiIconEditInfo->hSelectingBmp);
211 MdiInfo[WndNum].MdiIconEditInfo->SelectLevel=0;
212
213 MdiInfo[WndNum].MdiIconEditInfo->SelectIconNum=
214 SendDlgItemMessage(hwnd,IDC_ICONTYPECOMBO,CB_GETCURSEL,0,0);
215
216 HBRUSH hOldBrush;
217 hOldBrush=(HBRUSH)SelectObject(MdiInfo[WndNum].MdiIconEditInfo->memdc,GetStockObject(WHITE_BRUSH));
218 PatBlt(MdiInfo[WndNum].MdiIconEditInfo->memdc,0,0,400,400,PATCOPY);
219 SelectObject(MdiInfo[WndNum].MdiIconEditInfo->memdc,hOldBrush);
220 DrawIconToMemBmp(WndNum,0);
221
222 InvalidateRect(MdiInfo[WndNum].MdiIconEditInfo->hMain,NULL,1);
223 InvalidateRect(MdiInfo[WndNum].MdiIconEditInfo->hColorDlg,NULL,0);
224 }
225 return 1;
226 }
227 break;
228 }
229 return 0;
230}
Note: See TracBrowser for help on using the repository browser.