Avatar billede ab Nybegynder
05. februar 2000 - 17:37 Der er 3 kommentarer og
1 løsning

Fra C++ --> VB?

Er der nogen der vil/kan skrive det her om til VB?

UINT g_uQueryCancelAutoPlay = 0;

LRESULT WndProc(HWND hwnd, UINT uMsg,  WPARAM wParam, LPARAM lParam)
{
    switch (uMsg) {
    ...
    default:
        if (!g_uQueryCancelAutoPlay)
        {
            g_uQueryCancelAutoPlay = RegisterWindowMessage(TEXT("QueryCancelAutoPlay"));
        }
        if (uMsg && uMsg == g_uQueryCancelAutoPlay)
        {
            return TRUE;      // cancel auto-play
        }
    }
}


Koden er beregnet til at annulere autoplay funtionen når en CD indsættes, fundet på: http://msdn.microsoft.com/library/psdk/shellcc/shell/Shell_basics/Autoplay_reg.htm
Avatar billede baunsgaard Nybegynder
06. februar 2000 - 01:26 #1
Du skal subclasse din form for at lave noget i den stil. Sæt nedenstående ind i et VB modul:

Option Explicit

Declare Function CallWindowProc Lib "user32" Alias _
    "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
    ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, _
    ByVal lParam As Long) As Long
Declare Function SetWindowLong Lib "user32" Alias _
    "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, _
    ByVal dwNewLong As Long) As Long
Private Declare Function RegisterWindowMessage Lib "user32" Alias _
    "RegisterWindowMessageA" (ByVal lpString As String) As Long

Public Const GWL_WNDPROC = -4

Global lpPrevWndProc As Long
Global gMsg As Long

Public Sub Hook(ByVal hWnd As Long)
    gMsg = RegisterWindowMessage("QueryCancelAutoPlay")
    lpPrevWndProc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub

Public Sub Unhook(ByVal hWnd As Long)
  Dim temp As Long

  temp = SetWindowLong(hWnd, GWL_WNDPROC, lpPrevWndProc)
End Sub

Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, _
    ByVal wParam As Long, ByVal lParam As Long) As Long
   
    If uMsg = gMsg Then
        WindowProc = 1
        Exit Function
    End If
   
    WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam)
End Function


I din form kalder du så 'Hook(Me.hWnd)', så er dit hook etableret og din nye window procedure bliver først kaldt. Værdien 1 svarer til True i C++.

Mvh
Avatar billede ab Nybegynder
06. februar 2000 - 10:39 #2
Har du et link til en god side omkring subclassing vil jeg meget have det, for jeg kender ikke ret meget til subclassing. Jeg vil prøve at lave ovenstående nu...
Avatar billede baunsgaard Nybegynder
06. februar 2000 - 12:13 #3
MSDN er altid en god kilde til information. Benyt CD'erne du fik med VB eller http://msdn.microsoft.com. Søg fx. på 'Visual Basic Subclassing' - det skulle gerne returnere nogle relevante hits...

Du kan også finde en masse interessante vb hardcore ting på http://www.mvps.org, blandt andet er der et andet lille eksempel på subclassing på http://www.mvps.org/vbvision/_samples/Subclass_Demo_(Basic).zip - det minder meget om kode jeg viste ovenfor.

Mvh
Avatar billede ab Nybegynder
06. februar 2000 - 12:39 #4
Det virker!! Jeg må sige det i grunden virker rimelig enkelt når man sammenligner koderne.. nå men jeg vil læse lidt videre, TAK for hjælpen!!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester