本帖最后由 zhihuizhilv 于 2009-07-22 13:30:42 编辑

解决方案 »

  1.   


    不能使用MFC。SetFont是MFC专有,没有对应的API。
      

  2.   

    用这个呢??
    WM_CTLCOLOREDIT 
      

  3.   

    SendMessage(hWnd,WM_SETFONT, WPARAM)hFont,1);
      

  4.   

      BOOL   CALLBACK   AboutDlgProc   (HWND   hDlg,   UINT   message,    
                                                              WPARAM   wParam,   LPARAM   lParam)  
      {  
       
      static   HWND   hwndCtrl;  
      static RECT   rect;  
      static POINT   pt;  
      static   int   iEmail=0;  
        //HDC   hdc;  
      // PAINTSTRUCT   ps   ;  
      switch   (message)  
                {  
      case   WM_INITDIALOG:    
            hwndCtrl=GetDlgItem(hDlg,IDC_STATIC1); //获取静态文本框的句柄  
                          return   TRUE   ;  
      case   WM_LBUTTONDOWN:  
      if(iEmail)//若鼠标指针在静态文本框内  
      ShellExecute(hDlg,NULL,"mailto:[email protected]",0,0,0);    
                          EndDialog   (hDlg,   0)   ;  
        return   TRUE   ;  
      case   WM_CTLCOLORSTATIC   ://无法实现文本变色  
      if(iEmail)  
      SetTextColor((HDC)wParam,RGB(255,0,0));  
      else   SetTextColor((HDC)wParam,RGB(0,0,0));  
                          return   TRUE;  
      case   WM_MOUSEMOVE://可以实现鼠标命中测试  
      GetClientRect(hwndCtrl,&rect);  
      GetCursorPos(&pt);  
      ScreenToClient(hwndCtrl,&pt);  
           
      if(PtInRect(&rect,pt))//若鼠标指针在静态文本框内  
      {SetCursor(LoadCursor(NULL,IDC_HAND));//设置鼠标指针为手形  
      iEmail=1;  
      }  
      else    
      {SetCursor(LoadCursor(NULL,IDC_ARROW));//指针恢复正常  
      iEmail=0;  
      }  
      return   TRUE;          
                }  
        return   0;  
      }
      

  5.   


    这个试过,在CreateWindowEx成功之后,立刻使用它进行设置,但是没有效果。
      

  6.   

    刚写的代码BOOL CALLBACK WndProc(HWND hwndDlg,UINT uMsg,WPARAM wParam, LPARAM lParam)
    { if(WM_CLOSE==uMsg)
    {
    EndDialog(hwndDlg,0);
    }
    else if(WM_CTLCOLOREDIT==uMsg)
    {
    HWND hEdit=GetDlgItem(hwndDlg,IDC_EDIT1);
    HDC hEditDC=(HDC)wParam;
    COLORREF  cf=RGB(255,0,0);
    cf=SetTextColor(hEditDC,RGB(255,0,0));
    SetBkColor   (hEditDC,RGB(0,0,255))   ;   
    return (LONG)hBrush;
    }
    else if(WM_INITDIALOG==uMsg)
    {
    hBrush=CreateSolidBrush(RGB(0,0,255));
    }
    return 0;
    }
      

  7.   


    这个消息通过HFONT设置字体的大小、字体等属性。不能设置颜色。10楼的方法可以。
      

  8.   

    hEdit = CreateWindow (TEXT ("edit"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER , 0 , 0 , 710 , 40 , hWnd, (HMENU)IDC_EDIT1 , ((LPCREATESTRUCT) lParam) -> hInstance , NULL);
    DhEdit=GetDlgItem(hWnd,   IDC_EDIT1);hFont = CreateFontA(40 , 40 , 0 , 0 , 0 , 0 , 0 , 0 , GB2312_CHARSET , OUT_DEFAULT_PRECIS , CLIP_DEFAULT_PRECIS , ANTIALIASED_QUALITY , FIXED_PITCH , "黑体");hdc = GetDC(DhEdit);SetTextColor(hdc,RGB(255,0,255));SetBkColor(hdc,RGB(0,0,0));这怎么不行呀,我已经取得EDIT的DC,在DC上绘图也不行,别说设置前景色背景色了