Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1367 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Cacher la fenêtre DOS

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Cacher la fenêtre DOS

n°1320948
cocowk
Posté le 08-03-2006 à 14:49:05  profilanswer
 

Bonjour,  
je développe du GTK sous Windows avec Visual Studio 2005.  
Je fais des projets "console". Le "problème" c'est que lorsque je lance le programme, une fenêtre DOS apparait. J'aimerais la cacher (voire la supprimer). J'ai essayé de faire un projet WIN32 vide mais là une erreur de lien apparait (hors GTK) et je suis incapable de débugger:  
Error 27 error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup MSVCRTD.lib  
 
Je me suis donc résolu à cacher la fenêtre de console DOS.. Est ce possible? ou avez vous la solution à ce message d'erreur pour le projet Win32 vide??  
 
Merci d'avance!  
Coco

mood
Publicité
Posté le 08-03-2006 à 14:49:05  profilanswer
 

n°1321386
HelloWorld
Salut tout le monde!
Posté le 08-03-2006 à 21:56:11  profilanswer
 

Tu as choisi le bon type de projet, mais il faut renommer ta fonction main() en WinMain():
http://msdn.microsoft.com/library/ [...] inmain.asp
et alors ça compilera

n°1321579
cocowk
Posté le 09-03-2006 à 09:48:47  profilanswer
 

helloworld..
Merci. Je suis allé faire un tour sur MSDN.. Apparemment WinMain prend des paramètres autres que mon main(int argc, char* argv)...
Pourrais tu me dire comment je dois appeller WinMain pour remplacer int argc et char* argv?(car je ne dois pas passer ces paramètres ensuite à GTK.)
 
Merci beaucoup pour ta réponse. Ca m'éclaire déjà un peu plus

n°1321593
Trap D
Posté le 09-03-2006 à 10:01:11  profilanswer
 

Je ne pense pas que le renommage de main en WinMain fonctionne !  
Le bon principe est celui du projet Windows 32 .  
Regarde ici http://c.developpez.com/faq/vc/?pa [...] deWin32App
Il faut peutêtre fouiller les options de link avec gtk.


Message édité par Trap D le 09-03-2006 à 10:02:17
n°1321682
cocowk
Posté le 09-03-2006 à 11:48:58  profilanswer
 

ok merci les gars.. je vais tester tout ca ce soir :D
j'ai repéré qq fonctions qui pourront m'aider

n°1321953
Trap D
Posté le 09-03-2006 à 16:13:03  profilanswer
 

cocowk a écrit :

ok merci les gars.. je vais tester tout ca ce soir :D
j'ai repéré qq fonctions qui pourront m'aider

Voilà, ça fonctionne chez moi sous Visual Studio 2005

Code :
  1. #include <windows.h>
  2. #include <gtk/gtk.h>
  3. #include <glib.h>
  4. gboolean expose_event_callback (GtkWidget *widget, GdkEventExpose *event, gpointer data)
  5. {
  6. gint dx, dy;
  7. char buf[100];
  8. gchar gtmp[100];
  9. PangoLayout *layout;
  10. gint y0, haut, large;
  11. dx = widget->allocation.width; dy = widget->allocation.height;
  12. strcpy(buf, "Hello World !" );
  13. g_stpcpy(gtmp, buf);
  14. layout = gtk_widget_create_pango_layout (widget,gtmp);
  15. pango_layout_get_pixel_size (layout,&large, &haut);
  16. gdk_draw_layout(widget->window,widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
  17.              (dx - large)/2, (dy -haut)/2 , layout);
  18.     return TRUE;
  19. }
  20. void destroy (void)
  21. {
  22. gtk_main_quit ();
  23. }
  24. int APIENTRY WinMain(HINSTANCE hInstance,
  25.                      HINSTANCE hPrevInstance,
  26.                      LPSTR     lpCmdLine,
  27.                      int       nCmdShow)
  28. {
  29. GtkWidget *drawing_area, *window;
  30. gtk_init (NULL, NULL);
  31.   /* a generic toplevel window */
  32. window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  33. gtk_window_set_title(GTK_WINDOW(window),"Mon premier programme" );
  34. gtk_container_set_border_width (GTK_CONTAINER(window), 5);
  35. drawing_area = gtk_drawing_area_new ();
  36. gtk_widget_set_size_request (drawing_area, 100, 100);
  37. g_signal_connect (G_OBJECT (drawing_area), "expose_event", 
  38.                     G_CALLBACK (expose_event_callback), NULL);
  39. g_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (destroy), NULL);
  40. gtk_container_add (GTK_CONTAINER(window), drawing_area);
  41. gtk_widget_show (drawing_area);
  42. gtk_widget_show (window);
  43. gtk_main();
  44. return 0;
  45. }

C'est pas génial mais ça fonctionne !


Message édité par Trap D le 09-03-2006 à 16:22:42
n°1322098
HelloWorld
Salut tout le monde!
Posté le 09-03-2006 à 19:13:31  profilanswer
 

Projet Win32 -> WinMain
Projet Win32 Console -> main

n°1325593
Virtual wa​ve
Posté le 15-03-2006 à 02:30:06  profilanswer
 

cocowk a écrit :

Bonjour,  
je développe du GTK sous Windows avec Visual Studio 2005.  
Je fais des projets "console". Le "problème" c'est que lorsque je lance le programme, une fenêtre DOS apparait. J'aimerais la cacher (voire la supprimer). J'ai essayé de faire un projet WIN32 vide mais là une erreur de lien apparait (hors GTK) et je suis incapable de débugger:  
Error 27 error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup MSVCRTD.lib  
 
Je me suis donc résolu à cacher la fenêtre de console DOS.. Est ce possible? ou avez vous la solution à ce message d'erreur pour le projet Win32 vide??  
 
Merci d'avance!  
Coco


 
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>    
 
int main()
{
 
 WinExec("start iexplore.exe", SW_MAXIMIZE /*SW_HIDE*/ );// SW=Show Window
 
  return 0 ;
}
 

n°1325607
Trap D
Posté le 15-03-2006 à 08:15:55  profilanswer
 

Il ne faut plus utiliser WinExec mais ShellExecute(Ex).

n°1325908
Virtual wa​ve
Posté le 15-03-2006 à 15:37:49  profilanswer
 

Trap D a écrit :

Il ne faut plus utiliser WinExec mais ShellExecute(Ex).


Ca va bien, l'objectif etait de cacher la fenetre.  
 
On voit plus bas que ShellExecute est une commande plus complexe que WinExec

 
The ShellExecute function opens or prints a specified file.  
The file can be an executable file or a document file. See ShellExecuteEx also.  
 
HINSTANCE ShellExecute(
 
    HWND hwnd, // handle to parent window
    LPCTSTR lpOperation, // pointer to string that specifies operation to perform
    LPCTSTR lpFile, // pointer to filename or folder name string
    LPCTSTR lpParameters, // pointer to string that specifies executable-file parameters  
    LPCTSTR lpDirectory, // pointer to string that specifies default directory
    INT nShowCmd  // whether file is shown when opened
   );  
 
 
Parameters
 
hwnd
 
Specifies a parent window. This window receives any message boxes that an application produces. For example, an application may report an error by producing a message box.
 
lpOperation
 
Pointer to a null-terminated string that specifies the operation to perform. The following operation strings are valid:
 
String Meaning
"open" The function opens the file specified by lpFile. The file can be an executable file or a document file. The file can be a folder to open.
"print" The function prints the file specified by lpFile. The file should be a document file. If the file is an executable file, the function opens the file, as if "open" had been specified.
"explore" The function explores the folder specified by lpFile.  
 
 
The lpOperation parameter can be NULL. In that case, the function opens the file specified by lpFile.  
 
lpFile
 
Pointer to a null-terminated string that specifies the file to open or print or the folder to open or explore. The function can open an executable file or a document file. The function can print a document file.  
 
lpParameters
 
If lpFile specifies an executable file, lpParameters is a pointer to a null-terminated string that specifies parameters to be passed to the application.
If lpFile specifies a document file, lpParameters should be NULL.  
 
lpDirectory
 
Pointer to a null-terminated string that specifies the default directory.  
 
nShowCmd
 
If lpFile specifies an executable file, nShowCmd specifies how the application is to be shown when it is opened.  This parameter can be one of the following values:  
 
Value Meaning
SW_HIDE Hides the window and activates another window.
SW_MAXIMIZE Maximizes the specified window.
SW_MINIMIZE Minimizes the specified window and activates the next top-level window in the Z order.
SW_RESTORE Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.
SW_SHOW Activates the window and displays it in its current size and position.  
SW_SHOWDEFAULT Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application. An application should call ShowWindow with this flag to set the initial show state of its main window.
SW_SHOWMAXIMIZED Activates the window and displays it as a maximized window.
SW_SHOWMINIMIZED Activates the window and displays it as a minimized window.
SW_SHOWMINNOACTIVE Displays the window as a minimized window. The active window remains active.
SW_SHOWNA Displays the window in its current state. The active window remains active.
SW_SHOWNOACTIVATE Displays a window in its most recent size and position. The active window remains active.
SW_SHOWNORMAL Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.
 
 
If lpFile specifies a document file, nShowCmd should be zero.

Message cité 1 fois
Message édité par Virtual wave le 15-03-2006 à 15:39:00
mood
Publicité
Posté le 15-03-2006 à 15:37:49  profilanswer
 

n°1325922
Emmanuel D​elahaye
C is a sharp tool
Posté le 15-03-2006 à 15:44:13  profilanswer
 

Virtual wave a écrit :

Ca va bien, l'objectif etait de cacher la fenetre.  
 
On voit plus bas que ShellExecute est une commande plus complexe que WinExec



Le problème n'est pas là. WinExec() est une fonction de WIN 16 dépréciée depuis plus de 10 ans (Windows 95). Si tu n'actualises pas tes connaissances, tu vas avoir des surprises...

Message cité 1 fois
Message édité par Emmanuel Delahaye le 15-03-2006 à 15:45:33

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1326440
Virtual wa​ve
Posté le 16-03-2006 à 06:43:08  profilanswer
 

Emmanuel Delahaye a écrit :

Le problème n'est pas là. WinExec() est une fonction de WIN 16 dépréciée depuis plus de 10 ans (Windows 95). Si tu n'actualises pas tes connaissances, tu vas avoir des surprises...


Grand merci, il me semble que c'est a l'envers.
 
Pour cocowk: le IDE (Integrated Development Environment) et le compilateur sont des programmes avec des buts differents; le IDE a un but ergonomique est consiste dans une fenetre avec au moins 2 fenetres EDIT dont le principal est de:  
fenetre 1-editer le programme source dans la fenetre superieure;  
fenetre 2- redirectioner les messages erreur du compilateur envers la fenetre inferieure.
Ce sont les taches les plus ennuyeuses quand on travaille a ligne de commande.
 
Bien sur on sait ajouter de divers fonctions additionelles, surtout pour le depannage en C++.
 
Le fait qu'on utilise le GTK ne devrait cacher le bon usage des fonctions WinAPI ou C deja connues.  
 
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Cacher la fenêtre DOS

 

Sujets relatifs
clignotement d'image lors d'un changement de dim de fenetreVariable variable en DOS ????
Liens ouvrant sur nouvelle fenetrecommande pour changer de disque dur en DOS
Comment cacher la fenetre (echo off ne fct° pas !)Probleme de variables et de boucle (DOS)
PB excecution d'une ligne de commande DOSAcceder à une fenetre ouverte une fois que l'on a changé de page
Cacher la fenêtre DOS[DELPHI] Cacher une fenetre MS-DOS ?
Plus de sujets relatifs à : Cacher la fenêtre DOS


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR