|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.10.2011, 01:01 | #1 |
Пользователь
Регистрация: 23.10.2011
Сообщений: 18
|
Нюансы в программном коде Win32 API
Здравствуйте, господа профи!
Именно к Вам есть вопросы связанные в программированием в C++ для Win32. Программированием занимаюсь давно, в основном на Visual Basic и Visual Foxpro. С Visual C++ сначала не подружился, теперь решил восполнить этот пробел. Дело в том, что я занимаюсь еще и 3D-графикой и решил заняться программированием применительно к ней. Для работы выбрал MS VS 2005. Не спрашивайте почему. Так вот знакомство с C++ на уровне простых консольных программ прошло более-менее нормально, но когда добрался до Win32 API начались проблемы, в частности с отличием типов данных в старых версиях и с unicode. Объясните пожалуйста следующие моменты: Насколько необходимо использовать ATOM? Я понимаю, что он проверяет не создавалась ли копия приложения, но в более ранних версиях обходились без него, мастер проекта генерит эти строки, а в новой литературе в примерах ATOM часто не используют. Почему? Пишут "по-старинке" или ATOM не обязателен. Часто возникают проблемы (особенно со старыми примерами программ написанных даже еще по MS VS 6) с использованием строковых переменных, так называемые "широкие" символы. Зачастую решается добавлением ключа L перед строкой, но в некоторых местах программы это не помогает, приходится методом тыка подбирать или unicode отключать чтобы заработало. Еще непонятен момент с возвратом значений из процедуры WinMain: return msg.wParam; - компилятор выдает предупреждение о несоответствии типов данных и возможной потере данных; Мастер создания проекта генерит: return (int) msg.wParam; - ну здесь вроде все ясно с приведением типов, но почему в старой литературе этого нет? В ранних версиях компиляторам все равно было какое значение возвращается???? В более новой литературе приводится такое: return static_cast<int>(msg.wParam); - а вот тут непонятно зачем приводится к статическому типу???? Для чего сохраняется в памяти возвращаемое значение???? В ранних источниках литературы такого в примерах не наблюдается. По строковым переменным: в старых версиях - char szClassName[] = "MyClass"; в новых - static LPCTSTR szAppName = L"MyClass"; или еще такое - TCHAR szWindowClass Так что из этого более правильное? Борьба с такими "мелочами" занимает время и отвлекает от процесса изучения. В целом поправки в программах небольшие и сами программы все-таки начинают работать, но на поиск и борьбу с такими нюансами уходит время. Уважаемые профи, можете ли Вы дать рекомендации относительно того на что следует обращать внимание при использовании ранних кодов программ? Какие изменения нужно внести в используемые типы данных? Потому, что иной раз приходится в настройках проекта отключать опцию использования unicode, но ведь он не красоты ради придуман и игнорировать его все равно нельзя. Как следует подправить старый код чтобы он нормально заработал в новых версиях. Спасибо. |
28.10.2011, 09:50 | #2 | ||
C++,DirectX/OpenGL
Форумчанин
Регистрация: 09.01.2011
Сообщений: 422
|
Очень зря ! Сейчас доступна MS VS 2010 бесплатная версия, которая частично поддерживает новый стандарт C++0x.
Цитата:
Цитата:
Смотря, что используется в программе. char или wchar_t (юникод). TCHAR - "полиморфный" тип, что в данном случае будет использоваться char или wchar_t зависит от настроек проекта. |
||
28.10.2011, 11:04 | #3 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,724
|
Цитата:
|
|
28.10.2011, 16:05 | #4 |
Пользователь
Регистрация: 23.10.2011
Сообщений: 18
|
|
28.10.2011, 16:08 | #5 | |
Пользователь
Регистрация: 23.10.2011
Сообщений: 18
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка в программном коде что делать! | LLWIS | C++ Builder | 9 | 23.08.2011 18:56 |
win32 API.Visual Studio 2008.Создание проекта Win32 | Aleksandr_Yanov | Visual C++ | 2 | 12.09.2010 13:09 |
Обьясните что делают и означают пару строк в программном коде! | FreeZeT | Общие вопросы C/C++ | 2 | 15.06.2010 03:20 |
Не могу разобраться в программном коде | knight190 | Помощь студентам | 0 | 12.06.2010 12:27 |
Вопрос *где в программном коде реализуется следующая операция... | Roman Charming | Общие вопросы Delphi | 4 | 19.06.2009 06:58 |