Fenstergröße beim Borderless ändern

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

:lol: ..hab ich doch gewußt das sowas kommt, nach dem ich mir 'nen ast getippt hab. :mrgreen:
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

Beitrag von DarkSoul »

sorry #NULL, aber hab mich für den kurzen code entschieden :twisted:

mir nicht böse sein! :wink:

ihr habt mir super geholfen, danke! :allright:

ach übrigends: AND51: die konstanten sind nicht wie feuer und wasser, denn nur zusammen funktionierts! feuer und wasser funktioniert funktioneirt zusammen nicht (gut) :wink:
Bild
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

Biedermeier hat geschrieben: ach übrigends: AND51: die konstanten sind nicht wie feuer und wasser, denn nur zusammen funktionierts! feuer und wasser funktioniert funktioneirt zusammen nicht (gut) :wink:
AND51 hat schon recht, die beiden die er meinte funktioniern zusammen nicht
solange man die #PB_Window_BorderLess da hat, funktioniert #PB_Window_ResizeGadget nicht, #WS_SIZEBOX anscheinend schon :wink:
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Ja, ich wollte damit sagen, dass ich in PB ohne weiteres kein rahmenloses fenster (borderless) erstellen kann, und möchte, das man es in seiner größe verändern kann (resize).

#WS_SizeBOX kannte ich auch noch nicht, wenn's geht, ok. Aber mit dem PB-Konstanten, da habe ich schon Recht.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

Biedermeier hat geschrieben:..hab mich für den kurzen code entschieden :twisted:
ist ja mehr als verständlich.
jetzt muß nur noch jemand zeigen, wie man mit wenig code eine minimale fenster-breite und -höhe und die breite des anfass-randes festlegen kann, um damit meinen code zu beerdigen. (da gibts doch bestimmt was)

<edit>
kann mir mal jemand sagen wieso SetCursor_(hCursor) sich nicht dauerhaft auswirkt? nach neuen events wird der ursprüngliche cursor immer wieder hergestellt.
my pb stuff..
Bild..jedenfalls war das mal so.
Andreas
ToolbarKönig
Beiträge: 142
Registriert: 08.09.2004 08:33

Beitrag von Andreas »

#NULL hat geschrieben: jetzt muß nur noch jemand zeigen, wie man mit wenig code eine minimale fenster-breite und -höhe und die breite des anfass-randes festlegen kann, um damit meinen code zu beerdigen. (da gibts doch bestimmt was)
Bitte sehr.

Code: Alles auswählen

Procedure HitTest(hCtl,lParam)
    Protected pt.POINT
    Protected rc.RECT
    pt\x = LoWord(lParam)
    pt\y = HiWord(lParam)
    ScreenToClient_(hCtl,pt)
    GetWindowRect_(hCtl,rc)
    If pt\y < 4 And pt\x < 4
        Result = #HTTOPLEFT
    ElseIf pt\y < 4 And pt\x >= (rc\right-rc\left-4)
        Result = #HTTOPRIGHT
    ElseIf pt\y >=(rc\bottom-rc\top-4) And pt\x >= (rc\right-rc\left-4)
        Result = #HTBOTTOMRIGHT
    ElseIf pt\x < 4 And pt\y >= (rc\bottom -rc\top - 4)
        Result = #HTBOTTOMLEFT
    ElseIf pt\y < 4
        Result = #HTTOP
    ElseIf pt\x < 4
        Result = #HTLEFT
    ElseIf pt\x >= (rc\right -rc\left - 4)
        Result = #HTRIGHT
    ElseIf pt\y >= (rc\bottom -rc\top - 4)
        Result = #HTBOTTOM
    Else
        Result = #HTCAPTION
    EndIf
    ProcedureReturn Result
EndProcedure

Procedure WCB(wnd,msg,wparam,lparam)
  Result = #PB_ProcessPureBasicEvents
  Select msg
    Case #WM_NCHITTEST
       Result = HitTest(wnd,lParam)
    Case #WM_GETMINMAXINFO
       *MinMax.MINMAXINFO = lParam
       *MinMax\ptMinTrackSize\x = 195 
       *MinMax\ptMinTrackSize\y = 260 
       ProcedureReturn 0
  EndSelect
  ProcedureReturn Result
EndProcedure


If OpenWindow(0, 100, 200, 195, 260, "PureBasic Window", #PB_Window_BorderLess)
If CreateGadgetList(WindowID(0))
    ButtonGadget(1, 10,10,80,24,"Ende") 
    TextGadget(2, 10, 40,180,200,"Schieb mich, vergroessere mich") 
EndIf
SetWindowCallback(@WCB())
Repeat
  EventID = WaitWindowEvent()
  Select EventID
    Case #PB_Event_Gadget
    Select EventGadget()
      Case 1: Quit = 1
    EndSelect
    Case #PB_Event_CloseWindow
      Quit = 1
  EndSelect
Until Quit = 1
EndIf
End

Gruss Andreas
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Falls jemand die UserLib von Andreas nicht hat, kann er am Anfang noch folgende Macros einfügen, damit es läuft:

Code: Alles auswählen

Macro HiWord(long)
  (long >> 16) & $FFFF
EndMacro
Macro LoWord(long)
  long & $FFFF
EndMacro
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Biedermeier hat geschrieben:... feuer und wasser funktioniert [] zusammen nicht (gut) :wink:
aber kla doch...
Gandalf wäre ohne Feuer und Wasser nie von dem Grauen zu dem Weißen aufgestiegen....
die kombination konträrer elemente ist in Magie und Alchemie unverzichtbar.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

> Gandalf wäre ohne Feuer und Wasser nie von dem Grauen zu dem Weißen aufgestiegen....
> die kombination konträrer elemente ist in Magie und Alchemie unverzichtbar.
Oh Got, was hab ich angerichtet? :lol: Ist das wirklich so lustig, was ich gesagt habe? :D
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Antworten