Changeset 629 in dev for trunk/ab5.0/abdev/abdev/IconEditor.cpp
- Timestamp:
- Jun 2, 2008, 11:50:24 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ab5.0/abdev/abdev/IconEditor.cpp
r626 r629 34 34 BITMAPINFOHEADER *pBmpInfoHdr; 35 35 36 hCombo=GetDlgItem(MdiInfo[WndNum] .MdiIconEditInfo->hToolDlg,IDC_ICONTYPECOMBO);37 38 for(i=0;i<MdiInfo[WndNum] .MdiIconEditInfo->num;i++){39 pBmpInfoHdr=(BITMAPINFOHEADER *)MdiInfo[WndNum] .MdiIconEditInfo->pIconImage[i];36 hCombo=GetDlgItem(MdiInfo[WndNum]->MdiIconEditInfo->hToolDlg,IDC_ICONTYPECOMBO); 37 38 for(i=0;i<MdiInfo[WndNum]->MdiIconEditInfo->num;i++){ 39 pBmpInfoHdr=(BITMAPINFOHEADER *)MdiInfo[WndNum]->MdiIconEditInfo->pIconImage[i]; 40 40 41 41 //例: "32*32 (xxxx色)" … … 147 147 } 148 148 149 MdiInfo[WndNum] .MdiIconEditInfo->pIconImage[MdiInfo[WndNum].MdiIconEditInfo->num]=149 MdiInfo[WndNum]->MdiIconEditInfo->pIconImage[MdiInfo[WndNum]->MdiIconEditInfo->num]= 150 150 CreateIconType(IconType, 151 &MdiInfo[WndNum] .MdiIconEditInfo->dwBytesInRes[MdiInfo[WndNum].MdiIconEditInfo->num]);151 &MdiInfo[WndNum]->MdiIconEditInfo->dwBytesInRes[MdiInfo[WndNum]->MdiIconEditInfo->num]); 152 152 153 153 //イメージ選択用のメモリを解放 154 if(MdiInfo[WndNum] .MdiIconEditInfo->SelectLevel==2)155 DeleteObject(MdiInfo[WndNum] .MdiIconEditInfo->hSelectingBmp);156 MdiInfo[WndNum] .MdiIconEditInfo->SelectLevel=0;154 if(MdiInfo[WndNum]->MdiIconEditInfo->SelectLevel==2) 155 DeleteObject(MdiInfo[WndNum]->MdiIconEditInfo->hSelectingBmp); 156 MdiInfo[WndNum]->MdiIconEditInfo->SelectLevel=0; 157 157 158 158 //アイコンタイプを追加 159 MdiInfo[WndNum] .MdiIconEditInfo->SelectIconNum=MdiInfo[WndNum].MdiIconEditInfo->num;160 MdiInfo[WndNum] .MdiIconEditInfo->num++;159 MdiInfo[WndNum]->MdiIconEditInfo->SelectIconNum=MdiInfo[WndNum]->MdiIconEditInfo->num; 160 MdiInfo[WndNum]->MdiIconEditInfo->num++; 161 161 162 162 //変更情報を初期化 163 i=MdiInfo[WndNum] .MdiIconEditInfo->SelectIconNum;164 MdiInfo[WndNum] .MdiIconEditInfo->undo[i].NowPos=0;165 memset(MdiInfo[WndNum] .MdiIconEditInfo->undo[i].lpData,0,sizeof(BYTE *)*MAX_ICONEDIT_UNDONUM);163 i=MdiInfo[WndNum]->MdiIconEditInfo->SelectIconNum; 164 MdiInfo[WndNum]->MdiIconEditInfo->undo[i].NowPos=0; 165 memset(MdiInfo[WndNum]->MdiIconEditInfo->undo[i].lpData,0,sizeof(BYTE *)*MAX_ICONEDIT_UNDONUM); 166 166 167 167 //アイコンタイプコンボボックスに追加 168 168 char temporary[32]; 169 169 HWND hCombo; 170 hCombo=GetDlgItem(MdiInfo[WndNum] .MdiIconEditInfo->hToolDlg,IDC_ICONTYPECOMBO);170 hCombo=GetDlgItem(MdiInfo[WndNum]->MdiIconEditInfo->hToolDlg,IDC_ICONTYPECOMBO); 171 171 172 172 //例: "32*32 (xxxx色)" … … 182 182 //再描画 183 183 HBRUSH hOldBrush; 184 hOldBrush=(HBRUSH)SelectObject(MdiInfo[WndNum] .MdiIconEditInfo->memdc,GetStockObject(WHITE_BRUSH));185 PatBlt(MdiInfo[WndNum] .MdiIconEditInfo->memdc,0,0,400,400,PATCOPY);186 SelectObject(MdiInfo[WndNum] .MdiIconEditInfo->memdc,hOldBrush);184 hOldBrush=(HBRUSH)SelectObject(MdiInfo[WndNum]->MdiIconEditInfo->memdc,GetStockObject(WHITE_BRUSH)); 185 PatBlt(MdiInfo[WndNum]->MdiIconEditInfo->memdc,0,0,400,400,PATCOPY); 186 SelectObject(MdiInfo[WndNum]->MdiIconEditInfo->memdc,hOldBrush); 187 187 DrawIconToMemBmp(WndNum,0); 188 InvalidateRect(MdiInfo[WndNum] .MdiIconEditInfo->hMain,NULL,1);189 InvalidateRect(MdiInfo[WndNum] .MdiIconEditInfo->hColorDlg,NULL,0);188 InvalidateRect(MdiInfo[WndNum]->MdiIconEditInfo->hMain,NULL,1); 189 InvalidateRect(MdiInfo[WndNum]->MdiIconEditInfo->hColorDlg,NULL,0); 190 190 } 191 191 void DeleteIconType(int WndNum){ … … 194 194 //変更情報を解放 195 195 for(i=0;i<MAX_ICONEDIT_UNDONUM;i++){ 196 if(MdiInfo[WndNum] .MdiIconEditInfo->undo[MdiInfo[WndNum].MdiIconEditInfo->SelectIconNum].lpData[i])197 HeapDefaultFree(MdiInfo[WndNum] .MdiIconEditInfo->undo[MdiInfo[WndNum].MdiIconEditInfo->SelectIconNum].lpData[i]);196 if(MdiInfo[WndNum]->MdiIconEditInfo->undo[MdiInfo[WndNum]->MdiIconEditInfo->SelectIconNum].lpData[i]) 197 HeapDefaultFree(MdiInfo[WndNum]->MdiIconEditInfo->undo[MdiInfo[WndNum]->MdiIconEditInfo->SelectIconNum].lpData[i]); 198 198 } 199 199 200 200 //メモリを解放 201 HeapDefaultFree(MdiInfo[WndNum] .MdiIconEditInfo->pIconImage[MdiInfo[WndNum].MdiIconEditInfo->SelectIconNum]);201 HeapDefaultFree(MdiInfo[WndNum]->MdiIconEditInfo->pIconImage[MdiInfo[WndNum]->MdiIconEditInfo->SelectIconNum]); 202 202 203 203 //イメージ選択用のメモリを解放 204 if(MdiInfo[WndNum] .MdiIconEditInfo->SelectLevel==2)205 DeleteObject(MdiInfo[WndNum] .MdiIconEditInfo->hSelectingBmp);206 MdiInfo[WndNum] .MdiIconEditInfo->SelectLevel=0;204 if(MdiInfo[WndNum]->MdiIconEditInfo->SelectLevel==2) 205 DeleteObject(MdiInfo[WndNum]->MdiIconEditInfo->hSelectingBmp); 206 MdiInfo[WndNum]->MdiIconEditInfo->SelectLevel=0; 207 207 208 208 //////////////////////// 209 209 // アイコンタイプを削除 210 for(i=MdiInfo[WndNum] .MdiIconEditInfo->SelectIconNum;i<MdiInfo[WndNum].MdiIconEditInfo->num-1;i++){211 MdiInfo[WndNum] .MdiIconEditInfo->pIconImage[i]=MdiInfo[WndNum].MdiIconEditInfo->pIconImage[i+1];212 MdiInfo[WndNum] .MdiIconEditInfo->dwBytesInRes[i]=MdiInfo[WndNum].MdiIconEditInfo->dwBytesInRes[i+1];213 MdiInfo[WndNum] .MdiIconEditInfo->undo[i]=MdiInfo[WndNum].MdiIconEditInfo->undo[i+1];214 } 215 MdiInfo[WndNum] .MdiIconEditInfo->num--;216 if(MdiInfo[WndNum] .MdiIconEditInfo->num==MdiInfo[WndNum].MdiIconEditInfo->SelectIconNum)217 MdiInfo[WndNum] .MdiIconEditInfo->SelectIconNum=MdiInfo[WndNum].MdiIconEditInfo->num-1;210 for(i=MdiInfo[WndNum]->MdiIconEditInfo->SelectIconNum;i<MdiInfo[WndNum]->MdiIconEditInfo->num-1;i++){ 211 MdiInfo[WndNum]->MdiIconEditInfo->pIconImage[i]=MdiInfo[WndNum]->MdiIconEditInfo->pIconImage[i+1]; 212 MdiInfo[WndNum]->MdiIconEditInfo->dwBytesInRes[i]=MdiInfo[WndNum]->MdiIconEditInfo->dwBytesInRes[i+1]; 213 MdiInfo[WndNum]->MdiIconEditInfo->undo[i]=MdiInfo[WndNum]->MdiIconEditInfo->undo[i+1]; 214 } 215 MdiInfo[WndNum]->MdiIconEditInfo->num--; 216 if(MdiInfo[WndNum]->MdiIconEditInfo->num==MdiInfo[WndNum]->MdiIconEditInfo->SelectIconNum) 217 MdiInfo[WndNum]->MdiIconEditInfo->SelectIconNum=MdiInfo[WndNum]->MdiIconEditInfo->num-1; 218 218 219 219 //コンボボックスからアイコンタイプを削除 220 220 HWND hCombo; 221 hCombo=GetDlgItem(MdiInfo[WndNum] .MdiIconEditInfo->hToolDlg,IDC_ICONTYPECOMBO);221 hCombo=GetDlgItem(MdiInfo[WndNum]->MdiIconEditInfo->hToolDlg,IDC_ICONTYPECOMBO); 222 222 i=SendMessage(hCombo,CB_DELETESTRING, 223 223 SendMessage(hCombo,CB_GETCURSEL,0,0), 224 224 0); 225 SendMessage(hCombo,CB_SETCURSEL,MdiInfo[WndNum] .MdiIconEditInfo->SelectIconNum,0);225 SendMessage(hCombo,CB_SETCURSEL,MdiInfo[WndNum]->MdiIconEditInfo->SelectIconNum,0); 226 226 227 227 //再描画 228 228 HBRUSH hOldBrush; 229 hOldBrush=(HBRUSH)SelectObject(MdiInfo[WndNum] .MdiIconEditInfo->memdc,GetStockObject(WHITE_BRUSH));230 PatBlt(MdiInfo[WndNum] .MdiIconEditInfo->memdc,0,0,400,400,PATCOPY);231 SelectObject(MdiInfo[WndNum] .MdiIconEditInfo->memdc,hOldBrush);229 hOldBrush=(HBRUSH)SelectObject(MdiInfo[WndNum]->MdiIconEditInfo->memdc,GetStockObject(WHITE_BRUSH)); 230 PatBlt(MdiInfo[WndNum]->MdiIconEditInfo->memdc,0,0,400,400,PATCOPY); 231 SelectObject(MdiInfo[WndNum]->MdiIconEditInfo->memdc,hOldBrush); 232 232 DrawIconToMemBmp(WndNum,0); 233 InvalidateRect(MdiInfo[WndNum] .MdiIconEditInfo->hMain,NULL,1);234 InvalidateRect(MdiInfo[WndNum] .MdiIconEditInfo->hColorDlg,NULL,0);233 InvalidateRect(MdiInfo[WndNum]->MdiIconEditInfo->hMain,NULL,1); 234 InvalidateRect(MdiInfo[WndNum]->MdiIconEditInfo->hColorDlg,NULL,0); 235 235 } 236 236 void NewIconEditWindow(const char *filepath){ … … 252 252 while(hChild){ 253 253 i=GetWndNum(hChild); 254 if(MdiInfo[i] .DocType==WNDTYPE_ICONEDIT){255 if(lstrcmpi(MdiInfo[i] .path.c_str(),filepath)==0) break;254 if(MdiInfo[i]->DocType==WNDTYPE_ICONEDIT){ 255 if(lstrcmpi(MdiInfo[i]->path.c_str(),filepath)==0) break; 256 256 } 257 257 hChild=GetNextWindow(hChild,GW_HWNDNEXT); … … 344 344 345 345 mdic.lParam=0; 346 mdic.style |= WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_SYSMENU | WS_CAPTION | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX; 346 347 hChild=(HWND)SendMessage(hClient,WM_MDICREATE,0,(long)&mdic); //ウィンドウ作成 347 348 … … 369 370 370 371 //ウィンドウのID登録 371 MdiInfo.push_back( MDIINFO() );372 MdiInfo.push_back( new MDIINFO() ); 372 373 i = MdiInfo.size()-1; 373 MdiInfo[i] .hwnd=hChild;374 MdiInfo[i] .DocType=WNDTYPE_ICONEDIT;375 MdiInfo[i] .title = str;374 MdiInfo[i]->hwnd=hChild; 375 MdiInfo[i]->DocType=WNDTYPE_ICONEDIT; 376 MdiInfo[i]->title = str; 376 377 if(filepath) 377 378 { 378 MdiInfo[i] .path = filepath;379 MdiInfo[i]->path = filepath; 379 380 } 380 381 else 381 382 { 382 MdiInfo[i] .path = "";383 } 384 385 MdiInfo[i] .MdiIconEditInfo=(MDIICONEDITINFO *)HeapAlloc(hHeap,0,sizeof(MDIICONEDITINFO));386 MdiInfo[i] .MdiIconEditInfo->hMain=hMain;387 MdiInfo[i] .MdiIconEditInfo->hToolDlg=hToolDlg;388 MdiInfo[i] .MdiIconEditInfo->hButtonsDlg=hButtonsDlg;389 MdiInfo[i] .MdiIconEditInfo->hColorDlg=hColorDlg;383 MdiInfo[i]->path = ""; 384 } 385 386 MdiInfo[i]->MdiIconEditInfo=(MDIICONEDITINFO *)HeapAlloc(hHeap,0,sizeof(MDIICONEDITINFO)); 387 MdiInfo[i]->MdiIconEditInfo->hMain=hMain; 388 MdiInfo[i]->MdiIconEditInfo->hToolDlg=hToolDlg; 389 MdiInfo[i]->MdiIconEditInfo->hButtonsDlg=hButtonsDlg; 390 MdiInfo[i]->MdiIconEditInfo->hColorDlg=hColorDlg; 390 391 hdc=GetDC(hMain); 391 MdiInfo[i] .MdiIconEditInfo->memdc=CreateCompatibleDC(hdc);392 MdiInfo[i] .MdiIconEditInfo->hMemBmp=CreateCompatibleBitmap(hdc,600,400);393 SelectObject(MdiInfo[i] .MdiIconEditInfo->memdc,MdiInfo[i].MdiIconEditInfo->hMemBmp);392 MdiInfo[i]->MdiIconEditInfo->memdc=CreateCompatibleDC(hdc); 393 MdiInfo[i]->MdiIconEditInfo->hMemBmp=CreateCompatibleBitmap(hdc,600,400); 394 SelectObject(MdiInfo[i]->MdiIconEditInfo->memdc,MdiInfo[i]->MdiIconEditInfo->hMemBmp); 394 395 ReleaseDC(hMain,hdc); 395 396 396 MdiInfo[i] .MdiIconEditInfo->SelectLevel=0;397 398 MdiInfo[i] .MdiIconEditInfo->num=IconNum;399 MdiInfo[i] .MdiIconEditInfo->SelectIconNum=0;400 memcpy(MdiInfo[i] .MdiIconEditInfo->pIconImage,pImageBuffer,sizeof(DWORD)*IconNum);401 402 memcpy(MdiInfo[i] .MdiIconEditInfo->dwBytesInRes,dwBytesInRes,sizeof(DWORD)*IconNum);403 404 MdiInfo[i] .MdiIconEditInfo->NowTool=IDC_TOOL_PEN;405 MdiInfo[i] .MdiIconEditInfo->MainColor=RGB(0,0,0);397 MdiInfo[i]->MdiIconEditInfo->SelectLevel=0; 398 399 MdiInfo[i]->MdiIconEditInfo->num=IconNum; 400 MdiInfo[i]->MdiIconEditInfo->SelectIconNum=0; 401 memcpy(MdiInfo[i]->MdiIconEditInfo->pIconImage,pImageBuffer,sizeof(DWORD)*IconNum); 402 403 memcpy(MdiInfo[i]->MdiIconEditInfo->dwBytesInRes,dwBytesInRes,sizeof(DWORD)*IconNum); 404 405 MdiInfo[i]->MdiIconEditInfo->NowTool=IDC_TOOL_PEN; 406 MdiInfo[i]->MdiIconEditInfo->MainColor=RGB(0,0,0); 406 407 extern COLORREF TransparentClrRef; 407 MdiInfo[i] .MdiIconEditInfo->SubColor=TransparentClrRef;408 409 for(i2=0;i2<MdiInfo[i] .MdiIconEditInfo->num;i2++){410 MdiInfo[i] .MdiIconEditInfo->undo[i2].NowPos=0;411 memset(MdiInfo[i] .MdiIconEditInfo->undo[i2].lpData,0,sizeof(BYTE *)*MAX_ICONEDIT_UNDONUM);412 } 413 MdiInfo[i] .MdiIconEditInfo->bModify=0;408 MdiInfo[i]->MdiIconEditInfo->SubColor=TransparentClrRef; 409 410 for(i2=0;i2<MdiInfo[i]->MdiIconEditInfo->num;i2++){ 411 MdiInfo[i]->MdiIconEditInfo->undo[i2].NowPos=0; 412 memset(MdiInfo[i]->MdiIconEditInfo->undo[i2].lpData,0,sizeof(BYTE *)*MAX_ICONEDIT_UNDONUM); 413 } 414 MdiInfo[i]->MdiIconEditInfo->bModify=0; 414 415 415 416 … … 417 418 //メモリへ初期描画を行う 418 419 HBRUSH hOldBrush; 419 hOldBrush=(HBRUSH)SelectObject(MdiInfo[i] .MdiIconEditInfo->memdc,GetStockObject(WHITE_BRUSH));420 PatBlt(MdiInfo[i] .MdiIconEditInfo->memdc,0,0,600,400,PATCOPY);421 SelectObject(MdiInfo[i] .MdiIconEditInfo->memdc,hOldBrush);420 hOldBrush=(HBRUSH)SelectObject(MdiInfo[i]->MdiIconEditInfo->memdc,GetStockObject(WHITE_BRUSH)); 421 PatBlt(MdiInfo[i]->MdiIconEditInfo->memdc,0,0,600,400,PATCOPY); 422 SelectObject(MdiInfo[i]->MdiIconEditInfo->memdc,hOldBrush); 422 423 DrawIconToMemBmp(i,0); 423 424 … … 430 431 ResetIconType(i); 431 432 432 if(MdiInfo[i] .MdiIconEditInfo->num<=1)433 if(MdiInfo[i]->MdiIconEditInfo->num<=1) 433 434 EnableWindow(GetDlgItem(hToolDlg,IDC_DELETE_ICONTYPE),0); 434 435 … … 460 461 *((WORD *)(buffer+i2))=1; //idType 461 462 i2+=sizeof(WORD); 462 *((WORD *)(buffer+i2))=MdiInfo[WndNum] .MdiIconEditInfo->num; //idCount463 *((WORD *)(buffer+i2))=MdiInfo[WndNum]->MdiIconEditInfo->num; //idCount 463 464 i2+=sizeof(WORD); 464 465 … … 470 471 //イメージバッファの初期位置 471 472 IconDirEntry.dwImageOffset=sizeof(ICONDIR)+ 472 sizeof(ICONDIRENTRY)*MdiInfo[WndNum] .MdiIconEditInfo->num;473 474 for(i=0;i<MdiInfo[WndNum] .MdiIconEditInfo->num;i++){473 sizeof(ICONDIRENTRY)*MdiInfo[WndNum]->MdiIconEditInfo->num; 474 475 for(i=0;i<MdiInfo[WndNum]->MdiIconEditInfo->num;i++){ 475 476 BITMAPINFOHEADER *pBmpInfoHdr; 476 pBmpInfoHdr=(BITMAPINFOHEADER *)MdiInfo[WndNum] .MdiIconEditInfo->pIconImage[i];477 pBmpInfoHdr=(BITMAPINFOHEADER *)MdiInfo[WndNum]->MdiIconEditInfo->pIconImage[i]; 477 478 478 479 IconDirEntry.bWidth=(BYTE)pBmpInfoHdr->biWidth; … … 505 506 //////////////////// 506 507 // イメージバッファ 507 for(i=0;i<MdiInfo[WndNum] .MdiIconEditInfo->num;i++){508 for(i=0;i<MdiInfo[WndNum]->MdiIconEditInfo->num;i++){ 508 509 memcpy(buffer+i2, 509 MdiInfo[WndNum] .MdiIconEditInfo->pIconImage[i],510 MdiInfo[WndNum]->MdiIconEditInfo->pIconImage[i], 510 511 ImgBufSize[i]); 511 512 … … 538 539 if(i==-1) return 0; //ウィンドウが初期状態の場合 539 540 540 i=SendMessage(hDocCombo,CB_FINDSTRINGEXACT,0,(long)MdiInfo[i] .title.c_str());541 i=SendMessage(hDocCombo,CB_FINDSTRINGEXACT,0,(long)MdiInfo[i]->title.c_str()); 541 542 SendMessage(hDocCombo,CB_SETCURSEL,i,0); 542 543 SetStatusText(NULL); … … 546 547 WndNum=GetWndNum(hwnd); 547 548 if(WndNum==-1) break; 548 ResizeIconWindow(MdiInfo[WndNum] .MdiIconEditInfo->hMain,549 MdiInfo[WndNum] .MdiIconEditInfo->hToolDlg,550 MdiInfo[WndNum] .MdiIconEditInfo->hColorDlg,549 ResizeIconWindow(MdiInfo[WndNum]->MdiIconEditInfo->hMain, 550 MdiInfo[WndNum]->MdiIconEditInfo->hToolDlg, 551 MdiInfo[WndNum]->MdiIconEditInfo->hColorDlg, 551 552 LOWORD(lParam),HIWORD(lParam)); 552 553 break;
Note:
See TracChangeset
for help on using the changeset viewer.