*-------------------------------------------------------------------------------------------------------------
* Hago las llamadas a las API de Windows para controlar:
* Tamaño de la pantalla (no debe ser inferior a 1024 x 768)
* Configuración regional (controlo los separadores decimales y de miles)
* en caso de no ser los correctos, pregunta si quiere cambiarlos automáticamente
*-------------------------------------------------------------------------------------------------------------
llamadas-api-windows.
*... Saco el tamaño de la Pantalla
call "GetSystemMetrics" with stdcall linkage using by value 0 returning xsysmetric.
move xsysmetric to xancho-pan.
call "GetSystemMetrics" with stdcall linkage using by value 1 returning xsysmetric.
cancel "GetSystemMetrics".
move xsysmetric to xalto-pan.
if xancho-pan < 1024 or xalto-pan < 720
invoke pow-self "displaymessage" using
"El tamaño de la pantalla no puede ser inferior a 1024 x 768 pixeles"
move 1 to sen-salida
invoke pow-self "closeform"
go sale
end-if.
*... Saco de Windows el separador decimal
call "GetLocaleInfoA" with stdcall linkage
using by value 1024
by value 14
by reference caracter
by reference buffer
returning retcode.
cancel "GetLocaleInfoA".
move caracter to wsep-dec.
*... Saco de Windows el separador de miles
call "GetLocaleInfoA" with stdcall linkage
using by value 1024
by value 15
by reference caracter
by reference buffer
returning retcode.
cancel "GetLocaleInfoA".
move caracter to wsep-mil.
*... En el caso de que sea incorrecto pregunto si los quiere modificar
if wsep-dec not = "," or wsep-mil not = "."
compute estilo = pow-dmokcancel + pow-dmiconexclamation + pow-dmdefbutton2
invoke pow-self "displaymessage" using
"¿Autoriza establecer COMA como separador decimal y PUNTO como separador de miles?"
"Configuración regional incorrecta para esta aplicación"
returning retcode
if retcode = pow-dmrcancel
move 1 to sen-salida
invoke pow-self "closeform"
go sale
end-if
end-if.
*... Seteo en Windows el separador decimal
move spaces to caracter.
move "," to caracter(1:1).
move X"00" to caracter(2:1).
call "SetLocaleInfoA" with stdcall linkage
using by value 1024
by value 14
by reference caracter
returning retcode.
cancel "SetLocaleInfoA".
*... Seteo en Windows el separador de miles
move spaces to caracter.
move "." to caracter(1:1).
move X"00" to caracter(2:1).
call "SetLocaleInfoA" with stdcall linkage
using by value 1024
by value 15
by reference caracter
returning retcode.
cancel "SetLocaleInfoA".
*-------------------------------------------------------------------------------------------------------------
* Fin de las llamadas
*-------------------------------------------------------------------------------------------------------------