problem de define en c avec winapi - C - Programmation
Marsh Posté le 28-01-2009 à 22:55:28
Mouais 12 en octal, ça donne 10 en décimal. Vire les 0 qu'il y a avant les nombres dans tes defines.
Marsh Posté le 28-01-2009 à 23:52:00
sa marche pas maintenant sa reconnai aucain control.
je compren pas c bizare
Marsh Posté le 29-01-2009 à 03:24:19
Tu devrais être un peu plus précis quand tu dis que "sa marche pas".
Bon mon explication était sans doute pas très claire, alors je recommence. Tes defines sont de la forme :
Code :
|
J'ai pas l'impression que t'es au courant que mettre un 0 avant un nombre en C, c'est la manière d'utiliser la notation octale (base 8). Et en général, lorsqu'on veut vraiment utiliser la base octale, on ne met qu'un seul 0.
D'autant que ton ID_T_IP vaut 012, soit 10 en décimal, ce qui est la valeur de ID_B_OPENSAVE s'il avait été exprimé en décimal (ce qui est certainement le cas dans le programme qui t'a généré l'interface).
Donc je parie qu'en enlevant ces zéros de bourrage, tu ne désactiverais pas le mauvais bouton en utilisant ta constante.
Marsh Posté le 29-01-2009 à 11:27:53
bonjour,
j'ai mis sa a la place :
//define recource
#define ID_D_MODE 111
#define ID_GROUP 112
#define ID_SERVEUR 113
#define ID_CLIENT 114
#define ID_D_MAIN 115
#define ID_M_MENU_MAIN 116
#define ID_MODE 117
#define ID_B_OPEN_SAVE 118
#define ID_T_FILE 119
#define ID_T_IP 1110
#define ID_T_PORT 1111
#define ID_B_SEND_RECV 1112
mais sa marche toujour pas.
peut etre que le probleme ne vien pas de la.
peut etre quil vien de mon fichier ressource.
le voisi :
#include "main.h"
//dialog principale
ID_D_MAIN DIALOGEX 0, 0, 5+30+5+97+5, 5+11+5+11+5
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX
CAPTION "Send_File_RB [Client]"
MENU ID_M_MENU_MAIN
FONT 10, "Berlin Sans FB Demi", 0, 0, 0x0
BEGIN
DEFPUSHBUTTON "Open",ID_B_OPEN_SAVE,5,5,30,11
EDITTEXT ID_T_FILE,5+30+5,5,97,11,ES_AUTOHSCROLL
EDITTEXT ID_T_IP,5,5+11+5,65,11,ES_CENTER
EDITTEXT ID_T_PORT,5+65+5,5+11+5,27,11,ES_NUMBER|ES_CENTER
DEFPUSHBUTTON "Send",ID_B_SEND_RECV,5+65+5+27+5,5+11+5,30,11
END
//dialog pour choisir le mode serveur ou client
ID_D_MODE DIALOGEX 0, 0, 10+60+10, 20+10+5+20+15+10
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Mode"
FONT 9, "MS Sans Serif", 0, 0, 0x0
BEGIN
GROUPBOX "Mode",ID_GROUP,10,10,60,40
AUTORADIOBUTTON "Serveur",ID_SERVEUR,20,20,40,10
AUTORADIOBUTTON "Client",ID_CLIENT,20,20+10+5,40,10
DEFPUSHBUTTON "OK",IDOK,10,20+10+5+20,60,15
END
//menu de main
ID_M_MENU_MAIN MENU
BEGIN
POPUP "Options"
BEGIN
MENUITEM "Mode", ID_MODE
END
END
Marsh Posté le 29-01-2009 à 11:35:17
j'ai essayer de mettre des int a la place des define mais sa marche pas.
c'est normale?
Marsh Posté le 29-01-2009 à 13:34:00
dyroj a écrit : j'ai essayer de mettre des int a la place des define mais sa marche pas. |
Oui. Un #define ne crée pas de variable, c'est une macro de remplacement à la compilation.
Marsh Posté le 29-01-2009 à 15:16:03
Faire quoi ? Même en changeant les identifiants, tu as toujours le mauvais control qui est désactivé ?
Marsh Posté le 29-01-2009 à 16:41:16
J'ai l'impression que tu fais tout à la main, sans IDE. Ton fichier de ressources tu l'as recompilé lorsque tu as changé les defines ?
Edit: ton fichier de ressource à l'air d'être correct, tes defines aussi.
Marsh Posté le 29-01-2009 à 17:22:09
Oué, mais est-ce que tu as vu quelque part que ton fichier de ressource a bien été recompilé ?
Marsh Posté le 29-01-2009 à 18:00:40
Bah, chais pas ce que tu fais exactement, mais chez_moi_ca_marche™.
J'ai rajouté un :
Code :
|
à l'évédement WM_INITDIALOG, et c'est bien la zone d'édition qui est grisé, pas open :
Marsh Posté le 29-01-2009 à 18:07:08
moi aussi sa marche.
j'ai recrée le projet et j'y est insserer le meme code et sa marche je ne comprend pas vraiment pourquoi sa marchai pas mais bon l'ésenciel c'est que sa marche.
je te remersi pour ton aide tpierron.
tu peut me dire comment sa se fait que toi ta des beau bouton et textbox et moi il son moche.
quand je dit beau bouton sa veut dire style 3D...
Marsh Posté le 29-01-2009 à 18:17:15
Ah, ça c'est le Manifest XP (c.f. google). S'il n'est pas là, windows va utiliser une ancienne version (la v5) de la lib commoncontrol (celle qui gère l'interface). Pour activer les thèmes, il faut rajouter un fichier XML à la con (j'utilise Code::Blocks avec MinGW, tout ce qu'il y à faire c'est cocher une case, ça doit pareil avec Visual C++), pour utiliser la dernière version de la lib (v6), qui elle supporte les thèmes.
Marsh Posté le 28-01-2009 à 22:33:10
Bonjour a tous,
je suis en train de créer un programme et avec une interface graphique (winapi) créer par les ressource.
j'utilise les DEFINE pour identifier chaque control:
***************************
Les define :
#define
ID_D_MAIN 0005
#define
ID_M_MENU_MAIN 0006
#define
ID_MODE 0007
#define
ID_B_OPEN_SAVE 00010
#define
ID_T_FILE 00011
#define
ID_T_IP 00012
#define
ID_T_PORT 00013
#define
ID_B_SEND_RECV 00014
La dialog :
ID_D_MAIN DIALOGEX 0, 0, 5+30+5+97+5, 5+11+5+11+5
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX
CAPTION
"Send_File_RB [Client]"
MENU ID_M_MENU_MAIN
FONT 10,
"Berlin Sans FB Demi", 0, 0, 0x0
BEGIN
DEFPUSHBUTTON
"Open",ID_B_OPEN_SAVE,5,5,30,11
EDITTEXT ID_T_FILE,5+30+5,5,97,11,ES_AUTOHSCROLL
EDITTEXT ID_T_IP,5,5+11+5,65,11,ES_CENTER
EDITTEXT ID_T_PORT,5+65+5,5+11+5,27,11,ES_NUMBER|ES_CENTER
DEFPUSHBUTTON
"Send",ID_B_SEND_RECV,5+65+5+27+5,5+11+5,30,11
END
***************************
Le probleme c'est que quand je veut utiliser les define pour par exemple verouiller le TEXTBOX ip avec la fontion sa EnableWindow(GetDlgItem(hwnd,ID_T_IP),0); sa verouille le bouton open (ID_B_OPEN_SAVE).
merci a tous ceux qui repondront a ma question.
a++