Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
 Аватар для Aloir
225 / 225 / 38
Регистрация: 17.12.2010
Сообщений: 713

не видит нужную перегрузку функции

27.03.2013, 11:09. Показов 1874. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Помогите пожалуйста, не могу понять в чем проблема, у меня видит только одну функцию
C++
1
 void WinHelp( DWORD dwData, UINT nCmd = 15U);
вместо:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
HWND
WINAPI
HtmlHelpA(
    HWND hwndCaller,
    LPCSTR pszFile,
    UINT uCommand,
    DWORD_PTR dwData
    );
 
HWND
WINAPI
HtmlHelpW(
    HWND hwndCaller,
    LPCWSTR pszFile,
    UINT uCommand,
    DWORD_PTR dwData
    );
#ifdef UNICODE
#define HtmlHelp  HtmlHelpW
#else
#define HtmlHelp  HtmlHelpA
#endif // !UNICODE
подключал htmlhelp через additional include(путь к папке include), и additional dependencive("htmlhelp.lib") соответственно, + #include "htmlhelp.h" в *.cpp

пытаюсь вызвать функцию:
C++
1
return HtmlHelp((HWND)pHelpInfo->hItemHandle,szHelpFilePath,HH_DISPLAY_TEXT_POPUP,(DWORD)&popup)!= NULL;
пишет, что не принимает 4 перегрузок

Добавлено через 41 минуту
копиляция под 2010 студией
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.03.2013, 11:09
Ответы с готовыми решениями:

Выполнить перегрузку функции
Добавить char в перегрузку функции #include <iostream> #include <conio.h> #include <string> using namespace std; ...

ФУНКЦИИ/Используя перегрузку функций, написать
#include "stdafx.h" #include "stdio.h" #include "conio.h" #define n 5 int func1(int a, int i) { return(a); ...

Про перегрузку функции и Virtual в классах
В общем вообще запутался с этим ООП... Вот есть в классе функция, перегрузка функции даёт возможность этой функции иметь несколько...

10
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
27.03.2013, 11:10
Может быть это Вам поможет.
0
 Аватар для Aloir
225 / 225 / 38
Регистрация: 17.12.2010
Сообщений: 713
27.03.2013, 21:29  [ТС]
если чесно не очень, уже смотрел..

на всякий слуай вот код процедуры:

C++
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
BOOL CStLetOfCredDlg::OnHelpInfo(HELPINFO* pHelpInfo) 
{
    CWnd *pWnd = CWnd::FromHandle((HWND)pHelpInfo->hItemHandle);
    if ( (pHelpInfo->iContextType == HELPINFO_WINDOW) )
    {
        HH_POPUP popup;
        memset(&popup, 0, sizeof(popup));
        popup.cbStruct  = sizeof(popup);
        popup.hinst     = NULL;
        popup.pt.x = -1;
        popup.pt.y = -1;
        popup.clrBackground = -1;
        popup.clrForeground = -1;
        popup.rcMargins.left    = -1;
        popup.rcMargins.top     = -1;
        popup.rcMargins.right   = -1;
        popup.rcMargins.bottom  = -1;
 
      
         popup.idString  = g_arrHelpContext[0];
 
        TCHAR szHelpFilePath[1024] = _T("somepath.chm");
        
        CString sFont;
        sFont.Format(_T("Arial, 8 "));
        popup.pszFont = sFont;
        
 
    return HtmlHelp((HWND)pHelpInfo->hItemHandle,szHelpFilePath,HH_DISPLAY_TEXT_POPUP,(DWORD)&popup)!= NULL;
        
    }
    return TRUE;
}
или бывает вариант, что он видит нужную функцию из 4 параметров, но всеравно есть ошибка, что не принимает 4 параметра

Добавлено через 9 часов 33 минуты
решил проблему принудиленым вызовом HtmlhelpA, но не могу понять почему define не отрабатывает..
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
28.03.2013, 00:11
Просто переставь кодировку преокта с юникода на MultyByteCharecterSet
Цитата Сообщение от Aloir Посмотреть сообщение
решил проблему принудиленым вызовом HtmlhelpA, но не могу понять почему define не отрабатывает..
дефы надо писать не после, а перед хедерами в самом начале (думаю у тебя они после хедеров идут)

Не по теме:

PS:Что за ненужный атавизм из кода?

Цитата Сообщение от Aloir Посмотреть сообщение
CString sFont;
* * * * sFont.Format(_T("Arial, 8 "));
* * * * popup.pszFont = sFont;

Миниатюры
не видит нужную перегрузку функции  
0
 Аватар для Aloir
225 / 225 / 38
Регистрация: 17.12.2010
Сообщений: 713
28.03.2013, 12:54  [ТС]
дефайны обьявлены в файле htmlhelp.h от HTML Help workshop, и они просто инклудились, и кодировка стояла в проекте мультибайт.

Не по теме:


насчет атавизма скажу - код не мой, просто перекомпиляция проекта с 2005 -> 2010 студию



Добавлено через 12 часов 9 минут
в итогде проблема решилась через

C++
1
::HtmlHelp(...)
глупо как то получилось))))
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
28.03.2013, 13:08
Цитата Сообщение от Aloir Посмотреть сообщение
глупо как то получилось))))
- почему глупо дветочием ты раскрыл глобальную видимость и взял неперегруженный прототип функции. Скажем в CDialog прототип MessageBox перегружен и из него выброшен параметр HWND (предполагается что вызов идёт для текущего окна), потмоу чтобы заюзать прототип в котором HWND присутсвует нужно записать
::MessageBox
0
28.03.2013, 13:10

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
и взял неперегруженный прототип функции.
А не правильнее ли сказать "сокрытый" в данном случае?

0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
28.03.2013, 13:13
Собственно подобные проблеммы можно фиксить и грубым extern-ом :
Скажем надо подъюзать функцию с определлёным прототипом, пишем
C++
1
extern BOOL Fun(нужне параметры)
и ниже уже юзаем нужный нам прототип

Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
А не правильнее ли сказать "сокрытый" в данном случае?
- думаю нет не правильно, так как нам нужно взять непергруженный для текущего класса (коим является CDialog) метод

1
 Аватар для Aloir
225 / 225 / 38
Регистрация: 17.12.2010
Сообщений: 713
28.03.2013, 13:18  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- почему глупо дветочием ты раскрыл глобальную видимость и взял неперегруженный прототип функции. Скажем в CDialog прототип MessageBox перегружен и из него выброшен параметр HWND (предполагается что вызов идёт для текущего окна), потмоу чтобы заюзать прототип в котором HWND присутсвует нужно записать
::MessageBox
глупо в том смысле, что сразу про двоеточие забыл)) как-то вылетело с головы))
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
28.03.2013, 13:28
Наглядная демонстрация
C++
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
#include <iostream>
using namespace std;
 
void SomeFun(int param1, int param2);
 
class CSomeClass 
{
public :
    CSomeClass(){};
    void SomeFun(int param)
    {
        cout<<"CSomeClass SomeFun : "<<endl
            <<"param  : "<<param<<endl;
    }
    void Function();//вот условно наши обработчики кнопок и менюшек
};
 
int main()
{
    CSomeClass pSome;
    pSome.Function();
    return 0;
}
 
void CSomeClass::Function()
{
    SomeFun(15);
    ::SomeFun(25, 30);
    extern void SomeFun(int param1, int param2);
    SomeFun( 5, 28);
}
 
void SomeFun(int param1, int param2)
{
    cout<<"Clobal SomeFun : "<<endl
        <<"param1 : "<<param1<<endl
        <<"param2 : "<<param2<<endl;
}
Миниатюры
не видит нужную перегрузку функции  
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
28.03.2013, 13:31
PS:Недостаток extern-а - забивает нативные функции при попытке их вызова ниже extern, вариантов решения два
1-й юзать this
C++
1
2
3
4
5
6
7
8
void CSomeClass::Function()
{
    SomeFun(15);
    ::SomeFun(25, 30);
    extern void SomeFun(int param1, int param2);
    SomeFun( 5, 28);
    this->SomeFun(5);
}
2-е юзать {}
C++
1
2
3
4
5
6
7
8
9
10
void CSomeClass::Function()
{
    SomeFun(15);
    ::SomeFun(25, 30);
    {
    extern void SomeFun(int param1, int param2);
    SomeFun( 5, 28);
    }
    SomeFun(5);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.03.2013, 13:31
Помогаю со студенческими работами здесь

Найти периметр и площадь фигур через перегрузку функции
Полный текст программы: Написать программу для нахождения периметра и площади прямоугольника, квадрата, треугольника и трапеции через...

Выполнить перегрузку функции вычитания для обыкновенных и десятичных дробей
Написать перегруженные функции и основную программу, которая их вызывает. а) для вычитания десятичных дробей; б) для вычитания...

Выполнить перегрузку функции вычитания для обыкновенных и десятичных дробей
Написать перегруженные функции и основную программу, которая их вызывает. а) для деления десятичных дробей; б) для деления обыкновенных...

Реализовать перегрузку функции, определяющую максимальное значение в массивах разных типов
Добрый день. Пытаюсь разбираться с перегрузкой функций. стоит задача &quot;Используя перегрузку функций, написать программу определения...

Выполнить перегрузку функции, чтобы она работала с числами типа int, float
1.2 Выполнить перегрузку функции, чтобы она работала с числами типа int, float. 1.3 На основе заданий 1.1 и 1.2 создайте шаблон функции.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru