PROBLEME AVEC FENETRE WINDOWS

Signaler
Messages postés
157
Date d'inscription
jeudi 17 octobre 2002
Statut
Membre
Dernière intervention
11 septembre 2004
-
Messages postés
115
Date d'inscription
jeudi 7 février 2002
Statut
Membre
Dernière intervention
21 mai 2005
-
g un prb avec les fenetres windows
des que jentre dans une boucle (while ou for) la fenetre se bloke
Romano >:)
[mailto:romano492@hotmail.com romano492@hotmail.com]

4 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
On pourrait peut-etre te dire pourquoi si on avait, au moins, ta proc de fenetre.
BruNews, ciao...
Messages postés
157
Date d'inscription
jeudi 17 octobre 2002
Statut
Membre
Dernière intervention
11 septembre 2004

voila le code source

#include <windows.h>
#include <fenetre.h>
#include <stdlib.h>
#include <winsock.h>
#include <CStr.cpp>

#define Command_ID 300

LRESULT CALLBACK WinProc(HWND, UINT, WPARAM, LPARAM);
void Command_Click(int);
void scanner();
void stop();

HWND fenetre;

SOCKET sock;

int WINAPI WinMain(HINSTANCE instance1, HINSTANCE instance2, LPSTR lps, int nShow)
{
MSG message;
WNDCLASSEX fen;

// Création de la classe
fen.hInstance = instance1; // Instance
fen.lpszClassName = "scanner"; // Nom de la classe
fen.lpfnWndProc = WinProc; // Adresse de la procédure
fen.style = CS_DBLCLKS; // Style
fen.cbSize = sizeof(WNDCLASSEX); // Taille
fen.hIcon = LoadIcon(instance1,"MAIN"); // Grande icone
fen.hIconSm = LoadIcon(NULL,NULL); // Petite icone
fen.hCursor = LoadCursor(NULL, IDC_ARROW); // Curseur
fen.lpszMenuName = NULL; // Menu
fen.cbClsExtra = 0;
fen.cbWndExtra = 0;
fen.hbrBackground = (HBRUSH)(COLOR_3DFACE+1); // Couleur de fond
if(!RegisterClassEx(&fen)) return 0;

fenetre = CreateWindowEx(0,"scanner","Scanner",WS_POPUP|WS_CAPTION|WS_SYSMENU|WS_VISIBLE|WS_MINIMIZEBOX,250,100,250,350,HWND_DESKTOP,NULL,hInst,NULL);
if(fenetre == NULL) return 0;

CreateEdit(1," ", 0,75,245,250,fenetre,0,1,1,1); //MESSAGE
CreateEdit(2,"127.0.0.1",30, 5,118, 20,fenetre,0,0,0,0); //IP

CreateStatic(1,"IP : ",5, 5, 20,20,fenetre);

CreateCommand(1,"Scanner", 30, 30,55,21,fenetre);
CreateCommand(2,"Stop",90, 30,55,21,fenetre);

WSADATA WSAData;
WSAStartup(MAKEWORD(2,0),&WSAData);

ShowWindow(fenetre, SW_SHOW);
UpdateWindow(fenetre);

while (GetMessage(&message, NULL, 0, 0))
{
TranslateMessage(&message);
DispatchMessage(&message);
}

closesocket(sock);
WSACleanup();

return message.wParam;
}

LRESULT CALLBACK WinProc(HWND fenetre2, UINT message2, WPARAM wParam, LPARAM lParam)
{
switch (message2)
{
case WM_DESTROY:
PostQuitMessage(0);
break;

case WM_CLOSE:
DestroyWindow(fenetre2);
break;

case WM_COMMAND:
if(HIWORD(wParam) == BN_CLICKED)Command_Click(LOWORD(wParam) - Command_ID);
break;

default:
return DefWindowProc(fenetre2,message2,wParam,lParam);
break;
}

return 0;
}

void Command_Click(int Index)
{
switch (Index)
{
case 1:
scanner();
break;

case 2:
stop();
break;

}
}

void scanner()
{
char*IP = GetText(edit[2]);
int PORT = 1,n;

SOCKADDR_IN sin;
sock = socket(AF_INET,SOCK_STREAM,0);

sin.sin_addr.s_addr = inet_addr(IP);
sin.sin_family = AF_INET;

while(PORT < 1000) <<<LA BOUCLE ICI
{
sin.sin_port = htons(PORT);

n = connect(sock,(SOCKADDR *)&sin,sizeof(sin));
if(n == 0)
{
SetWindowText(edit[1],"FERME");
}
if(n != 0)
{
SetWindowText(edit[1],"ff\nOUVERT <<<<<<<<");
}

PORT++;
}

closesocket(sock);
WSACleanup();
}

void stop()
{
closesocket(sock);
WSACleanup();
}

Romano >:)
[mailto:romano492@hotmail.com romano492@hotmail.com]
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
tu as essaye void scanner() appele dans une WinMain sans fenetre ni rien pour voir si elle sort correctement ?
return 0 direct apres son appel, tu sauras. On verra ensuite, faut avancer pas a pas.
Tu devrais charger le book Petzold et ses sources, il y a un exemple complet de ce type.
http://perso.wanadoo.fr/persans-brunews/
section telechargement, encore tout neuf.
BruNews, ciao...
Messages postés
115
Date d'inscription
jeudi 7 février 2002
Statut
Membre
Dernière intervention
21 mai 2005

je vais surement dire des bétises, mais ce serait ti pas mieux d'inclure la fonction scanner dans un thread, et mettre dans la boucle while une condition en + (un booléen qui vaut TRUE)
sauf, qd tu appuie sur le boutton, ça remet le booléen en FALSE, et hop tu sors du thread, voilà, je suis pas bien sûr que c'est ce que tu voulais, m'enfin, si ça peut t'aider, voilà un exemple :
http://www.cppfrance.com/article.aspx?Val=1706

manger des galettes et des crêpes
[mailto:galett@voila.fr mailto:galett@voila.fr]