Ejemplo n.º 1
0
static void toggleCalendar(HWND hDlg)
{
	if (monthcal == NULL) {
		INITCOMMONCONTROLSEX icex;
		icex.dwSize = sizeof(icex);
		icex.dwICC = ICC_DATE_CLASSES;
		InitCommonControlsEx(&icex);
		monthcal = CreateWindowEx(0, MONTHCAL_CLASS, _T(""), WS_BORDER | WS_POPUP, 0, 0, 0, 0, hDlg, NULL, NULL, NULL);
		/* subclass month calendar, so that it hides when looses focus */
		monthcalOriginalWndProc = (WNDPROC) SetWindowLongPtr(monthcal, GWLP_WNDPROC, (LONG_PTR) MonthCalWndProc);
	}
	if (IsWindowVisible(monthcal))
		ShowWindow(monthcal, SW_HIDE);
	else {
		RECT rc;
		int x;
		int y;
		SYSTEMTIME st;
		GetWindowRect(GetDlgItem(hDlg, IDC_PICKDATE), &rc);
		x = rc.left;
		y = rc.bottom;
		MonthCal_GetMinReqRect(monthcal, &rc);
		SetWindowPos(monthcal, NULL, x, y, rc.right, rc.bottom, SWP_SHOWWINDOW | SWP_NOZORDER);
		y = ASAPInfo_GetYear(edited_info);
		if (y > 0) {
			DWORD view;
			int month = ASAPInfo_GetMonth(edited_info);
			st.wYear = y;
			if (month > 0) {
				int day = ASAPInfo_GetDayOfMonth(edited_info);
				st.wMonth = month;
				if (day > 0) {
					st.wDay = day;
					view = MCMV_MONTH;
				}
				else {
					st.wDay = 1;
					view = MCMV_YEAR;
				}
			}
			else {
				st.wMonth = 1;
				st.wDay = 1;
				view = MCMV_DECADE;
			}
			(void) MonthCal_SetCurSel(monthcal, &st);
			(void) MonthCal_SetCurrentView(monthcal, view);
		}
		SetFocus(monthcal);
	}
}
Ejemplo n.º 2
0
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp) {
	RECT rect0, rect1;
	SYSTEMTIME time;

	switch (msg) {
	case WM_COMMAND:
		if (!HIWORD(wp) && LOWORD(wp)) DestroyWindow(hwnd);
		break;
	case WM_APP_NOTIFYCALLBACK:
		switch (LOWORD(lp)) {
		case WM_CONTEXTMENU:
			if (!hsubmenu) break;
			SetForegroundWindow(hwnd);
			TrackPopupMenuEx(hsubmenu, 0, LOWORD(wp), HIWORD(wp), hwnd, NULL);
			break;
		case NIN_KEYSELECT:
		case NIN_SELECT:
			if (hidden) {
				SystemParametersInfo(SPI_GETWORKAREA, 0, &rect0, 0);
				GetClientRect(hwnd, &rect1);
				SetWindowPos(hwnd, NULL, rect0.right - rect1.right, rect0.bottom - rect1.bottom, 0, 0, SWP_NOZORDER | SWP_NOSIZE | SWP_SHOWWINDOW);
				hidden = FALSE;
				MonthCal_GetToday(hcal, &time);
				MonthCal_SetCurSel(hcal, &time);
				MonthCal_SetCurrentView(hcal, MCMV_MONTH);
				SetForegroundWindow(hcal);
			} else {
				ShowWindow(hwnd, SW_HIDE);
				hidden = TRUE;
			}
			break;
		}
		break;
	case WM_DESTROY:
		tti.exit = TRUE;
		SetEvent(tti.hnotify);
		PostQuitMessage(0);
		break;
	default:
		if (msg == WM_TASKBARCREATED) SetEvent(tti.hnotify);
		else return DefWindowProc(hwnd, msg, wp, lp);
	}
	return 0;
}