2011-09-30 30 views
0

編集コントロールをMFC Visual Studio .net 2003を使用してスピンコントロールと共に使用しようとしています。「AutoBuddy」のようにスピンコントロールの基本設定を行っています"プロパティと" SetBuddyInteger "プロパティをTrueに設定すると、Spinコントロールはその隣のエディットコントロールと連携して動作します。私のSpinコントロールのイベントハンドラで、私はInvalidate()関数を呼び出そうとしているときに問題に直面しています。私の編集コントロールの浮動小数点値は更新されず、ゼロのままです。 Invalidate()を削除すると、値は増えますが、私のペイント関数は明らかに更新されません。以下のコードを以下に示します。編集コントロールがスピンコントロールMFCで更新されない

void CMyDlg::OnSpinA(NMHDR *pNMHDR, LRESULT *pResult) 
{ 
    LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR); 
    // TODO: Add your control notification handler code here 
    UpdateData(); 
    m_A = m_ASpinCtrl.GetPos(); // m_A is my edit control float value variable 
    Invalidate(); // Invalidate is to be called to update my paint function to redraw the drawing 
    UpdateData(false); 
    *pResult = 0; 
} 

私は、2つのコントロールのタブ順序を正しく行っています。

どこが間違っているのですか?

ありがとうございます。

答えて

2

m_Aポジションを戻すと変なことが起こり、正しい値が返されません。ポインタを使用して位置と値を取得し、無効化()を実行してみてください。

{ 
     LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR); 
     // TODO: Add your control notification handler code here 
     UpdateData(); 

     CString tempStr; 
     m_A += pNMUpDown->iDelta; 
     tempStr.Format("%f",m_A); 
     m_ACtrl.SetWindowText(tempStr); // Like a CEdit m_ACtrl to display your string 

     Invalidate(); 
     UpdateData(false); 
     *pResult = 0; 
} 

これは完全にうまくいくはずです。まだ問題がある場合は教えてください。

3

回転整数を使用したいだけなら、何も上書きする必要はありません。

スピンコントロールは、タブコントロールのエディットコントロールのすぐ隣にある必要があります。 のAutoBuddyでこれだけです。

+0

はい、私は何かをオーバーライドしていると思います。しかし、それを解決する方法としてはっきりとは分かりません。あなたは私にこれ以上のことを要約できますか? – Emulator

+0

全体のコードスニペットは、spincontrolが使用されたときの通知方法を無効にするメソッドです。 OnSpinAに言及しているメッセージマップの行をコメントアウトしてみてください! – dwo

関連する問題