表示中の画面に直接描ける ClearPaint ver1.06

以下の改良を行いました。

  • 方向キー下でもメニュー表示
  • 「画面をキャプチャしました」メッセージの表示をKTCaptの終了と同期

以下、それぞれの改良点についての解説です。
ダウンロード&使い方ページは、こちら
ClearPaint Ver1.06とKTCaptとの連携で不具合がご報告されています。
詳しくはこちらをご覧下さいませm(__)m

方向キー下でもメニュー表示

以前、EM・ONEでClearPaintを使っているという方からご連絡をいただきまして、EM・ONEにはソフトキーが無いためメニューを表示できないので、ソフトキー以外のキーでもメニュー表示できるようにしてほしいというご要望をいただいたので改良しました。

case WM_KEYUP:
  switch(wParam)
  {
    case 0x70: // 左ソフトキー
      xPos2 = GetSystemMetrics(SM_CXSCREEN);
      yPos2 = GetSystemMetrics(SM_CYSCREEN);

      TrackPopupMenu (hMenu, 0, 0, yPos2, 0, hWnd, NULL);
  }
  break;

を以下のように、

case WM_KEYUP:
  switch(wParam)
  {
    case 0x70: // 左ソフトキー
    case VK_DOWN: // 下キー
      xPos2 = GetSystemMetrics(SM_CXSCREEN);
      yPos2 = GetSystemMetrics(SM_CYSCREEN);

      TrackPopupMenu (hMenu, 0, 0, yPos2, 0, hWnd, NULL);
  }
  break;

と下キー判定を追加するという簡単な改良で済みました。
実は私はSortInchiKeyでWindowsキー2回押しをソフトキーにしているので、下キーでもメニューが出せるようになったのは便利かもしれません♪

「画面をキャプチャしました」メッセージの表示をKTCaptの終了と同期

これは私がClearPaintを使っていてずっと気になっていたことなのですが、メニューを出して「画面キャプチャ」を選択した直後に「画面をキャプチャしました」というメッセージが表示されるため、その後にKTCaptが起動してキャプチャされると、たまにこのようにそのメッセージがキャプチャ画像に乗ってしまいますorz

どうにかならないかな。。と思っていたのですが、幣ブログでもご紹介した”WindowsMobileプログラミング徹底理解”という本でその答えを見つけて試してみたところ、見事にKTCapt起動→画面キャプチャ→KTCapt終了→「画面をキャプチャしました」メッセージを表示させることができました♪
ちなみにP.60の「プロセスに関するサンプル」で説明されているWaitForSingleObjectを以下のように利用しました。

bRet = CreateProcessW(L"\\Windows\\s_capt3.exe", L"",NULL,NULL,FALSE,0,NULL,NULL,NULL,&pi);
if (bRet)
{
  WaitForSingleObject(pi.hProcess,INFINITE);
  CloseHandle(pi.hProcess);
  MessageBox(hWnd, L"画面をキャプチャしました。", L"ClearPaint", MB_OK);
}

WM_TIMERで以下の処理を回して、「画面キャプチャ」を選択したらCreateProcessWでKTCaptを起動したら、WaitForSingleObjectでKTCaptの終了を監視するという仕組みです。


WaitForSingleObjectという関数を使うのは初めてだったので、不具合が出ないか普段から自分で1ヶ月程使って試していたのですが、問題無く動いてくれたので、VerUPに乗せました☆

広告を非表示にする