home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2005 October / Gamestar_77_2005-10_dvd.iso / Utility / attsetup.exe / plugins / api / vc++ / example / osdtime / osdtime.cpp next >
C/C++ Source or Header  |  2005-07-26  |  5KB  |  171 lines

  1. // osdtime.cpp : Defines the entry point for the DLL application.
  2. //
  3. // OSD Example plugins
  4. // (c) 2005 Ray Adams
  5. // Updates by Pavel Vlk 
  6. //
  7. //
  8. //
  9. #include "stdafx.h"
  10. #include "resource.h"
  11. HINSTANCE hinstDLLl;
  12. lppatt_proc Main_Proc;
  13. HWND ATT_Win_Handle;
  14. int InitDone=0;
  15. int ShowTime=0;
  16. int ShowRes=0;
  17. int ShowBat=0;
  18.  
  19. char reg_path[]="SOFTWARE\\Ray Adams\\ATITrayTools\\Profiles\\Plugins\\OSDTime";
  20.  
  21. void LoadSettings() {
  22.     ShowTime=(IsValueEnabled(reg_path,"ShowTime")) ? 1 : 0;
  23.     ShowRes=(IsValueEnabled(reg_path,"ShowRes")) ? 1 : 0;
  24.     ShowBat=(IsValueEnabled(reg_path,"ShowBat")) ? 1 : 0;
  25.  
  26. }
  27. BOOL APIENTRY DllMain( HANDLE hModule, 
  28.                        DWORD  ul_reason_for_call, 
  29.                        LPVOID lpReserved
  30.                      )
  31. {
  32.     hinstDLLl=(HINSTANCE)hModule;
  33.     return TRUE;
  34. }
  35.  
  36. void APIENTRY get_plug_info(PPlugInfo Data) {
  37.     strcpy(Data->Menu_Text,"OSD Example");
  38.     Data->PluginType=PL_OSD;
  39.     Data->Sign=ATT_Sign;
  40. }
  41.  
  42.  
  43.  
  44. bool IsValueEnabled(char *path, char* valuename) {
  45.         HKEY mykey;
  46.         unsigned int value; 
  47.         unsigned long Size=4; 
  48.         RegCreateKeyEx(HKEY_CURRENT_USER,path, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,NULL, &mykey, NULL);
  49.         int m=RegQueryValueEx(mykey,valuename,NULL, NULL, (LPBYTE)&value,&Size);
  50.         RegCloseKey(mykey);
  51.         
  52.         if ((m==ERROR_SUCCESS) && (value==1)) {
  53.                 return true;
  54.         } else { return false; }
  55.         
  56.         return true;
  57. }
  58.  
  59. void WriteValue(char *path, char* valuename, DWORD value) {
  60.         HKEY mykey;
  61.         unsigned long Size=sizeof(DWORD); 
  62.         RegCreateKeyEx(HKEY_CURRENT_USER,path, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,NULL, &mykey, NULL);
  63.         RegSetValueEx(mykey,valuename,0, REG_DWORD,(CONST BYTE *)&value, Size);
  64.         RegCloseKey(mykey);
  65. }
  66.  
  67. void APIENTRY exec_plugin (HWND Win_Handle, lppatt_proc ATT_Proc) {
  68.     //Initialization stage
  69.     if (InitDone!=0) { return; }
  70.  
  71.     //Save ATT main window handle
  72.     ATT_Win_Handle=Win_Handle;
  73.     InitDone=1;
  74.     LoadSettings();
  75. }
  76.  
  77. void APIENTRY done_plugin() {
  78.     //
  79. }
  80.  
  81. void APIENTRY config_plugin(HWND Win_Handle) {
  82.   //Configuration dialog box.
  83.     //must do all initialization temporarily!
  84.     DialogBox(hinstDLLl,MAKEINTRESOURCE(IDD_DIALOG1),Win_Handle,MyDialogProc);
  85.     
  86.     
  87.     //free all temporarily initialized variables
  88. }
  89. void APIENTRY get_osd_string(char* osd_string) {
  90.     if (ShowTime==1) {
  91.         SYSTEMTIME tm;
  92.         GetLocalTime(&tm);
  93.         GetTimeFormat(LOCALE_USER_DEFAULT,0,&tm,NULL,osd_string,255); //"hh':'mm':'ss "
  94.         strcat(osd_string," ");
  95.     }
  96.     if (ShowRes==1) {
  97.         DEVMODE lpDevMode; 
  98.         char resval[50];
  99.         EnumDisplaySettings(NULL,ENUM_CURRENT_SETTINGS,&lpDevMode);     
  100.         sprintf(resval," %dx%dx%d %dHz",lpDevMode.dmPelsWidth,lpDevMode.dmPelsHeight,lpDevMode.dmBitsPerPel, lpDevMode.dmDisplayFrequency);
  101.         strcat(osd_string,resval);
  102.     }
  103.     //Added by Pavel Vlk 
  104.     if (ShowBat==1) {
  105.                 SYSTEM_POWER_STATUS pwstat;
  106.                 ZeroMemory(&pwstat,sizeof(pwstat));
  107.                 char stat[50];
  108.                 GetSystemPowerStatus(&pwstat);
  109.                 if (pwstat.ACLineStatus==1) strcat(osd_string," Online");
  110.                 else {
  111.                     if (pwstat.BatteryLifeTime==-1) {
  112.                     sprintf(stat," %d%%(?)",pwstat.BatteryLifePercent);
  113.                     } else {
  114.                     sprintf(stat," %d%%(%dh:%dm)",pwstat.BatteryLifePercent,pwstat.BatteryLifeTime/60/60,pwstat.BatteryLifeTime/60 - (pwstat.BatteryLifeTime/60/60*60));
  115.                     }
  116.                     strcat(osd_string,stat);
  117.                 }
  118.     }
  119.  
  120. }
  121.  
  122.  
  123. void SaveSettings(HWND hwndDlg) {
  124.     ShowTime=(IsDlgButtonChecked(hwndDlg,IDC_CHECK1)) ? 1 : 0;
  125.     ShowRes=(IsDlgButtonChecked(hwndDlg,IDC_CHECK2)) ? 1 : 0;
  126.     ShowBat=(IsDlgButtonChecked(hwndDlg,IDC_CHECK3)) ? 1 : 0;
  127.     WriteValue(reg_path,"ShowTime",ShowTime);
  128.     WriteValue(reg_path,"ShowRes",ShowRes);
  129.     WriteValue(reg_path,"ShowBat",ShowBat);
  130. }
  131.  
  132. void LoadRegSettings(HWND hwndDlg) {
  133.     
  134.     HWND check1=GetDlgItem(hwndDlg,IDC_CHECK1);
  135.     SetFocus(check1);
  136.  
  137.     CheckDlgButton(hwndDlg,IDC_CHECK1,(IsValueEnabled(reg_path,"ShowTime")) ? BST_CHECKED : BST_UNCHECKED);
  138.     CheckDlgButton(hwndDlg,IDC_CHECK2,(IsValueEnabled(reg_path,"ShowRes")) ? BST_CHECKED : BST_UNCHECKED);
  139.     CheckDlgButton(hwndDlg,IDC_CHECK3,(IsValueEnabled(reg_path,"ShowBat")) ? BST_CHECKED : BST_UNCHECKED);
  140. }
  141. BOOL CALLBACK MyDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {
  142.         switch (uMsg) {
  143.             case WM_INITDIALOG:
  144.                     LoadRegSettings(hwndDlg);
  145.                     return true;
  146.                     break;
  147.             case WM_CLOSE: 
  148.                         EndDialog(hwndDlg,0);
  149.                         break;
  150.             case WM_COMMAND: 
  151.                  switch (LOWORD(wParam)) 
  152.                  { 
  153.                     case IDOK: 
  154.                         SaveSettings(hwndDlg);
  155.                         EndDialog(hwndDlg,0);
  156.                         break; 
  157.                     case IDCANCEL: 
  158.                         EndDialog(hwndDlg,0);
  159.                         break; 
  160.                 } 
  161.             case WM_KEYDOWN:
  162.                  if (wParam==2) {
  163.                     EndDialog(hwndDlg,0);
  164.                     return true;
  165.                  }
  166.                  break;
  167.  
  168.         }
  169.         return FALSE;
  170.     
  171. }