Miten saan tehtyä niin, että lomake pysyy aina alimmaisena, vaikka sitä klikattaisiin?
Tarkoitus on tehdä pilaversiota Windowsista, ja työpöydän pitäisi pysyä alimmaisena.
Millä kielellä? (nykyään ei koskaan tiedä milloin on .NET ja milloin ei, ja ihan eri kielet kyseessä...)
Periaatteena vanhalla VB:llä voi tehdä niin, että tekee toisista formeista työpöytäformin lapsielementtejä antamalla tyylin WS_CHILD ja sitten käyttäen SetParentia siirtää ne formit työpöytäformiin.
VB6 on kyseessä, toimiiko sillä?
ps. Aloitin VB-ohjelmoinnin about 2 viikkoa sitten, enkä osaa vielä yhtään mitään. :)
Tässä on nyt jonkunlainen esimerkki, jonka pohjalta lähteä leikkimään. Tätä kokeilua varten aloita uusi projekti, lisää siihen Form1:n seuraksi Form2 ja pasteta koodia:
' Form2 Option Explicit Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Const GWL_STYLE = (-16) Private Const WS_CHILD = &H40000000 Private Sub Form_Load() ' tee tästä lomakkeesta lapsielementti (tämä korjaa mm. fokus-ongelmia) SetWindowLong Me.hWnd, GWL_STYLE, GetWindowLong(Me.hWnd, GWL_STYLE) Or WS_CHILD ' nyt aseta tämä lomake Form1:n sisään SetParent Me.hWnd, Form1.hWnd End Sub
Form1:een lisää nappula ja sitten pastettele lisää:
Option Explicit Private Sub Command1_Click() Form2.Show End Sub Private Sub Form_Unload() ' tärkeää! Form2 täytyy pakottaa sulkeutumaan tai se jää elämään muistiin eikä ohjelmasi sulkeudu Unload Form2 End Sub
Ymmärtääkseni käytät yhtä lomaketta työpöytänä, tässä tapauksessa Form1 edustaisi moista.
Ei toimi, SetWindowLong ja SetParent funktioiden kohdalla tulee "Syntax Error"..
Onko sinulla nyt ihan varmasti siis VB6? Se on kuitenkin jo yli kymmenen vuotta vanha kapistus ja myös näyttää siltä (ja voisi olla parempi opetella Visual Basic 2008 Express Edition, VB6:n elinvuodet päättyvät hyvin todennäköisesti Vistan mukana).
"Microsoft Visual Basic 6 Professional Edition", ihan varmasti.
Niin, ja toinen kysymys (jota varten en viitsi aloittaa aihetta), elikkä onko mahdollista tehdä läpinäkyviä lomakkeita (tarkoitus olis tehdä näytöllä kävelevä kovakuoriainen)?
Hmm, siinä tapauksessa... kopioitko siis koko tuon koodiosuuden lomakkeen kaikeksi koodiksi? Eli et esim. pastennut vain jonkin proseduurin kuten Form_Load() sisälle?
Tein zipin ladattavaksi: http://kontu.selfip.info/vb6/Lapsi.zip
Tuo zip-versio toimii kyllä, mutta itse pastetettu ei, syytä en ymmärrä, no ihan sama.
Noiden lapsien kanssa tulee muuten ongelmia mm. tekstikenttien ja valikoitten kanssa..
Aihe on jo aika vanha, joten et voi enää vastata siihen.