TimeStamp Keeper Ver.1.01公開
ファイルのタイムスタンプを記憶し、変更後もワンクリックで元に戻すTimeStamp Keeper Ver.1.01を公開しました。
○Ver.1.01 – 2015/10/07
・起動済みプロセスがなくとも、Ctrlキー押下で最小化起動するように。
・ファイル名、更新日時の編集ができるように。
・エラーダイアログを表示しないように。
F2キーや「編集」ボタンから、ファイル名や更新日時を編集することができるようになりました。
DateTimePickerにミリ秒を直接表示するがフォーマットがないため、コールバックで文字列を制御する’XXX’を用い、WM_NOTIFY内でDTN_FORMATQUERY,DTN_FORMAT,DTN_WMKEYDOWNを処理しました。
case DTN_FORMATQUERY:{ HDC hDC=GetDC(handle()); HFONT hFont=(HFONT)GetStockObject(DEFAULT_GUI_FONT); HFONT hOldFont=(HFONT)SelectObject(hDC,hFont); if(lstrcmp(_T("XXX"),((LPNMDATETIMEFORMATQUERY)lparam)->pszFormat)==0){ GetTextExtentPoint32(hDC, _T("999"), 3, &((LPNMDATETIMEFORMATQUERY)lparam)->szMax); } SelectObject(hDC,hOldFont); ReleaseDC(handle(),hDC); break; } case DTN_FORMAT:{ wsprintf(const_cast<LPTSTR>(((LPNMDATETIMEFORMAT)lparam)->pszDisplay), _T("%03d"), m_wMilliseconds); break; } case DTN_WMKEYDOWN:{ if(((LPNMDATETIMEWMKEYDOWN)lparam)->nVirtKey==VK_DOWN){ if(m_wMilliseconds==0){ m_wMilliseconds=999; }else{ m_wMilliseconds--; } }else if(((LPNMDATETIMEWMKEYDOWN)lparam)->nVirtKey==VK_UP){ if(m_wMilliseconds>=999){ m_wMilliseconds=0; }else{ m_wMilliseconds++; } }else if(((LPNMDATETIMEWMKEYDOWN)lparam)->nVirtKey>='0'&& ((LPNMDATETIMEWMKEYDOWN)lparam)->nVirtKey<='9'){ TCHAR szMilliseconds[4]={}; wsprintf(szMilliseconds,_T("%d"),m_wMilliseconds); //入力された数字 TCHAR szNum[2]={((LPNMDATETIMEWMKEYDOWN)lparam)->nVirtKey}; if(lstrlen(szMilliseconds)==3){ //3桁なら文字列をクリアし新たに数字を追加 m_wMilliseconds=_ttoi(szNum); }else{ //3桁未満なら現在の文字列に数字を追加 lstrcat(szMilliseconds,szNum); m_wMilliseconds=_ttoi(szMilliseconds); } } InvalidateRect(getDlgItem(IDC_DATETIMEPICKER_FILE),NULL,TRUE); break; } default: break; }