0 votes

Mettez en surbrillance le contrôle Win32 Edit pour indiquer qu'il s'agit de celui à remplir maintenant.

J'ai une application Win32 GUI qui possède plusieurs contrôles d'édition (simple vieux nom de classe "EDIT").

La logique veut que l'utilisateur remplisse la zone d'édition sélectionnée par l'application. Pour qu'il soit plus clair de savoir laquelle doit être remplie, je veux mettre en évidence la boîte d'édition "actuelle". Ensuite, lorsque l'utilisateur a terminé sa saisie et demandé à l'application de poursuivre, la zone de saisie doit redevenir "habituelle".

L'idéal serait de peindre son arrière-plan avec une couleur de son choix. Comment pourrais-je réaliser cette sélection ou une sélection similaire - peut-être pourrais-je substituer temporairement la brosse utilisée pour peindre le contrôle ? Si ce n'est pas possible avec le contrôle d'édition, quels sont les contrôles de remplacement disponibles dans Windows à partir de Win2k ?

3voto

1800 INFORMATION Points 55907

Vous pouvez gérer le WM_CTLCOLOREDIT notification dans la fenêtre parent des contrôles d'édition. La notification est envoyée lorsque le contrôle d'édition est sur le point d'être dessiné. Donc, en général, vous utiliserez RedrawWindow ou quelque chose pour forcer un redessin, puis gérer l'inévitable notification de couleur de contrôle. Dans ce cas, vous définissez la couleur avant et arrière pour le contexte du périphérique qui est transmis avec la notification :

LRESULT OnControlColorEdit(HWND hwnd, DWORD msg, WPARAM wParam, LPARAM lParam)
{
   if( !toHighlight ) {
       return DefWindowProc( hwnd, msg, wParam, lParam );
   }
   HDC dc = reinterpret_cast<HDC>(wParam);
   ::SetBkColor(dc, whatever);
   ::SetTextColor(dc, whatever);
   HBRUSH brush = // create a solid brush of necessary color - should cache it and destroy when no longer needed
   return reinterpret_cast<LRESULT>( brush );
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X