7 10月

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;
			}
3 10月

Tascher Ver.1.57公開

マウスの移動とホイールの回転やMigemoインクリメンタルサーチでウインドウを切り替えるTascher Ver.1.57を公開しました。

○Ver.1.57 – 2015/10/03
・ウインドウリストを表示させると、一部ソフトウェアで動作している7-zip32.dllの処理が中断してしまう不具合を修正。

あふwやExplzhで7z/zip解凍中にTascherを表示すると処理が中断してしまう不具合を修正しただけ!!!
Ver.1.56の時点で修正したかった…

2 10月

あふwやExplzhで7z/zip解凍中にTascherを表示すると処理が中断してしまう

タイトルそのままです。
あふwは1.58、Explzhは7.24、7-zip32.dllは文字化け対策版 Ver.15.07.00.01 beta、TascherはVer.1.56です。
調べてみると、どうやらDialog.cppのCDialog::Loop()内、

			if (msg.hwnd == m_hWndParent && msg.message == 0)
				::PostMessage(m_hWnd, WM_CLOSE, 0, 0);

でWM_CLOSEが投げられ、処理が中断しているご様子。

msg.messageが0、つまり、WM_NULLの時に発生する…
ロシアと思い、Tascherの「MMHook.dll」内、UnhookWindowsHookEx()後の

PostMessage(HWND_BROADCAST,WM_NULL,0,0);

を削除すると、無事解凍処理が中断しなくなりました!!やったね!!

広告