Autor
|
Tema: Una ayuda con frm + apis (Leído 1,403 veces)
|
sowher
Desconectado
Mensajes: 204
Programar es un arte diseñemos arte
|
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
|
|
|
En línea
|
|
|
|
Angellore
Desconectado
Mensajes: 13
|
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.
|
|
|
En línea
|
|
|
|
sowher
Desconectado
Mensajes: 204
Programar es un arte diseñemos arte
|
Gracias me faltaba ShowWindow, ya q nunca me mostraba la ventana pero me gustaria ver un ejmeplo... Gracias
|
|
|
En línea
|
|
|
|
sowher
Desconectado
Mensajes: 204
Programar es un arte diseñemos arte
|
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
|
|
|
En línea
|
|
|
|
|
|