Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование с использованием WinAPI

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Открыть новую тему     Написать ответ в эту тему

pit23



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BugFixer
 

Цитата:
А не проще всё это счастье через GDI+ пользовать?

 
Наверное проще.  
Вообще то это был пример из книги. И мне просто стало интересно узнать почему этот код в Visual C++ 2003 прекрасно работал, а в Visual C++ 2005 не хочет.  

Всего записей: 60 | Зарегистр. 04-03-2006 | Отправлено: 16:04 13-11-2006
Elf23

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет !!! Такой вот вопрос , где можно скачать хоть что нибудь по WinForms Visual C++!!
Зарание Спасибо

Всего записей: 23 | Зарегистр. 23-08-2006 | Отправлено: 16:45 13-11-2006
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
pit23

Цитата:
Вообще то это был пример из книги.

Интересно, какой?

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 21:27 13-11-2006
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
pit23

Цитата:
Вообще то это был пример из книги.  

Какого года книжка? Функция OpenFile уже лет десять как устарела.

Цитата:
И мне просто стало интересно узнать почему этот код в Visual C++ 2003 прекрасно работал, а в Visual C++ 2005 не хочет.
 
А никто и не обещал вечной поддержки кривого кода.
Изменили реализацию библиотеки в новой версии компилятора - эта кривость и вылезла на свет божий.

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 22:37 13-11-2006
pit23



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert
 

Цитата:
Интересно, какой?

Андре Ламот. Программирование игр для Windows. Советы профессионала.
 
Abs62

Цитата:
Какого года книжка?

Кажется 2004 года издания.
 
Добавлено:
Кстати попробывал использовать в коде функцию _open. С флагом открытие файла только для чтения. В таком случае функция _lread вообще ничего из файла читать нехочет.

Всего записей: 60 | Зарегистр. 04-03-2006 | Отправлено: 13:00 14-11-2006 | Исправлено: pit23, 13:41 14-11-2006
Qraizer



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
И не будет. _open - это C RTL, а _lread - это Win16 API. ИМХО в топку таких профессионалов, которые в 2004 году пользуются API, девятилетней выдержки. Может ты ошибся, и книга в 2004 году была издана у нас, а автором написана в каком-нибудь 1994-м?

Всего записей: 613 | Зарегистр. 08-08-2006 | Отправлено: 13:46 14-11-2006 | Исправлено: Qraizer, 13:48 14-11-2006
pit23



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Qraizer

Цитата:
Может ты ошибся, и книга в 2004 году была издана у нас, а автором написана в каком-нибудь 1994-м

Вполне  возможно (по крайней мере 2004 год -- это точно год издания. Издательство Вильямс)
 
Незнаеш какие функции чтения, поиска в файле наиболее подходят для функции _open. ?
 

Всего записей: 60 | Зарегистр. 04-03-2006 | Отправлено: 15:43 14-11-2006 | Исправлено: pit23, 15:52 14-11-2006
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
pit23

Цитата:
Незнаеш какие функции чтения, поиска в файле наиболее подходят для функции _open. ?

Обычные RTL-ные - _read и _lseek.

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 18:33 14-11-2006
pit23



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо всем за разъяснения. Разобрался, все работает с функциями  
_sopen_s, _read и _lseek.
 
Кстати незнаете в чем разница между функциями _sopen_s и _open. ? Таких "исключенных" (deprecated) функций довольно таки много.

Всего записей: 60 | Зарегистр. 04-03-2006 | Отправлено: 09:34 15-11-2006
Qraizer



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Политика примерно такая. Все "небезопасные" функции в 2005-й студии объявлены устаревшими, чтобы программист их юзающий получил варнинг при компиляции. Если программист уверен, что он хочет использовать именно их, то пусть явно подтверждает это намерение постфисом _s. Совсем их убрать нельзя, ибо их наличие регламентируется стандартом языка.
У самого этой студии ещё нет, пользуюсь 2003-ей, так что информация - только из чужих сообщений.

Всего записей: 613 | Зарегистр. 08-08-2006 | Отправлено: 13:25 15-11-2006
pit23



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Qraizer
Интересно в чем проявляется их небезопасность.

Всего записей: 60 | Зарегистр. 04-03-2006 | Отправлено: 14:16 15-11-2006
xdude



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
pit23

Цитата:
Интересно в чем проявляется их небезопасность.  

Небезопасность по мнению MS в том, что они не защищены от переполнения буфера, и поэтому злоумышленник может воспользоваться этим чтобы, скажем, записать в нужный ему участок памяти свой код/данные. ИМХО, нормальный программист сам должен заботиться об этом в своем коде.
Qraizer

Цитата:
Если программист уверен, что он хочет использовать именно их, то пусть явно подтверждает это намерение постфисом _s.

Это не совсем так. Функции с постфиксом _s имеют защиту от переполнения буфера, имеют дополнительные параметры при вызове, и в большинстве случаев (если не во всех) возвращают совершенно другой результат. Например:

Код:
 
char *strcpy(
   char *strDestination,
   const char *strSource  
);
 

и ее секьюрный аналог:

Код:
 
errno_t strcpy_s(
   char *strDestination,
   size_t sizeInBytes,
   const char *strSource  
);
 
 


----------
photocraft.com.ua

Всего записей: 481 | Зарегистр. 04-11-2004 | Отправлено: 15:28 15-11-2006 | Исправлено: xdude, 15:30 15-11-2006
pit23



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xdude

Цитата:
нормальный программист сам должен заботиться об этом в своем коде.

В своем коде да. А RTL функции это же по сути чужой код.

Всего записей: 60 | Зарегистр. 04-03-2006 | Отправлено: 16:24 15-11-2006
xdude



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
pit23

Цитата:
В своем коде да. А RTL функции это же по сути чужой код.

Я и не говорю про RTL, я говорю про свой код: например, при копировании в буфер нужно убедиться, что в этом буфере достаточно места, об этом во всех мануалах пишут. Особенно трепетно нужно относиться к данным, введенным пользователем. В общем, не думаю, что кто-то не знает этих прописных истин

----------
photocraft.com.ua

Всего записей: 481 | Зарегистр. 04-11-2004 | Отправлено: 16:38 15-11-2006
pit23



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xdude

Цитата:
В общем, не думаю, что кто-то не знает этих прописных истин

В общем согласен.
Так что можно и не использовать эти "защищенные" функции?

Всего записей: 60 | Зарегистр. 04-03-2006 | Отправлено: 17:05 15-11-2006
xdude



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
pit23

Цитата:
Так что можно и не использовать эти "защищенные" функции?

Это каждый решает на свой вкус. Лично я не использую, потому что пишу кросс-платформенные приложения, и нигде, кроме как у Мелкософта, этих функций нет.
А если приложение рассчитано исключительно под винду, и будет компиляться исключительно в Visual Studio 2005+ - то почему бы и нет?
Хотя, ИМХО, эти функции из той же серии, что и вопросы "Вы действительно уверены, что хотите...", которыми и в тему, и не в тему напичкана всеми нами любимая M$ Windows

----------
photocraft.com.ua

Всего записей: 481 | Зарегистр. 04-11-2004 | Отправлено: 17:34 15-11-2006
Qraizer



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
xdude
Ну не совсем так. Комитеты по стандартизации языков C и C++ многое хотели бы поменять в новых релизах, но не могут из соображений совместимости с уже существующими проектами. MS просто решила эту проблему хоть как-то решить. Я не думаю, что это лучший метод, но всё ж таки это лучше, чем совсем ничего.

Всего записей: 613 | Зарегистр. 08-08-2006 | Отправлено: 20:01 15-11-2006 | Исправлено: Qraizer, 20:02 15-11-2006
DoctorLans

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ищу книги по winAPI (для windows XP) на родном и могучем.

Всего записей: 248 | Зарегистр. 07-10-2006 | Отправлено: 21:17 17-11-2006
Thritt



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня такая проблема - хочу воспроизвести звуковой файл (wav). Файл находится в той же папке, где и EXE файл. Я пишу:  
PlaySound(TEXT("alarm.wav"), NULL, SND_FILENAME | SND_ASYNC);
Программа не компилируется, студия (VS 2005) указывает две ошибки:
 
Error    1    error LNK2001: unresolved external symbol __imp__PlaySoundW@12    sound.obj    
 
Error    2    fatal error LNK1120: 1 unresolved externals    E:\Мои документы\Visual Studio 2005\MY PROJECTS\sound\Release\sound.exe    1    
 
Может как нибудь по другому можно звук воспроизвести?

Всего записей: 79 | Зарегистр. 10-07-2006 | Отправлено: 19:23 18-11-2006
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Thritt
На память не помню, но в коды посмотри, которые идут с книгой Петзолда, там в примерах чуть ли не в самом начале книги есть пример использования этой функции.
Очевидно, ты забыл библиотеку присобачить для линкера, для этого можешь посмотреть в MSDN, какую следует подключить.
 
P. S. Вот: Winmm.lib.

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 19:39 18-11-2006 | Исправлено: TeXpert, 19:42 18-11-2006
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование с использованием WinAPI


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru