Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2020, 15:22   #1
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию консоль совместно с окном WinAPI

Здравствуйте. Столкнулся с дурацкой проблемой.
Необходимо создать программу с окнами WinAPI, но чтобы отдельным окном была еще консоль windows. Например, в MinGW можно так сделать. Можно выводить в эту консоль любой текст в любое время. Это очень удобно, например, для отображения лога, так как не нужно для этого самому создавать окно.
Создаём на студии пустой проект и пишем код:
Код:
#include <Windows.h>
#include <iostream>

const LPCWSTR MYCLASS1 = L"FRZKJRE";
const LPCWSTR MYTITLE1 = L"E3UJKL";

int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance,
    _In_ LPWSTR lpCmdLine, _In_ int nCmdShow) {
    std::cout << "Some text" << std::endl;

    HBRUSH brush1 = CreateSolidBrush(0);

    WNDCLASSEX wc;
    ZeroMemory(&wc, sizeof(WNDCLASSEX));
    wc.cbSize = sizeof(WNDCLASSEX);
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = NULL;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = NULL;
    wc.hIconSm = NULL;
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = brush1;
    wc.lpszMenuName = NULL;
    wc.lpszClassName = MYCLASS1;
    if (!RegisterClassEx(&wc)) {
        DeleteObject(brush1);
        std::cout << "ERROR: Can't create main window!" << std::endl;
        MessageBox(0, L"Can't create main window!", MYTITLE1, MB_ICONERROR);
        return 0;
    }

    //тут еще код

    return 0;
}
но это не компилируется если тут: Project → Properties → Linker → System → Subsystem стоит /SUBSYSTEM:CONSOLE.
Если поставить /SUBSYSTEM:WINDOWS - тогда работает, но консоли не будет.
А можно как-то одновременно чтобы и окно и консоль?
BLACK_RAIN вне форума Ответить с цитированием
Старый 20.02.2020, 15:30   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Меням тип проекта на console.
Меняем wWinMain на main.
Остальное оставляем как есть.
waleri вне форума Ответить с цитированием
Старый 20.02.2020, 15:53   #3
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Меняем wWinMain на main.
А как тогда получить параметры, которые должны приходить аргументами в wWinMain()?
Коммандную строку можно через GetCommandLine(), а остальное?
например, hInstance как узнать? Он ведь нужен для создания окна.

Последний раз редактировалось BLACK_RAIN; 20.02.2020 в 16:02.
BLACK_RAIN вне форума Ответить с цитированием
Старый 20.02.2020, 17:05   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Если речь не идет о DLL, то можно смело считать HINSTANCE == NULL
waleri вне форума Ответить с цитированием
Старый 20.02.2020, 20:03   #5
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Если речь не идет о DLL
в каком смысле?
BLACK_RAIN вне форума Ответить с цитированием
Старый 21.02.2020, 08:50   #6
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

Цитата:
Сообщение от BLACK_RAIN Посмотреть сообщение
например, hInstance как узнать?
Код:
HINSTANCE hInstance = GetModuleHandle(NULL);
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C#] человек вводит в консоль «1» программа генерирует случайное число от 1 до 4 ( включительно ) затем человек моден ввести в консоль ещё раз и так каждый раз Илья06072000 C# (си шарп) 19 04.06.2019 22:52
Управление окном открытия (WinAPI) Fordros Microsoft Office Excel 16 13.05.2015 16:35
БД совместно с C# Faridik C# (си шарп) 29 05.05.2012 16:06
Линии совместно с TShape и TImage Dimula C++ Builder 0 13.08.2011 18:23
ScrollBar совместно с Memo1 Rebel123 Компоненты Delphi 4 24.08.2009 00:04