![]() |
|
Модераторы: bsa |
![]()
|
|
| Golovastik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: -1 Всего: 0 |
Начал читать книгу по API, автор Щупак.
Во второй программе, этой книги создаётся оконное приложение. Набрал как в книге, проверял всё точь в точь, но программа не компилится, выдаёт ошибку: Cannot convert from 'char [8] to 'LPCSTR' Все подробности программы я буду читать в книге,нужн оскомпилить проект,чтоб по нему смотреть.
|
|||
|
||||
| jonie |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||
|
|||||
| Golovastik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: -1 Всего: 0 |
Странно, но выдаёт тоже самую ошибку.
|
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 8 Всего: 146 |
||||
|
||||
| Golovastik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: -1 Всего: 0 |
Спасибо, в некоторых местах также подкоректировал, теперь выдатё на строке:
ошибку: c:\documents and settings\admin\рабочий стол\papka\forma_api\forma_api\forma.cpp(51) : warning C4244: 'return' : conversion from 'WPARAM' to 'int', possible loss of data |
|||
|
||||
| GremlinProg |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: нет Всего: 106 |
привыкайте писать правильно,
при использовании API, в которых фигурируют строковые параметры, не нужно смешивать разные типы данных, тут возможно много правильных вариантов, вот только некоторые:
при использовании префикса _T, нужно дополнительно подключать tchar.h, все остальные - из WinNT.h, т.е. достаточно одного windows.h если непонятно как работает макрос, можно считать _TCHAR, LPCTSTR, LPTSTR - совершенно несовместимыми с char и wchar_t, не нужно указывать их в одном контексте!
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||
|
|||||
| Курсант |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 338 Регистрация: 21.2.2009 Где: Балашиха или Воро неж Репутация: 1 Всего: 4 |
Как вариант - вместо CreateWindow и RegisterClassEx пользоваться реальными функциями, а именно
CreateWindowA и RegisterClassExA Тогда все будет работать... ПРоблема в том, что в модуле windows.h, если не ошибаюсь, есть такая тема как #usedef CreateWindow CreateWindowW #usedef RegisterClassEx RegisterClassExW тобишь вы пытаетесь юникодовские версии функций вызвать с ансишными строками, а это не есть гут, компилятор это выдает ошибкой. |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: нет Всего: 106 |
да, как вариант, только нужно отдавать себе отчет, что CreateWindowA создает анси-окно, а CreateWindowW - юникод, соответственно, IsWindowUnicode будет возвращать в таких окнах разные значения, отчего может меняться и его поведение самое безобидное следствие такой ошибки - отсутствие реакции на определенные сообщения, например: при использовании транслятора уведомтения, подобного TVN_GETDISPINFO хорошо, если окно поддержит оба варианта во всех версиях если нет - неочевидная ошибка убъет много времени, прежде чем до нее кто-нибудь доберется, если доберется вообще поэтому, ради сохранения психологического равновесия, не надо подстраиваться под какую-то частную ситуацию, дающую выигрыш только в данный момент, есть общее правило, почему бы ему не следовать -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Golovastik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: -1 Всего: 0 |
Когда прописал :
теперь программа стала выдавать ошибку: c:\documents and settings\admin\рабочий стол\papka\forma_api\forma_api\forma.cpp(55) : error C2061: syntax error : identifier 'WParam' |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 8 Всего: 146 |
||||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: нет Всего: 106 |
ну конечно, WParam и wParam - разные идентификаторы,
в коде и скобки неправильно стоят, вобщем внимательно следи за текстом, Си - не русский язык, "я люблю" и "люблю я" - можно трактовать по-разному -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Golovastik |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: -1 Всего: 0 |
Подключил файл #include <winuser.h>
Теперь остановилось на строке:
выдаёт ошибку: c:\documents and settings\admin\рабочий стол\papka\forma_api\forma_api\forma.cpp(57) : error C2601: 'WindProc' : local function definitions are illegal Вот подкоректированный код, в последнем варианте:
|
||||
|
|||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 8 Всего: 146 |
Неправильно расставлены фигурные скобки (о чём GremlinProg писал).
Это сообщение отредактировал(а) 586 - 2.10.2009, 13:32 |
|||
|
||||
| Golovastik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: -1 Всего: 0 |
1)Спасибо, теперь странно, останавливается на :
c:\documents and settings\admin\рабочий стол\papka\forma_api\forma_api\forma.cpp(62) : error C3861: 'DeawText': identifier not found 2) Зачем нужен #include <tchar.h> Это сообщение отредактировал(а) Golovastik - 2.10.2009, 13:52 |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 8 Всего: 146 |
Ну и что здесь непонятного? У тебя он нигде не используется. Строку можешь удалить. Для лабораторных работ сойдёт. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |