Probleme avec une boite de dialogue

Signaler
Messages postés
161
Date d'inscription
samedi 25 juin 2005
Statut
Membre
Dernière intervention
1 août 2006
-
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
salut !!
ça sera simpa si vous m'aidiez a corriger ce code
*******************************************************************************
#include <windows.h>

#include "resource.h"

#include <commctrl.h>

#pragma comment(lib,"comctl32.lib")

HWND hTxtIp;

HWND handle;

HINSTANCE hInstance;

BOOL CALLBACK Dialog_Procedure(UINT message,
WPARAM wparam,
LPARAM lparam)
{
switch(message)
{
case WM_INITDIALOG:
{
INITCOMMONCONTROLSEX lpInitCtrls;
lpInitCtrls.dwSize = sizeof(LPINITCOMMONCONTROLSEX);
lpInitCtrls.dwICC = ICC_INTERNET_CLASSES;
InitCommonControlsEx(&lpInitCtrls);
hTxtIp = CreateWindowEx(WS_EX_CLIENTEDGE, WC_IPADDRESS, "", WS_CHILD | WS_VISIBLE,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
handle, NULL, hInstance, NULL);
UpdateWindow(hTxtIp);
return FALSE;
break;
}
case WM_COMMAND:
{
switch(LOWORD(wparam))
{
case ID_CONNECT:
{
MessageBox(handle,"a fen","e",0);
return true;
break;
}
default:
{
return FALSE;
}
}
return true;
break;
}
case WM_CLOSE:
{
exit(-1);
return true;
break;
}
default:
{
return FALSE;
}
}
return TRUE;
}
int WINAPI WinMain(HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpcmdLine,
int nCmdLine)
{
hInstance = hThisInstance ;
handle = CreateDialog(hThisInstance,MAKEINTRESOURCE(ID_DIALOG1),
NULL,Dialog_Procedure);
MSG message;
while(GetMessage(&message,NULL,0,0))
{
TranslateMessage(&message);
DispatchMessage(&message);
}
return 0;
}
********************************************************************************

voici l'erreur que le compilateur genere :
D:\Program Files\Microsoft Visual Studio\MyProjects\Client\main.cpp(75) : error C2664: 'CreateDialogParamA' : cannot convert parameter 4 from 'int (unsigned int,unsigned int,long)' to 'int (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long
)'
*******************************************************************************
dans le fichier resource j'ai crée une boite dialogue composeé d'un cotrole

IP ADDRESS son id est ID_IP_ADDRESS et un BUTTON ID_CONNECT

merçi d'avance

6 réponses

Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Pas besoin de while(GetMessage(......)) dans ton WinMain c'est une dialog

Au message WM_INITDIALOG, on retourne un TRUE



Et tu peux utilisé DialogBox à la place de CreateDialog

DialogBox(hInstance, MAKEINTRESOURCE(ID_DIALOG1), HWND_DESKTOP, (DLGPROC)Window_Procedure);

void Aurevoir( void ); //Bonne journée
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Et au pire tu cast ton 4eme paramètre avec (DLGPROC)

Si il attend un DLGPROC et tu lui donne un BOOL ça craint un peu normal

void Aurevoir( void ); //Bonne journée
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Et au faite mdr, encore moi

ta Procedure il manque un truc...



Prototype d'une procédure : LRESULT CALLBACK Wnd_Proc(HWND, UINT, WPARAM, LPARAM);



Il manque le HWND pour toi

void Aurevoir( void ); //Bonne journée
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Les Admins vont me tuer mais bon c'est po grave, je suis la tête de turc ici c'est bien :'(:'(:'(

Donc quand tu veux fermer, utilise EndDialog(hWnd, 0);

void Aurevoir( void ); //Bonne journée
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Euh si, besoin de while(GetMessage...) quand le dialog est créé avec CreateDialog
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
WM_INITDIALOG faut retourner 1 pour un placement correct du focus.
C'est quoi ces 'break' derrière des 'return', aucune utilité.
C'est vraiment le souk ce code, efface et recommence.

ciao...
BruNews, MVP VC++