bonjour,
est-il possible de créer une fenetre dans un programme console win32
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { }
bonjour,
est-il possible de créer une fenetre dans un programme console win32
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { }
je comprends que les réponses courtes soient les plus efficaces
mais juste si c'est possible de me mettre sur la route :
1- la fonction main de console est differente de la fonction main d'un projet win32
2- quand je met cette fonction dans la main de console, il y a erreur :
l'erreur concenrne le HINSTANCE hThisInstance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { HWND hwnd; WNDCLASSEX wincl; int nFunsterStil; HINSTANCE hThisInstance; // Structure de la fenêtre wincl.hInstance = hThisInstance; wincl.lpszClassName = "classe"; wincl.lpfnWndProc = NULL; // Fonction appelée par Windows wincl.style = CS_HREDRAW|CS_VREDRAW; // Redessine à chaque fois wincl.cbSize = sizeof(WNDCLASSEX); // Icônes, pointeur, etc wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION); wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION); wincl.hCursor = LoadCursor(NULL, IDC_ARROW); wincl.lpszMenuName = NULL; wincl.cbClsExtra = 0; wincl.cbWndExtra = 0; wincl.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); // Fond blanc // Enregistre la classe sinon quitte le programme RegisterClassEx(&wincl); // Création de la fenêtre hwnd = CreateWindowEx(0, "classe", "C++ et Windows - 01", // Titre WS_OVERLAPPEDWINDOW, // Fenêtre par défaut GetSystemMetrics(SM_CXSCREEN)/4, // left GetSystemMetrics(SM_CYSCREEN)/4, // top GetSystemMetrics(SM_CXSCREEN)/2, // width GetSystemMetrics(SM_CYSCREEN)/2, // height HWND_DESKTOP, NULL, hThisInstance, NULL ); //Montre la fenêtre ShowWindow(hwnd, argc); return 0; }
comment je pourrai la corriger
merci
GetModuleHandle(NULL); te retourne le HINSTANCE de l'exécutable (même appelée depuis une DLL, cette fonction retournera le HINSTANCE du .EXE)
Note: Pour la petite histoire, je sais que GetModuleHandle retourne un HMODULE. Mais:
- ceux qui regarderont dans les headers verront le typedef HINSTANCE HMODULE;
- J'ai trouvé cela dans un exemple de code sur MSDN
PS: Si tu veux la couleur de fond normale d'une fenêtre, plutôt que WHITE_BRUSH, tu devrais utiliser ceci (C'est du C++, mais en C il suffit de remplaçer par (HBRUSH):
Code : Sélectionner tout - Visualiser dans une fenêtre à part reinterpret_cast< HBRUSH >(COLOR_WINDOW+1)
_beginthread
permet de créer un thread
à l'interieur vous mettez vbotre fenetre et sa gestion de message
Pour un habitué de CreateThread(), par contre, il vaut mieux utiliser _beginthreadex().
Mais il n'est pas forcément nécessaire de créer un nouveau thread pour la fenêtre... Si on n'a plus besoin de la console pour les entrées texte, on peut faire la boucle de messages dans le thread principal...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager