imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 01.10.2005, 15:47     # 1
VENOMOUS SNAKE
Guest
 
Сообщения: n/a

Что-то с _WIN32_IE

Установил Microsoft Visual Studio .NET. Круто. ОС у меня WinXP. Тоже круто. Начал писать прогу, в ней активно используется System Tray. Так вот есть такая структура NOTIFYICONDATA называется. Начиная с пятой версии Internet Explorer она немного видоизменяется, предоставляя новые возможности. Вот кусок кода из SHELLAPI.H
Код:
typedef struct _NOTIFYICONDATAA {
        DWORD cbSize;
        HWND hWnd;
        UINT uID;
        UINT uFlags;
        UINT uCallbackMessage;
        HICON hIcon;
#if (_WIN32_IE < 0x0500)
        CHAR   szTip[64];
#else
        CHAR   szTip[128];
#endif
#if (_WIN32_IE >= 0x0500)
        DWORD dwState;
        DWORD dwStateMask;
        CHAR   szInfo[256];
        union {
            UINT  uTimeout;
            UINT  uVersion;
        } DUMMYUNIONNAME;
        CHAR   szInfoTitle[64];
        DWORD dwInfoFlags;
#endif
#if (_WIN32_IE >= 0x600)
        GUID guidItem;
#endif
} NOTIFYICONDATAA, *PNOTIFYICONDATAA;
typedef struct _NOTIFYICONDATAW {
        DWORD cbSize;
        HWND hWnd;
        UINT uID;
        UINT uFlags;
        UINT uCallbackMessage;
        HICON hIcon;
#if (_WIN32_IE < 0x0500)
        WCHAR  szTip[64];
#else
        WCHAR  szTip[128];
#endif
#if (_WIN32_IE >= 0x0500)
        DWORD dwState;
        DWORD dwStateMask;
        WCHAR  szInfo[256];
        union {
            UINT  uTimeout;
            UINT  uVersion;
        } DUMMYUNIONNAME;
        WCHAR  szInfoTitle[64];
        DWORD dwInfoFlags;
#endif
#if (_WIN32_IE >= 0x600)
        GUID guidItem;
#endif
} NOTIFYICONDATAW, *PNOTIFYICONDATAW;
#ifdef UNICODE
typedef NOTIFYICONDATAW NOTIFYICONDATA;
typedef PNOTIFYICONDATAW PNOTIFYICONDATA;
#else
typedef NOTIFYICONDATAA NOTIFYICONDATA;
typedef PNOTIFYICONDATAA PNOTIFYICONDATA;
#endif // UNICODE
Как видно новые поля в структуру добавляются по условию (_WIN32_IE >= 0x500). Загвоздка в том, что у меня этого не происходит, несмотря на то, что стоит WinXP и IE6.
Я вставил в начало своего кода следующий текст:
Код:
#if _WIN32_IE < 0x500
#error WINDOWS MUST DIE
#endif
Теперь компилятор често признаётся, что WINDOWS не самая лучшая система. Если кто знает, в чём проблема, помогите, пожалуйста.
 
Старый 01.10.2005, 22:30     # 2
alexey_ma
Member
 
Регистрация: 10.03.2002
Адрес: Israel
Сообщения: 245

alexey_ma Нимб уже пробиваетсяalexey_ma Нимб уже пробивается
Посмотри внимательно файл stdafx.h в своем проекте. Там можно выставить нужные #define для версии Win и IE.
Ну например так
Код:
#ifndef WINVER				
#define WINVER 0x0501 //(Windows XP and Windows .NET Server)")	
#endif
#ifndef _WIN32_IE			
#define _WIN32_IE 0x0500	
#endif
__________________
Best Regards
alexey_ma вне форума  
Старый 04.10.2005, 01:27     # 3
grinkevitch
Newbie
 
Регистрация: 18.08.2003
Сообщения: 22

grinkevitch Путь к славе только начался
Да, поля в структуре никто не добавляет и не убирает. Это ты сам должен сказать компилятору, под какую систему ты строишь приложение. и если ты явно ничего не сказал, то будет строиться максимально совместимое, то есть с минимумом доступных функций
grinkevitch вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 22:32.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.