ピクシーウィンドウの微改良

07/11/4追記:新バージョン(v1.08)がリリースされ、下記の挙動はオプション設定で実現できるようになった。作者の滝本さん、VerUp情報掲載の soliptさんありがとうございます。
作者(滝本さん)のページリリース情報ページ


以下は消すのもなんなんで、一応そのままに。
ピクシーウィンドウはテキスト入力を補助する1行メモソフトだ。窓の杜での紹介。

このソフトはコンパクトながらも非常に多機能なのだが、文字を貼り付けするときにカーソルで「送」ボタンまで移動して、さらに終了するには「終」ボタンに移動しなければならなくて、少しめんどくさい。
「文字を入力した時点でアクションキーを押して、文字を貼り付け、さらに終了してほしい。」と思って改良を加えてみた。
自分が使っているのは、失礼ながら思いっきり機能を削ぎ落として、入力+貼り付けの機能に特化したものだが、以下に記すのは既存の機能を活かすやり方(なぜか SortInchKey 0.6.0 ではうまくキー入力をキャッチできなかったので、0.6.2 へアップデートすることを勧める)。

// エディットコントロール
#if 0
WNDPROC OldProc;
LRESULT CALLBACK PteEditProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) {
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDOK:
//SendMessage(hWndMain, message, wParam, lParam);
{
TCHAR s[256];
wsprintf(s, _T("OK %04X"), wParam);
SendMessage(hWndEdit, WM_SETTEXT, 0, (LPARAM)s);
SetFocus(hWndEdit);
}
break;
}
break;

case WM_KEYUP:
{
TCHAR s[256];
wsprintf(s, _T("%04X"), wParam);
SendMessage(hWndEdit, WM_SETTEXT, 0, (LPARAM)s);
SetFocus(hWndEdit);
}
break;
}
return CallWindowProc(OldProc, hWnd, message, wParam, lParam);
}
#endif

  ↓(赤字の部分を付け加える)
// エディットコントロール
//#if 0
WNDPROC OldProc;
LRESULT CALLBACK PteEditProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) {
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDOK:
//SendMessage(hWndMain, message, wParam, lParam);
{
TCHAR s[256];
wsprintf(s, _T("OK %04X"), wParam);
SendMessage(hWndEdit, WM_SETTEXT, 0, (LPARAM)s);
SetFocus(hWndEdit);
}
break;
}
break;

// case WM_KEYUP:
// {
// TCHAR s[256];
// wsprintf(s, _T("%04X"), wParam);
// SendMessage(hWndEdit, WM_SETTEXT, 0, (LPARAM)s);
// SetFocus(hWndEdit);
// }
// break;

case WM_KEYUP:
switch(wParam) {
case VK_RETURN:
SendMessage(GetDlgItem(hWndMain, IDC_EDIT1), EM_SETSEL, 0, -1);
SendMessage(GetDlgItem(hWndMain, IDC_EDIT1), WM_COPY, 0, 0);
iState2 = 0x0100;
SetTimer(hWndMain, 2, 100, NULL);
return TRUE;
break;
}
break;

}
return CallWindowProc(OldProc, hWnd, message, wParam, lParam);
}
//#endif

	// エディットコントロールのサブクラス化
//OldProc = (WNDPROC)SetWindowLong(hWndEdit, GWL_WNDPROC, (LONG)PteEditProc);
  ↓(コメントを外す)
	// エディットコントロールのサブクラス化
OldProc = (WNDPROC)SetWindowLong(hWndEdit, GWL_WNDPROC, (LONG)PteEditProc);

// Mesage handler for the About box.
……
case WM_CLOSE:
//(WNDPROC)SetWindowLong(hWndEdit, GWL_WNDPROC, (LONG)OldProc);
break;
  ↓(コメントを外す)
// Mesage handler for the About box.
……
case WM_CLOSE:
(WNDPROC)SetWindowLong(hWndEdit, GWL_WNDPROC, (LONG)OldProc);
break;

  • POCKET PC 2003、WCE ARMV4 Release としてコンパイル(すぐ終わる)。
  • エラーが出なければ、ARMV4Rel\ 以下に Pixie.exe ができている。