Пример #1
0
//================================================================================================
//-------------------------//-----------------------------+++--> Save Current Settings to Registry:
void OnApply(HWND hDlg)   //----------------------------------------------------------------+++-->
{
	wchar_t str[2];
	char bRefresh = ((unsigned)api.GetInt(L"Desktop",L"Multimon",1) != IsDlgButtonChecked(hDlg,IDCB_MULTIMON));
	
	api.SetInt(L"Calendar", L"bCustom", IsDlgButtonChecked(hDlg,IDCB_USECALENDAR));
	api.SetInt(L"Calendar", L"CloseCalendar", IsDlgButtonChecked(hDlg,IDCB_CLOSECAL));
	api.SetInt(L"Calendar", L"ShowWeekNums", IsDlgButtonChecked(hDlg,IDCB_SHOWWEEKNUMS));
	api.SetInt(L"Calendar", L"ShowDayOfYear", IsDlgButtonChecked(hDlg,IDCB_SHOW_DOY));
	api.SetInt(L"Calendar", L"CalendarTopMost", IsDlgButtonChecked(hDlg,IDCB_CALTOPMOST));
	api.SetInt(L"Calendar", L"ViewMonths", (int)SendDlgItemMessage(hDlg,IDC_CALMONTHSPIN,UDM_GETPOS32,0,0));
	api.SetInt(L"Calendar", L"ViewMonthsPast", (int)SendDlgItemMessage(hDlg,IDC_CALMONTHPASTSPIN,UDM_GETPOS32,0,0));
#	ifdef WIN2K_COMPAT
	if(api.OS == TOS_2000) {
		int value = IsDlgButtonChecked(hDlg,IDCB_TRANS2KICONS);
		SetDesktopIconTextBk(value);
		api.SetInt(L"Desktop", L"Transparent2kIconText", value);
		if(value)
			TimetableAdd(SCHEDID_WIN2K, 30, 30);
		else
			TimetableRemove(SCHEDID_WIN2K);
	}
#	endif // WIN2K_COMPAT
	api.SetInt(L"Desktop", L"MonOffOnLock", IsDlgButtonChecked(hDlg, IDCB_MONOFF_ONLOCK));
	api.SetInt(L"Desktop", L"Multimon", IsDlgButtonChecked(hDlg,IDCB_MULTIMON));
	
	str[1] = '\0';
	str[0] = '0' + (char)ComboBox_GetCurSel(GetDlgItem(hDlg,IDC_FIRSTWEEK));
	SetInternational(L"iFirstWeekOfYear", str);
	str[0] = '0' + (char)ComboBox_GetCurSel(GetDlgItem(hDlg,IDC_FIRSTDAY));
	SetInternational(L"iFirstDayOfWeek", str);
	
	if(api.OS >= TOS_XP) { // This feature requires XP+
		BOOL enabled=IsDlgButtonChecked(hDlg, IDCB_MONOFF_ONLOCK);
		if(enabled){
			RegisterSession(g_hwndTClockMain);
		} else {
			UnregisterSession(g_hwndTClockMain);
		}
	}
	if(api.OS >= TOS_WIN10){
		int old_calendar = api.GetSystemInt(HKEY_LOCAL_MACHINE, kSectionImmersiveShell, kKeyWin32Tray, 0);
		if((int)IsDlgButtonChecked(hDlg, IDC_OLDCALENDAR) != old_calendar){
			wchar_t param[5] = L"/Wc0";
			wchar_t exe[MAX_PATH];
			if(!old_calendar)
				param[3] = '1';
			if(api.ExecElevated(GetClockExe(exe), param, NULL) == 1)
				CheckDlgButton(hDlg, IDC_OLDCALENDAR, old_calendar);
		}
	}
	if(bRefresh){
		SendMessage(g_hwndClock,CLOCKM_REFRESHCLOCK,0,0);
	}
}
Пример #2
0
long FAR PASCAL _export WndProc (HWND hwnd,
                                 UINT message,
                                 UINT wParam,
                                 LONG lParam)
   {
   HDC            hdc;
   PAINTSTRUCT    ps;

                  
//   TRACE_STR("ENTER WndProc");
   switch(message)
      {
      case WM_CREATE:
         {
         SetInternational();
         }
      case WM_TIMER :
         {
         InvalidateRect(hwnd,NULL,FALSE);
         return 0;
         }
      case WM_PAINT :
         {
         hdc = BeginPaint(hwnd,&ps);
         WndPaint(hwnd,hdc);
         EndPaint(hwnd,&ps);
         return 0;
         }

      case WM_WININICHANGE :
         SetInternational ();
         InvalidateRect(hwnd,NULL,TRUE);
      
         return 0;
         
      case WM_DESTROY :
         {
         // insert a WM_QUIT in the queue...
         KillTimer (hwnd, ID_TIMER);
         TRACE_STR("WM_DESTROY..");
         PostQuitMessage (0);
         TRACE_STR("EXIT WndProc");
         return 0;            
         }
      }//switch
//   TRACE_STR("EXIT WndProc");
   // *********************extremely important!!! ******************      
   // **                   extremely important!!!                 **
   // **                   extremely important!!!                 **
   return DefWindowProc (hwnd, message, wParam, lParam);            
   // **                   extremely important!!!                 **
   // **                   extremely important!!!                 **
   // *********************extremely important!!! ******************      
   } //WndProc