////////////////////////////////////////////////////////////////////////////////
開発環境 : Visual C++ 6.0 Service Pack 3
動作環境 : Windows 98 Second Edition
MFC使用 MDIベース
////////////////////////////////////////////////////////////////////////////////
○○○Docクラスで、ある処理を、たとえば10時間ぐらいした後、自動的にデータを保存して
ファイルを閉じる、というようなことをしたいと思いました。データの保存はSerialize関数を
実装したので、普通に「上書き保存」をクリックすれば保存できるのですが、この「上書き保存
」と「ファイルを閉じる」を自動的にコンピュータにさせるにはどうすればいいのでしょうか。
はじめ、
○○○Docクラス内で、
POSITION pos = GetFirstViewPosition();
CView* pView = GetNextView(pos);
CChildFrame* pChildF = (CChildFrame*)pView->GetParentFrame();
として、CChildFrameクラスへのポインタを取得してから、
pChildF->SendMessage(ID_FILE_SAVE);
pChildF->SendMessage(ID_FILE_CLOSE);
とすればいいのかと思ったのですがうまく行きません。引数にこういったリソースIDを入れても
ダメなのでしょうか。
実際、コンピュータにこういった、自動的にツールバーをクリックさせるようなことはよく
やりそうなことだと思ったので、僕自身のやり方がぜんぜん違うのかとも思ったのですが、どう
でしょうか。よろしくお願いします。
コマンドIDとウィンドウメッセージは別物です。
やるならこうです。
AfxGetMainWnd()->PostMessage(WM_COMMAND, ID_FILE_SAVE);
kazumaさん、お返事ありがとうございました。
やっぱり、kazumaさんのいうコマンドIDとウィンドウメッセージは違うものと考えなくては
いけなかったんですね。うすうすはそんな感じがしていたのですが、では、どうやって、
コマンドIDのメッセージを出せばいいのだろうと思案に暮れていたところでした。
実際、
AfxGetMainWnd()->PostMessage(WM_COMMAND, ID_FILE_SAVE);
と変えてみるととてもうまく動くようになりました。これで、また、プログラムを再開する
ことができます。
ありがとうございました!