Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > совпадение имен функций


Автор: _hunter 20.5.2004, 17:45
есть функция Windows GDI ClientToScreen и в Builder' e есть фунция с таким именем.
как мне указать какую именно функцию я использую? мне выдется сообщение о несоответствии типов ( я пытаюсь использовать функцию Windows )

Заранее благодарю за ответ.

Автор: Sined 20.5.2004, 19:16
А тебе надо подключать обе библиотеки, где есть эти функции??
Елси да то, может помочь такой прием.
1) Если они в разных пространствах имен, то указывать эти пространства явно.
2) Если нет и она принадлежит кернел32, попробуй вызвать по номеру.

Автор: mr.DUDA 20.5.2004, 19:41
Цитата
Если они в разных пространствах имен, то указывать эти пространства явно.

добавлю от себя, что скорее всего в билдере не переопределена WinAPI'шная (глобальная) функция ClientToScreen, так что стоит попробовать указать глобальное пространство имён, т.е. ::ClientToScreen(args)

Автор: Sined 21.5.2004, 11:40
Или попробовать явно присовокупить библиотеку .
Код

HINSTANCE hAttDll=LoadLibrary("user32.dll");
FARPROC proc=GetProcAddress(hAttDll,"ClientToScreen");
__asm
{
push args
push proc
pop ebx
call  [ebx]
}


Автор: <Spawn> 22.5.2004, 07:58
Builder-овская ClientToScreen - это метод класса TControl(Предка TForm), т.е. в любом методе ее можно вызвать так

Код
this->ClientToScreen();


Так можно АПИ-шную вызвать

Код
 ::ClientToScreen();

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