Save As в CMainFrame
От: Kven Украина  
Дата: 06.10.03 10:09
Оценка:
Не получается реализовать функцию SaveAs в CMainFrame.
Этот код не работает.

afx_msg void OnFileSaveAs();
ON_COMMAND(ID_FILE_SAVE_AS, OnFileSaveAs)

void CMainFrame::OnFileSaveAs()
{

}


При выборе в меню File\SaveAs нет обращения к функции OnFileSaveAs()
Открывается совсем непонятны диалог для записи.
Приложение создавалось стандартным визардом.


Тот же код с File\Open работает нормально.

afx_msg void OnFileOpen();
ON_COMMAND(ID_FILE_OPEN, OnFileOpen)

void CMainFrame::OnFileOpen()
{


}

Может кто подскажет, что я делаю не так?
.
Re: Save As в CMainFrame
От: Croc Россия  
Дата: 06.10.03 10:39
Оценка:
Здравствуйте, Kven, Вы писали:

Проверь совпадение ID-ов пункта меню и ID'а в твоем макросе ON_COMMAND(ID_FILE_SAVE_AS, OnFileSaveAs), если они идентичны, то попробуй еще сделать rebuild all. Если все продолжается, то ты, как минимум, можешь присвоить этой команде меню нестандартный ID, тогда MFC-шный код точно вызываться не будет.
Если тебе интересно откуда берется "непонятный диалог записи", то это — код MFC из недров DocTemplate. Считается, что в общем случае тебе вообще не нужно обрабатывать ID_FILE_OPEN, ID_FILE_SAVE etc, а только реализовать метод Serialize в документе. Стандартное поведение менюшек обеспечить MFC.
Re: Save As в CMainFrame
От: maximka_z Беларусь  
Дата: 06.10.03 11:10
Оценка:
Здравствуйте, Kven, Вы писали:



K>Не получается реализовать функцию SaveAs в CMainFrame.

K>Этот код не работает.

K>afx_msg void OnFileSaveAs();

K>ON_COMMAND(ID_FILE_SAVE_AS, OnFileSaveAs)

K>void CMainFrame::OnFileSaveAs()

K>{

K>}


Можно зайти с другой стороны, просто переопределив функцию OnSaveDocument в документе,
и вынести все функциональность туда
Re[2]: Save As в CMainFrame
От: Kven Украина  
Дата: 06.10.03 11:13
Оценка:
Croc

Спасибо!
Изменил ID-пунктов на нестандартные, все заработало.
Меня с толку сбило, что File\Open нормально обрабатывается,
а File\Save нет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.