标  题: 如何改变对话或窗体视窗的背景颜色                 
发信人: Pacific (无情~~~Nolove), 信区: VisualC
发信站: BBS 水木清华站 (Fri Oct 16 17:12:26 1998)


    调用CWinApp : : SetDialogBkColor可以改变所有应用程序的背景颜色。第           
一个参数指定了背景颜色,第二个参数指定了文本颜色。下例将应用程序对话设置         
为蓝色背景和黄色文本。                                                           
BOOL CSampleApp : : InitInstance  ( )                                            
{                                                                                
        …                                                                       
                                                                                 
    //use blue dialog with yellow text .                                         
    SetDialogBkColor (RGB (0, 0, 255 ), RGB ( 255 , 255 , 0 ) ) ;                
                                                                                 
        …                                                                       
}                                                                                
    需要重画对话(或对话的子控件)时,Windows向对话发送消息WM_CTLCOLOR,         
通常用户可以让Windows选择绘画背景的刷子,也可重置该消息指定刷子。下例说          
明了创建一个红色背景对话的步骤。                                                 
    首先,给对话基类增加一人成员变量CBursh :                                     
class CMyFormView : public CFormView                                             
{                                                                                
    …                                                                           
                                                                                 
    private :                                                                    
        CBrush m_ brush ; // background brush                                    
                                                                                 
    …                                                                           
} ;                                                                              
    其次, 在类的构造函数中将刷子初始化为所需要的背景颜色。                      
CMyFormView : : CMyFormView ( )                                                  
{                                                                                
    // Initialize background brush .                                             
    m_brush .CreateSolidBrush  (RGB ( 0, 0, 255 ) )                              
}                                                                                
    最后,使用ClassWizard处理WM_CTLCOLOR消息并返回一个用来绘画对话背景的         
刷子句柄。注意:由于当重画对话控件时也要调用该函数,所以要检测nCtlColor          
参量。                                                                           
HBRUSH CMyFormView : : OnCtlColor (CDC* pDC , CWnd*pWnd , UINT nCtlColor )       
                                                                                 
{                                                                                
    // Determine if drawing a dialog box . If we are , return +handle to         
    //our own background brush . Otherwise let windows handle it .               
    if (nCtlColor = = CTLCOLOR _ DLG )                                           
        return (HBRUSH) m_brush .GetSafeHandle ( ) ;                             
                                                                                 
    return CFormView : : OnCtlColor (pDC, pWnd , nCtlColor );                    
}                                                                                

--
        老鸟有交待,中鸟要等待,菜鸟要忍耐。
        老鸟级功夫:吹牛、聊天、玩MUD 、发呆。
        中鸟级功夫:睡觉、灌水、玩游戏、NT&VC。
        菜鸟级功夫:学习、泡妞、玩篮球、And so on

        My E-Mail: Nolove@263.net

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: yazhou.bbs@bbs.net.t]
※ 修改:.fzx 于 Aug  9 16:51:05 修改本文.[FROM: heart.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.137毫秒