none
CComboboxの仕様変更? RRS feed

  • 質問

  • MFCでアプリケーションを開発しておりますが、
    CComboBoxクラスの挙動が、Windows10になると異なります。
    MFCはスタブライブラリを使用しています。

    ツールバーにコンボボックス(エディット可)をのせて、CViewにWM_KEYDOWNがきたとき、
    ツールーバーのコンボボックスに渡すようにしています。

    void CToolbarCmbView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
    {
    	// TODO: ここにメッセージ ハンドラ コードを追加するか、既定の処理を呼び出します。
    	CMainFrame* pMainFrame = dynamic_cast<CMainFrame*>(AfxGetApp()->GetMainWnd());
    	pMainFrame->m_cmbboBox.SetFocus();
    	pMainFrame->m_cmbboBox.PostMessage( WM_KEYDOWN, nChar, MAKEWPARAM(nRepCnt, nFlags) );
    
    	CView::OnKeyDown(nChar, nRepCnt, nFlags);
    }
    
    
    VC++2008,VC++2010,VC++2015でコンパイルしたものでテストしましたが、
    すべて同じ結果でした。


    ■テスト内容

    IMEが全角モードになっていることと、CViewにフォーカスがある前提で、
    「A」キーを押したときの挙動を、各OSで確認してみました。
    コンボボックスにはキャレットはない状態。。。

    ■Windows7、Windows8.1の場合
    コンボボックス内の文字が選択され、「あ」が表示されている。

    ■Windows10の場合
    コンボボックス内の文字が選択されるのみ。
    ※再度、「A」キーを入力すると「あ」が表示される。

    仕様が変更されたのでしょうか。

    2019年1月15日 7:03

すべての返信