Changeset 624 in dev for trunk/ab5.0/abdev/abdev/DrawWindow.cpp
- Timestamp:
- May 23, 2008, 10:35:36 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ab5.0/abdev/abdev/DrawWindow.cpp
r623 r624 687 687 DeleteObject(hBmp); 688 688 } 689 void DesigningWindow(int WndNum,HDC hdc,POINT *pBasePos,const WindowInfo *pWindowInfo){689 void DesigningWindow(int WndNum,HDC hdc,POINT *pBasePos,const ActiveBasic::PM::WindowInfo *pWindowInfo){ 690 690 extern MDIINFO MdiInfo[MAX_WNDNUM]; 691 691 int i,i2,i3,i4; … … 713 713 InsideRect.bottom=InsideRect.top+pWindowInfo->size.cy; 714 714 715 if(pWindowInfo-> style&(WS_BORDER|WS_THICKFRAME)){715 if(pWindowInfo->GetStyle()&(WS_BORDER|WS_THICKFRAME)){ 716 716 DrawEdge(hdc,&InsideRect,EDGE_RAISED,BF_RECT); 717 717 … … 725 725 //////////// 726 726 //枠を描画 727 if(pWindowInfo-> style&(WS_BORDER|WS_THICKFRAME)){727 if(pWindowInfo->GetStyle()&(WS_BORDER|WS_THICKFRAME)){ 728 728 //細枠 729 729 hPen=CreatePen(PS_SOLID,0,GetSysColor(COLOR_ACTIVEBORDER)); … … 739 739 740 740 //サイズ変更枠 741 if(pWindowInfo-> style&WS_THICKFRAME){741 if(pWindowInfo->GetStyle()&WS_THICKFRAME){ 742 742 Rectangle(hdc,InsideRect.left,InsideRect.top,InsideRect.right,InsideRect.bottom); 743 743 … … 758 758 MdiInfo[WndNum].MdiRadInfo->ClientPos.y=0; 759 759 760 if(pWindowInfo-> style&(WS_CAPTION&(~WS_BORDER))){760 if(pWindowInfo->GetStyle()&(WS_CAPTION&(~WS_BORDER))){ 761 761 ////////////////////// 762 762 //タイトルバーを描画 … … 773 773 } 774 774 else i2=i; 775 if(pWindowInfo-> ExStyle&WS_EX_TOOLWINDOW)775 if(pWindowInfo->GetExStyle()&WS_EX_TOOLWINDOW) 776 776 i3=GetSystemMetrics(SM_CYSMCAPTION); 777 777 else i3=GetSystemMetrics(SM_CYCAPTION); … … 805 805 rect.right=InsideRect.right; 806 806 rect.bottom=InsideRect.top+i3; 807 DrawText(hdc,pWindowInfo-> caption,lstrlen(pWindowInfo->caption),&rect,DT_SINGLELINE|DT_VCENTER|DT_NOPREFIX);807 DrawText(hdc,pWindowInfo->GetCaption().c_str(),pWindowInfo->GetCaption().size(),&rect,DT_SINGLELINE|DT_VCENTER|DT_NOPREFIX); 808 808 SelectObject(hdc,hOldFont); 809 809 DeleteObject(hFont); 810 810 811 811 //ボタン 812 if(pWindowInfo-> style&WS_SYSMENU){812 if(pWindowInfo->GetStyle()&WS_SYSMENU){ 813 813 //終了ボタン 814 814 size.cx=GetSystemMetrics(SM_CXSIZE)-2; … … 857 857 GlobalFree(pByte2); 858 858 859 if(pWindowInfo-> style&WS_MAXIMIZEBOX||pWindowInfo->style&WS_MINIMIZEBOX){859 if(pWindowInfo->GetStyle()&WS_MAXIMIZEBOX||pWindowInfo->GetStyle()&WS_MINIMIZEBOX){ 860 860 //最大化ボタン 861 861 size.cx=GetSystemMetrics(SM_CXSIZE)-2; … … 864 864 pos.y=InsideRect.top+2; 865 865 DrawButtonEdge(WndNum,&pos,&size); 866 if(!(pWindowInfo-> style&WS_MAXIMIZEBOX)){866 if(!(pWindowInfo->GetStyle()&WS_MAXIMIZEBOX)){ 867 867 pos.x++; 868 868 pos.y++; … … 897 897 pos.y=InsideRect.top+2; 898 898 DrawButtonEdge(WndNum,&pos,&size); 899 if(!(pWindowInfo-> style&WS_MINIMIZEBOX)){899 if(!(pWindowInfo->GetStyle()&WS_MINIMIZEBOX)){ 900 900 pos.x++; 901 901 pos.y++; … … 927 927 } 928 928 929 if(pWindowInfo->MenuID){ 929 if( pWindowInfo->HasMenu() ) 930 { 930 931 //メニューラインを3DFACEで描画 931 932 rgb=GetSysColor(COLOR_3DFACE); … … 954 955 size.cx=InsideRect.right-InsideRect.left; 955 956 size.cy=InsideRect.bottom-InsideRect.top; 956 DrawItemEdgeByExStyle(WndNum,pWindowInfo-> ExStyle,&pos,&size);957 DrawItemEdgeByExStyle(WndNum,pWindowInfo->GetExStyle(),&pos,&size); 957 958 958 959 //スクロールバーを描画 959 DrawWindowScrollBar(WndNum,pWindowInfo-> style,&pos,&size);960 DrawWindowScrollBar(WndNum,pWindowInfo->GetStyle(),&pos,&size); 960 961 961 962 //クライアント領域のサイズを設定 … … 965 966 ////////////// 966 967 //背景を描画 967 if(pWindowInfo-> bgColor==COLOR_3DFACE){968 if(pWindowInfo->GetBackgroundColor()==COLOR_3DFACE){ 968 969 //3DFACE 969 970 hPen=CreatePen(PS_SOLID,0,GetSysColor(COLOR_3DFACE)); … … 977 978 DeleteObject(hBrush); 978 979 } 979 else if(pWindowInfo-> bgColor<=0){980 else if(pWindowInfo->GetBackgroundColor()<=0){ 980 981 //色指定 981 hPen=CreatePen(PS_SOLID,0,-pWindowInfo-> bgColor);982 hBrush=CreateSolidBrush(-pWindowInfo-> bgColor);982 hPen=CreatePen(PS_SOLID,0,-pWindowInfo->GetBackgroundColor()); 983 hBrush=CreateSolidBrush(-pWindowInfo->GetBackgroundColor()); 983 984 hOldPen=(HPEN)SelectObject(hdc,hPen); 984 985 hOldBrush=(HBRUSH)SelectObject(hdc,hBrush); … … 989 990 DeleteObject(hBrush); 990 991 } 991 else if(pWindowInfo-> bgColor>=0x1000){992 else if(pWindowInfo->GetBackgroundColor()>=0x1000){ 992 993 //ビットマップ 993 for(i2=0;i2<projectInfo.resourceManager.bitmapResources.size();i2++){ 994 if( projectInfo.resourceManager.bitmapResources[pWindowInfo->bgColor-0x1000].idName == projectInfo.resourceManager.bitmapResources[i2].idName ) 994 BOOST_FOREACH( const ActiveBasic::Common::ResourceItem &resourceItem, projectInfo.resourceManager.bitmapResources ) 995 { 996 if( projectInfo.resourceManager.bitmapResources[pWindowInfo->GetBackgroundColor()-0x1000].idName == resourceItem.idName ) 995 997 { 998 lstrcpy(temporary,resourceItem.filepath.c_str()); 999 lstrcpy( temporary, projectInfo.GetWorkDir().GetFullPath( temporary ).c_str() ); 1000 hImage=LoadImage(NULL,temporary,IMAGE_BITMAP,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE); 1001 1002 hBrush=CreatePatternBrush((HBITMAP)hImage); 1003 hOldBrush=(HBRUSH)SelectObject(hdc,hBrush); 1004 SetBrushOrgEx(hdc,InsideRect.left,InsideRect.top,&pos); 1005 PatBlt(hdc, 1006 InsideRect.left, InsideRect.top, 1007 InsideRect.right-InsideRect.left, InsideRect.bottom-InsideRect.top,PATCOPY); 1008 SetBrushOrgEx(hdc,pos.x,pos.y,0); 1009 SelectObject(hdc,hOldBrush); 1010 DeleteObject(hBrush); 1011 DeleteObject(hImage); 1012 996 1013 break; 997 1014 } 998 }999 if(i2!=projectInfo.resourceManager.bitmapResources.size()){1000 lstrcpy(temporary,projectInfo.resourceManager.bitmapResources[i2].filepath.c_str());1001 lstrcpy( temporary, projectInfo.GetWorkDir().GetFullPath( temporary ).c_str() );1002 hImage=LoadImage(NULL,temporary,IMAGE_BITMAP,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);1003 1004 hBrush=CreatePatternBrush((HBITMAP)hImage);1005 hOldBrush=(HBRUSH)SelectObject(hdc,hBrush);1006 SetBrushOrgEx(hdc,InsideRect.left,InsideRect.top,&pos);1007 PatBlt(hdc,1008 InsideRect.left, InsideRect.top,1009 InsideRect.right-InsideRect.left, InsideRect.bottom-InsideRect.top,PATCOPY);1010 SetBrushOrgEx(hdc,pos.x,pos.y,0);1011 SelectObject(hdc,hOldBrush);1012 DeleteObject(hBrush);1013 DeleteObject(hImage);1014 1015 } 1015 1016 } … … 1019 1020 //子ウィンドウ(ダイアログアイテム)を描画 1020 1021 hFont=CreateFontIndirect(&pWindowInfo->LogFont); 1021 BOOST_FOREACH( CHILDINFO*pChildInfo, pWindowInfo->childWindowInfos )1022 BOOST_FOREACH( ActiveBasic::PM::ChildWindowInfo *pChildInfo, pWindowInfo->childWindowInfos ) 1022 1023 { 1023 1024 pos=pChildInfo->pos; … … 1025 1026 1026 1027 //ExStyleによる縁を描画 1027 DrawItemEdgeByExStyle(WndNum,pChildInfo-> ExStyle,&pos,&size);1028 DrawItemEdgeByExStyle(WndNum,pChildInfo->GetExStyle(),&pos,&size); 1028 1029 1029 1030 if(pChildInfo->Control==CT_BUTTON){ … … 1031 1032 // Button コントロール 1032 1033 1033 if((pChildInfo-> style&0x0000000F)==BS_DEFPUSHBUTTON){1034 if((pChildInfo->GetStyle()&0x0000000F)==BS_DEFPUSHBUTTON){ 1034 1035 //標準のボタンの場合(黒枠描画) 1035 1036 DrawRectangleInClient(WndNum, … … 1046 1047 DrawButtonEdge(WndNum,&pos,&size); 1047 1048 1048 if(!(pChildInfo-> style&(BS_ICON|BS_BITMAP))){1049 if(!(pChildInfo->GetStyle()&(BS_ICON|BS_BITMAP))){ 1049 1050 //キャプション テキスト 1050 1051 … … 1054 1055 rect.bottom=pos.y+size.cy-2+MdiInfo[WndNum].MdiRadInfo->ClientPos.y; 1055 1056 1056 if(pChildInfo-> style&BS_MULTILINE) i4=0;1057 if(pChildInfo->GetStyle()&BS_MULTILINE) i4=0; 1057 1058 else i4=DT_SINGLELINE; 1058 1059 1059 1060 //ビットを考慮してBS_CENTERを最初に比較する 1060 if((pChildInfo-> style&BS_CENTER)==BS_CENTER) i2=DT_CENTER;1061 else if(pChildInfo-> style&BS_LEFT) i2=DT_LEFT;1062 else if(pChildInfo-> style&BS_RIGHT) i2=DT_RIGHT;1061 if((pChildInfo->GetStyle()&BS_CENTER)==BS_CENTER) i2=DT_CENTER; 1062 else if(pChildInfo->GetStyle()&BS_LEFT) i2=DT_LEFT; 1063 else if(pChildInfo->GetStyle()&BS_RIGHT) i2=DT_RIGHT; 1063 1064 else i2=DT_CENTER; 1064 1065 1065 1066 //ビットを考慮してBS_VCENTERを最初に比較する 1066 if((pChildInfo-> style&BS_VCENTER)==BS_VCENTER) i3=DT_VCENTER;1067 else if(pChildInfo-> style&BS_TOP) i3=DT_TOP;1068 else if(pChildInfo-> style&BS_BOTTOM) i3=DT_BOTTOM;1067 if((pChildInfo->GetStyle()&BS_VCENTER)==BS_VCENTER) i3=DT_VCENTER; 1068 else if(pChildInfo->GetStyle()&BS_TOP) i3=DT_TOP; 1069 else if(pChildInfo->GetStyle()&BS_BOTTOM) i3=DT_BOTTOM; 1069 1070 else i3=DT_VCENTER; 1070 1071 1071 1072 hOldFont=(HFONT)SelectObject(hdc,hFont); 1072 if(pChildInfo-> style&WS_DISABLED){1073 if(pChildInfo->GetStyle()&WS_DISABLED){ 1073 1074 SetTextColor(hdc,RGB(255,255,255)); 1074 1075 rc2.left=rect.left+1; … … 1076 1077 rc2.right=rect.right+1; 1077 1078 rc2.bottom=rect.bottom+1; 1078 DrawText(hdc,pChildInfo-> caption,-1,&rc2,i4|i2|i3);1079 DrawText(hdc,pChildInfo->GetCaption().c_str(),-1,&rc2,i4|i2|i3); 1079 1080 SetTextColor(hdc,GetSysColor(COLOR_GRAYTEXT)); 1080 1081 } 1081 1082 else SetTextColor(hdc,GetSysColor(COLOR_BTNTEXT)); 1082 1083 1083 DrawText(hdc,pChildInfo-> caption,-1,&rect,i4|i2|i3);1084 DrawText(hdc,pChildInfo->GetCaption().c_str(),-1,&rect,i4|i2|i3); 1084 1085 SelectObject(hdc,hOldFont); 1085 1086 } … … 1089 1090 // CheckBox コントロール 1090 1091 1091 if(pChildInfo-> style&BS_PUSHLIKE){1092 if(pChildInfo->GetStyle()&BS_PUSHLIKE){ 1092 1093 //ボタンの縁を描画 1093 1094 DrawButtonEdge(WndNum,&pos,&size); … … 1097 1098 size2.cx=13; 1098 1099 size2.cy=13; 1099 if(pChildInfo-> style&BS_LEFTTEXT)1100 if(pChildInfo->GetStyle()&BS_LEFTTEXT) 1100 1101 pos2.x=pos.x+size.cx-size2.cx; 1101 1102 else pos2.x=pos.x; 1102 if((pChildInfo-> style&BS_VCENTER)==BS_VCENTER||1103 (pChildInfo-> style&BS_VCENTER)==0)1103 if((pChildInfo->GetStyle()&BS_VCENTER)==BS_VCENTER|| 1104 (pChildInfo->GetStyle()&BS_VCENTER)==0) 1104 1105 pos2.y=pos.y+(size.cy/2)-(size2.cy/2); 1105 else if(pChildInfo-> style&BS_TOP)1106 else if(pChildInfo->GetStyle()&BS_TOP) 1106 1107 pos2.y=pos.y+1; 1107 else if(pChildInfo-> style&BS_BOTTOM)1108 else if(pChildInfo->GetStyle()&BS_BOTTOM) 1108 1109 pos2.y=pos.y+size.cy-size2.cy-1; 1109 1110 DrawItemEdgeByExStyle(WndNum,WS_EX_CLIENTEDGE,&pos2,&size2); 1110 1111 1111 if(pChildInfo-> style&WS_DISABLED)1112 if(pChildInfo->GetStyle()&WS_DISABLED) 1112 1113 rgb=GetSysColor(COLOR_3DFACE); 1113 1114 else rgb=GetSysColor(COLOR_WINDOW); … … 1115 1116 pos2.x+size2.cx, pos2.y+size2.cy, 1116 1117 rgb,rgb,1); 1117 if(!(pChildInfo-> style&BS_LEFTTEXT)) pos.x+=17;1118 if(!(pChildInfo->GetStyle()&BS_LEFTTEXT)) pos.x+=17; 1118 1119 else pos.x++; 1119 1120 size.cx-=17; 1120 1121 } 1121 1122 1122 if(!(pChildInfo-> style&(BS_ICON|BS_BITMAP))){1123 if(!(pChildInfo->GetStyle()&(BS_ICON|BS_BITMAP))){ 1123 1124 //キャプション テキスト 1124 1125 rect.left=pos.x+1+MdiInfo[WndNum].MdiRadInfo->ClientPos.x; … … 1127 1128 rect.bottom=pos.y+size.cy-2+MdiInfo[WndNum].MdiRadInfo->ClientPos.y; 1128 1129 1129 if(pChildInfo-> style&BS_MULTILINE) i4=0;1130 if(pChildInfo->GetStyle()&BS_MULTILINE) i4=0; 1130 1131 else i4=DT_SINGLELINE; 1131 1132 1132 1133 //ビットを考慮してBS_CENTERを最初に比較する 1133 if((pChildInfo-> style&BS_CENTER)==BS_CENTER) i2=DT_CENTER;1134 else if(pChildInfo-> style&BS_LEFT) i2=DT_LEFT;1135 else if(pChildInfo-> style&BS_RIGHT) i2=DT_RIGHT;1134 if((pChildInfo->GetStyle()&BS_CENTER)==BS_CENTER) i2=DT_CENTER; 1135 else if(pChildInfo->GetStyle()&BS_LEFT) i2=DT_LEFT; 1136 else if(pChildInfo->GetStyle()&BS_RIGHT) i2=DT_RIGHT; 1136 1137 else i2=DT_LEFT; 1137 1138 1138 1139 //ビットを考慮してBS_VCENTERを最初に比較する 1139 if((pChildInfo-> style&BS_VCENTER)==BS_VCENTER) i3=DT_VCENTER;1140 else if(pChildInfo-> style&BS_TOP) i3=DT_TOP;1141 else if(pChildInfo-> style&BS_BOTTOM) i3=DT_BOTTOM;1140 if((pChildInfo->GetStyle()&BS_VCENTER)==BS_VCENTER) i3=DT_VCENTER; 1141 else if(pChildInfo->GetStyle()&BS_TOP) i3=DT_TOP; 1142 else if(pChildInfo->GetStyle()&BS_BOTTOM) i3=DT_BOTTOM; 1142 1143 else i3=DT_VCENTER; 1143 1144 1144 1145 hOldFont=(HFONT)SelectObject(hdc,hFont); 1145 if(pChildInfo-> style&WS_DISABLED){1146 if(pChildInfo->GetStyle()&WS_DISABLED){ 1146 1147 SetTextColor(hdc,RGB(255,255,255)); 1147 1148 rc2.left=rect.left+1; … … 1149 1150 rc2.right=rect.right+1; 1150 1151 rc2.bottom=rect.bottom+1; 1151 DrawText(hdc,pChildInfo-> caption,-1,&rc2,i4|i2|i3);1152 DrawText(hdc,pChildInfo->GetCaption().c_str(),-1,&rc2,i4|i2|i3); 1152 1153 SetTextColor(hdc,GetSysColor(COLOR_GRAYTEXT)); 1153 1154 } 1154 1155 else SetTextColor(hdc,GetSysColor(COLOR_BTNTEXT)); 1155 1156 1156 DrawText(hdc,pChildInfo-> caption,-1,&rect,i4|i2|i3);1157 DrawText(hdc,pChildInfo->GetCaption().c_str(),-1,&rect,i4|i2|i3); 1157 1158 SelectObject(hdc,hOldFont); 1158 1159 } … … 1168 1169 1169 1170 //内部 1170 if(pChildInfo-> style&WS_DISABLED)1171 if(pChildInfo->GetStyle()&WS_DISABLED) 1171 1172 rgb=GetSysColor(COLOR_3DFACE); 1172 1173 else rgb=GetSysColor(COLOR_WINDOW); … … 1176 1177 rgb,rgb,1); 1177 1178 1178 if((pChildInfo-> style&0x000F)==CBS_SIMPLE){1179 if((pChildInfo->GetStyle()&0x000F)==CBS_SIMPLE){ 1179 1180 pos.y+=20; 1180 1181 size.cy-=20; … … 1202 1203 1203 1204 pos2.x--; 1204 if(pChildInfo-> style&WS_DISABLED){1205 if(pChildInfo->GetStyle()&WS_DISABLED){ 1205 1206 hPen=CreatePen(PS_SOLID,0,GetSysColor(COLOR_3DHIGHLIGHT)); 1206 1207 hOldPen=(HPEN)SelectObject(hdc,hPen); … … 1233 1234 1234 1235 //内部 1235 if(pChildInfo-> style&WS_DISABLED||pChildInfo->style&ES_READONLY)1236 if(pChildInfo->GetStyle()&WS_DISABLED||pChildInfo->GetStyle()&ES_READONLY) 1236 1237 rgb=GetSysColor(COLOR_3DFACE); 1237 1238 else rgb=GetSysColor(COLOR_WINDOW); … … 1247 1248 rect.bottom=pos.y+size.cy-1+MdiInfo[WndNum].MdiRadInfo->ClientPos.y; 1248 1249 1249 if(pChildInfo-> style&ES_MULTILINE) i4=0;1250 if(pChildInfo->GetStyle()&ES_MULTILINE) i4=0; 1250 1251 else i4=DT_SINGLELINE; 1251 1252 1252 1253 //ビットを考慮してES_LEFTを最後に検討する 1253 if(pChildInfo-> style&ES_CENTER) i2=DT_CENTER;1254 else if(pChildInfo-> style&ES_RIGHT) i2=DT_RIGHT;1254 if(pChildInfo->GetStyle()&ES_CENTER) i2=DT_CENTER; 1255 else if(pChildInfo->GetStyle()&ES_RIGHT) i2=DT_RIGHT; 1255 1256 else i2=DT_LEFT; 1256 1257 1257 1258 //文字色を設定 1258 if(pChildInfo-> style&WS_DISABLED)1259 if(pChildInfo->GetStyle()&WS_DISABLED) 1259 1260 SetTextColor(hdc,GetSysColor(COLOR_GRAYTEXT)); 1260 1261 else … … 1262 1263 1263 1264 hOldFont=(HFONT)SelectObject(hdc,hFont); 1264 DrawText(hdc,pChildInfo-> caption,-1,&rect,i4|i2);1265 DrawText(hdc,pChildInfo->GetCaption().c_str(),-1,&rect,i4|i2); 1265 1266 SelectObject(hdc,hOldFont); 1266 1267 } … … 1271 1272 1272 1273 hOldFont=(HFONT)SelectObject(hdc,hFont); 1273 GetTextExtentPoint32(hdc,pChildInfo-> caption,lstrlen(pChildInfo->caption),&size2);1274 GetTextExtentPoint32(hdc,pChildInfo->GetCaption().c_str(),pChildInfo->GetCaption().size(),&size2); 1274 1275 1275 1276 //枠を描画 … … 1281 1282 1282 1283 //ビットを考慮してBS_CENTERを最初に検討する 1283 if((pChildInfo-> style&BS_CENTER)==BS_CENTER){1284 if((pChildInfo->GetStyle()&BS_CENTER)==BS_CENTER){ 1284 1285 rect.left=pos.x+(size.cx/2)-(size2.cx/2)-3; 1285 1286 rect.right=rect.left+size2.cx+4; 1286 1287 } 1287 else if(pChildInfo-> style&BS_RIGHT){1288 else if(pChildInfo->GetStyle()&BS_RIGHT){ 1288 1289 rect.right=pos.x+size.cx-7; 1289 1290 rect.left=rect.right-size2.cx-4; … … 1296 1297 rect.bottom=pos.y+size2.cy; 1297 1298 1298 if(pWindowInfo-> bgColor==COLOR_3DFACE) rgb=GetSysColor(COLOR_3DFACE);1299 else rgb=-pWindowInfo-> bgColor;1299 if(pWindowInfo->GetBackgroundColor()==COLOR_3DFACE) rgb=GetSysColor(COLOR_3DFACE); 1300 else rgb=-pWindowInfo->GetBackgroundColor(); 1300 1301 DrawRectangleInClient(WndNum,rect.left,rect.top,rect.right,rect.bottom,rgb,rgb,1); 1301 1302 1302 if(!((pChildInfo-> style&BS_ICON)||(pChildInfo->style&BS_BITMAP))){1303 if(!((pChildInfo->GetStyle()&BS_ICON)||(pChildInfo->GetStyle()&BS_BITMAP))){ 1303 1304 rect.left+=MdiInfo[WndNum].MdiRadInfo->ClientPos.x; 1304 1305 rect.top+=MdiInfo[WndNum].MdiRadInfo->ClientPos.y; … … 1309 1310 1310 1311 //テキストを描画 1311 if(pChildInfo-> style&WS_DISABLED){1312 if(pChildInfo->GetStyle()&WS_DISABLED){ 1312 1313 SetTextColor(hdc,RGB(255,255,255)); 1313 1314 rc2.left=rect.left+1; … … 1315 1316 rc2.right=rect.right+1; 1316 1317 rc2.bottom=rect.bottom+1; 1317 DrawText(hdc,pChildInfo-> caption,-1,&rc2,DT_SINGLELINE);1318 DrawText(hdc,pChildInfo->GetCaption().c_str(),-1,&rc2,DT_SINGLELINE); 1318 1319 SetTextColor(hdc,GetSysColor(COLOR_GRAYTEXT)); 1319 1320 } … … 1321 1322 SetTextColor(hdc,GetSysColor(COLOR_BTNTEXT)); 1322 1323 1323 DrawText(hdc,pChildInfo-> caption,-1,&rect,DT_SINGLELINE);1324 DrawText(hdc,pChildInfo->GetCaption().c_str(),-1,&rect,DT_SINGLELINE); 1324 1325 } 1325 1326 SelectObject(hdc,hOldFont); … … 1329 1330 //////////////////////////////////// 1330 1331 // 水平スクロールバー コントロール 1331 DrawScrollBar(WndNum,pChildInfo-> style,0,&pos,&size);1332 DrawScrollBar(WndNum,pChildInfo->GetStyle(),0,&pos,&size); 1332 1333 } 1333 1334 … … 1337 1338 HDC memdc; 1338 1339 1339 if((pChildInfo-> style&0x0000000F)==SS_BLACKFRAME)1340 if((pChildInfo->GetStyle()&0x0000000F)==SS_BLACKFRAME) 1340 1341 DrawRectangleInClient(WndNum,pos.x,pos.y,pos.x+size.cx,pos.y+size.cy,RGB(0,0,0),0,0); 1341 else if((pChildInfo-> style&0x0000000F)==SS_GRAYFRAME)1342 else if((pChildInfo->GetStyle()&0x0000000F)==SS_GRAYFRAME) 1342 1343 DrawRectangleInClient(WndNum,pos.x,pos.y,pos.x+size.cx,pos.y+size.cy,GetSysColor(COLOR_3DSHADOW),0,0); 1343 else if((pChildInfo-> style&0x0000000F)==SS_WHITEFRAME)1344 else if((pChildInfo->GetStyle()&0x0000000F)==SS_WHITEFRAME) 1344 1345 DrawRectangleInClient(WndNum,pos.x,pos.y,pos.x+size.cx,pos.y+size.cy,RGB(255,255,255),0,0); 1345 else if((pChildInfo-> style&0x0000001F)==SS_ETCHEDFRAME){1346 else if((pChildInfo->GetStyle()&0x0000001F)==SS_ETCHEDFRAME){ 1346 1347 rect.left=pos.x+MdiInfo[WndNum].MdiRadInfo->ClientPos.x; 1347 1348 rect.top=pos.y+MdiInfo[WndNum].MdiRadInfo->ClientPos.y; … … 1350 1351 DrawEdge(hdc,&rect,EDGE_ETCHED,BF_RECT); 1351 1352 } 1352 else if((pChildInfo-> style&0x0000000F)==SS_BLACKRECT)1353 else if((pChildInfo->GetStyle()&0x0000000F)==SS_BLACKRECT) 1353 1354 DrawRectangleInClient(WndNum,pos.x,pos.y,pos.x+size.cx,pos.y+size.cy,GetSysColor(COLOR_3DDKSHADOW),GetSysColor(COLOR_3DDKSHADOW),1); 1354 else if((pChildInfo-> style&0x0000000F)==SS_GRAYRECT)1355 else if((pChildInfo->GetStyle()&0x0000000F)==SS_GRAYRECT) 1355 1356 DrawRectangleInClient(WndNum,pos.x,pos.y,pos.x+size.cx,pos.y+size.cy,GetSysColor(COLOR_3DSHADOW),GetSysColor(COLOR_3DSHADOW),1); 1356 else if((pChildInfo-> style&0x0000000F)==SS_WHITERECT)1357 else if((pChildInfo->GetStyle()&0x0000000F)==SS_WHITERECT) 1357 1358 DrawRectangleInClient(WndNum,pos.x,pos.y,pos.x+size.cx,pos.y+size.cy,RGB(255,255,255),RGB(255,255,255),1); 1358 else if((pChildInfo->style&0x0000000F)==SS_ICON){ 1359 if(pChildInfo->ImageCtrlInfo.type==IMGTYPE_FILE) 1360 lstrcpy(temporary,pChildInfo->ImageCtrlInfo.path); 1361 else{ 1362 for(i2=0;i2<projectInfo.resourceManager.iconResources.size();i2++) 1359 else if((pChildInfo->GetStyle()&0x0000000F)==SS_ICON) 1360 { 1361 if(pChildInfo->image.IsFile()) 1362 { 1363 lstrcpy(temporary,pChildInfo->image.path.c_str()); 1364 } 1365 else 1366 { 1367 bool isMatch = false; 1368 BOOST_FOREACH( const ActiveBasic::Common::ResourceItem &resourceItem, projectInfo.resourceManager.iconResources ) 1363 1369 { 1364 if( projectInfo.resourceManager.iconResources[i2].idName == pChildInfo->ImageCtrlInfo.path )1370 if( resourceItem.idName == pChildInfo->image.path ) 1365 1371 { 1372 isMatch = true; 1373 lstrcpy(temporary,resourceItem.filepath.c_str()); 1366 1374 break; 1367 1375 } 1368 1376 } 1369 if(i2==projectInfo.resourceManager.iconResources.size()) goto NonIconImage; 1370 1371 lstrcpy(temporary,projectInfo.resourceManager.iconResources[i2].filepath.c_str()); 1377 if( !isMatch ) 1378 { 1379 goto NonIconImage; 1380 } 1372 1381 } 1373 1382 lstrcpy( temporary, projectInfo.GetWorkDir().GetFullPath( temporary ).c_str() ); … … 1380 1389 1381 1390 //ExStyleによる縁を再描画 1382 DrawItemEdgeByExStyle(WndNum,pChildInfo-> ExStyle,&pos,&size);1391 DrawItemEdgeByExStyle(WndNum,pChildInfo->GetExStyle(),&pos,&size); 1383 1392 1384 1393 DrawIcon(hdc, … … 1401 1410 } 1402 1411 } 1403 else if((pChildInfo-> style&0x0000000F)==SS_BITMAP){1412 else if((pChildInfo->GetStyle()&0x0000000F)==SS_BITMAP){ 1404 1413 BITMAP Bitmap; 1405 1414 1406 if(pChildInfo->ImageCtrlInfo.type==IMGTYPE_FILE) 1407 lstrcpy(temporary,pChildInfo->ImageCtrlInfo.path); 1415 if(pChildInfo->image.IsFile()) 1416 { 1417 lstrcpy(temporary,pChildInfo->image.path.c_str()); 1418 } 1408 1419 else{ 1409 for(i2=0;i2<projectInfo.resourceManager.bitmapResources.size();i2++){ 1410 if( projectInfo.resourceManager.bitmapResources[i2].idName == pChildInfo->ImageCtrlInfo.path ) 1420 bool isMatch = false; 1421 BOOST_FOREACH( const ActiveBasic::Common::ResourceItem &resourceItem, projectInfo.resourceManager.bitmapResources ) 1422 { 1423 if( resourceItem.idName == pChildInfo->image.path ) 1411 1424 { 1425 lstrcpy(temporary,resourceItem.filepath.c_str()); 1426 isMatch = true; 1412 1427 break; 1413 1428 } 1414 1429 } 1415 if(i2==projectInfo.resourceManager.bitmapResources.size()) goto NonBitmapImage; 1416 1417 lstrcpy(temporary,projectInfo.resourceManager.bitmapResources[i2].filepath.c_str()); 1430 if( !isMatch ) 1431 { 1432 goto NonBitmapImage; 1433 } 1418 1434 } 1419 1435 lstrcpy( temporary, projectInfo.GetWorkDir().GetFullPath( temporary ).c_str() ); … … 1428 1444 1429 1445 //ExStyleによる縁を再描画 1430 DrawItemEdgeByExStyle(WndNum,pChildInfo-> ExStyle,&pos,&size);1446 DrawItemEdgeByExStyle(WndNum,pChildInfo->GetExStyle(),&pos,&size); 1431 1447 1432 1448 memdc=CreateCompatibleDC(hdc); … … 1461 1477 1462 1478 //内部 1463 if(pChildInfo-> style&WS_DISABLED)1479 if(pChildInfo->GetStyle()&WS_DISABLED) 1464 1480 rgb=GetSysColor(COLOR_3DFACE); 1465 1481 else rgb=GetSysColor(COLOR_WINDOW); … … 1469 1485 rgb,rgb,1); 1470 1486 1471 if(pChildInfo-> style&LBS_DISABLENOSCROLL)1472 DrawWindowScrollBar(WndNum,pChildInfo-> style|WS_DISABLED,&pos,&size);1487 if(pChildInfo->GetStyle()&LBS_DISABLENOSCROLL) 1488 DrawWindowScrollBar(WndNum,pChildInfo->GetStyle()|WS_DISABLED,&pos,&size); 1473 1489 } 1474 1490 … … 1478 1494 1479 1495 //内部 1480 if(pChildInfo-> style&WS_DISABLED)1496 if(pChildInfo->GetStyle()&WS_DISABLED) 1481 1497 rgb=GetSysColor(COLOR_3DFACE); 1482 1498 else rgb=GetSysColor(COLOR_WINDOW); … … 1486 1502 rgb,rgb,1); 1487 1503 1488 if((pChildInfo-> style&LVS_REPORT)&&1489 (!((pChildInfo-> style&LVS_LIST)==LVS_LIST))){1504 if((pChildInfo->GetStyle()&LVS_REPORT)&& 1505 (!((pChildInfo->GetStyle()&LVS_LIST)==LVS_LIST))){ 1490 1506 //レポート ビュー 1491 1507 size.cy=16; … … 1504 1520 size.cy-=2; 1505 1521 rgb=GetSysColor(COLOR_ACTIVECAPTION); 1506 if(pChildInfo-> style&PBS_SMOOTH){1507 if(pChildInfo-> style&PBS_VERTICAL){1522 if(pChildInfo->GetStyle()&PBS_SMOOTH){ 1523 if(pChildInfo->GetStyle()&PBS_VERTICAL){ 1508 1524 pos.y+=(long)((double)size.cy*0.3); 1509 1525 DrawRectangleInClient(WndNum, … … 1520 1536 } 1521 1537 else{ 1522 if(pChildInfo-> style&PBS_VERTICAL){1538 if(pChildInfo->GetStyle()&PBS_VERTICAL){ 1523 1539 pos.y+=(long)((double)size.cy*0.3); 1524 1540 i3=(size.cx*2)/3; … … 1548 1564 // RadioButton コントロール 1549 1565 1550 if(pChildInfo-> style&BS_PUSHLIKE){1566 if(pChildInfo->GetStyle()&BS_PUSHLIKE){ 1551 1567 //ボタンの縁を描画 1552 1568 DrawButtonEdge(WndNum,&pos,&size); … … 1556 1572 size2.cx=12; 1557 1573 size2.cy=12; 1558 if(pChildInfo-> style&BS_LEFTTEXT)1574 if(pChildInfo->GetStyle()&BS_LEFTTEXT) 1559 1575 pos2.x=pos.x+size.cx-size2.cx; 1560 1576 else pos2.x=pos.x+1; 1561 if((pChildInfo-> style&BS_VCENTER)==BS_VCENTER||1562 (pChildInfo-> style&BS_VCENTER)==0)1577 if((pChildInfo->GetStyle()&BS_VCENTER)==BS_VCENTER|| 1578 (pChildInfo->GetStyle()&BS_VCENTER)==0) 1563 1579 pos2.y=pos.y+(size.cy/2)-(size2.cy/2); 1564 else if(pChildInfo-> style&BS_TOP)1580 else if(pChildInfo->GetStyle()&BS_TOP) 1565 1581 pos2.y=pos.y+1; 1566 else if(pChildInfo-> style&BS_BOTTOM)1582 else if(pChildInfo->GetStyle()&BS_BOTTOM) 1567 1583 pos2.y=pos.y+size.cy-size2.cy-1; 1568 1584 … … 1575 1591 1576 1592 if(rgb==RGB(255,255,0)){ 1577 if(pWindowInfo-> bgColor==COLOR_3DFACE) rgb=GetSysColor(COLOR_3DFACE);1578 else rgb=-pWindowInfo-> bgColor;1593 if(pWindowInfo->GetBackgroundColor()==COLOR_3DFACE) rgb=GetSysColor(COLOR_3DFACE); 1594 else rgb=-pWindowInfo->GetBackgroundColor(); 1579 1595 } 1580 1596 … … 1589 1605 //内部 1590 1606 else if(rgb==RGB(255,255,255)){ 1591 if(pChildInfo-> style&WS_DISABLED) rgb=GetSysColor(COLOR_3DFACE);1607 if(pChildInfo->GetStyle()&WS_DISABLED) rgb=GetSysColor(COLOR_3DFACE); 1592 1608 } 1593 1609 … … 1607 1623 GlobalFree(pByte2); 1608 1624 1609 if(!(pChildInfo-> style&BS_LEFTTEXT)) pos.x+=17;1625 if(!(pChildInfo->GetStyle()&BS_LEFTTEXT)) pos.x+=17; 1610 1626 else pos.x++; 1611 1627 size.cx-=17; 1612 1628 } 1613 1629 1614 if(!(pChildInfo-> style&(BS_ICON|BS_BITMAP))){1630 if(!(pChildInfo->GetStyle()&(BS_ICON|BS_BITMAP))){ 1615 1631 //キャプション テキスト 1616 1632 rect.left=pos.x+1+MdiInfo[WndNum].MdiRadInfo->ClientPos.x; … … 1619 1635 rect.bottom=pos.y+size.cy-2+MdiInfo[WndNum].MdiRadInfo->ClientPos.y; 1620 1636 1621 if(pChildInfo-> style&BS_MULTILINE) i4=0;1637 if(pChildInfo->GetStyle()&BS_MULTILINE) i4=0; 1622 1638 else i4=DT_SINGLELINE; 1623 1639 1624 1640 //ビットを考慮してBS_CENTERを最初に比較する 1625 if((pChildInfo-> style&BS_CENTER)==BS_CENTER) i2=DT_CENTER;1626 else if(pChildInfo-> style&BS_LEFT) i2=DT_LEFT;1627 else if(pChildInfo-> style&BS_RIGHT) i2=DT_RIGHT;1641 if((pChildInfo->GetStyle()&BS_CENTER)==BS_CENTER) i2=DT_CENTER; 1642 else if(pChildInfo->GetStyle()&BS_LEFT) i2=DT_LEFT; 1643 else if(pChildInfo->GetStyle()&BS_RIGHT) i2=DT_RIGHT; 1628 1644 else i2=DT_LEFT; 1629 1645 1630 1646 //ビットを考慮してBS_VCENTERを最初に比較する 1631 if((pChildInfo-> style&BS_VCENTER)==BS_VCENTER) i3=DT_VCENTER;1632 else if(pChildInfo-> style&BS_TOP) i3=DT_TOP;1633 else if(pChildInfo-> style&BS_BOTTOM) i3=DT_BOTTOM;1647 if((pChildInfo->GetStyle()&BS_VCENTER)==BS_VCENTER) i3=DT_VCENTER; 1648 else if(pChildInfo->GetStyle()&BS_TOP) i3=DT_TOP; 1649 else if(pChildInfo->GetStyle()&BS_BOTTOM) i3=DT_BOTTOM; 1634 1650 else i3=DT_VCENTER; 1635 1651 1636 1652 hOldFont=(HFONT)SelectObject(hdc,hFont); 1637 if(pChildInfo-> style&WS_DISABLED){1653 if(pChildInfo->GetStyle()&WS_DISABLED){ 1638 1654 SetTextColor(hdc,RGB(255,255,255)); 1639 1655 rc2.left=rect.left+1; … … 1641 1657 rc2.right=rect.right+1; 1642 1658 rc2.bottom=rect.bottom+1; 1643 DrawText(hdc,pChildInfo-> caption,-1,&rc2,i4|i2|i3);1659 DrawText(hdc,pChildInfo->GetCaption().c_str(),-1,&rc2,i4|i2|i3); 1644 1660 SetTextColor(hdc,GetSysColor(COLOR_GRAYTEXT)); 1645 1661 } 1646 1662 else SetTextColor(hdc,GetSysColor(COLOR_BTNTEXT)); 1647 1663 1648 DrawText(hdc,pChildInfo-> caption,-1,&rect,i4|i2|i3);1664 DrawText(hdc,pChildInfo->GetCaption().c_str(),-1,&rect,i4|i2|i3); 1649 1665 SelectObject(hdc,hOldFont); 1650 1666 } … … 1662 1678 1663 1679 //ビットを考慮してSS_LEFTを最後に検討する 1664 if(pChildInfo-> style&SS_CENTER) i2=DT_CENTER;1665 else if(pChildInfo-> style&SS_RIGHT) i2=DT_RIGHT;1680 if(pChildInfo->GetStyle()&SS_CENTER) i2=DT_CENTER; 1681 else if(pChildInfo->GetStyle()&SS_RIGHT) i2=DT_RIGHT; 1666 1682 else i2=DT_LEFT; 1667 1683 1668 1684 hOldFont=(HFONT)SelectObject(hdc,hFont); 1669 if(pChildInfo-> style&WS_DISABLED){1685 if(pChildInfo->GetStyle()&WS_DISABLED){ 1670 1686 SetTextColor(hdc,RGB(255,255,255)); 1671 1687 rc2.left=rect.left+1; … … 1673 1689 rc2.right=rect.right+1; 1674 1690 rc2.bottom=rect.bottom+1; 1675 DrawText(hdc,pChildInfo-> caption,-1,&rc2,i2);1691 DrawText(hdc,pChildInfo->GetCaption().c_str(),-1,&rc2,i2); 1676 1692 SetTextColor(hdc,GetSysColor(COLOR_GRAYTEXT)); 1677 1693 } … … 1680 1696 1681 1697 //折り返すかどうか 1682 if(!(pChildInfo-> style&SS_LEFTNOWORDWRAP)){1698 if(!(pChildInfo->GetStyle()&SS_LEFTNOWORDWRAP)){ 1683 1699 i2|=DT_WORDBREAK; 1684 1700 } 1685 1701 1686 DrawText(hdc,pChildInfo-> caption,-1,&rect,i2);1702 DrawText(hdc,pChildInfo->GetCaption().c_str(),-1,&rect,i2); 1687 1703 SelectObject(hdc,hOldFont); 1688 1704 } … … 1692 1708 // TrackBar コントロール 1693 1709 1694 if(pChildInfo-> style&TBS_VERT){1710 if(pChildInfo->GetStyle()&TBS_VERT){ 1695 1711 pos.x+=2; 1696 1712 size.cx-=2; … … 1731 1747 1732 1748 //内部 1733 if(pChildInfo-> style&WS_DISABLED)1749 if(pChildInfo->GetStyle()&WS_DISABLED) 1734 1750 rgb=GetSysColor(COLOR_3DFACE); 1735 1751 else rgb=GetSysColor(COLOR_WINDOW); … … 1743 1759 /////////////////////////////// 1744 1760 // アップ ダウン コントロール 1745 if(pChildInfo-> style&UDS_HORZ)1746 DrawUpDownControl(WndNum,pChildInfo-> style,0,&pos,&size);1747 else DrawUpDownControl(WndNum,pChildInfo-> style,1,&pos,&size);1761 if(pChildInfo->GetStyle()&UDS_HORZ) 1762 DrawUpDownControl(WndNum,pChildInfo->GetStyle(),0,&pos,&size); 1763 else DrawUpDownControl(WndNum,pChildInfo->GetStyle(),1,&pos,&size); 1748 1764 } 1749 1765 … … 1751 1767 //////////////////////////////////// 1752 1768 // 垂直スクロールバー コントロール 1753 DrawScrollBar(WndNum,pChildInfo-> style,1,&pos,&size);1769 DrawScrollBar(WndNum,pChildInfo->GetStyle(),1,&pos,&size); 1754 1770 } 1755 1771 } 1756 1772 DeleteObject(hFont); 1757 1773 } 1758 void DrawRadWindow(int WndNum,const WindowInfo *pWindowInfo){1774 void DrawRadWindow(int WndNum,const ActiveBasic::PM::WindowInfo *pWindowInfo){ 1759 1775 extern MDIINFO MdiInfo[MAX_WNDNUM]; 1760 1776 HBRUSH hOldBrush;
Note:
See TracChangeset
for help on using the changeset viewer.