Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Системный трей при переносе с C++ Builder 6 в С++


Автор: santey 3.11.2007, 11:00
При переносе моего проекта с C++ Builder 6 на C++ Builder 2006 и компиляции проекта в новом Builder 2006, компилятор выдает ошибку на данный код 

Данный код создает иконку в системном трее

головной файл
Код

class TFormMain : public TForm
{
__published:    // IDE-managed Components

private:    // User declarations
public:    // User declarations
       
BEGIN_MESSAGE_MAP
   MESSAGE_HANDLER(MyTrayIcon,TMessage,MTIcon);    //перехватывает щелчок по иконе в систрее
END_MESSAGE_MAP(TComponent);
};
 

файл реализации
Код


//переменная
TNotifyIconData NID;

//Ловим двойной клик мыши по значку в системном трее
void __fastcall TFormMain::MTIcon(TMessage&a)
{
   if(a.LParam==WM_LBUTTONDBLCLK)   
      Shell_NotifyIcon(NIM_DELETE,&NID);
}


Ошибки компилятора
Код

[BCC32 Error] MainUnit.cpp(14229): E2034 Cannot convert 'Shellapi::_NOTIFYICONDATAA *' to '_NOTIFYICONDATAA *'
[BCC32 Error] MainUnit.cpp(14229): E2342 Type mismatch in parameter 'lpData' (wanted '_NOTIFYICONDATAA *', got 'Shellapi::_NOTIFYICONDATAA *')


Кто-нибудь знает что это за ошибки?

Автор: a_n_d_y 3.11.2007, 13:54
в 2006-м билдере есть готовый компонент  TTrayIcon. Почему бы не воспользоваться им?

Автор: santey 3.11.2007, 23:38
Чтобы размер исполняемого файла был меньше.
Порядка 70 кб экономии.

А вообще разобрался в хелпе написано, что
нужно вместо TNotifyIconData NID;
использовать NOTIFYICONDATA NID;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)