Bueno yo no se mucho de vb, y se me ocurrio una idea pues por q no hacer ventamas pero como yo las diseñle en c es decir con puras apis, sin utilizar ningun frm de vb...
Les agradecieria mucho su ayuda
Hola.
Si sabes usar las APIs en C en VB es exactamente lo mismo.
Hay un par de cosas que debes tener en cuenta, luego es análogo a C:
1. El procedimiento principal en VB es Sub Main. Para que el programa se inicie en esta instancia en Propiedades del Proyecto hay que establecer como elemento de inicio Sub Main.
2. Los punteros de función en VB se pasan con el operador lógico AddressOf, esto servirá cuando haya que establecer la función de ventana WndProc en la clase.
3. Depurar el código en tiempo de ejecución es muy peligroso cuando se trata de callbacks, porque pueden producirse resultados impredecibles.
Luego es el mismo procedimiento que en C. Primero se registra la clase de ventana utilizando RegisterClassEx, se llama a CreateWindow y luego se muestra la ventana con ShowWindow.
Voy a ver si encuentro un ejemplo que tengo guardado por alguna parte, si lo encuentro lo posteo.
Saludos.
Angellore.
Gracias me faltaba ShowWindow, ya q nunca me mostraba la ventana ;) pero me gustaria ver un ejmeplo...
Gracias
Ya que nadie me tiro una ayudita, pues aca esta mi esfuerzo, pero tiene un pequeño error y la verdad q no lo encuentro, me gustaria q en esto me ayudaramn.... Gracias
'*********************************************
' Creador de from
' sowher / GEDZAC - Group / 2006
'*********************************************
Public Const WS_OVERLAPPED = &H0&
Public Const WS_VISIBLE = &H10000000
Public Const WS_MAXIMIZE = &H1000000
Public Const CS_DBLCLKS = &H8
Public Type WNDCLASSEX
cbSize As Long
style As Long
lpfnwndproc As Long
cbClsextra As Long
cbWndExtra As Long
hInstance As Long
hIcon As Long
hCursor As Long
hbrBackground As Long
lpszMenuName As String
lpszClassName As String
hIconSm As Long
End Type
Declare Function RegisterClassEx Lib "user32" Alias "RegisterClassExA" (pcWndClassEx As WNDCLASSEX) As Integer
Declare Function UnregisterClass Lib "user32" Alias "UnregisterClassA" (ByVal lpClassName As String, ByVal hInstance As Long) As Long
Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
Declare Function DestroyWindow Lib "user32" (ByVal hWnd As Long) As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
Sub main()
RegistrarClase (WindowProcedure)
If Not CrearAplicacion Then
MsgBox "Falla en la creacion de la aplicacion"
UnregisterClass "mipropiaclase", App.hInstance
Exit Sub
End If
End Sub
Private Function RegistrarClase(FuncionMensajes As Long) As Boolean
Dim clase As WNDCLASSEX
clase.cbSize = 0
clase.style = CS_DBLCLKS
clase.lpfnwndproc = FuncionMensajes
clase.cbClsextra = 0
clase.cbWndExtra = 0
clase.hInstance = App.hInstance
clase.hIcon = 0
clase.hCursor = 0
clase.hbrBackground = COLOR_WINDOW + 1
clase.lpszMenuName = 0
clase.lpszClassName = "clase"
clase.hIconSm = 0
RegistrarClase = (RegisterClassEx(clase) <> 0)
End Function
Private Function CrearAplicacion() As Boolean
'Tipos de Ventanas Principales
hWnd = CreateWindowEx(0, "clase", "Ventana Principal", WS_OVERLAPPED Or WS_VISIBLE Or WS_MAXIMIZE, 0, 0, 500, 400, HWND_DESKTOP, 0, App.hInstance, ByVal 0&)
If hWnd = 0 Then
CrearAplicacion = False
Exit Function
End If
ShowWindow hWnd, SW_SHOWDEFAULT
CrearAplicacion = True
End Function