Für alle die schon Programme für Vista schreiben.
Hier ein Toolbarbeispiel, vielleicht kann es ja wer brauchen ...
Liebe Güße
Legion
Code: Alles auswählen
Enumeration
#Window_0
EndEnumeration
Enumeration
#Toolbar_img
#Norm_img
#OverL_img
#OverStr_img
#OverR_img
#DownL_img
#DownStr_img
#DownR_img
EndEnumeration
Enumeration
#StatusBar_0
EndEnumeration
Global WinHDC,TempDC,MouseStatus
Global ExitStatus = 0
Declare.b MouseOverButton1()
Declare.b MouseOverButton2()
Declare.b MouseOverToolbar()
;----------------------------------------------------------------------------------------------------------
Procedure Open_Window_0()
If OpenWindow(#Window_0, 397, 203, 528, 380, "Vista Toolbar Test", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
If CreateGadgetList(WindowID(#Window_0))
If CreateStatusBar(#StatusBar_0, WindowID(#Window_0))
AddStatusBarField(80)
EndIf
EndIf
EndIf
EndProcedure
;----------------------------------------------------------------------------------------------------------
Procedure CatchAllImages()
CatchImage(#Toolbar_img,?StartBlaubalkenStretch)
CatchImage(#OverL_img,?StartTastenteilLinks)
CatchImage(#OverStr_img,?StartTastenteilstretch)
CatchImage(#OverR_img,?StartTastenteilRechts)
CatchImage(#Norm_img,?StartNormStretch)
CatchImage(#DownL_img,?StartDownTasteLinks)
CatchImage(#DownR_img,?StartDownTasteRechts)
CatchImage(#DownStr_img,?StartDownStretchTaste)
EndProcedure
;----------------------------------------------------------------------------------------------------------
Procedure ToolBarStretch(HDC,Image,x,y,DestWidth,DestHeight,SourceWidth,SourceHeight)
SelectObject_(TempDC,ImageID(Image))
StretchBlt_(HDC,x,y,DestWidth,DestHeight,TempDC,0,0,SourceWidth,SourceHeight,#SRCCOPY)
EndProcedure
;----------------------------------------------------------------------------------------------------------
Procedure VTaste(x,y,Width,Text$,FontColor,Status)
Protected TempImageWidth,TempImageID
TempImageWidth = ImageWidth(#OverL_img) + ImageWidth(#OverStr_img) + Width
TempImageID = CreateImage(#PB_Any, TempImageWidth, ImageHeight(#OverL_img))
;..........................................................................................................
If Status = 0
NewImageHDC = StartDrawing(ImageOutput(TempImageID))
DrawingMode(#PB_2DDrawing_Transparent)
DrawingFont(FontID(0))
SelectObject_(TempDC,ImageID(#Norm_img))
StretchBlt_(NewImageHDC,0,0,TempImageWidth,ImageHeight(#Norm_img),TempDC,0,0,ImageWidth(#Norm_img),ImageHeight(#Norm_img),#SRCCOPY)
DrawText(13,4,Text$,FontColor)
StopDrawing()
EndIf
;..........................................................................................................
If Status = 1
NewImageHDC = StartDrawing(ImageOutput(TempImageID))
DrawingMode(#PB_2DDrawing_Transparent)
DrawingFont(FontID(0))
SelectObject_(TempDC,ImageID(#OverL_img))
BitBlt_(NewImageHDC,0,0,ImageWidth(#OverL_img),ImageHeight(#OverL_img),TempDC,0,0,#SRCCOPY)
SelectObject_(TempDC,ImageID(#OverStr_img))
StretchBlt_(NewImageHDC,2,0,Width,ImageHeight(#OverStr_img),TempDC,0,0,ImageWidth(#OverStr_img),ImageHeight(#OverStr_img),#SRCCOPY)
SelectObject_(TempDC,ImageID(#OverR_img))
BitBlt_(NewImageHDC,Width+2,0,ImageWidth(#OverR_img),ImageHeight(#OverR_img),TempDC,0,0,#SRCCOPY)
DrawText(13,4,Text$,FontColor)
StopDrawing()
EndIf
;..........................................................................................................
If Status = 2
NewImageHDC = StartDrawing(ImageOutput(TempImageID))
DrawingMode(#PB_2DDrawing_Transparent)
DrawingFont(FontID(0))
SelectObject_(TempDC,ImageID(#DownL_img))
BitBlt_(NewImageHDC,0,0,ImageWidth(#DownL_img),ImageHeight(#DownL_img),TempDC,0,0,#SRCCOPY)
SelectObject_(TempDC,ImageID(#DownStr_img))
StretchBlt_(NewImageHDC,2,0,Width,ImageHeight(#DownStr_img),TempDC,0,0,ImageWidth(#DownStr_img),ImageHeight(#DownStr_img),#SRCCOPY)
SelectObject_(TempDC,ImageID(#DownR_img))
BitBlt_(NewImageHDC,Width+1,0,ImageWidth(#DownR_img),ImageHeight(#DownR_img),TempDC,0,0,#SRCCOPY)
DrawText(13,4,Text$,$A2A2A2)
StopDrawing()
EndIf
;..........................................................................................................
SelectObject_(TempDC,ImageID(TempImageID))
BitBlt_(WinHDC,x,y,ImageWidth(TempImageID),ImageHeight(TempImageID),TempDC,0,0,#SRCCOPY)
FreeImage(TempImageID)
EndProcedure
;----------------------------------------------------------------------------------------------------------
Procedure.b MouseOverButton1()
Protected x,y
Result = 0
x = WindowMouseX(#Window_0)
y = WindowMouseY(#Window_0)
If (x > 9) And (x < 145) And (y > 3) And (y < 26)
Result = 1
EndIf
ProcedureReturn Result
EndProcedure
;----------------------------------------------------------------------------------------------------------
Procedure.b MouseOverButton2()
Protected x,y
Result = 0
x = WindowMouseX(#Window_0)
y = WindowMouseY(#Window_0)
If (x > 150) And (x < 235) And (y > 3) And (y < 26)
Result = 1
EndIf
ProcedureReturn Result
EndProcedure
;----------------------------------------------------------------------------------------------------------
Procedure WndProc(hwnd,msg,wParam,lParam)
Result = #PB_ProcessPureBasicEvents
If msg = #WM_LBUTTONUP
MouseStatus = 0
If MouseOverButton1()
If MouseStatus = 0
VTaste(10,3,130,"Programm beenden",$FFFFFF,2)
ExitStatus = 1
Else
VTaste(10,3,130,"Programm beenden",$FFFFFF,1)
EndIf
Else
VTaste(10,3,130,"Programm beenden",$FFFFFF,0)
EndIf
;..........................................................................................................
If MouseOverButton2()
If MouseStatus = 1
VTaste(150,3,80,"ToolButton",$FFFFFF,2)
Else
VTaste(150,3,80,"ToolButton",$FFFFFF,1)
EndIf
Else
VTaste(150,3,80,"ToolButton",$FFFFFF,0)
EndIf
;-----------------------------------------------------------------------------------------------------------
ElseIf msg = #WM_LBUTTONDOWN
MouseStatus = 1
If MouseOverButton1()
If MouseStatus = 1
VTaste(10,3,130,"Programm beenden",$FFFFFF,2)
Else
VTaste(10,3,130,"Programm beenden",$FFFFFF,1)
EndIf
Else
VTaste(10,3,130,"Programm beenden",$FFFFFF,0)
EndIf
;..........................................................................................................
If MouseOverButton2()
If MouseStatus = 1
VTaste(150,3,80,"ToolButton",$FFFFFF,2)
Else
VTaste(150,3,80,"ToolButton",$FFFFFF,1)
EndIf
Else
VTaste(150,3,80,"ToolButton",$FFFFFF,0)
EndIf
;-----------------------------------------------------------------------------------------------------------
ElseIf msg = #WM_LBUTTONDBLCLK
MouseStatus = 1
If MouseOverButton1()
If MouseStatus = 1
VTaste(10,3,130,"Programm beenden",$FFFFFF,2)
Else
VTaste(10,3,130,"Programm beenden",$FFFFFF,1)
EndIf
Else
VTaste(10,3,130,"Programm beenden",$FFFFFF,0)
EndIf
;..........................................................................................................
If MouseOverButton2()
If MouseStatus = 1
VTaste(150,3,80,"ToolButton",$FFFFFF,2)
Else
VTaste(150,3,80,"ToolButton",$FFFFFF,1)
EndIf
Else
VTaste(150,3,80,"ToolButton",$FFFFFF,0)
EndIf
;-----------------------------------------------------------------------------------------------------------
ElseIf msg = #WM_ERASEBKGND
ToolBarStretch(WinHDC,#Toolbar_img,0,0,WindowWidth(#Window_0),ImageHeight(#Toolbar_img),ImageWidth(#Toolbar_img),ImageHeight(#Toolbar_img))
VTaste(10,3,130,"Programm beenden",$FFFFFF,0)
VTaste(150,3,80,"ToolButton",$FFFFFF,0)
;-----------------------------------------------------------------------------------------------------------
ElseIf msg = #WM_PAINT
ToolBarStretch(WinHDC,#Toolbar_img,0,0,WindowWidth(#Window_0),ImageHeight(#Toolbar_img),ImageWidth(#Toolbar_img),ImageHeight(#Toolbar_img))
VTaste(10,3,130,"Programm beenden",$FFFFFF,0)
VTaste(150,3,80,"ToolButton",$FFFFFF,0)
;-----------------------------------------------------------------------------------------------------------
ElseIf msg = #WM_ACTIVATE
ToolBarStretch(WinHDC,#Toolbar_img,0,0,WindowWidth(#Window_0),ImageHeight(#Toolbar_img),ImageWidth(#Toolbar_img),ImageHeight(#Toolbar_img))
VTaste(10,3,130,"Programm beenden",$FFFFFF,0)
VTaste(150,3,80,"ToolButton",$FFFFFF,0)
;-----------------------------------------------------------------------------------------------------------
ElseIf msg = #WM_MOUSEMOVE
If MouseOverButton1()
If MouseStatus = 1
VTaste(10,3,130,"Programm beenden",$FFFFFF,2)
Else
VTaste(10,3,130,"Programm beenden",$FFFFFF,1)
EndIf
Else
VTaste(10,3,130,"Programm beenden",$FFFFFF,0)
EndIf
;..........................................................................................................
If MouseOverButton2()
If MouseStatus = 1
VTaste(150,3,80,"ToolButton",$FFFFFF,2)
Else
VTaste(150,3,80,"ToolButton",$FFFFFF,1)
EndIf
Else
VTaste(150,3,80,"ToolButton",$FFFFFF,0)
EndIf
;-----------------------------------------------------------------------------------------------------------
EndIf
ProcedureReturn Result
EndProcedure
;----------------------------------------------------------------------------------------------------------
Open_Window_0()
WindowHandle = WindowID(#Window_0)
WinHDC = GetDC_(WindowID(#Window_0))
TempDC = CreateCompatibleDC_(WinHDC)
;----------------------------------------------------------------------------------------------------------
CatchAllImages()
LoadFont(0,"CourierNew",9)
SetWindowCallback(@WndProc(),#Window_0)
;----------------------------------------------------------------------------------------------------------
Repeat
If ExitStatus = 1 : Break : EndIf
Event = WaitWindowEvent()
WindowID = EventWindow()
GadgetID = EventGadget()
EventType = EventType()
If Event = #PB_Event_Gadget
EndIf
StatusBarText(#StatusBar_0,0," x: "+ Str(WindowMouseX(#Window_0))+" y: " + Str(WindowMouseY(#Window_0)))
Until Event = #PB_Event_CloseWindow
;----------------------------------------------------------------------------------------------------------
ReleaseDC_(WindowHandle,WinHDC)
ReleaseDC_(WindowHandle,TempDC)
FreeImage(#Toolbar_img)
FreeImage(#OverL_img)
FreeImage(#OverStr_img)
FreeImage(#OverR_img)
FreeImage(#Norm_img)
FreeImage(#DownL_img)
FreeImage(#DownR_img)
FreeImage(#DownStr_img)
End
;----------------------------------------------------------------------------------------------------------
DataSection
StartNormStretch:
Data.l 16272706, 0, 3538944, 2621440, 131072, 1572864, 65536, 24, 12713984, 185729024
Data.l 185729024, 0, 0, 2073362432, 964400441, 1871511552, 779062574, 1736835072, 644318758
Data.l 1652686848, 543326752, 1568473088, 442334490, 1517944832, 358251029, 1467482112, 290945041
Data.l 1433862144, 257259279, 1417019392, 223639053, 1400176640, 190018827, 1383399424, 173176074
Data.l 1400242176, 173241866, 2140995584, 1065327935, -2120286208, 1115791170, -2069757952
Data.l 1199874631, -2002452480, 1300800845, -1951989760, 1384884050, -1867907072, 1502653017
Data.l -1800601600, 1586802014, -1750073344, 1687662692, -1665925120, 1805431915, -1615462400
Data.l 1872737903, -1548156928, 1973664117, -1497694208, 2057747322, 0
EndeNormStretch:
;..........................................................................................................
StartTastenteilstretch:
Data.l 16272706, 0, 3538944, 2621440, 131072, 1572864, 65536, 32, 12713984, 185729024
Data.l 185729024, 0, 0, 1382547456, 1382547493, -1312554971, -1312554862, 1770848402
Data.l 1770848305, 1720188977, 1720188972, 1652883500, 1652883496, 1568735272, 1568735267
Data.l 1534984227, 1534984224, 1467678752, 1467678749, 1433927709, 1433927707, 1400242203
Data.l 1400242200, 1349779480, 1349779478, 1366556694, 1366556694, -2036072426, -2036072362
Data.l -1985609642, -1985609639, -1951924135, -1951924131, -1884684195, -1884684191, -1750073247
Data.l -1750073236, -1581776788, -1581776773, -1430323077, -1430323064, -1245183864, -1245183850
Data.l -1076952938, -1076952923, -925499227, -925499216, -454295376, -454295336, 1887633624
Data.l 1887633491, 83
EndeTastenteilstretch:
;..........................................................................................................
StartBlaubalkenStretch:
Data.l 11554114, 0, 3538944, 2621440, 65536, 1966080, 65536, 32, 7995392, 185729024, 185729024
Data.l 0, 0, -993132544, -1767243627, -2002780082, 2073362499, 1871511609, 1736835118, 1652686886
Data.l 1568473120, 1517944858, 1467482133, 1433862161, 1417019407, 1400176653, 1383399435, 1400242186
Data.l 2140995594, -2120286145, -2069757886, -2002452409, -1951989683, -1867906990, -1800601511, -1750073250
Data.l -1665925020, -1615462293, -1548156817, -1497694091, -1447165830, -1396703105, -858259325, 178
EndeBlaubalkenStretch:
;..........................................................................................................
StartTastenteilLinks:
Data.l 28855618, 0, 3538944, 2621440, 262144, 1572864, 65536, 32, 25296896, 185729024, 185729024
Data.l 0, 0, 1922367488, 1652555828, 1416429613, 1348993062, 1484324900, 1618542627, -1531445192
Data.l -1329332093, 1164050577, -1632436200, -1649082243, 1737293945, 1029308463, -1464008686, 1669857417
Data.l 1669857322, 978780202, -1514536946, 1602551942, 1602551846, 928317478, -1581907958, 1535180930
Data.l 1535180833, 894631969, -1632436216, 1484652671, 1484652575, 877789215, -1682964474, 1434124412
Data.l 1434124315, 861011995, -1716649979, 1400373370, 1400373274, 844169242, -1767243773, 1349910647
Data.l 1349910551, 844169239, -1784086525, 1333002358, 1333002261, 844234773, -1800929277, 1316225141
Data.l 1316225045, 1382875157, -1177747416, -2052849510,-2052849580, 1416495188, -1110507477, -2019164000
Data.l -2019164073, 1450180695, -1043136466, -1985478490, -1985478565, 1500643419, -959053774, -1918238547
Data.l -1918238624, 1534328928, -891748298, -1783627596, -1783627669, 1601634411, -790822853, -1598553925
Data.l -1598553990, 1652097146, -706674625, -1447100221, -1447100281, 1702559879, -622591933, -1261961015
Data.l -1261961066, 1753022614, -555286457, -1093730096, -1093730141, 1887764643, -757333937, -588906301
Data.l -959053619, -2019622737, -1986396063, -740556689, -454295355, -1598357288, -1952317322, 2005598310
Data.l 1887633495, 82
EndeTastenteilLinks:
;..........................................................................................................
StartTastenteilRechts:
Data.l 28855618, 0, 3538944, 2621440, 262144, 1572864, 65536, 32, 25296896, 185729024, 185729024
Data.l 0, 0, 1382547456, 1449984037, 1686110247, 1972699182, -1295777739, -1514667886, 1652097156
Data.l 1534656569, 1787625509, -1615527887, -1615658886, 1197604990, 1720188953, 1720188972, -1430454228
Data.l 1079640202, 1669660692, 1669660712, -1480982488, 1029111943, 1585512463, 1585512483, -1548353501
Data.l 978649219, 1551761420, 1551761440, -1598881760, 944963712, 1484455945, 1484455965, -1649410019
Data.l 911343741, 1450704903, 1450704923, -1683095525, 911343739, 1400242182, 1400242200, -1750466536
Data.l 877723768, 1366556676, 1366556694, -1767309290, 877723766, 1366556675, 1366556694, -1784152042
Data.l 877789301, -2019295229, -2019295146, -1160970154, 1416429723, -1985609687, -1985609639
Data.l -1093730215, 1450049697, -1935146964, -1935146915, -1026359203, 1483735207, -1884684241
Data.l -1884684191, -942276511, 1534197934, -1733296077, -1733296020, -858193812, 1584660660
Data.l -1581776842, -1581776773, -774045573, 1618411708, -1430323141, -1430323064, -689897336, 1668874435
Data.l -1245183936, -1245183850, -622591850, 1719337162, -1076953020, -1076952923, -538509147, 1769799888
Data.l -925499319, -572129104, -740556594, 1921319107, -454295472, -723779368, -1969618747, -2002845584
Data.l 1904410722, 2022375507, -1935540136, -1564802969, 119
EndeTastenteilRechts:
;..........................................................................................................
StartDownTasteLinks:
Data.l 22564162, 0, 3538944, 2621440, 262144, 1572864, 65536, 24, 19005440, 185729024, 185729024
Data.l 0, 0, 1922367488, 609183540, 873869632, 1214386728, 389103901, -2044044938, 674834786, 693135630
Data.l 2133022842, 523050841, 676490761, 2065585014, 489429332, 609184519, 1998147443, 472585039
Data.l 558655749, 1947552880, 455741003, 508192516, 1896958318, 438897224, 474572291, 1880049773
Data.l 422119495, 474440962, 1863206507, 422053701, 440820482, 1829520746, 422053187, 440820481
Data.l 1812677737, 422118467, 440820481, 1812677737, 691405891, 1030061844, -1808175987, 708261487
Data.l 1080524821, -1774424434, 725105266, 1130988055, -1723829871, 741949301, 1181451033, -1706724205
Data.l 775570552, 1231848219, -1706527341
Data.l 792414330, 1282245405, -1689421933, 826035580, 1315865375, -1689290606, 842879101, 1366196770
Data.l -1722582895, 876500093, 1382907428, -1772783732, 1112430205, 1298362926, -1957400447, 1853970294
Data.l 826428751, 2085512306, -1598335635, 1416791414, 1093944914, 10552
EndeDownTasteLinks:
;..........................................................................................................
StartDownTasteRechts:
Data.l 28855618, 0, 3538944, 2621440, 327680, 1572864, 65536, 24, 25296896, 185729024, 185729024
Data.l 0, 0, 691273728, 304690194, 1729573440, 1972708689, 1686503477, 728008235, 1160141690, 1231164979
Data.l 1535049758, 559644449, 2132827007, 691609691, 1467678735, 458717979, 2048546426, 539826774
Data.l 1383530506, 357725973, 1981108598, 506205521, 1316225032, 273576976, 1930448243, 489361485
Data.l 1265696774, 206270732, 1863076463, 472517706, 1232076805, 172584970, 1846102126, 455674184
Data.l 1215234051, 138964744, 1812416108, 455673670, 1181548547, 105278726, 1812350572, 438830662
Data.l 164705794, 88435717, 1812284780, 438830405, 1164705794, 88435717, 1829062253, 438895942
Data.l 1905524738, 946967608, -1808240236
Data.l 708196465, 1955987477, 1014273596, -1774422890, 725040244, 2006515734, 1098357057
Data.l -1723762791, 741884279, 2056912920, 1165662789, -1706722662, 758728058, 2090467353
Data.l 1216125512, -1706525542, 775571580, 2124087323, 1316920142, -1689354597, 809193086
Data.l 2140864542, 1367317329, -1689157733, 842813823, 2140733472, 1417648468, -1705672549
Data.l 859657600, 2123759650, 1484691032, -1772519272, 876501118, 2022375460, 1484295000
Data.l 1884846220, 1112427619, 1853620271, 1433304149, 1179608434, 1870737214, 943784016
Data.l 708329770, -2060171438, -1581558670, 119
EndeDownTasteRechts:
;..........................................................................................................
StartDownStretchTaste:
Data.l 16272706, 0, 3538944, 2621440, 131072, 1572864, 65536, 24, 12713984, 185729024
Data.l 185729024, 0, 0, 691273728, 304690194, 1686503424, 728008235, 1535049728, 559644449
Data.l 1467678720, 458717979, 1383530496, 357725973, 1316225024, 273576976, 1265696768, 206270732
Data.l 1232076800, 172584970, 1215234048, 138964744, 1181548544, 105278726, 1164705792, 88435717
Data.l 1164705792, 88435717, 1905524736, 946967608, 1955987456, 1014273596, 2006515712, 1098357057
Data.l 2056912896, 1165662789, 2090467328, 1216125512, 2124087296, 1316920142, 2140864512
Data.l 1367317329, 2140733440, 1417648468, 2123759616, 1484691032, 2022375424, 1484295000
Data.l 1853620224, 1433304149, 943783936, 708329770, 0
EndeDownStretchTaste:
;..........................................................................................................
EndDataSection