要控制背光灯就必须知道相关设置,以下是wince中背光灯的设置。在BL_ReadRegistry函数中被读取。



[HKEY_CURRENT_USER\ControlPanel\BackLight]
   "ACTimeout"=dword:0000012c                ; 外部电源时,背光超时
   "UseExt"=dword:00000001                   ; 不知道干什么的,我没有使用
   "UseBattery"=dword:00000001               
   "BatteryTimeout"=dword:0000003c           ;电池供电时背光超时



   "BacklightLuminanceLevel"=dword:00000001  ;我定义的亮度




其实还可以定义其他很多东西,都可以自己添加,比如外部电源时背光亮度,电池供电时背光亮度,电源改变是否自动改变亮度等,都可以再驱动第一次加载的时候写一个默认值,或者在编译系统的时候就将其写入注册表。



很多网上都能下载到backlite驱动源码,就是背光控制驱动,但是基本都是不完整的驱动,需要根据你自己的平台写代码控制,不同的电路控制方式不一样,而且还跟LCD有关系。那么首先请先完成你自己平台的控制函数void BackLightCtrl(BOOL bLight)。



void BackLightCtrl(BOOL bLight)

    if (bLight)
    {     
        RETAILMSG(1, (TEXT("turn on!\r\n")));
    }
    else
    { 
        RETAILMSG(1, (TEXT("turn off!\r\n")));
    }
    
}
然后在BL_MonitorThread中根据不同事件控制背光灯打开跟关闭,如果你的LCD支持调节亮度的,那么可类似处理。另外为了让操作触摸屏时能自动恢复LCD,那么还需要在触摸屏驱动中添加“UserInputEvent”事件,并在按下或者抬起的动作set一下这个事件。这样就能跟背光驱动关联起来。键盘驱动类似。在我的驱动中使用了以下几个事件:



     ("BackLightChangeEvent"); 背光亮度改变,应用层软件与驱动通讯
     ("PowerChangedEvent");电源改变事件



     ("PowerManager/ActivityTimer/UserActivity");用户输入事件,这里提醒一下,很多文章都直接使用“UserInputEvent”为输入事件名,但是这个应该只是个代名词而已。



 



具体的源码我就不贴出来了,有需要的朋友可以直接给我发邮件!



 



最后在platform.reg中添加



[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\BackLite]
    "Index"=dword:0
    "Prefix"="BAK"
    "Dll"="backlite.dll"
    "Order"=dword:xx
在platform.bib中添加



backlite.dll    $(_FLATRELEASEDIR)\backlite.dll            NK    SH