OVH Cloud OVH Cloud

Modifier la couleur de fond d'un Ctrl STATIC SS_LEFT

5 réponses
Avatar
Nicolas Rentero
Bonjour à tous,

[Débutant]

J'ai créé une fenêtre POPUP (WS_VISIBLE | WS_POPUP| WS_DLGFRAME |
WS_SIZEBOX) dans laquelle j'inclus un control STATIC (WS_CHILD | WS_VISIBLE
| SS_LEFT | SS_SUNKEN) pour afficher du texte. La couleur du fond du control
STATIC est actuellement celle du POPUP. Je n'arrive pas à changer la couleur
du fond du control STATIC (SS_LEFT). Pourriez vous m'indiquer la marche à
suivre ?

Merci par avance,

N.R.

P.S. Le but étant d'avoir une petite fenêtre à fond blanc et avec bordure
dans laquelle est affiché un texte non sélectionnable, non modifiable par l'
utilisateur et positionnée dans une fenêtre de type POPUP.
(Langage C, VC++6, sans MFC)

5 réponses

Avatar
Manuel Leclerc
Nicolas Rentero a écrit :

[...] Je n'arrive pas à changer la couleur du fond du
control STATIC [...]



WM_CTLCOLORSTATIC

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/StaticControls/StaticControlReference/StaticControlMessages/WM_CTLCOLORSTATIC.asp
Avatar
Christian ASTOR
Nicolas Rentero a écrit:


J'ai créé une fenêtre POPUP (WS_VISIBLE | WS_POPUP| WS_DLGFRAME |
WS_SIZEBOX) dans laquelle j'inclus un control STATIC (WS_CHILD | WS_VISIBLE
| SS_LEFT | SS_SUNKEN) pour afficher du texte. La couleur du fond du control
STATIC est actuellement celle du POPUP. Je n'arrive pas à changer la couleur
du fond du control STATIC (SS_LEFT). Pourriez vous m'indiquer la marche à
suivre ?



Comme a dit Manuel...

P.S. Le but étant d'avoir une petite fenêtre à fond blanc et avec bordure
dans laquelle est affiché un texte non sélectionnable, non modifiable par l'
utilisateur et positionnée dans une fenêtre de type POPUP.
(Langage C, VC++6, sans MFC)



Sinon, une façon simple pour une Popup (avec ombre) est avec HtmlHelp()

{
HH_POPUP hp;
POINT pt;

memset(&hp, 0, sizeof(HH_POPUP));
hp.cbStruct = sizeof(HH_POPUP);

GetCursorPos(&pt);
hp.pt.x = pt.x;
hp.pt.y = pt.y;
hp.clrForeground = RGB(0, 0, 255);
hp.clrBackground = RGB(255, 255, 255);
hp.rcMargins.left = -1;
hp.rcMargins.right = -1;
hp.rcMargins.top = -1;
hp.rcMargins.bottom = -1;
hp.idString = 0;
hp.pszText = "This is line OnerThis is line TworThis is line Three";
HtmlHelp(NULL, NULL, HH_DISPLAY_TEXT_POPUP, (DWORD)&hp);
}
Avatar
Nicolas Rentero
Merci pour cette réponse,





"Manuel Leclerc" a écrit dans le message de
news: 403096f9$
Nicolas Rentero a écrit :

> [...] Je n'arrive pas à changer la couleur du fond du
> control STATIC [...]

WM_CTLCOLORSTATIC




http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/pla
tform/commctls/StaticControls/StaticControlReference/StaticControlMessages/W
M_CTLCOLORSTATIC.asp




J'ai essayé de traiter ce message mais sans succès avec un contrôle static
SS_LEFT. Par contre ça marche très bien avec un contrôle EDIT en
ES_READONLY.

Pourriez-vous m'indiquer comment procéder avec un contrôle static SS_LEFT
lors du traitement du message WM_CTLCOLORSTATIC car je n'y arrive pas. Il n'
est pas impossible que je n'utilise pas la bonne méthode ! : ((


Merci encore,



N.R.
Avatar
Nicolas Rentero
Merci, je vais expérimenter cela illico !



"Christian ASTOR" a écrit dans le message de
news: 4030b6ba$0$6978$
Nicolas Rentero a écrit:


> J'ai créé une fenêtre POPUP (WS_VISIBLE | WS_POPUP| WS_DLGFRAME |
> WS_SIZEBOX) dans laquelle j'inclus un control STATIC (WS_CHILD |


WS_VISIBLE
> | SS_LEFT | SS_SUNKEN) pour afficher du texte. La couleur du fond du


control
> STATIC est actuellement celle du POPUP. Je n'arrive pas à changer la


couleur
> du fond du control STATIC (SS_LEFT). Pourriez vous m'indiquer la marche


à
> suivre ?

Comme a dit Manuel...

> P.S. Le but étant d'avoir une petite fenêtre à fond blanc et avec


bordure
> dans laquelle est affiché un texte non sélectionnable, non modifiable


par l'
> utilisateur et positionnée dans une fenêtre de type POPUP.
> (Langage C, VC++6, sans MFC)

Sinon, une façon simple pour une Popup (avec ombre) est avec HtmlHelp()

{
HH_POPUP hp;
POINT pt;

memset(&hp, 0, sizeof(HH_POPUP));
hp.cbStruct = sizeof(HH_POPUP);

GetCursorPos(&pt);
hp.pt.x = pt.x;
hp.pt.y = pt.y;
hp.clrForeground = RGB(0, 0, 255);
hp.clrBackground = RGB(255, 255, 255);
hp.rcMargins.left = -1;
hp.rcMargins.right = -1;
hp.rcMargins.top = -1;
hp.rcMargins.bottom = -1;
hp.idString = 0;
hp.pszText = "This is line OnerThis is line TworThis is line Three";
HtmlHelp(NULL, NULL, HH_DISPLAY_TEXT_POPUP, (DWORD)&hp);
}



Avatar
Nicolas Rentero
J'ai trouvé l'erreur: mauvaise gestion du pinceau retourné après le
traitement du message.

C'est OK,
Merci!
N.R.
"Nicolas Rentero" a écrit
dans le message de news: 40311330$0$22376$
Merci pour cette réponse,





"Manuel Leclerc" a écrit dans le message de
news: 403096f9$
> Nicolas Rentero a écrit :
>
> > [...] Je n'arrive pas à changer la couleur du fond du
> > control STATIC [...]
>
> WM_CTLCOLORSTATIC
>
>



http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/pla



tform/commctls/StaticControls/StaticControlReference/StaticControlMessages/W
M_CTLCOLORSTATIC.asp
>

J'ai essayé de traiter ce message mais sans succès avec un contrôle


static
SS_LEFT. Par contre ça marche très bien avec un contrôle EDIT en
ES_READONLY.

Pourriez-vous m'indiquer comment procéder avec un contrôle static SS_LEFT
lors du traitement du message WM_CTLCOLORSTATIC car je n'y arrive pas. Il


n'
est pas impossible que je n'utilise pas la bonne méthode ! : ((


Merci encore,



N.R.