mengineer's blog

ニッチなネタばかりですが。

MFC SpinControl共用

MFCのSpinControlで、これまでSpinControl毎、個々にイベント定義していましたが、
その数が増えると面倒でした、例えばこんなやつ(カメラのパラメータ制御)

未だにMFCかい、ってツッコミはさておき、下記で共用出来ることを発見!

void CDlgCameraControl::OnDeltaposSpin(NMHDR *pNMHDR, LRESULT *pResult)
{
    int nID = pNMHDR->idFrom;
    switch (nID) {
    case IDC_SPIN_EXPOSURE1:
    case IDC_SPIN_EXPOSURE2:
    case IDC_SPIN_EXPOSURE3:
        // Exposure設定処理を入れる
        break;
    case IDC_SPIN_GAIN1:
    case IDC_SPIN_GAIN2:
    case IDC_SPIN_GAIN3:
        // Gain設定処理を入れる
        break;
    default:
        break;
    }   
}

pNMHDR->idFromで、元のSpinControlのIDを取得出来るようです、
これで処理をまとめることが出来ます、もっと早く気付けば良かった。