Вопрос № 53608: Здравствуйте эксперты!
Пытаюсь отрисовать пункты меню сам. Не получается, VC пишет вот такие ошибки:
1) error LNK2001: unresolved external symbol "public: virtual void __thiscall CTrayMenu::DrawItem(struct tagDRAWITEMSTRUCT *)" (?Dr...Вопрос № 53641: Добрый день, уважаемые эксперты!
Возник вопрос по С++ Buider 6.0. Не совсем понятно как правильно подключать модули, написанные на С. При создании нового приложения я могу выбрать Новую форму на С++ или, например, создать приложение на С. Предпол...
Вопрос № 53.608
Здравствуйте эксперты!
Пытаюсь отрисовать пункты меню сам. Не получается, VC пишет вот такие ошибки:
1) error LNK2001: unresolved external symbol "public: virtual void __thiscall CTrayMenu::DrawItem(struct tagDRAWITEMSTRUCT *)" (?DrawItem@CTrayMenu@@UAEXPAUtagDRAWITEMSTRUCT@@@Z)
2) fatal error LNK1120: 1 unresolved externals
Класс CTrayMenu - производный от CMenu. Вот описание функции в CTrayMenu.h:
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
А вот её определение в CTrayMenu.cpp:
void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC dc;
dc.Attach(lpDrawItemStruct->hDC);
dc.SetTextColor(RGB(45, 233, 90));
dc.DrawText((LPSTR)lpDrawItemStruct->itemData, -1, CRect(lpDrawItemStruct->rcItem), DT_LEFT);
dc.Detach();
}
И еще небольшой вопросик: как мне указать у меню стиль (меню создается не из ресурсов, а в коде) OWNER_DRAW? Необходимо просто у каждого элемента при создании в его стилях это указывать? Подскажите пожалуйста, в чем тут дело?
Заранее спасибо.
Отправлен: 29.08.2006, 09:38
Вопрос задал: Saw (статус: 3-ий класс)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: dentist
Здравствуйте, Saw!
Осмелюсь предположить, что вы обращаетесь к члену класса который описан в сторонней библиотеке или файле не включённом в проект.
я в таких случаях обычно "рисовал" некий API с (при необходимости) мэнеджером раздаваемых либой "ресурсов". Это самый простой вариант если отделение определённых классов от основного проекта обосновано и я правильно понял суть проблемы ;)
--------- "Software is like sex, it's better then it's free" (c) Linus Torvalds
Ответ отправил: dentist (статус: 2-ой класс)
Ответ отправлен: 29.08.2006, 09:50
Отвечает: Mihasic
Здравствуйте, Saw!
CTrayMenu::DrawItem, а не просто DrawItem в cpp файле... обычно на это могли еще и warning'и быть, но Вы не используете this (как явно, так и неявно), поэтому ругательств не было при компиляции до сборки.
Ответ отправил: Mihasic (статус: 6-ой класс)
Ответ отправлен: 29.08.2006, 11:17
Отвечает: Шинтяков Дмитрий Васильевич / Ratson
Всё проще. Вы описываете метод так:
Найдите ё отличие ^_^ Уже нашли? Если нет - посмотрите на слово virtual.
Вы описали одну фунцию (виртуальную), а реализовали совсем другую (не виртуальную). Вот ликовщик и ругается, он не может найти реализацию нужной ему функции. Про стили меню ничего не скажу - давно под винды не писал.
Добрый день, уважаемые эксперты!
Возник вопрос по С++ Buider 6.0. Не совсем понятно как правильно подключать модули, написанные на С. При создании нового приложения я могу выбрать Новую форму на С++ или, например, создать приложение на С. Предположим, я хочу в свой проект добавить именно то, что будет написано на С. И выполняться сие должно по нажатию какой-то кнопочки на форме приложения С++ Builder. Как правильно подключить такой модуль, написанный на С?
Спасибо за ответ!!!!
P.S. Не нашел ничего по С++ Builder здесь. По Делфи есть..Может подскажете, есть ли такое, а то кажется что не в ту тему задаю вопрос..Хотя и в С/С++
Отправлен: 29.08.2006, 14:21
Вопрос задал: Joe Black (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: EPDSota
Здравствуйте, Joe Black!
Включить файл написанный на С в проект можно так-же, как и заголовочный файл, т.е. просто написать в своей программе:
Приложение:
--------- Открыть глаза навстречу солнцу
Ответ отправил: EPDSota (статус: Специалист)
Ответ отправлен: 29.08.2006, 14:34
Отвечает: Santana
Здравствуйте, Joe Black!
если исходники то по моему так #include "ИмяМодуля.с"
Ответ отправил: Santana (статус: 6-ой класс)
Ответ отправлен: 29.08.2006, 14:36