VC++: Eingabefeld --> Textgröße und Hintergrundfarbe ändern
-
Kann mir jemand sagen, wie ich bei einem Eingabefeld oder variablen Text innerhalb eines Dialogfensters die Textgröße und die Hintergrundfarbe ändern kann. Der Hintergrund soll (je nach angezeigtem Wert) zwischen rot und grün wechseln, die Schriftgröße möchte ich für bestimmte Eingabefelder ändern, so, daß die Werte auch von weitem erkennbar sind. Schaltflächen und andere Eingabefelder sollten weiterhin den Grundeinstellungen entsprechen.
Kann man ggf. hierfür irgendwo den Quellcode ansehen?
Vielleicht kann jemand mir -Dummi- (komme aus der VB-Welt) das erklären!Danke im Voraus!
-
ja bei visual basic war das ändern des hintergrunds ja ein traum!!!
keine ahnung wie du das mit den MFC machst. aber wenn du mit API programmierst würde es ungefähr so aussehen:BOOL DialogProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) { static HBRUSH hEditBrush; switch( message ) { case WM_INITDIALOG: hEditBrush = CreateSolidBrush( RGB(255, 0, 0) ); return FALSE; case WM_CTLCOLOREDIT: //schrift blau färben, hintergrund weiß SetTextColor((HDC)wParam, RGB(255, 0, 0)); SetBkColor((HDC)wParam, RGB(255, 255, 255)); return (BOOL)hEditBrush; ... } return FALSE; }
-
Hi
ich geb dir mal ein paar Stichworte, damit findest hier im Forum oder bei Google massenhaft Beispiele/Quellcodes.
Die Position und die Größe eines Fensters oder eines Controls (=Eingabefeld, Button,...) kannst du mit
BOOL SetWindowPos( const CWnd* pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags );ändern. Hier ein paar Informationen aus der MSDN zu dieser Funktion:
Parameters
pWndInsertAfter
Identifies the CWnd object that will precede this CWnd object in the Z-order. This parameter can be a pointer to a CWnd or a Pointer to one of the following values:wndBottom Places the window at the bottom of the Z-order. If this CWnd is a topmost window, the window loses its topmost status; the system places the window at the bottom of all other windows.
wndTop Places the window at the top of the Z-order.
wndTopMost Places the window above all nontopmost windows. The window maintains its topmost position even when it is deactivated.
wndNoTopMost Repositions the window to the top of all nontopmost windows (that is, behind all topmost windows). This flag has no effect if the window is already a nontopmost window.
See the “Remarks” section for this function for rules about how this parameter is used.x
Specifies the new position of the left side of the window.y
Specifies the new position of the top of the window.cx
Specifies the new width of the window.cy
Specifies the new height of the window.nFlags
Specifies sizing and positioning options. This parameter can be a combination of the following:SWP_DRAWFRAME Draws a frame (defined when the window was created) around the window.
SWP_FRAMECHANGED Sends a WM_NCCALCSIZE message to the window, even if the window's size is not being changed. If this flag is not specified, WM_NCCALCSIZE is sent only when the window's size is being changed.
SWP_HIDEWINDOW Hides the window.
SWP_NOACTIVATE Does not activate the window. If this flag is not set, the window is activated and moved to the top of either the topmost or the nontopmost group (depending on the setting of the pWndInsertAfter parameter).
SWP_NOCOPYBITS Discards the entire contents of the client area. If this flag is not specified, the valid contents of the client area are saved and copied back into the client area after the window is sized or repositioned.
SWP_NOMOVE Retains current position (ignores the x and y parameters).
SWP_NOOWNERZORDER Does not change the owner window’s position in the Z-order.
SWP_NOREDRAW Does not redraw changes. If this flag is set, no repainting of any kind occurs. This applies to the client area, the nonclient area (including the title and scroll bars), and any part of the parent window uncovered as a result of the moved window. When this flag is set, the application must explicitly invalidate or redraw any parts of the window and parent window that must be redrawn.
SWP_NOREPOSITION Same as SWP_NOOWNERZORDER.
SWP_NOSENDCHANGING Prevents the window from receiving the WM_WINDOWPOSCHANGING message.
SWP_NOSIZE Retains current size (ignores the cx and cy parameters).
SWP_NOZORDER Retains current ordering (ignores pWndInsertAfter).
SWP_SHOWWINDOW Displays the window.
Die Textgröße und auch die Schriftart kannst du mit CWnd::SetFont ändern. Schau dir dazu in der MSDN einmal die Klasse CFont an (und natürlich die Funkton SetFont).
Schau dir für den Hintergrund des Eingabefeldes mal die Nachricht WM_CTLCOLOR an. Eine Lösung dazu findest du z.B. auch hier: http://www.codeguru.com/editctrl/ColorWeir.html
Wenn du gar nicht weiterkommst, darfst du gerne fragen

Grüße Rapha