2017-11-03 10 views
0

DoModalを呼び出す前にCOleBusyDialogダイアログをカスタマイズしたいと思います。私はボタンとレイアウトで大丈夫です。しかし、私はそれの中に別の静的テキストを持っていると思います。どうすれば変更できますか?COleBusyDialogカスタマイズ

typedef struct tagOLEUIBUSY 
{ 
    DWORD   cbStruct; 
    DWORD   dwFlags; 
    HWND   hWndOwner; 
    LPCTSTR  lpszCaption; 
    LPFNOLEUIHOOK lpfnHook; 
    LPARAM  lCustData; 
    HINSTANCE  hInstance; 
    LPCTSTR  lpszTemplate; 
    HRSRC   hResource; 
    HTASK   hTask; 
    HWND   *lphWndDialog; 
} OLEUIBUSY, *POLEUIBUSY, *LPOLEUIBUSY; 

私は、MFCに新しいですし、私は、リソースに新しいダイアログを作成し、この構造体に割り当てるために持っているかである場合、私は知らない。私はそれをカスタマイズするために使用される公開メンバーCOleBusyDialog::m_bzを持って見 テキストを変更する簡単な方法があります。

COleBusyDialog

答えて

2

がCOleMessageFilterから派生し、OnBusyDialogをオーバライド。カスタマイズされたメッセージフィルタを使用するには、AfxGetThread() - > m_pMessageFilterを置き換えます。その後、前のメッセージフィルタを削除し、新しいメッセージに対してRegister()を呼び出します。

+0

これは私がすでに持っていたものです。私はmessgeFilterから派生し、仮想関数OnBusyDialogを実装したクラスを作成しました。 そして、COleBusyDialogをカスタマイズするのと同じ方法で実装したいと思います。それは私がそれに使用できる仮想関数を持っていません。私は、オブジェクトが作成された後doModal()コールの前にCOleBusyDialog :: m_bzを変更できると思った。 – user7242858

+0

ここでは、mfcからのデフォルト実装を示します。 'code' int COleMessageFilter :: OnBusyDialog(HTASK htaskBusy) { \t COleBusyDialog dlg(htaskBusy、FALSE); \t int nResult = -1; \t TRY \t { \t \t(dlg.DoModal()== IDOK) \t \t \tます。nRESULT = dlg.GetSelectionType()であれば、 \t} \t END_TRY \t return nResult; } 'code' – user7242858

+0

>私はオブジェクトが作成された後、doModal()コールの前にCOleBusyDialog :: m_bzを変更できると思っていました。あなたを止めているのは何ですか? –

関連する問題