Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
11 / 1 / 1
Регистрация: 02.10.2015
Сообщений: 98

Переработка консольного приложения в оконное

02.12.2015, 14:32. Показов 2416. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу на с++.
Хочу консольное приложение(многофайловое , модульное) в оконное "трансформировать".
Начал писать на Windows Forms, но столкнулся с трудностями:
1) в некоторых кусках кода нужна скорость (решено костылями)
2) приложение крашиться по непонятным причинам и это не радует
Помочь с этим никто не может, поэтому ищу "железный"(безошибочный) вариант для написания оконного приложения!!!

QT не возлюбило статическую библиотеку *lib (есть вариант, что я мб не так подключаю)
Есть еще варианты написания оконных приложений?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.12.2015, 14:32
Ответы с готовыми решениями:

Реализовать оконное приложение из консольного
Здравствуйте, у меня проблема с программой. Сделать в командной строке получилось, а вот такое же в объектно-ориентированной среде (чтобы...

Как отличается оконное от консольного программирования?
Насколько знаю, есть borland c++ builder с графическим редактором. Возник вопрос, как отличается этот Борланд и, к примеру, обычный...

Трансляция консольного проекта под оконное
Здравствуйте, уважаемые знатоки :) Я сверх-новый ученик языка c++ вот... и многие моменты мне еще не совсем известны, такие что даже msld...

26
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
02.12.2015, 15:49
Ну есть вариант с WinAPI. Сложный. Лучше допиливай с Qt. Какая там проблема с библиотекой?
0
11 / 1 / 1
Регистрация: 02.10.2015
Сообщений: 98
02.12.2015, 16:54  [ТС]
nmcf,
Есть драйвер WinIO. Он состоит из файла lib(+файл sys) и заголовочного файла
Почему-то ругается на заголовочный файл ..может я не так библиотеку подключаю?
Я взял и просто нажал добавить файлы и подключил заголовочный файл к проекту...

В студии все нормально компилируется, тут лаит...хотел qt с компилятором от студии, там вообще сборка не запусилась..тоже непонятно из-за чего..в общем вот так вот
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
02.12.2015, 17:16
Цитата Сообщение от Oryel Посмотреть сообщение
Есть еще варианты написания оконных приложений?
wxWidgets
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
02.12.2015, 17:22
Qt Creator? В Headers? А что за ошибка?
0
11 / 1 / 1
Регистрация: 02.10.2015
Сообщений: 98
03.12.2015, 13:58  [ТС]
Вот код Winio.h
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
#ifndef WINIO_H
#define WINIO_H
 
#ifdef WINIO_DLL
#define WINIO_API _declspec(dllexport)
#else
#define WINIO_API _declspec(dllimport)
#endif
 
extern "C"
{
   WINIO_API _declspec bool _stdcall InitializeWinIo();
 WINIO_API _declspec void _stdcall ShutdownWinIo();
 WINIO_API _declspec PBYTE _stdcall MapPhysToLin(PBYTE pbPhysAddr, DWORD dwPhysSize, HANDLE *pPhysicalMemoryHandle);
  WINIO_API _declspec bool _stdcall UnmapPhysicalMemory(HANDLE PhysicalMemoryHandle, PBYTE pbLinAddr);
  WINIO_API bool _stdcall GetPhysLong(PBYTE pbPhysAddr, PDWORD pdwPhysVal);
  WINIO_API _declspec bool _stdcall SetPhysLong(PBYTE pbPhysAddr, DWORD dwPhysVal);
  WINIO_API _declspecbool _stdcall GetPortVal(WORD wPortAddr, PDWORD pdwPortVal, BYTE bSize);
 WINIO_API  bool _stdcall SetPortVal(WORD wPortAddr, DWORD dwPortVal, BYTE bSize);
  WINIO_API  bool _stdcall InstallWinIoDriver(PSTR pszWinIoDriverPath, bool IsDemandLoaded = false);
  WINIO_API  bool _stdcall RemoveWinIoDriver();
}
 
extern bool IsNT;
extern HANDLE hDriver;
extern bool IsWinIoInitialized;
 
bool _stdcall StartWinIoDriver();
bool _stdcall StopWinIoDriver();
 
#endif


Ругается на все!!! вот, для примера пару ошибок

C++
1
2
3
4
5
6
7
D:\Soft\qtexa\Test2\winio.h:14: ошибка: 'PBYTE' does not name a type
   PBYTE _stdcall MapPhysToLin(PBYTE pbPhysAddr, DWORD dwPhysSize, HANDLE *pPhysicalMemoryHandle);
   ^
 
D:\Soft\qtexa\Test2\winio.h:20: ошибка: expected primary-expression before 'bool'
    bool _stdcall InstallWinIoDriver(PSTR pszWinIoDriverPath, bool IsDemandLoaded = false);
                                                              ^
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.12.2015, 14:19
Это типы WinAPI, обычно подключают Windows.h для них. У тебя он есть?

Добавлено через 4 минуты
Вообще-то он так выглядит:
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
#ifndef WINIO_H
#define WINIO_H
 
#ifdef WINIO_DLL
#define WINIO_API _declspec(dllexport)
#else
#define WINIO_API _declspec(dllimport)
#endif
 
extern "C"
{
  WINIO_API bool _stdcall InitializeWinIo();
  WINIO_API void _stdcall ShutdownWinIo();
  WINIO_API PBYTE _stdcall MapPhysToLin(PBYTE pbPhysAddr, DWORD dwPhysSize, HANDLE *pPhysicalMemoryHandle);
  WINIO_API bool _stdcall UnmapPhysicalMemory(HANDLE PhysicalMemoryHandle, PBYTE pbLinAddr);
  WINIO_API bool _stdcall GetPhysLong(PBYTE pbPhysAddr, PDWORD pdwPhysVal);
  WINIO_API bool _stdcall SetPhysLong(PBYTE pbPhysAddr, DWORD dwPhysVal);
  WINIO_API bool _stdcall GetPortVal(WORD wPortAddr, PDWORD pdwPortVal, BYTE bSize);
  WINIO_API bool _stdcall SetPortVal(WORD wPortAddr, DWORD dwPortVal, BYTE bSize);
  WINIO_API bool _stdcall InstallWinIoDriver(PSTR pszWinIoDriverPath, bool IsDemandLoaded = false);
  WINIO_API bool _stdcall RemoveWinIoDriver();
}
 
extern bool IsNT;
extern HANDLE hDriver;
extern bool IsWinIoInitialized;
 
bool _stdcall StartWinIoDriver();
bool _stdcall StopWinIoDriver();
 
#endif
Откуда лишние _declspec?
0
11 / 1 / 1
Регистрация: 02.10.2015
Сообщений: 98
03.12.2015, 16:27  [ТС]
nmcf,

Это его родной заголовок... в студии к нему нареканий нет

Вот пробую запасной план
их два...первый не использовать lib, а dll ..тут тоже проблема появилась, но забыл какая...

второй ...у меня почему -то в с++ builder при подключении conio.h
Не определяет функции в ней прописанные , типа _outp

в чем дело? их надо как-то по особому подключать? или?
я просто инклюд загоовочный и все...
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.12.2015, 16:39
Так у тебя ещё и Builder? Мы вроде бы про Qt говорили.
Я загрузил этот winio, там файл как я показал, без лишних _declspec.

Добавлено через 1 минуту
Цитата Сообщение от Oryel Посмотреть сообщение
в чем дело? их надо как-то по особому подключать?
Да потому что древний Builder может не понимать эти функции. Открой сам h-файл и посмотри, как они там объявлены.
0
11 / 1 / 1
Регистрация: 02.10.2015
Сообщений: 98
03.12.2015, 16:50  [ТС]
nmcf,
У меня сей час под рукой несколько сред ..и везде проблемы свои

Все равно лает...
Windows.h...где его подключаешь?
0
11 / 1 / 1
Регистрация: 02.10.2015
Сообщений: 98
03.12.2015, 17:08  [ТС]
вот
Миниатюры
Переработка консольного приложения в оконное  
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.12.2015, 17:10
Это какая-то устаревшая версия. Сейчас эти ключевые слова с удвоенными подчёркиваниями. Вот так должно быть:
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
#ifndef WINIO_H
#define WINIO_H
 
#ifdef WINIO_DLL
#define WINIO_API __declspec(dllexport)
#else
#define WINIO_API __declspec(dllimport)
#endif
 
#include "Windows.h"
 
extern "C"
{
  WINIO_API bool __stdcall InitializeWinIo();
  WINIO_API void __stdcall ShutdownWinIo();
  WINIO_API PBYTE __stdcall MapPhysToLin(PBYTE pbPhysAddr, DWORD dwPhysSize, HANDLE *pPhysicalMemoryHandle);
  WINIO_API bool __stdcall UnmapPhysicalMemory(HANDLE PhysicalMemoryHandle, PBYTE pbLinAddr);
  WINIO_API bool __stdcall GetPhysLong(PBYTE pbPhysAddr, PDWORD pdwPhysVal);
  WINIO_API bool __stdcall SetPhysLong(PBYTE pbPhysAddr, DWORD dwPhysVal);
  WINIO_API bool __stdcall GetPortVal(WORD wPortAddr, PDWORD pdwPortVal, BYTE bSize);
  WINIO_API bool __stdcall SetPortVal(WORD wPortAddr, DWORD dwPortVal, BYTE bSize);
  WINIO_API bool __stdcall InstallWinIoDriver(PSTR pszWinIoDriverPath, bool IsDemandLoaded = false);
  WINIO_API bool __stdcall RemoveWinIoDriver();
}
 
extern bool IsNT;
extern HANDLE hDriver;
extern bool IsWinIoInitialized;
 
bool __stdcall StartWinIoDriver();
bool __stdcall StopWinIoDriver();
 
#endif
А сама библиотека у тебя есть? Скомпилировал?
0
11 / 1 / 1
Регистрация: 02.10.2015
Сообщений: 98
03.12.2015, 17:20  [ТС]
Сработало (в плане компиляции заголовка)..билиотека есть, подключена к проекту в разделе другие файлы

Вопрос...как из другого модуля cpp получить доступ, к примеру, к текстэдит?
Но есть другая ошибка...сей час вышлю
Миниатюры
Переработка консольного приложения в оконное  
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.12.2015, 18:32
Библиотека добавляется через Add Library, а не в Другие файлы.
0
11 / 1 / 1
Регистрация: 02.10.2015
Сообщений: 98
04.12.2015, 09:49  [ТС]
nmcf,

Подключил, как внешнюю
в тексте проекта появилась строчка:
C++
1
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/./ -lWinIo
Из других файлов удалил.

окей. начинаю компилить, идут ошибки

C++
1
2
D:\Soft\qtexa\Test2\mainwindow.cpp:21: ошибка: undefined reference to `_imp__InitializeWinIo@0'
collect2.exe:-1: ошибка: error: ld returned 1 exit status
Код формы, с строчкой, где ошибка...он неорпеделяет функцию из Библиотеки
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
include "mainwindow.h"
#include "ui_mainwindow.h"
#include "winio.h"
#include <windows.h>
extern bool platform_main( void );
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::on_pushButton_clicked()
{
 
      if(InitializeWinIo())
        {
            ui->textEdit->append("Проверка пройдена");
        }
 
 
}
Добавлено через 1 минуту
в первой строчке не скопировался знак #
Ошибка в 21...не опознает функцию InitializeWinIo()
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
04.12.2015, 13:01
У меня такое было. Как не пытался сделать библиотеку из h-файла, не работало.
Потом я взял исходные тексты dll (там уже готовый проект VS, только для старой версии), конвертировал, скомпилировал и вот ту библиотеку, которая получается при этом, взял и добавил в проект Qt. Тогда ошибка исчезла. Но работает ли сама программа я не проверял.
0
11 / 1 / 1
Регистрация: 02.10.2015
Сообщений: 98
04.12.2015, 13:18  [ТС]
nmcf, Подскажи тога, как получить доступ к текстовому полю(да и к любому объекту формы) из другого модуля cpp
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
04.12.2015, 13:23
Всё на объектах. Прямого доступа нет.
Для чего тебе это?
0
11 / 1 / 1
Регистрация: 02.10.2015
Сообщений: 98
04.12.2015, 13:50  [ТС]
nmcf,
есть модульное приложение многофайловое...и там нужно постоянно выводить информацию(ошибки/служебную)
и к примеру, в builder c++ там достаточно просто, подключил заголовочный, и там прописан указатеель и через него получаешь доступ

Схожим образом я получал в windwos form...это для меня удобно, т.к. много кода не надо перелопачивать..просто вместо старых ввода вывода консольных ставлю что-то такое
C++
1
f->textedit->append(L"Ошибка")
Просто других способов вывести информацию не знаю из других модулей...
Если подскажешь как это по уму сделать, или другой способ...Буду благодарен.

ЗЫ. мой уровень ООП пока низок, поэтому я делаю явно нарушая принципы, да и тривиальн решения могу не увидеть..
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
04.12.2015, 13:57
Я просто не пойму, что за модули такие. Они как-то сами по себе, что ли, функционируют отдельно от приложения?
Если ты находишься в контексте формы, где textedit находится, то можешь просто по имени к нему обратиться.
Программа же на обработчиках обычно строится. Нажал кнопку - вызвал обработчик, а из него все элементы видны.
У тебя не так, что ли?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.12.2015, 13:57
Помогаю со студенческими работами здесь

Проект консольного приложения из Windows приложения
привет всем. В чем может быть ошибка? 1&gt;MSVCRTD.lib(crtexew.obj) : error LNK2019: ссылка на неразрешенный внешний символ _WinMain@16 в...

Отладка консольного приложения
в отладчике OllyDbg открыл оконный проект из Делфи, вся информация, код отображаются нормально. Таким же способом открыл обычную консольную...

пауза консольного приложения
что не так с кодом? он дает записывать в файл но при первой строчке он просто выдает &quot;?&quot; без кд и в файл в итоге ничего не...

Из консольного приложения в dll
Доброго времени суток. Есть консольный проект который нужно переделать в dll библиотеку. Вызываться из другой программы будет лишь одна...

Мню консольного приложения
написал с горем пополам прогу, к ней надо меню, сел меню делать, зашел в вот такой тупик: запустите, увидите лаг. В чем проблема?#include...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru