2010-12-01 41 views
0

Je suis en train d'écrire application simple interface utilisateur sur Windows Mobile 5, je veux afficher une editbox à l'utilisateur avec la couleur de retour dans toute la zone d'édition, mais je ne réussis pas approche ....... chaque fois que j'attrape l'événement de fenêtre pour le contrôle d'édition et appelez setBkColor(), il affichera seulement la zone de texte avec la couleur donnée et non la boîte entière d'édition.win32: afficher editbox avec la couleur noire dans la zone de texte sur Windows Mobile 5

Je souhaite que la couleur donnée soit affichée à l'utilisateur lorsque la fenêtre présentée à l'utilisateur ne l'est pas lorsque l'utilisateur entre les données dans la zone d'édition.

S'il vous plaît laissez-moi savoir la solution, encore une fois son code d'application win32 natif MFC ne

regds Suhail

Répondre

1

SetBkColor ne définit que la couleur d'arrière-plan pour le texte. Pour modifier l'arrière-plan de l'ensemble du contrôle, vous devez traiter le message WM_CTLCOLOREDIT et renvoyer un pinceau de votre choix. Vous pouvez le faire dans votre WndProc comme ceci: (en supposant hEdit est la poignée de votre contrôle d'édition)

case WM_CTLCOLOREDIT: 
    if ((HWND)lParam == hEdit) { 
    HDC hDC = (HDC)wParam; 
    SetBkMode(hDC, TRANSPARENT); 
    return (LRESULT)GetStockObject(BLACK_BRUSH); // or any other brush you want 
    } 
    break; 

En réglant le mode d'arrière-plan transparent, vous n'avez pas besoin d'un appel SetBkColor séparé - le texte être peint de façon transparente sur le fond.