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

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