Programación General > Visual C++

 Problema Apis

<< < (4/4)

JuanK:

--- Cita de: "Eternal Idol" ---
--- Cita de: "JuanK" --- Pero FindWindow se supone que resuelve por dentro si es UNICODE o ASCII no?
--- Fin de la cita ---
No, parece que hasta ahora no entendiste nada  :P

En Windows se suele seguir una metodologia como esta:


--- Código: Text --- void FuncionEjemploW(wchar_t *mensaje){  //hacer algo ...} void FuncionEjemploA(char *mensaje){  wchar_t *wideMensaje;  //convertir cadena a unicode  FuncionEjemploW(wideMensaje);}  
--- Fin de la cita ---
Pues eso mismo era a lo que me referia pero decia era que en tiempo de compilacion se define si FindWindow invoca o bien a FindWindowA o bien a FindWindowW?

robokop:
Yo ya ni se de que hablan pero buee.
aqui dejo un pequeño code que hice de practica para esconder taskbar,boton de inicio,tray ,reloj etc...
Es muy simple pero por si a alguien le hace falta.
Gracias Eternla por la ayuda  :smartass:

--- Código: Text ---#include &#34;windows.h&#34;#include &#34;stdio.h&#34; /*Variables globales*/HWND  ventana,ventana2; char resp; /*definciones*/void taskbar(char on);void tray(char on);void windo(char on);void launch(char on);void inicio(char on);void opciones(void);int main(){  for(;;)  {   opciones();  }return 0;}/*Opciones a elejir*/void opciones(){    printf(&#34;&#092;t&#092;t&#092;tEsconder botones de windows&#092;n&#092;n&#092;n&#34;);  printf(&#34;Elija una opcion:&#092;n&#092;n&#34;);  printf(&#34;A)Esconder taskbar&#092;na)Mostrar taskbar&#092;n&#34;);  printf(&#34;B)Esconder tray y reloj&#092;nb)Mostrar tray&#092;n&#34;);  printf(&#34;C)Esconder Ventanas minizadas&#092;nc)Mostrar ventanas minimizadas&#092;n&#34;);  printf(&#34;D)Esconder QuickLaunch&#092;nd)Mostrar QuickLaunch&#092;n&#34;);  printf(&#34;E)Esconder boton de Inicio&#092;ne)Mostrar boton de inicio&#092;n&#34;);  printf(&#34;Elija una opcion y pulse enter :&#34;);  resp = getchar(); switch (resp) { case 'A':     taskbar('s');   break; case 'a':       taskbar('n');   break; case 'B':       tray('s');      break; case 'b':       tray('n');      break; case 'C':       windo('s');     break; case 'c':       windo('n');   break; case 'D':       launch('s');   break; case 'd':        launch('n');   break; case 'E':        inicio('s');   break; case 'e':        inicio('n');   break; } system(&#34;cls&#34;);} /*Funcion para esconder taskbar*/void taskbar(char on){  if (on=='s')  {      ventana = FindWindowA(&#34;Shell_traywnd&#34;,NULL);/*Encontramos el Handle */    ShowWindow(ventana,SW_HIDE);/*Se oculta con SW_HIDE*/  }  else  {      ventana = FindWindowA(&#34;Shell_traywnd&#34;,NULL);    ShowWindow(ventana,SW_SHOW);  }} //Funcion para Iconos minizados y reloj  en el taskbarvoid tray(char on){    if (on=='s')  {      ventana = FindWindowA(&#34;Shell_traywnd&#34;,NULL);    ventana2 = FindWindowExA (ventana,NULL,&#34;TrayNotifywnd&#34;,NULL);/*Entre las ventanas                                    hijas buscamos El tray*/        ShowWindow(ventana2,SW_HIDE);  }  else  {      ventana = FindWindowA(&#34;Shell_traywnd&#34;,NULL);    ventana2 = FindWindowExA (ventana,NULL,&#34;TrayNotifywnd&#34;,NULL);    ShowWindow(ventana2,SW_SHOW);  }}//Ventanas en taskbarvoid windo(char on) {    if (on=='s')  {      ventana = FindWindowA(&#34;Shell_traywnd&#34;,NULL);    ventana2 = FindWindowExA (ventana,NULL,&#34;ReBarWindow32&#34;,NULL);        ShowWindow(ventana2,SW_HIDE);  }  else  {    ventana = FindWindowA(&#34;Shell_traywnd&#34;,NULL);    ventana2 = FindWindowExA (ventana,NULL,&#34;ReBarWindow32&#34;,NULL);    ShowWindow(ventana2,SW_SHOW);  }} //Quick launchvoid launch(char on) {    if (on=='s')  {      ventana = FindWindowA(&#34;Shell_traywnd&#34;,NULL);    ventana2 = FindWindowExA (FindWindowExA(ventana,NULL,&#34;ReBarWindow32&#34;,NULL),NULL,&#34;ToolBarWindow32&#34;,NULL);        ShowWindow(ventana2,SW_HIDE);  }  else  {    ventana = FindWindowA(&#34;Shell_traywnd&#34;,NULL);    ventana2 = FindWindowExA (FindWindowExA(ventana,NULL,&#34;ReBarWindow32&#34;,NULL),NULL,&#34;ToolBarWindow32&#34;,NULL);    ShowWindow(ventana2,SW_SHOW);  }} //Boton de iniciovoid inicio(char on) {    if (on=='s')  {      ventana = FindWindowA(&#34;Shell_traywnd&#34;,NULL);    ventana2 = GetWindow(ventana,GW_CHILD);    ShowWindow(ventana2,SW_HIDE);  }  else  {    ventana = FindWindowA(&#34;Shell_traywnd&#34;,NULL);    ventana2 = GetWindow(ventana,GW_CHILD);    ShowWindow(ventana2,SW_SHOW);  }} salu2
pd: El code se puede optimizar muchisimo pero lo deje asi porque es solo un ejercicio e hice copy&paste del primer ejemplo solo cambiando parametros

Eternal Idol:

--- Cita de: "JuanK" ---
--- Cita de: "JuanK" --- Pero FindWindow se supone que resuelve por dentro si es UNICODE o ASCII no?
--- Fin de la cita ---

Pues eso mismo era a lo que me referia pero decia era que en tiempo de compilacion se define si FindWindow invoca o bien a FindWindowA o bien a FindWindowW?
--- Fin de la cita ---
Bueno, sinceramente leyendo tu frase no veo que digas eso ... pero mas bien da lo mismo. La respuesta a la primera frase es clara: no, por dentro FindWindowA espera que por favor le pasen cadenas de tipo ANSI y FindWindowW espera que por favor le pasen cadenas de tipo Unicode. De no ser asi interpretaran mal las cadenas y/o daran una excepcion, por dentro no distinguen nada.
La respuesta a la segunda es: podriamos decir que si, es el preprocesador el que se encargara de establecer a que funcion de la API de Windows se llamara.

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa