Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2011, 15:30   #1
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию Проблемы с примерами книги Ю.А.Щупака в VS2008 Express Edition

Средства:
- книга "Win32 API. Эффективная разработка приложений [Ю.А. Щупак]", изд. Питер, 2007;
- каталог с исходными кодами, прилагаемый к книге;
- среда Visual Studio 2008 Express Edition.

Проблема №1. error C2664: MessageBoxW: невозможно преобразовать параметр 2 из 'const char [20]' в 'LPCWSTR'

Локализация проблемы в книге:
- "Глава 1. "Hello, World" или Первые шаги к пониманию основных концепций Windows", страница 26.

Создание проекта Win32 (согласно http://msdn.microsoft.com/ru-ru/library/bb384843.aspx)
1. В меню Файл последовательно выберите команды Создать и Проект....
2. В узле Visual C++ области Типы проектов выберите Win32 (в MSDN написано CLR - видимо опечатка), а затем в области Шаблоны выберите Проект Win32.

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

3. Нажмите кнопку ОК.
4. В окне Мастер приложений Win32 нажмите кнопку Далее.
5. В окне Мастер приложений Win32 в поле Тип приложения выберите пункт Приложение Windows. В поле Дополнительные параметры выберите Пустой проект. Остальные параметры оставьте без изменений.Чтобы создать проект, нажмите кнопку Готово.

Добавление необходимых файлов к проекту:
6. Скопируйте из каталога, прилагаемого к книге (Win32API->Ch_01->HelloFromMsgBox), файл: *.cpp* в каталог созданного
приложения (в директорию с файлом: *.vcpoj*).
7. Добавьте в проект файл *.cpp*, в меню Проект выбрав команду Существующий элемент.... В диалоговом окне Добавление существующего элемента выберите Файл *.cpp* и нажмите кнопку Добавить.

Построение решения
8. В меню Построение выберите команду Построить решение
Результат построения:
error C2664: MessageBoxW: невозможно преобразовать параметр 2 из 'const char [20]' в 'LPCWSTR' c:\documents and settings\observer\мои документы\visual studio 2008\projects\hellofrommsgbox\hello frommsgbox\hellofrommsgbox.cpp

Решение проблемы №1:
1. В меню Проект выберите Свойства: HelloFromMsgBox. В левой области в поле Свойства конфигурации выберите Общие. В правой области в поле Набор знаков выберите Использовать многобайтовую кодировку. Нажмите кнопку ОК для сохранения изменений.
2. В меню Построение выберите команду Построить решение.
3. В меню Отладка выберите команду Запуск без отладки.
8Observer8 вне форума Ответить с цитированием
Старый 16.01.2011, 15:44   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Проблема №2. fatal error RC1015: cannot open include file 'afxres.h'.

Локализация проблемы в книге:
- "Глава 5. Ресурсы Windows-приложения", страница 260, "Листинг 5.3. Проект Russia".

1. Создайте проект Win32 (см. Создание проекта Win32, п. 1-5).
Добавление необходимых файлов к проекту:
6. Скопируйте из каталога, прилагаемого к книге (Win32API->Ch_05->Russia), файлы: *.bmp*, *.cpp*, *.cur*, *.h*, *.ico*,*.rc*
в каталог созданного приложения (в директорию с файлом: *.vcpoj*).
7. Добавьте в проект файлы: *.cpp*, *.h*, *.rc*, в меню Проект выбрав команду Существующий элемент.... В диалоговом окне Добавление существующего элемента выберите Файлы *.cpp*, *.h*, *.rc* и нажмите кнопку Добавить.
8. Решите проблему №1 (см. "Решение проблемы №1").
Построение решения:
9. В меню Построение выберите команду Построить решение.
Результат построения:
fatal error RC1015: cannot open include file 'afxres.h'. c:\Documents and Settings\Observer\Мои документы\Visual Studio 2008\Projects\Russia\Russia\Russia. rc

Решение проблемы №2 (за решение проблемы - спасибо minlexx. Он там http://www.wasm.ru/forum/viewtopic.php?id=34439&p=2 даёт ссылку на программу для редактирования ресурсов):
1. Используя текстовый редактор, открыйте файл *.rc*.
2. Замените строку:
#include "afxres.h"
На две строки:
#include <windows.h>
#define IDC_STATIC -1
3. Сохраните изменения (Ctrl+S).
4. Закройте текстовый редактор (Alt+F4).
5. В меню Построение выберите команду Построить решение.
6. В меню Отладка выберите команду Запуск без отладки.
8Observer8 вне форума Ответить с цитированием
Старый 16.01.2011, 16:00   #3
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Проблема №3. error LNK2019: ссылка на неразрешенный внешний символ __imp__PlaySoundA@12 в функции "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) RussiaToday.obj.

Локализация проблемы в книге:
- "Глава 5. Ресурсы Windows-приложения", страница 268, "Листинг 5.4. Проект RussiaToday".

1. Создайте проект Win32 (см. Создание проекта Win32, п. 1-5).
Добавление необходимых файлов к проекту:
6. Скопируйте из каталога, прилагаемого к книге (Win32API->Ch_05->RussiaToday), файлы: *.bmp*, *.cpp*, *.h*, *.ico*,*.rc*,*.wav* в каталог созданного проекта (в директорию с файлом: *.vcpoj*).
7. Добавьте в проект файлы: *.cpp*, *.h*, *.rc*, в меню Проект выбрав команду Существующий элемент.... В диалоговом окне Добавление существующего элемента выберите Файлы *.cpp*, *.h*, *.rc* и нажмите кнопку Добавить.
8. Решите проблему №1 (см. "Решение проблемы №1").
9. Решите проблему №2 (см. "Решение проблемы №2").
Построение решения:
10. В меню Построение выберите команду Построить решение.
Результат построения:
error LNK2019: ссылка на неразрешенный внешний символ __imp__PlaySoundA@12 в функции "long __stdcall WndProc(struct HWND__
*,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) RussiaToday.obj

Решение проблемы №3.
Пожалуйста, помогите решить данную проблему.
8Observer8 вне форума Ответить с цитированием
Старый 16.01.2011, 16:56   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
MessageBoxW: невозможно преобразовать параметр 2 из 'const char [20]' в 'LPCWSTR'
второй параметр превратить из "строка" в L"строка",либо выключить юникод - 100раз было
p51x вне форума Ответить с цитированием
Старый 16.01.2011, 21:12   #5
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Ура! Ура! Ура!
Мне удалось решить проблему №3!!!

Решение проблемы №3.
Добавить в начало файла *.cpp* (файла с главной функцией WinMain) следующую строку:
Код:
#pragma comment( lib , "comctl32.lib" )
8Observer8 вне форума Ответить с цитированием
Старый 16.01.2011, 21:52   #6
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Прошу прощения. Предыдущее сообщение - это не решение проблемы №3. Проблема №3 всё ещё актуальна. А решил я другую проблему. Номер проблемы , её локализация в книге, воспроизведение и решение проблемы привожу далее.

Проблема №4. error LNK2019: ссылка на неразрешенный внешний символ __imp__CreateToolbarEx@52 в функции "struct HWND__ * __cdecl InitToolBar(struct HWND__ *)"

Локализация проблемы в книге:
- "Глава 8. Элементы управления общего назначения", страница 395, "Листинг 8.1. Проект ToolBar".

1. Создайте проект Win32 (см. Создание проекта Win32, п. 1-5).
Добавление необходимых файлов к проекту:
6. Скопируйте из каталога, прилагаемого к книге (Win32API->Ch_08->ToolBar), файлы: *.bmp*, *.cpp*, *.h*, *.rc* в каталог созданного проекта (в директорию с файлом: *.vcpoj*).
7. Добавьте в проект файлы: *.cpp*, *.h*, *.rc*, в меню Проект выбрав команду Существующий элемент.... В диалоговом окне Добавление существующего элемента выберите Файлы *.cpp*, *.h*, *.rc* и нажмите кнопку Добавить.
8. Решите проблему №1 (см. "Решение проблемы №1").
9. Решите проблему №2 (см. "Решение проблемы №2").
Построение решения:
10. В меню Построение выберите команду Построить решение.

Результат построения:
1) error LNK2019: ссылка на неразрешенный внешний символ __imp__CreateToolbarEx@52 в функции "struct HWND__ * __cdecl InitToolBar(struct HWND__ *)" (?InitToolBar@@YAPAUHWND__@@PAU1@@Z ) ToolBar.obj
2) error LNK2019: ссылка на неразрешенный внешний символ __imp__InitCommonControlsEx@4 в функции _WinMain@16 ToolBar.obj
3) fatal error LNK1120: 2 неразрешенных внешних элементов C:\Documents and Settings\Observer\Мои документы\Visual Studio 2008\Projects\ToolBar\Debug\ToolBar .exe

Решение проблемы №4.
Добавить в начало файла *.cpp* (файла с главной функцией WinMain) следующую строку:
Код:
#pragma comment( lib , "comctl32.lib" )
8Observer8 вне форума Ответить с цитированием
Старый 17.01.2011, 01:05   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
error LNK2019: ссылка на неразрешенный внешний символ __imp__PlaySoundA@12
Открываем МСДН и смотрим, какой заголовок и либа нужны.
p51x вне форума Ответить с цитированием
Старый 17.01.2011, 15:59   #8
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

p51x, за "удочку" - большое спасибо! А "рыбка" вот она:

Решение проблемы №3.
Добавить в начало файла *.cpp* (файла с главной функцией WinMain) следующую строку:
Код:
#pragma comment( lib , "winmm.lib" )
Хотя я "её поймал" другим способом, всё равно, спасибо. Через MSDN быстрее и надёжнее. Даже если просто в MSDN поиске написать "error LNK2019 __imp__PlaySoundA@12" (без ковычек), то по первой же ссылке получаем ответ от Bristow (шестой ответ):
http://social.msdn.microsoft.com/for...4-4AD3A915D799

Ю. А. Щупак пишет (стр. 267):
Цитата:
Функция PlaySound содержится в мультимедийной библиотеке Windows. Чтобы её имя и расположение стали известны компоновщику Visual Studio, необходимо подключить к проекту мультимедийную библиотеку winmm.lib'.
'Для Visual Studio 6.0 надо выволнить команду меню Project -> Settings и найти на вкладке Link текстовое поле Object/library modules.
А как я через настройки в VS2008 её подключу - ума не приложу. Пока остаётся подключать её таким способом. Может я плохо смотрел. Буду временами это проделывать. Если решу - то напишу.

Последний раз редактировалось 8Observer8; 17.01.2011 в 16:02.
8Observer8 вне форума Ответить с цитированием
Старый 17.01.2011, 20:54   #9
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Скачать:
- книгу "Win32 API. Эффективная разработка приложений [Ю.А. Щупак]", изд. Питер, 2007;
- каталог с исходными кодами, прилагаемый к книге.
Можно здесь:
http://www.intmain.ru/knigi-po-win32-api.html
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компиляция в Visual C++ 2008 Express Edition MacTiger Visual C++ 16 26.10.2014 20:19
Visual C++ 9.0 Express Edition Pizhon Visual C++ 25 09.09.2010 19:00
Visual Studio 2009 Express Edition unicode Софт 4 26.06.2009 23:15
Visual C++ 2008 Express Edition Grisman Visual C++ 1 02.03.2009 20:19
Visual C++ 2005 Express Edition MuRDOC Visual C++ 2 16.05.2008 16:10