|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
funkeld gesperrt
Anmeldungsdatum: 10.10.2009 Beiträge: 179
|
Verfasst am: 29.11.2010, 19:57 Titel: 2 Buttons auf der linken Seite |
|
|
Hallo, ich habe hier ein Windows , wo drin im gfx-buffer(200x200) gezeichnet wird.
Wie kann ich jetz links zb 2 Buttons untereinander positionieren?
Gruss
Code: |
#include "fbgfx.bi"
#include once "windows.bi"
Using fb
Dim Shared bmi As bitmapv4header
Dim Shared mywin As rect
Function on_paint(ByVal hwnd As HWND,ByVal wparam As WPARAM,ByVal lparam As LPARAM) As Integer
Dim rct As RECT
Dim pnt As PAINTSTRUCT
Dim hDC As HDC
'draw the gfx buffer to screen
hDC = BeginPaint(hWnd, @pnt)
GetClientRect( hWnd, @rct )
With rct
StretchDIBits hDC, 420, -120,.Right-.Left+1,.bottom-.top+1,0, 0, .Right-.Left+1,_
.bottom-.top+1,ScreenPtr,CPtr(bitmapinfo Ptr, @bmi), DIB_RGB_COLORS, SRCCOPY
End With
EndPaint hWnd, @pnt
Function = 0
End Function
Function on_Create(ByVal hwnd As HWND,ByVal wparam As WPARAM,ByVal lparam As LPARAM) As Integer
Dim rct As RECT
'set a gfxscreen of the size of the client area
GetClientRect( hWnd, @mywin)
ScreenRes 200,200, 32, 1, GFX_NULL
'and create a bmp header,required to paint it yo screen
With bmi
.bV4Size = Len(BITMAPV4HEADER)
.bv4width=200
.bv4height=-(200) 'negative value=>top to bottom bmp
'(standard BMP's are bottom to top)
.bv4planes= 1
.bv4bitcount=32
.bv4v4compression=0
.bv4sizeimage=mywin.right+1*mywin.bottom+1*4
.bV4RedMask = &h0F00
.bV4GreenMask = &h00F0
.bV4BlueMask = &h000F
.bV4AlphaMask = &hF000
End With
Function = 0
End Function
Function on_Destroy(ByVal hwnd As HWND,ByVal wparam As WPARAM,ByVal lparam As LPARAM) As Integer
'clear arrays....
PostQuitMessage( 0 )
Function = 0
End Function
Function WndProc ( ByVal hWnd As HWND,ByVal message As UINT, _
ByVal wParam As WPARAM,ByVal lParam As LPARAM ) As LRESULT
Function = 0
Select Case As Const message
Case WM_CREATE
Function = On_create(hwnd,wparam,lparam)
Case WM_PAINT
Function = On_paint(hwnd,wparam,lparam)
Case WM_DESTROY
Function = On_destroy(hwnd,wparam,lparam)
Case Else
Function = DefWindowProc( hWnd, message, wParam, lParam )
End Select
End Function
Dim wMsg As MSG
Dim wcls As WNDCLASS
Dim szAppName As ZString * 30 => "Random Rectangles"
Dim hWnd As HWND
Dim i As Integer
With wcls
.style = CS_HREDRAW Or CS_VREDRAW
.lpfnWndProc = @WndProc
.cbClsExtra = 0
.cbWndExtra = 0
.hInstance = GetModuleHandle( null )
.hIcon = LoadIcon( NULL, IDI_APPLICATION )
.hCursor = LoadCursor( NULL, IDC_ARROW )
.hbrBackground = GetStockObject(WHITE_BRUSH )
.lpszMenuName = NULL
.lpszClassName = @szAppName
End With
If( RegisterClass( @wcls ) = FALSE ) Then
End
End If
'make a non-resizable screen
hWnd = CreateWindowEx( 0,szAppName,"Example of GFX_NULL",_
WS_OVERLAPPEDWINDOW Or (WS_sizebox Or ws_maximizebox),_
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT, _
NULL,NULL, wcls.hinstance,NULL )
ShowWindow( hWnd, SW_NORMAL )
UpdateWindow( hWnd )
While 1
If PeekMessage( @wMsg, NULL, 0,0, PM_Remove) Then
If wmsg.message=WM_QUIT Then
Exit While
End If
TranslateMessage( @wMsg )
DispatchMessage( @wMsg )
Else
'update the gfx buffer
Line (10,10)-(99,99),RGB(Rnd*255,Rnd*255,Rnd*255),bf
CIRCLE (100,100), 50, RGB(255,0,0)
redrawwindow (hwnd,0,0,rdw_invalidate)
End If
Wend
End wMsg.wparam
|
|
|
Nach oben |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1875 Wohnort: D59192
|
Verfasst am: 29.11.2010, 22:16 Titel: |
|
|
versuch das ...
Code: | #Include Once "windows.bi"
Dim Shared bmi As BITMAPINFOHEADER
Dim Shared mywin As RECT
Function on_paint(ByVal hwnd As HWND) As Integer
Dim rct As RECT
Dim pnt As PAINTSTRUCT
Dim hDC As HDC
'draw the gfx buffer to screen
hDC = BeginPaint(hWnd, @pnt)
GetClientRect( hWnd, @rct )
With rct
StretchDIBits hDC, 420, -120, .Right-.Left+1, .bottom-.top+1, _
0, 0, .Right-.Left+1, .bottom-.top+1, ScreenPtr, _
CPtr(BITMAPINFO Ptr, @bmi), DIB_RGB_COLORS, SRCCOPY
End With
EndPaint hWnd, @pnt
Function = 0
End Function
Function on_Create(ByVal hwnd As HWND) As Integer
Dim rct As RECT
'set a gfxscreen of the size of the client area
GetClientRect( hWnd, @mywin)
ScreenRes 200, 200, 32, 1, -1
'and create a bmp header,required to paint it to screen
With bmi
.biSize = SizeOf(BITMAPINFOHEADER)
.biwidth = 200
.biheight = -200 'negative value=>top to bottom bmp
.biplanes = 1
.bibitcount = 32
.biCompression = 0
.bisizeimage = mywin.right+1*mywin.bottom+1*4
End With
Function = 0
End Function
Function on_Destroy(ByVal hwnd As HWND) As Integer
'clear arrays....
PostQuitMessage( 0 )
Function = 0
End Function
Function WndProc ( ByVal hWnd As HWND,ByVal message As UINT, _
ByVal wParam As WPARAM,ByVal lParam As LPARAM ) As LRESULT
Select Case As Const message
Case WM_COMMAND
Select Case LoWord(wParam)
Case 200'Test
'update the gfx buffer
Line (10,10)-(99,99),RGB(Rnd*255,Rnd*255,Rnd*255),bf
Circle (100,100), 50, RGB(255,0,0)
RedrawWindow (hwnd,0,0,rdw_invalidate)
Case 300'Ende
DestroyWindow( hWnd )
End Select
Case WM_CREATE
Function = on_Create(hwnd)
Case WM_PAINT
Function = on_paint(hwnd)
Case WM_DESTROY
Function = on_Destroy(hwnd)
Case Else
Function = DefWindowProc( hWnd, message, wParam, lParam )
End Select
End Function
Dim wMsg As MSG
Dim wcls As WNDCLASS
Dim szAppName As ZString * 30 => "Random Rectangles"
Dim As HWND hWnd, hButton1, hButton2
Dim t As Double
With wcls
.style = CS_HREDRAW Or CS_VREDRAW
.lpfnWndProc = @WndProc
.cbClsExtra = 0
.cbWndExtra = 0
.hInstance = GetModuleHandle( NULL )
.hIcon = LoadIcon( NULL, IDI_APPLICATION )
.hCursor = LoadCursor( NULL, IDC_ARROW )
.hbrBackground = GetStockObject(WHITE_BRUSH )
.lpszMenuName = NULL
.lpszClassName = @szAppName
End With
If( RegisterClass( @wcls ) = FALSE ) Then
End
End If
'make a screen
hWnd = CreateWindowEx( 0,szAppName,"2 Buttons auf der linken Seite",_
WS_OVERLAPPEDWINDOW Or (WS_sizebox Or ws_maximizebox),_
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT, _
NULL,NULL, wcls.hinstance,NULL )
hButton1 = CreateWindowEx( 0,"Button","Test", WS_CHILD Or WS_VISIBLE, _
300, 230, 70, 25, hwnd, Cast(HMENU,200), wcls.hinstance, NULL )
hButton2 = CreateWindowEx( 0,"Button","Ende", WS_CHILD Or WS_VISIBLE, _
300, 270, 70, 25, hwnd, Cast(HMENU,300), wcls.hinstance, NULL )
ShowWindow( hWnd, SW_NORMAL )
UpdateWindow( hWnd )
While 1
If PeekMessage( @wMsg, NULL, 0,0, PM_Remove) Then
If wmsg.message=WM_QUIT Then
Exit While
End If
TranslateMessage( @wMsg )
DispatchMessage( @wMsg )
'Else
'update the gfx buffer
'If Timer > t Then
' Line (10,10)-(99,99),RGB(Rnd*255,Rnd*255,Rnd*255),bf
' Circle (100,100), 50, RGB(255,0,0)
' RedrawWindow (hwnd,0,0,rdw_invalidate)
' t = Timer +.2
'EndIf
End If
Wend
End wMsg.wparam
| Neu:
kein "fbgfx.bi" (GFX_NULL = -1)
BITMAPINFOHEADER
hButton1, hButton2
Case WM_COMMAND
... _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
|
funkeld gesperrt
Anmeldungsdatum: 10.10.2009 Beiträge: 179
|
Verfasst am: 30.11.2010, 14:16 Titel: |
|
|
Jup, danke. Funktioniert wunderbar.
Gruss |
|
Nach oben |
|
|
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 30.11.2010, 15:39 Titel: |
|
|
Ja immer schön den Leuten alles fertig hinwerfen, dann lernen sie schneller
Sorry volta... |
|
Nach oben |
|
|
funkeld gesperrt
Anmeldungsdatum: 10.10.2009 Beiträge: 179
|
Verfasst am: 30.11.2010, 16:46 Titel: |
|
|
Hast du die Zahlen für die Button willkürlich genommen? oder gibt es da eine Vorgabe?
Danke.
Gruss |
|
Nach oben |
|
|
funkeld gesperrt
Anmeldungsdatum: 10.10.2009 Beiträge: 179
|
Verfasst am: 30.11.2010, 16:50 Titel: |
|
|
28398, du alter Lodderkopf, ganz dicht bist du nicht.
Und wenn du den Kindern unter 16 jahren wieder Alkohol verkaufst, werde ich dich bei der Polizei anzeigen. Ich sehe dich fast jeden Tag. |
|
Nach oben |
|
|
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 30.11.2010, 17:12 Titel: |
|
|
funkeld hat Folgendes geschrieben: | 28398, du alter Lodderkopf, ganz dicht bist du nicht.
Und wenn du den Kindern unter 16 jahren wieder Alkohol verkaufst, werde ich dich bei der Polizei anzeigen. Ich sehe dich fast jeden Tag. |
Das habe ich mal eben ein paar Leuten gemailt, keiner konnte vor lachen noch schreiben |
|
Nach oben |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1875 Wohnort: D59192
|
Verfasst am: 30.11.2010, 22:01 Titel: |
|
|
He he 28398,
das ist nicht das erste mal, daß du hier provozierst.
Admins: Wenn sich hieraus für Peter Konsequenzen ergeben, bin ich dafür auch den Provokateur mit gleicher Kosequenz zu strafen.
Zitat: | Ja immer schön den Leuten alles fertig hinwerfen, dann lernen sie schneller | Bin ich hier Lehrer oder habe ich hier einen Lehrauftrag?
Ich lerne dabei am meisten wenn ich solche Probleme löse
und das mache ich nur wenn es mich selbst interessiert.
@funkeld
das sind IDs (200, 300) und frei gewählt!
Auf HMENUE gecastet damit keine Warnhinweise vom FBC gegeben werden. _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
|
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 30.11.2010, 23:47 Titel: |
|
|
volta hat Folgendes geschrieben: | Bin ich hier Lehrer oder habe ich hier einen Lehrauftrag?
Ich lerne dabei am meisten wenn ich solche Probleme löse
und das mache ich nur wenn es mich selbst interessiert. |
Ich möchte das hier nur ganz kurz klarstellen, bevor das hier noch ausartet:
-> Ich wollte bzw. habe dich nicht persönlich angreifen wollen. Falls du das so empfunden hast, möchte ich mich dafür entschuldigen.
-> Meine Aussage bezog sich nämlich darauf, dass sehr häufig den Leuten einfach eine fertige Lösung präsentiert wird, die sie mit relativ hoher Wahrscheinlichkeit nicht verstehen. Es wäre daher eher im Interesse aller, wenn diesen Leuten genug Stoff an die Hand geben wird, damit sie ihr Problem selbst lösen können. |
|
Nach oben |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1875 Wohnort: D59192
|
Verfasst am: 01.12.2010, 12:31 Titel: |
|
|
Hi,
du brauchst dich nicht entschuldigen aber lass solche Bemerkungen wie -> http://forum.qbasic.at/viewtopic.php?p=94659#94659
28398 hat Folgendes geschrieben: | Meine Aussage bezog sich nämlich darauf, dass sehr häufig den Leuten einfach eine fertige Lösung präsentiert wird, die sie mit relativ hoher Wahrscheinlichkeit nicht verstehen. | Ganz normal, ich verstehe auch manche Programmteile nicht und wende sie nur an. Ehrlich, geht es dir da nicht genau so?
Ich merke häufig an den Nachfragen dass Sie sich schon mit den Lösungen selbst beschäftigen, wie das hier auch der Fall ist. Das reicht mir ...
28398 hat Folgendes geschrieben: | Es wäre daher eher im Interesse aller, wenn diesen Leuten genug Stoff an die Hand geben wird, damit sie ihr Problem selbst lösen können. | Das Problem, wenn ich eine Lösung gefunden habe daraus dann eine Abhandlung zum Selbststudium machen. Viel zu kompliziert ... (und ich bin zu faul dazu) _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|