To implement an interface, you must have created a project as an ATL COM application or as an MFC application that contains ATL support. You can use the ATL project wizard to create an ATL application, or add an ATL object to your MFC application to implement ATL support for an MFC application.
Once you create the project, to implement an interface, you must first add an ATL object. See Add objects and controls to an ATL project for a list of wizards that add objects to your ATL project.
The wizard doesn’t support ATL dialog boxes, XML Web services using ATL, performance objects, or performance counters.
If you add an ATL control, you can specify whether to implement default interfaces. The default interfaces are listed on the Interfaces page of that wizard and defined in atlcom.h.
Once you’ve added the object or control, you can implement other interfaces, located in any available type library, using the Implement Interface Wizard.
If you’re adding a new interface, you must add it manually to the project’s .idl file. For more information, see Add a new interface in an ATL project.
Что такое интерфейс в ООП. Интерфейс c++ пример. Изучение С++ для начинающих. Урок #113
To implement an interface:
- In Class View, right-click the class name for your ATL object.
- Choose Add from the shortcut menu, and then choose Implement Interface to display the implement interface wizard.
- Select the interfaces to implement from the appropriate type libraries and select Finish.
- In Class View, expand the object’s Bases and Interfaces node to see the interface you’ve implemented. Then expand the interface’s node to see its available properties, methods, and events.
Note You can also use the object browser to examine the members of the interface.
In this section
Implement interface wizard
This wizard implements an interface for a COM object. Implementations of many interfaces are included in the COM libraries available with Visual Studio and Windows. An interface implementation is associated with an object when an instance of that object is created. It also provides the services that the object offers.
For a discussion of interfaces and implementations, see Interfaces and interface implementations in the Windows SDK.
- Implement interface from Specifies the location of the type library, from which the interface is created.
OptionDescription Project The type library is part of the project. Registry The type library is registered in the system. Registered type libraries are listed in Available type libraries. File The type library isn’t necessarily registered in the system but is held in a file. Provide the file location in Location. - Available type libraries Displays the available type libraries holding the interface definitions that you can implement. If you choose File under Implement interface from, this box is unavailable for change.
- Location Displays the location of the type library currently selected in the Available type libraries list. If you selected File under Implement interface from, select the ellipsis button to locate a file holding the type library to use.
- Interfaces Displays the interfaces whose definitions are held in the type library currently selected in the Available type libraries box.
Note Interfaces that have the same name as those already implemented by the selected object aren’t displayed in the Interfaces box.
ОКОННОЕ ПРИЛОЖЕНИЕ С НУЛЯ — ПОЛНЫЙ БАЗОВЫЙ КУРС C++ WINAPI
Note If you include more than one interface that derives from IDispatch , or if you try to implement an interface that’s derived from another interface already on your class, then you must disambiguate the COM_MAP entries. For more information, see COM_INTERFACE_ENTRY2.
Источник: learn.microsoft.com
Как создать GUI на чистом C?
Освоил язык С в той мере, в которой предлагает мой IT-ВУЗ, считаю, что понимаю его вполне неплохо.
В связи с этим возникает желание можернизировать некоторые свои программы, добавив в них GUI.
В интернетах очень мало советов по этому поводу, поэтому и написал сюда:
может кто-нибудь писал программы на С с качественным графическим интерфейсом и как это делается?
- Вопрос задан более трёх лет назад
- 30689 просмотров
2 комментария
Оценить 2 комментария
Есть успехи?
Решения вопроса 3
Знаю JS, PHP, C++, C#
Ещё есть visual c++ (на дотнете основан, можно юзать Windows Forms или Windows Presentation Foundation), который отлично стыкуется с обычным c++ через #pragma managed и #pragma unmanaged
Ответ написан более трёх лет назад
спасибо, действительно, язык называется c++/cli. Шарп — хорошая штука, но с native c++ плохо и неудобно стыкуется.
OpenGL лучше всего в данном случае подойдет.
Ну или библиотечку какую-нибудь использовать вроде lesstif.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
На голом си не так уж много GUI библиотек. Пожалуй самая навороченная из кросс-платформенных, свободных это Gtk++.
Ну если вам только под винду то можно конечно взять WinAPI, хотя имхо это самый проигрышный вариант.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ответы на вопрос 4
Full-stack developer (Symfony, Angular)
Берете Qt, осваиваете C++ а на сях пишите только библиотеки.
p.s. сишные программы должны быть только под консоль, ибо это тру.
Ответ написан более трёх лет назад
Нравится 6 2 комментария
почему под консоль?
PostgreSQL DBA
Раскуриваете API той графической оболочки, под которую пишете, и создаёте гуй.
На сколько помню свои эксперименты десятилетней давности — одно только создание пустого окна на WinAPI — порядка 200 строк кода.
Ответ написан более трёх лет назад
Нравится 3 2 комментария
Да ладно, двухсот строк.
#include long CALLBACK wndproc(HWND hwnd,ui msg,ui wp,long lp) < return DefWindowProc(hwnd,msg,wp,lp); >int main()
Интересно что значит с «качественным», полагаю что «хорошесть» интерфейса — его удобство, а если вы про удобную разработку, так хм, ну как придется.
есть iUP,GTK+, и еще другие, вам нужна кроссплатформенность?, а рисовать вы желаете системные контролы — доки по этому есть, или собственные? — копайте Qt например, там свои контролы рисуются.
Ответ написан более трёх лет назад
Комментировать
Нравится 3 Комментировать
Важно определиться под какую платформу.
Если винда то можно использовать Visual Studio и Windows Forms.
Правда надо будет хорошо знать WinAPI, тк VS рассчитан на работу с с++.
И многие вещи придется делать руками. Окошко с кнопочками в VS создается без проблем, а вот с подключением к ним событий намучаетесь.Тк язык си может лишь иммитировать ооп, а как это делать это отдельная сложная тема.
Можно использовать Qt Creator. Он тоже представляет возможности создать gui. Но эта ide тоже заточена под с++ и ООП парадигму. Хотя писать в ней на си можно и прилажухи с gui, но с костылями.
Сейчас для создания gui на чистом си используют визуальный дизайнер интерфейсов Glade gtk. Он сам целиком и полностью написан на си. В нём используется библиотка виджетов GTK+ которая тоже написана на чистом си.
Проект поддерживается GNOME Foundation.
Описание визуально создаваемого разработчиком интерфейса сохраняется в файлах формата XML, которые затем могут быть подключены к программам во время исполнения с использованием объекта GtkBuilder.
Для работы с си использую Code Blocks IDE, она у меня установлена и в винде и в линуксе.
При создании проекта к нему подключается библиотека GTK+ и файл xml c описанием виджетов созданных в Glade.
Источник: qna.habr.com
Как создать окно на чистом Си используя только стандартную библиотеку по стандарту?
Всем добрый день. Как можно создать свое окно на голом Си? Возможность такая должна быль, поскольку все сторонние библиотеки с графикой написаны именно на Си. Про windows.h и другие инструменты не писать, хочу своими руками попробовать сделать это.
Отслеживать
задан 25 июн 2020 в 12:25
430 3 3 серебряных знака 10 10 бронзовых знаков
Никак. Нет такого понятия в стандартной библиотеке С++.
25 июн 2020 в 12:28
Все сторонние библиотеки, да и стандартная библиотека тоже, задействуют системеные API, в т.ч. из windows.h Никаких средств работы с GUI в стандартной библиотеке нет.
25 июн 2020 в 12:28
4 ответа 4
Сортировка: Сброс на вариант по умолчанию
Никак не создать, в стандартной библиотеке нет таких функций и в ближайшее время не будет. Уже было предложение по добавлению 2D-графики в C++ . Историю предложения и рассуждения, почему ничего вышло, можно почитать тут.
Отслеживать
ответ дан 25 июн 2020 в 12:47
141 2 2 серебряных знака 23 23 бронзовых знака
25 июн 2020 в 12:58
25 июн 2020 в 13:03
25 июн 2020 в 13:04
25 июн 2020 в 13:18
25 июн 2020 в 13:53
Ну, если Вы используете консольный ввод-вывод в окно ДОС, то можете создать в нём своё собственное окошко с помощью символов псевдографики. Правда, я так поступал ещё в прошлом тысячелетии примерно так:
void Displays::Interface(float snr) < int i; clrscr(); window(10,8,71,19); /* координаты углов окна в виде кол,стр,кол,стр */ textbackground(BLUE); /* цвет фона */ textcolor(WHITE); /* цвет символов */ clrscr(); cprintf(«г=============== Моделирование системы связи ===============¬rn»); cprintf(«¦ ПАРАМЕТРЫ КАНАЛА ¦rn»); cprintf(«¦ Объём входного алфавита кода: ¦rn»); cprintf(«¦ Отношение сигнал-шум [дБ]: ¦rn»); cprintf(«¦ Вид Модуляции: ¦rn»); cprintf(«¦ Код: ¦rn»); cprintf(«¦ ¦rn»); cprintf(«¦ РЕЗУЛЬТАТ НАБЛЮДЕНИЯ ¦rn»); cprintf(«¦ Передано символов: ¦rn»); cprintf(«¦ Поступило ошибок на вход декодера: ¦rn»); cprintf(«¦ Обнаружено ошибок на выходе декодера: ¦rn»); cprintf(«L===========================================================-«); gotoxy(46,3); cout
Этому фрагменту кода более 30 лет и на писан он для окна ДОС ещё в Borland C++ Builder 3.1
Отслеживать
ответ дан 25 июн 2020 в 13:52
347 3 3 серебряных знака 13 13 бронзовых знаков
window(10,8,71,19); это точно стандартная функция?
25 июн 2020 в 14:00
Тут вообще ни одной стандартной функции. (¬‿¬) Окошечки рисовать можно, но на голом cout / printf .
25 июн 2020 в 14:03
Тут все функции из conio.h , который не только не был стандартным, но и который сейчас почти искоренили и в современных компиляторах этих функций нет. А ещё псевдографика тогда была лучше — есть же нормальные символы линий, в не вот эти палочки.
1 июл 2020 в 9:19
В стандартной библиотеки Си нет возможности создавать окна , так как это функции ОС. Но используя библиотеку GTK можно создавать окна на чистом Си.
Отслеживать
ответ дан 26 июн 2020 в 3:40
3,020 1 1 золотой знак 11 11 серебряных знаков 20 20 бронзовых знаков
Например, используя socket API (вполне стандартно находится в libc) организовать взаимодействие с X-window сервером прямо на X-протоколе.
По сути таким образом вы будете делать свою раелизацию библиотеки X11.
Если отказаться от пуризма (в смысле, что есть стандартная библиотека), то на практике есть интересный способ (что-то забылся, когда писал ответ, хотя я его как-то реально использовал) — это запустить стороннее приложение, например, wish и организовать с ним «диалог» по паре пайпов.
Источник: ru.stackoverflow.com