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

  FORUM HardWare.fr
  Programmation
  C

  problem de define en c avec winapi

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problem de define en c avec winapi

n°1844463
dyroj
Posté le 28-01-2009 à 22:33:10  profilanswer
 

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++

mood
Publicité
Posté le 28-01-2009 à 22:33:10  profilanswer
 

n°1844468
tpierron
Posté le 28-01-2009 à 22:55:28  profilanswer
 

Mouais 12 en octal, ça donne 10 en décimal. Vire les 0 qu'il y a avant les nombres dans tes defines.

n°1844482
dyroj
Posté le 28-01-2009 à 23:52:00  profilanswer
 

sa marche pas maintenant sa reconnai aucain control.
je compren pas c bizare

n°1844495
tpierron
Posté le 29-01-2009 à 03:24:19  profilanswer
 

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 :
  1. #define ID_B_OPEN_SAVE 00010


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.

n°1844581
dyroj
Posté le 29-01-2009 à 11:27:53  profilanswer
 

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

n°1844591
dyroj
Posté le 29-01-2009 à 11:35:17  profilanswer
 

j'ai essayer de mettre des int a la place des define mais sa marche pas.
c'est normale?

n°1844665
Elmoricq
Modérateur
Posté le 29-01-2009 à 13:34:00  profilanswer
 

dyroj a écrit :

j'ai essayer de mettre des int a la place des define mais sa marche pas.
c'est normale?


Oui. Un #define ne crée pas de variable, c'est une macro de remplacement à la compilation.

n°1844753
dyroj
Posté le 29-01-2009 à 14:49:22  profilanswer
 

mais alors personne sais pourquoi sa me fai sa.

n°1844774
tpierron
Posté le 29-01-2009 à 15:16:03  profilanswer
 

Faire quoi ? Même en changeant les identifiants, tu as toujours le mauvais control qui est désactivé ?

n°1844778
dyroj
Posté le 29-01-2009 à 15:19:03  profilanswer
 

en changeant plus rien n'est desactiver.

mood
Publicité
Posté le 29-01-2009 à 15:19:03  profilanswer
 

n°1844779
dyroj
Posté le 29-01-2009 à 15:19:35  profilanswer
 

et vous avez verifier le fichier ressource.

n°1844852
tpierron
Posté le 29-01-2009 à 16:41:16  profilanswer
 

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.


Message édité par tpierron le 29-01-2009 à 16:42:17
n°1844854
dyroj
Posté le 29-01-2009 à 16:42:15  profilanswer
 

je suis sous vc++

n°1844890
tpierron
Posté le 29-01-2009 à 17:22:09  profilanswer
 

Oué, mais est-ce que tu as vu quelque part que ton fichier de ressource a bien été recompilé ?

n°1844893
dyroj
Posté le 29-01-2009 à 17:23:16  profilanswer
 

oui il a ete recompiler

n°1844911
tpierron
Posté le 29-01-2009 à 18:00:40  profilanswer
 

Bah, chais pas ce que tu fais exactement, mais chez_moi_ca_marche™.
 
J'ai rajouté un :

Code :
  1. EnableWindow(GetDlgItem(hwndDlg,ID_T_IP),0);

à l'évédement WM_INITDIALOG, et c'est bien la zone d'édition qui est grisé, pas open :
 
http://www.izipik.com/images/20090129/isooyg-dialog-win32-ressource-file.png
 

n°1844919
dyroj
Posté le 29-01-2009 à 18:07:08  profilanswer
 

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...

n°1844928
tpierron
Posté le 29-01-2009 à 18:17:15  profilanswer
 

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.


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

  problem de define en c avec winapi

 

Sujets relatifs
[C] POSIX message queues : #define MQ_MAXMSG 10 ???Scrolling problem !
problem on spriteManipulation d'un nom de template dans une #define-macro
problem : invalid database handle (no active connection)problem de recuperation du contenu d variable sous perl
problem de recuperation du contenu d variable sous perldefine probleme avec C
[XML]problem chemin relatif pour feuille de style xsl avec IE et FFquestion bete de #define
Plus de sujets relatifs à : problem de define en c avec winapi


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