Procédure pour BUTTON

ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 - 20 juil. 2007 à 14:21
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 - 20 juil. 2007 à 19:22
Bonjour,



Est-t'il possible d'associer une procédure à un BUTTON?
Si oui comment?
Merci de me joindre un exemple de code...

<hr />




Merci d'avance et à bientôt.






Nico

3 réponses

ctx_man Messages postés 285 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 20 janvier 2013 3
20 juil. 2007 à 16:16
Salut !
Perso j'ai jamais fait mais logiquement tu devrai pouvoir en faisant comme ca :

//Ta procédure pour ton boutton
LRESULT MaProcedureDeMonBoutton(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
//Ton code
}

HWND hButton = CreateWindow( ........ )//Je t'épargne la création du bouton, c'est juste pour le nom de variable hButton.
SetWindowLongPtr(hButton, GWLP_WNDPROC, (LONG_PTR)MaProcedureDeMonBoutton);


Voilà, normalement ca devrait marcher, a tester ^^
0
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
20 juil. 2007 à 18:46
Bonjour,

Merci pour la réponse, mais j'ai désormais un nouveau problème qui est apparu suite à l'ajout de SetWindowLongPtr dans mon programme.
La situation: une procédure est appliquée à un EDIT.
Voici la procédure:
LRESULT CasesProc(HWND hwndCase,UINT msgCase,WPARAM wParam,LPARAM lParam) {
     switch (msgCase) {
          case WM_KEYDOWN:
               {
                       SendMessage( hwndPrinc, WM_KEYDOWN, 0, 0 );
                       return 0;
               }
          default:
               return DefWindowProc( hwndCase , msgCase , wParam , lParam );
     }
}
Je voulais que cette procédure envoi un message à à la fenêtre principale lors d'un appuie sur une touche, celà fonctionne. Mais le problème est que mes EDIT ne s'affiche plus, je peux les cliquer (le curseur change quand je passe dessus et la fenêtre principale réagit lorsque j'appuie sur une touche dans un EDIT), mais je ne les vois plus du tout. D'où peut venir le problème? Peut-t'il venir de ma procédure?

<hr />

Merci d'avance pour votre aide et à bientôt...

Nico
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
20 juil. 2007 à 19:22
Salut,

il faut pas appeler DefWindowProc() mais <name>CallWindowProc()</name>
en lui passant en premier param le handle de l'ancienne procédure de
l'edit (celle qui est retournée par SetWindowLongPtr() quand tu
effectues le sous classement). <link href="../../../../../css/ie4.css" type="text/css" rel="stylesheet" /><!-- @ --><link href="../../../../../css/inetsdk.css" type="text/css" rel="stylesheet" /><!-- @ --><style type="text/css"><![CDATA[
PRE.clsCode { font-size:110%; }
PRE.clsSyntax { font-size:100%; }
TD DIV.clsBeta { display:none;}

A:link { color:#0000ff; text-decoration:underline;}
A:visited { color:#0000ff; text-decoration:underline;}
A:hover { color:#3366ff; text-decoration:underline;}
MSHelp\:link {
color:#0000ff;
text-decoration:underline;
cursor:hand;
hoverColor:#3366ff;
filterString: ;}
]]></style><link href="ms-help://Hx/HxRuntime/HxLink.css" type="text/css" rel="stylesheet" />

<xml id="_topicdata" pagetype="function" proj="WinUIHXS" name="CallWindowProc" pubpath="/WinUI/WindowsUserInterface/Windowing/WindowProcedures/WindowProcedureReference/WindowProcedureFunctions/CallWindowProc.htm"><!-- topic data --><root></root></xml>

<xml xmlns=""><mshelp:keyword index="A" term="_win32_CallWindowProc"></mshelp:keyword><mshelp:keyword index="A" term="_win32_CallWindowProc_cpp"></mshelp:keyword><mshelp:toctitle title="CallWindowProc Function"></mshelp:toctitle><mshelp:rltitle title="CallWindowProc Function ()"></mshelp:rltitle><mshelp:keyword index="F" term="CallWindowProc"></mshelp:keyword><mshelp:keyword index="K" term="CallWindowProc"></mshelp:keyword><mshelp:attr name="TopicType" value="kbRef"></mshelp:attr><mshelp:attr name="Locale" value="kbEnglish"></mshelp:attr><mshelp:attr name="DevLang" value="C++"></mshelp:attr><mshelp:attr name="Technology" value="WinUI"></mshelp:attr><mshelp:attr name="TechnologyVers" value="kbWinUI"></mshelp:attr><mshelp:attr name="DocSet" value="WCSDK"></mshelp:attr><mshelp:attr name="DocSet" value="LHSDK"></mshelp:attr><mshelp:attr name="DocSet" value="PSDK"></mshelp:attr><mshelp:attr name="TargetOS" value="Windows"></mshelp:attr><mshelp:attr name="APIName" value="CallWindowProcA"></mshelp:attr><mshelp:attr name="APIName" value="CallWindowProcW"></mshelp:attr><mshelp:attr name="TopicType" value="apiref"></mshelp:attr><mshelp:attr name="APIName" value="CallWindowProc"></mshelp:attr><mshelp:attr name="APIType" value="DllExport"></mshelp:attr><mshelp:attr name="APILocation" value="user32.dll"></mshelp:attr><mshelp:attr name="TopicType" value="kbSyntax"></mshelp:attr></xml>
0
Rejoignez-nous