2010-02-16 4 views
1

VB.NET 2008 ExpressPourquoi CreateWindowEx retour 0

Private Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Integer, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Integer, ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hwndParent As Integer, ByVal hMenu As Integer, ByVal hInstance As Integer, ByRef lpParam As Object) As Integer 

Private Const WS_EX_APPWINDOW = &H40000 
Private Const WS_EX_WINDOWEDGE = &H100& 
Private Const WS_SYSMENU = &H80000 
Private Const WS_CAPTION = &HC00000 
Private Const WS_MINIMIZEBOX = &H20000 
Private Const WS_THICKFRAME = &H40000 
Private Const WS_MAXIMIZEBOX = &H10000 
Private Const WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED Or WS_CAPTION Or WS_SYSMENU Or WS_THICKFRAME Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX) 

Dim AppHandle As Int32 = System.Runtime.InteropServices.Marshal.GetHINSTANCE(System.Reflection.Assembly.GetExecutingAssembly.GetModules()(0)).ToInt32() 

Dim WindowHandle as integer = CreateWindowEx(WS_EX_APPWINDOW Or WS_EX_WINDOWEDGE, "MyWindow", "MyTitle", WS_OVERLAPPEDWINDOW, 0, 0, 640, 480, 0, 0, AppHandle, Nothing) 

CreateWindowEx retourne 0?

Répondre

1

Les raisons possibles sont que vous avez oublié d'enregistrer la classe de fenêtre "MyWindow" avec RegisterClass/Ex(), que vous n'avez pas défini la procédure de fenêtre correctement ou que vous ne gérez pas correctement le message WM_CREATE. En outre, votre déclaration P/Invoke est incorrecte, elle ne fonctionnera pas sur les systèmes d'exploitation 64 bits.

N'écrivez pas ce type de code vous-même, Windows Forms est une très belle enveloppe autour de CreateWindowEx().

2

Vous devez vérifier NULL après avoir appelé CreateWindowEx, et si c'est le cas, vous pouvez immédiatement appeler Marshal.GetLastWin32Error pour la raison.

+0

GetLastWin32Error renvoie 1407 – PeanutPower

+0

ERROR_CANNOT_FIND_WND_CLASS 1407 (0x57F) Impossible de trouver la classe de fenêtre. – PeanutPower

Questions connexes