Miércoles 20 de Noviembre de 2024, 18:23
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Problema Winapi
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Problema Winapi (Leído 1642 veces)
Radger
Nuevo Miembro
Mensajes: 15
Problema Winapi
«
en:
Martes 3 de Agosto de 2010, 16:41 »
0
Buenas
Tengo un codigo que en teoria deberia cambiar el texto de un boton pero no hay manera, creo que el problema esta en el bhwnd ya que si uso un HWND creado en el procedimiento funciona pero si uso un HWND miembro de la clase no.
Código: C++
#include <windows.h>
class
aaa
{
public
:
aaa
(
)
{
MSG msg
;
WNDCLASSEX wc
=
{
0
}
;
wc.
cbSize
=
sizeof
(
WNDCLASSEX
)
;
wc.
lpfnWndProc
=
aaa
::
DialogP
;
wc.
hInstance
=
GetModuleHandle
(
NULL
)
;
wc.
hbrBackground
=
GetSysColorBrush
(
COLOR_3DFACE
)
;
wc.
lpszClassName
=
"DialogClass"
;
RegisterClassEx
(
&
wc
)
;
CreateWindowEx
(
WS_EX_DLGMODALFRAME
|
WS_EX_TOPMOST,
"DialogClass"
,
"Dialog Box"
, WS_VISIBLE
|
WS_SYSMENU
|
WS_CAPTION ,
100
,
100
,
200
,
150
,
NULL
,
NULL
, GetModuleHandle
(
NULL
)
,
NULL
)
;
while
(
GetMessage
(
&
msg,
NULL
,
0
,
0
)
)
{
TranslateMessage
(
&
msg
)
;
DispatchMessage
(
&
msg
)
;
}
}
static
LRESULT CALLBACK DialogP
(
HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam
)
{
aaa
*
bb
=
(
aaa
*
)
GetWindowLong
(
hwnd, GWL_USERDATA
)
;
return
bb
-
>
DialogProc
(
hwnd, msg, wParam, lParam
)
;
}
LRESULT CALLBACK DialogProc
(
HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam
)
{
switch
(
msg
)
{
case
WM_CREATE
:
{
bhwnd
=
CreateWindow
(
"BUTTON"
,
"AAA"
,
WS_VISIBLE
|
WS_CHILD ,
50
,
50
,
80
,
25
,
hwnd,
(
HMENU
)
1
,
NULL
,
NULL
)
;
SetWindowText
(
bhwnd,
"DDD"
)
;
}
break
;
case
WM_COMMAND
:
DestroyWindow
(
hwnd
)
;
PostQuitMessage
(
0
)
;
break
;
case
WM_CLOSE
:
DestroyWindow
(
hwnd
)
;
PostQuitMessage
(
0
)
;
break
;
}
return
DefWindowProc
(
hwnd, msg, wParam, lParam
)
;
}
private
:
HWND bhwnd
;
}
;
int
WINAPI WinMain
(
HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,
int
nCmdShow
)
{
aaa
*
nn
=
new
aaa
(
)
;
delete
nn
;
return
0
;
}
Saludos
Tweet
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: Problema Winapi
«
Respuesta #1 en:
Jueves 5 de Agosto de 2010, 17:19 »
0
Claro, estas usando GetWindowLong sin SetWindowLong primero
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Radger
Nuevo Miembro
Mensajes: 15
Re: Problema Winapi
«
Respuesta #2 en:
Sábado 7 de Agosto de 2010, 05:02 »
0
Lo se hace dias que lo arregle, tambien el fallo era que no enviaba un puntero nulo con la instancia de la clase al llamar a Createwindowex.
Aunque una duda que me quedo, es porque el HWND que devuelve la funcion CreateWindowEx es distinto del que luego recibe el procedimiento ?, es mas el HWND que devuelve CreateWindowEx es valido hasta que empieza el bucle de mensajes, es algo que no termino de enterderlo.
Gracias por contestar.
Saludos
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: Problema Winapi
«
Respuesta #3 en:
Martes 10 de Agosto de 2010, 15:53 »
0
Me imagino que sera el mismo cuando los mensajes sean del dialogo pero cuando sean de los controles del mismo, como el boton, no deberia serlo.
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Radger
Nuevo Miembro
Mensajes: 15
Re: Problema Winapi
«
Respuesta #4 en:
Miércoles 11 de Agosto de 2010, 13:13 »
0
No, no es el mismo el HWND que almaceno en la clase deja de ser valido, si lo intento usar para crear un boton por ej. el boton no se crea.La teoria que tengo es que una vez empieza el buble de mensajes, windows internamente crea un nuevo HWND para la ventana y el que tenia almacenado, que fue devuelto por CreateWindowEx deja de ser valido.
Saludos
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: Problema Winapi
«
Respuesta #5 en:
Miércoles 11 de Agosto de 2010, 15:32 »
0
Lo dudo muchisimo, seguramente es algun otro problema en el codigo, te recomiendo depurarlo.
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Problema Winapi