Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

2 Buttons auf der linken Seite

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 29.11.2010, 19:57    Titel: 2 Buttons auf der linken Seite Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1874
Wohnort: D59192

BeitragVerfasst am: 29.11.2010, 22:16    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 30.11.2010, 14:16    Titel: Antworten mit Zitat

Jup, danke. Funktioniert wunderbar.

Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 30.11.2010, 15:39    Titel: Antworten mit Zitat

Ja immer schön den Leuten alles fertig hinwerfen, dann lernen sie schneller peinlich

Sorry volta...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 30.11.2010, 16:46    Titel: Antworten mit Zitat

Zitat:

HMENU,200


Hast du die Zahlen für die Button willkürlich genommen? oder gibt es da eine Vorgabe?

Danke.

Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 30.11.2010, 16:50    Titel: Antworten mit Zitat

28398, du alter Lodderkopf, ganz dicht bist du nicht. lächeln
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
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 30.11.2010, 17:12    Titel: Antworten mit Zitat

funkeld hat Folgendes geschrieben:
28398, du alter Lodderkopf, ganz dicht bist du nicht. lächeln
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 lachen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1874
Wohnort: D59192

BeitragVerfasst am: 30.11.2010, 22:01    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 30.11.2010, 23:47    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1874
Wohnort: D59192

BeitragVerfasst am: 01.12.2010, 12:31    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz