Bonjour,
Je n'utilise pas les MFC. J'ai ajouté un bouton initialement Disabled = TRUE
Comment réactiver ce bouton ?
De meme si je crée une Edit Control en read-only, comment la faire passer en read/write par une commande ?
Merci.
Version imprimable
Bonjour,
Je n'utilise pas les MFC. J'ai ajouté un bouton initialement Disabled = TRUE
Comment réactiver ce bouton ?
De meme si je crée une Edit Control en read-only, comment la faire passer en read/write par une commande ?
Merci.
comme ca :
Code:nomdetonbouton.EnableWindow(TRUE);
Merci mais ca me donne ca:
error C2228: left of '.EnableWindow' must have class/struct/union
si tu appliques la fonction à un objet qui n'est pas défini, alors c'est normal.
Le bouton existe bien, donc je ne vois vraiment pas comment faire
:D moi non plus si tu ne nous montre pas un peu de code. l'erreur que tu as provient du fait que l'objet auquel tu essaie d'appliquer la fonction n'est pas reconnu.
le bouton IDC_WATERMARK est disabled par defautCode:
1
2
3
4
5
6
7
8 BOOL APIENTRY AnalyzeProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) { int Select; switch (uMsg) { case WM_INITDIALOG: //SendDlgItemMessage(hDlg, IDC_WATERMARK, WM_ENABLE, TRUE, 0); IDC_WATERMARK.EnableWindow(TRUE);
IDC_WATERMARK n'est pas un bouton, mais un identifiant de ressource.
c'est un nombre entier dont tu trouveras la définition dans le fichier resources.h de ton projet.
Code:GetDlgItem(IDC_WATERMARK)->EnableWindow(TRUE);
Alors oui j'ai essayé ca, voila ce que ca me sort:Si je remplace parCitation:
error C2660: 'GetDlgItem' : function does not take 1 arguments
error C2227: left of '->EnableWindow' must point to class/struct/union/generic type
cela me met:Code:GetDlgItem(hDlg,IDC_WATERMARK)->EnableWindow(TRUE);
Citation:
error C2039: 'EnableWindow' : is not a member of 'HWND__'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\windef.h(207) : see declaration of 'HWND__'
:lol: ok, j'avais pas vu que tu n'utilisais pas les MFC ...
je ne connais pas Win32 désolé :cry:
ce sont les memes fonctions en win32 :
::EnableWindow existe il faut juste lui donner le handle de fenetre en plus.
voir doc MSDN.
:D
tu peux me dire alors pourquoi ca marche pas ? (un peu plus que "voir doc") ca serait super sympa ;)Citation:
Si je remplace par Code:
GetDlgItem(hDlg,IDC_WATERMARK)->EnableWindow(TRUE);
cela me met: Citation:
error C2039: 'EnableWindow' : is not a member of 'HWND__'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\windef.h(207) : see declaration of 'HWND__'
d'ailleurs meme si je metca produit le meme resultatCode:GetDlgItem(hDlg,IDC_WATERMARK)->EnableWindow(hDlg,TRUE);
et bien il faut savoir ou tu te situes:Citation:
Envoyé par OyyoDams
soit tu utilises les api win32 alors les appels sont du C pas du C++
ou alors les MFC.
si c'est du win32:
si c'est en MFC:Code:
1
2 ::EnableWindow(GetDlgItem(hDlg,IDC_WATERMARK),TRUE);
:DCode:
1
2
3 // a partir de la boite de dialogue GetDlgItem(IDC_WATERMARK)->EnableWindow(TRUE);
Genial ca marche merci beaucoup, c'est vrai que j'ai encore du mal a adapter du code MFC en code WIN32...
Reste plus qu'a trouver comment faire passer en read/write une Edit Control initialement en read-only, et je pourrai dormir tranquille :lol:
En tout cas déja merci pour le bouton
si tu as compris que les fonctions MFC et WIN32 qui s'appliquent aux fenetres sont identiques au detail que
les MFC encaspulent les apis classiques dans une classe avec le handle de fenetre.
alors regarde la faq et adapte ton appel pour du win32:
http://c.developpez.com/faq/vc/?page=CWnd#ModifyStyle
la fonction a utiliser est donc ModifyStyle...
:D
Tu peut faire comme ça aussi :
ensuite tu met ça pour le réactiver :Code:
1
2 EnableWindow(GetDlgItem(hdlg, 100), FALSE); // GetDlgItem(hdlg, 100) pour trouve le handle du boutton
:)Code:EnableWindow(GetDlgItem(hdlg, 100), TRUE);
Merci mais visiblement en win32 il ne connait pas du tout la fonction ModifyStyle :(
Je me répons a moi meme, ca peut servir a d'autres, j'ai trouvé:
Code:SendMessage(HWND,EM_SETREADONLY, FALSE/TRUE, 0);