在SDK中怎样改变用CreateDialogParam()函数创建的对话框的背景颜色?(在SDK中,不是MFC)

解决方案 »

  1.   

    // Filename : SimpleDlg.c--
    //////////////////// 程式開始 ////////////////////#pragma option w32
    #include "winbase.h--"
    #include "winuser.h--"
    #include "wingdi.h--"
    #include "simpleDlg.rc" // 直接把 rc 檔 include 進來,不用另外 compile#define DLGWINDOWEXTRA 30HINSTANCE _hInst; // 用全域變數存起來備用
    HWND _hDlg; // 同上char ClassName[] = "DLGCLASS"; // 視窗類別名稱,要跟 rc 檔定義的一樣
    char DialogName[] = "MyDialog"; // Dialog 資源名稱,要跟 rc 檔定義的一樣
    char WindowsTitle[] = "Sample Window"; // 視窗標題int main() // 程式進入點
    {
        MSG msg;    _hInst = GetModuleHandle(NULL);    if(!InitApplication(_hInst)) return FALSE; // 註冊視窗類別
        if(!InitInstance(_hInst)) return FALSE; // 產生視窗實體    while(GetMessage(#msg,NULL,0,0)) // 訊息迴圈
        {
            if(!IsDialogMessage(_hDlg,#msg))
            {
                TranslateMessage(#msg); // 翻譯鍵盤訊息
                DispatchMessage(#msg); // 將訊息丟到視窗函式,即 WndProc()
            }
        }    return msg.wParam;
    }BOOL InitApplication(HINSTANCE hInstance) // 註冊視窗類別
    {
        WNDCLASSEX wc = 0; // 預設值都設為零    wc.hIconSm = wc.hIcon = LoadIcon(_hInst,IDI_MAINICON); // 載入圖示
        wc.cbSize = sizeof(WNDCLASSEX);
        wc.cbWndExtra = DLGWINDOWEXTRA; // 特別注意!!一定要這樣設才行
        wc.style = CS_HREDRAW | CS_VREDRAW; // 視窗的 style
        wc.lpfnWndProc = #WndProc; // 視窗函式
        wc.hInstance = hInstance;
        wc.hCursor = LoadCursor(NULL, IDC_ARROW);
        wc.hbrBackground = COLOR_BTNFACE + 1; // 視窗背景顏色
        wc.lpszClassName = #ClassName; // 類別名稱
        return RegisterClassEx(#wc);
    }BOOL InitInstance(HINSTANCE hInstance) // 產生視窗實體
    {
        // 產生定義好的對話框
        _hDlg = CreateDialogParam(hInstance,#DialogName,NULL,NULL,NULL);    if (!_hDlg)    return FALSE;    ShowWindow(_hDlg,SW_SHOWNORMAL); // 顯示視窗
        UpdateWindow(_hDlg); // 通知視窗重繪    return TRUE;
    }LRESULT WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam) // 視窗函式
    {
        int wmId, wmEvent;    switch(message)
        {
        case WM_COMMAND: // 處理控制項
            wmId = LOWORD(wParam);
            wmEvent = HIWORD(wParam);
            switch (wmId)
            {
            default:
                return (DefWindowProc(hWnd, message, wParam, lParam));
            }
            break;
        case WM_DESTROY:
            PostQuitMessage(0); // 送出 WM_QUIT
            break;
        default:
            return (DefWindowProc(hWnd, message, wParam, lParam));
        }
        return 0;
    }//////////////////// 程式結束 ////////////////////
      

  2.   

    指定dlgproc,在dlgproc中响应WM_ERASEBKGROUND消息或者WM_PAINT。
      

  3.   

    to JennyVenus() 这样做是不是把所有的对话框都变成一样的颜色了吗?
    在WM_PAINT中写哪写函数啊?
      

  4.   

    1获得dc 2.FillSolidRect 3BitBlt