Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / WinAPI

Выпуск № 296
от 31.08.2006, 17:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 357, Экспертов: 34
В номере:Вопросов: 1, Ответов: 3


Вопрос № 53350: Здравствуйте! Винапи начал изучать недавно, по книге Румянцева. Один из примеров в ней не компилируется (в приложении), выбивает ошибку error C2664: 'DialogBoxParamA' : cannot convert parameter 4 from 'BOOL (__stdcall *)(HWND,UINT,UINT,WPARAM,LPARAM)...

Вопрос № 53.350
Здравствуйте! Винапи начал изучать недавно, по книге Румянцева. Один из примеров в ней не компилируется (в приложении), выбивает ошибку error C2664: 'DialogBoxParamA' : cannot convert parameter 4 from 'BOOL (__stdcall *)(HWND,UINT,UINT,WPARAM,LPARAM)' to 'DLGPROC'
Пробовал и изменять тип возвращаемого функцией значения с BOOL на INT_PTR, и явно приводить 4ый параметр к типу DLGPROC, ни в какую. В чем может быть проблема? Заранее спасибо!

ЗЫ: я пользуюсь Visual Studio 2005 Professional Edition, вполне возможно что в более старых версиях этот пример работал...
ЗЫ2: пример работы с функцией DialogBox() из 2005го мсдн тоже не хочет компилироваться...

Приложение:

Отправлен: 26.08.2006, 16:55
Вопрос задал: Vofka (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: estiGi
Здравствуйте, Vofka!
Судя по всему, как понимаю, проблема не в этом. Не надо нечего преобразовывать. Измени саму функцию, прототип:
INT_PTR CALLBACK ButtonsExampleDialogProc(HWND, UINT, UINT, WPARAM,LPARAM);
Ответ отправил: estiGi (статус: Студент)
Ответ отправлен: 26.08.2006, 17:27
Оценка за ответ: 1
Комментарий оценки:
Спасибо, но я кажется написал, что пробовал изменять тип возвращаемого функцией значения на этот.

Отвечает: Яруллин Азат Рифкатович
Здравствуйте, Vofka!
Проблема из-за разных версий SDK.
Попробуйте следующее...
Удачи!

Приложение:

Ответ отправил: Яруллин Азат Рифкатович (статус: 9-ый класс)
Ответ отправлен: 26.08.2006, 17:31
Оценка за ответ: 4
Комментарий оценки:
Спасибо. По идее этот вариант должен работать, я натыкался на него в инете... Но у меня не пашет, сообщение об ошибке выглядит гораздо страшнее :) Буду копать дальше...

Отвечает: Physicist
Здравствуйте, Vofka!

Не могу понять, откуда у Вас берется столько параметров у ButtonsExampleDialogProc. Вот как она должна выглядеть:

INT_PTR CALLBACK ButtonsExampleDialogProc(
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);
Ответ отправил: Physicist (статус: Студент)
Ответ отправлен: 26.08.2006, 21:14
Оценка за ответ: 4
Комментарий оценки:
Интересно, я и не заметил, что в прототипе и в самой функции типы параметров в этом примере отличаются. Странно, что на это компилятор не ругался. Исправил, теперь такая ошибка
error LNK2019: unresolved external symbol __imp__InitCommonControls@0 referenced in function _WinMain@16
Что бы это значило?


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.35 от 27.07.2006
Яндекс Rambler's Top100

В избранное