2016-04-07 12 views
0

デスクトップから複数のファイルを選択しました。mfc C++ editboxを繰り返し設定するには?

CFileDialog fileDlg(TRUE, 
        _T("*.txt"), 
        NULL, 
        OFN_ALLOWMULTISELECT, 
        _T(" (*.txt)|*.txt|")); 

fileDlg.DoModal(); 
POSITION pos(fileDlg.GetStartPosition()); 

while (pos) 
{ 
    CString pathName1(fileDlg.GetNextPathName(pos)); 
    SetDlgItemText(IDC_EDITReference, pathName1); 
    Sleep(2.0 * 1000); 
} 

これは2秒ごとにファイルのパスを表示する非常に単純なコードです。 10個のファイルを選択すると、20秒間待ってから最後に選択したファイルのパスだけを表示します。 2秒ごとに更新されません。

誰かが私にこれを助けることができますか?

答えて

1

あなたの関数は(ゆっくりと)ダイアログ項目のテキストを変更していますが、ダイアログが関数が終了するまで再描画されません。 SetDlgItemText

+0

ありがとうございます。SetDlgItemTextへの呼び出し後にUpdateWindowを呼び出す必要があります。 :) –

+0

これは単にウィンドウの更新の直後の問題を解決します。それは大きな問題に対処しません:応答しないUIです。関数が実行されている間、UIはユーザー入力に応答しません。これは、Windowsのイベントベースのアーキテクチャ(例えば、[Timer](https://msdn.microsoft.com/en-us/library/windows/desktop/ms632592.aspx)を使用)をモデルにして実際にモデル化する必要があります。 – IInspectable

+0

@IInspectable:非常に良い点。それについての別の回答を追加したいのですか、私は私の更新をしますか? (私は無意識のうちにOPはこれが速いハックであることを知っていたと仮定していましたが、疑問を呈していることを考えれば、それはほとんど間違いです - そして誰でも後でこのことを知る可能性は低いです*) –

関連する問題