スピン (アップ/ダウン) コントロールに問題があります。スピン コントロールのプロパティで、"Set Buddy Integer" を true に設定しました。
私のdialogboxprocのWM_INITDIALOGでは、その仲間を静的テキストコントロールに設定しています:
SendMessage(GetDlgItem(hDlg, IDC_SPIN2), UDM_SETBUDDY, (WPARAM)GetDlgItem(hDlg, IDC_STATIC1), 0);
また、最小/最大範囲と開始位置を設定しています。
SendMessage(GetDlgItem(hDlg, IDC_SPIN2), UDM_SETRANGE, 0, MAKELPARAM(1, 1));
SendMessage(GetDlgItem(hDlg, IDC_SPIN2), UDM_SETPOS, 0, 1);
ダイアログボックスで特定のボタンが押されると、範囲と位置が更新されます。
SendMessage(GetDlgItem(hDlg, IDC_SPIN2), UDM_SETRANGE, 0, MAKELPARAM(2, 1));
SendMessage(GetDlgItem(hDlg, IDC_SPIN2), UDM_SETPOS, 0, 2);
(変数を使用して範囲と位置を設定していましたが、問題があるため、投稿したばかりのように手動で設定しています。)
位置を設定した直後に、確認のために再確認します。
LRESULT lr = SendMessage(GetDlgItem(hDlg, IDC_SPIN2), UDM_GETPOS, 0, 0);
WORD pos = LOWORD(lr);
ちなみにポジションは2です。
次に、スピン コントロールの下矢印をクリックします。静的テキストの相棒が 2 から 1 に変わります。dialogboxproc 内の WM_NOTIFY コードは次のようになります。
case WM_NOTIFY:
ncode = ((LPNMHDR)lParam)->code;
switch(ncode)
{
case UDN_DELTAPOS:
{
LRESULT lr = SendMessage(GetDlgItem(hDlg, IDC_SPIN2), UDM_GETPOS, 0, 0);
if(HIWORD(lr) == 0)
{
WORD pos = LOWORD(lr);
//Other stuff here
return TRUE;
}
下矢印を押して pos の値を確認した後、位置はまだ 2 です。以前に位置を 2 に設定して下矢印を押しました。この時点で位置は 1 ではないでしょうか。何が問題ですか?