2015-10-29 25 views
1

我做了一個GUI,但想改變這一行的文字顏色。 我已經厭倦搜索,但我可以找到的所有內容都是改變打印輸出的顏色。gui中的彩色文字FreeBasic

warn1 = CreateWindowEx(0, "STATIC", "", WS_VISIBLE Or WS_CHILD, 20, 150, 300, 40, hWnd, 0, 0, 0) 
SetWindowText(warn1, "WARNING:") 

如果可能的話,我想用「紅色」表示「警告」。

回答

1

在父窗口中處理WM_CTLCOLORSTATIC窗口消息,並返回具有彩色筆刷集的相應設備上下文句柄。這裏是一個例子:

function WinProc(hWnd As HWND, uMsg As UINT, wParam As WPARAM, lParam As LPARAM) As LRESULT 
    Select Case uMsg 
    Case WM_CREATE: 
     warn1 = CreateWindowEx(0, "STATIC", "", WS_VISIBLE Or WS_CHILD, 20, 150, 300, 40, hWnd, 0, 0, 0) 
     SetWindowText(warn1, "WARNING:") 

    case WM_CTLCOLORSTATIC: 
     If lParam = warn1 Then 
     Dim As LRESULT lBrush = DefWindowProc(hWnd, uMsg, wParam, lParam) 
     SetBkMode(wParam, TRANSPARENT) 
     'SetBkColor(wParam, BGR(100, 100, 200)) 
     SetTextColor(wParam, BGR(255,0,0)) 
     return lBrush 
     EndIf 

     ... 

    End Select 

    Return DefWindowProc(hWnd, uMsg, wParam, lParam) 
End Function