Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
3 / 3 / 0
Регистрация: 02.07.2013
Сообщений: 23

DirectX9 "LPD3DXFONT не содержит члена Begin()"

14.07.2013, 16:33. Показов 1802. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Изучаю DirectX9 столкнулся с проблемой. Как вывести текст на экран? В книге очень много ошибок в коде, которые приходится править самому. Вот кусок кода:
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
39
40
41
42
43
44
45
46
47
48
49
50
#include<Windows.h>
#include<d3d9.h>
#include<d3dx9.h>
#include<d3dx9core.h>
#include<mmsystem.h>
#pragma comment(lib, "d3dx9.lib")
#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "winmm.lib")
LPDIRECT3D9 pDirect3D = NULL; //Главный объект
LPDIRECT3DDEVICE9 pDirect3DDevice = NULL; //устройство
LPDIRECT3DVERTEXBUFFER9 pVertexBuffer = NULL; //буфер вершин
LPDIRECT3DINDEXBUFFER9 pIndexBuffer = NULL; //буфер индексов
LPD3DXFONT pFont = NULL; //Шрифт Direct3D
RECT Rec; //Прямоугольник
HFONT hFont; //шрифт
 
VOID DrawMyText(LPDIRECT3DDEVICE9 pDirect3DDevice, HFONT hFont, char* TextString, int x, int y, int x1, int y1, D3DCOLOR MyColor)
{
    //создаём шрифт
    hFont = CreateFont(30, 10, 0, 0, FW_NORMAL, FALSE, FALSE, 0, 1, 0, 0, 0, DEFAULT_PITCH|FF_MODERN, "Arial");
    //координаты прямоугольника
    Rec.left = x;
    Rec.right = y;
    Rec.top = x1;
    Rec.bottom = y1;
    //инициализируем шрифт
    D3DXCreateFont(pDirect3DDevice, 30, 10, 0, 0, FALSE, 1, 0, 0, DEFAULT_PITCH|FF_MODERN, "Arial", &pFont);
    //вывод текста
    pFont->Begin(); //Пишет что класс LPD3DXFONT не содержит члена Begin()
    pFont->DrawText(0, TextString, -1, &Rec, DT_WORDBREAK, MyColor);
    pFont->End(); //Пишет что класс LPD3DXFONT не содержит члена End()
}
VOID RenderingDirect3D()
{
    if(pDirect3DDevice == NULL)
    {
        return;
    }
    pDirect3DDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(60, 100, 150), 1.0f, 0);
    pDirect3DDevice->BeginScene(); //начало сцены
    LightMaterial();
    Matrix();
    pDirect3DDevice->SetStreamSource(0, pVertexBuffer, 0, sizeof(CUSTOMVERTEX));
    pDirect3DDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
    pDirect3DDevice->SetIndices(pIndexBuffer);
    pDirect3DDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 36, 0, 12);
    DrawMyText(pDirect3DDevice, hFont, "Кубик", 10, 10, 800, 800, D3DCOLOR_ARGB(250, 250, 250, 50));
    pDirect3DDevice->EndScene();
    pDirect3DDevice->Present(NULL, NULL, NULL, NULL);
}
Остальную часть кода опустил ввиду того, что она довольно объёмная и думаю, что она не влияет на вывод текста.
Ошибка возникает на стоке 30, 32. как уже говорилось текст ошибки "класс LPD3DXFONT не содержит члена Begin(), End()" В книге написано именно так, перепроверял несколько раз. Без этих функций текст не выводится.
Кто чем может помочь?
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.07.2013, 16:33
Ответы с готовыми решениями:

C++. Класс не содержит члена
Есть абстрактный класс Pair и производный класс Fraction. В Pair.cpp выдает ошибку - класс Pair не содержит члена NumberFirst и...

QTextCodec не содержит члена setCodecFortTr()
Добрый день. Есть задача добавить несколько айтемов с русскими именами в комбобокс. Для удобства решил воспользоваться QTextCodec. ...

Класс DialogResult не содержит члена Cancel и Ok
хочу создать событие по нажатию на кнопку чтоб открывался диалог для открытия файла private: void openFILE_Click(Object sender,...

7
6 / 6 / 1
Регистрация: 04.05.2012
Сообщений: 36
14.07.2013, 21:28
А в какой среде пишеш ?
У меня вобше не видит заголовков:
d3dx9.h
d3dx9core.h
1
3 / 3 / 0
Регистрация: 02.07.2013
Сообщений: 23
14.07.2013, 21:59  [ТС]
Цитата Сообщение от leofun01 Посмотреть сообщение
А в какой среде пишеш ?
У меня вобше не видит заголовков:
d3dx9.h
d3dx9core.h
Пишу в Visual Studio 2012. Заголовков у меня тоже сначала не видел надо прописать пути вручную в свойствах проекта
1
Заблокирован
14.07.2013, 23:35
Чтоб вывести текст на экран - изучай DirectWrite из DirectX 11 и нечего сидеть на старье
0
3 / 3 / 0
Регистрация: 02.07.2013
Сообщений: 23
14.07.2013, 23:51  [ТС]
Цитата Сообщение от babkaVkedah Посмотреть сообщение
Чтоб вывести текст на экран - изучай DirectWrite из DirectX 11 и нечего сидеть на старье
Не все видеоадаптеры поддерживают DirectX11... Мне тогда даже тестировать не на чем будет. Да и занимаюсь этим больше для общего развития, чем с целью написать что-то стоящее.
1
Заблокирован
14.07.2013, 23:59
Цитата Сообщение от K_F Посмотреть сообщение
Не все видеоадаптеры поддерживают DirectX11
Это какие же? Может вы есЧё скажете, что у вас Visual Studio установлена на 386-м камне? ))))))
А если по теме - какие именно ошибки? Здесь же не клуб экстрасенсов
0
 Аватар для BeginerMan
51 / 50 / 14
Регистрация: 17.11.2012
Сообщений: 427
16.07.2013, 11:55
нужно выводить с помощью метода DrawText
C++
1
2
LPD3DXFONT font;
font->DrawText(sprite,text,-1,rect,NULL,color);
Впрочем , когда я учился , тоже по книгам , столкнулся с этой же проблемой , нет не какого Begin , выводи с помощью DrawText.
http://msdn.microsoft.com/en-u... s.85).aspx

Добавлено через 2 минуты
И всякие HFONT не нужны , и всё что с ним связано.
Просто создаёшь font с помощью D3DXCreateFont и выводишь с помощью DrawText

Добавлено через 2 минуты
И ещё , когда я рылся в исходниках d3dx9.h и тому подобных , в этом же файле d3dx9.h находятся и другие заголовки d3dx9.
Т.е. ты можешь тупо вписать один инклюд d3dx9.h

Добавлено через 9 часов 48 минут
Ну и на всякий , при таком раскладе , делай D3DXCreateFont за сценой , ваще за пределы функции RenderingDirect3D
а то так получается , что он у тебя будет создоваться чут ли не 100 раз за секунду , а через секунд 30 , он сожрёт у тебя 1 гиг ОЗУ.
2
3 / 3 / 0
Регистрация: 02.07.2013
Сообщений: 23
16.07.2013, 20:51  [ТС]
Огромное спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.07.2013, 20:51
Помогаю со студенческими работами здесь

Namespace boost не содержит члена lexical_cast
.... #include &quot;boost\lexical_cast.hpp&quot; int main() { ..... m.insert(std::pair&lt;int, std::string&gt;(i,...

Ошибка класс Node не содержит члена prev
Написал программу, сделал всё на старом компьютере на том же компиляторе. Пересел на новый пк В итоге вижу ошибки, которых не было ...

Найти номер члена разложения бинома, который не содержит х
(3\sqrt{x} + \frac{1}{x})16 Если можно,с комментариями)Спасибо!

Разработать класс, который в качестве основного члена данных содержит строку (массив типа char) в области private
Разработать класс, который в качестве основного члена данных содер- жит строку (массив типа char) в области private. А так же имеет методы...

Дан массив строк. Напишите программу, проверяющую правильность вложения операторных скобок begin . end — каждому begin должен соответствовать end
Дан массив строк, представляющий собой фрагмент программы на языке Pascal. Напишите программу, проверяющую правильность вложения...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru