Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка при декларации сообщения (mfc), ... error C2143: syntax error : missing 
:(
    Опции темы
frogICE
Дата 25.2.2006, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 25.2.2006
Где: Uzhgorod, Ukraine

Репутация: нет
Всего: нет



... error C2143: syntax error : missing '}' before ';'


имеем следующую ситуацию:

#define WM_MSG WM_USER + 100

...

BEGIN_MESSAGE_MAP(CSlonAxDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_WM_CLOSE()
ON_WM_TIMER()
ON_MESSAGE(WM_MSG, OnMsg)
END_MESSAGE_MAP()

...

LRESULT CSomeWndClass::OnMsg(WPARAM wParam, LPARAM lParam)
{
...
return 1;
}


Как сделать, чтобы ЭТО работало?!! Мне надо "отлавливать" сообщения от иконки в трее.

П.С. Ставил уже и ON_COMMAND вместо ON_MESSAGE - всеравно не помогло...
PM MAIL ICQ   Вверх
AlexPro
Дата 26.2.2006, 05:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 9.11.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 4



Правильно матерится:
Цитата(frogICE @ 25.2.2006, 22:45 Найти цитируемый пост)
//}}AFX_MSG_MAP

Если VC++ 6 версии, надо после BEGIN_MESSAGE_MAP(CSlonAxDlg, CDialog) добавить //{{AFX_MSG_MAP(CSlonAxDlg). Если выше - наоборот убрать процитированный кусок.

PM MAIL   Вверх
Earnest
Дата 26.2.2006, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



AlexPro, эта фигня о которой ты пишешь, абсолютно не влияет на компиляцию - это же спец. комментарий, который используется только визардом классов. Так что не в этом дело.
А в том, что где-то какое-то определение не закрыто. Где - по приведенному коду установить сложно. Что там у тебя вместо многоточий?

То что сразу заметно - какое-то расхождение в именах классов - то у тебя CSlonAxDlg, то CSomeWndClass. Такие ошибки (согласна, довольно невразумительные) компилятор иногда выдает, если встречает незнакомое имя...

Вообще-то такие ошибки программист должен находить сам... Если никак не получается, комментируй кусок за куском, чтобы локализовать, дальше обычно очевидно.


--------------------
...
PM   Вверх
AlexPro
Дата 26.2.2006, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 9.11.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 4



Цитата(Earnest @ 26.2.2006, 09:29 Найти цитируемый пост)
это же спец. комментарий, который используется только визардом классов

Да, похоже, я погорячился. Но в любом случае, в приведенном коде отсутствует парный комментарий - это не есть хорошо. Тогда скорее всего просто пропущено ;, да и с классами тут какая-то путаница, Earnest права.
PM MAIL   Вверх
frogICE
Дата 27.2.2006, 04:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 25.2.2006
Где: Uzhgorod, Ukraine

Репутация: нет
Всего: нет



Да нет, вообще-то прикол с расхождениям в именах класов - это просто я внизу исправил, а вверху нет (после копирования из среды разработки) smile А написал я вместо CSlonAxDlg CSomeWndClass только потому, чтобы "абстарагироваться" от самого класа...То, что идет между точками к делу не имеет ни какого отношения - если Вы хотите меня уличить в том, что я не знаю, как декларировать классы и в незнании синтаксиса языка Си, то это напрасно smile Дальше - больше smile Я взял и написал в качестве примера для себя самого программу:

#define WM_MSG WM_USER + 100

...

BEGIN_MESSAGE_MAP(CTESTDlg, CDialog)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_MESSAGE(WM_MSG, OnMsg)
ON_BN_CLICKED(IDOK, OnBnClickedOk)
END_MESSAGE_MAP()

...

LRESULT CTESTDlg::OnMsg(WPARAM wParam, LPARAM lParam)
{
MessageBox("Nax!");
return LRESULT();
}

void CTESTDlg::OnBnClickedOk()
{
// TODO: Add your control notification handler code here
SendMessage(WM_MSG);
}

и знаете что?!! Она РАБОТАЕТ, все прям как в МСДН smile

Какие еще будут идеи?
PM MAIL ICQ   Вверх
AlexPro
Дата 27.2.2006, 05:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 9.11.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 4



Никто никого ни в чем здесь не собирался уличать. Просто по приведенному куску не понять, где скрывается ошибка. Обычно такая ошибка может вылезти при пропущенной точке с запятой, о чем я и написал. Посмотри номер строки, на которой выдается эта ошибка.Скорее всего в предыдущей строке не хватает ;
PM MAIL   Вверх
frogICE
Дата 27.2.2006, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 25.2.2006
Где: Uzhgorod, Ukraine

Репутация: нет
Всего: нет



Поймите меня правильно: я сам не знаю, почему это не работает...В какой предыдущей строке? После ON_WM_TIMER()? Так и не должно быть ";", насколько мне известно...Скорее всего, я просто перенесу исходники в чистый проект - так как я уже потерял достаточно много времени. Всеравно, спасибо за помощь smile
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0436 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.