@MasterCopipaster

Как поместить Windows окно в DLL файл в Visual Studio 2019?

Всем привет, я создал простое виндовое окно в приложении, и вызываю его так.
#include "MyForm.h"

#include <Windows.h>

using namespace windows2;

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {

	Application::EnableVisualStyles();

	Application::SetCompatibleTextRenderingDefault(false);

	Application::Run(gcnew MyForm);

	return 0;
}


Весь проект целиком кому интересно.


Можно ли его собрать как DLL файл, если да то как?
Мне нужно зависти это окно в язык которые не умеет окна рисовать, но умеет вызывать внешние dll функции.
Я хочу просто вызывать из dll это окно и от рисовать его пользователю.

У меня уже есть hello world рабочий для dll
PROJECT2_API void SamplesA(char* pChar) {
	char a[] = "Example String";
	strcpy_s(pChar, strlen(a) + 1, a);
}

Весь проект DLL целиком.

Но у меня левела не хватает подружить их, подскажите как это можно сделать?
  • Вопрос задан
  • 67 просмотров
Решения вопроса 1
@rPman
С точки зрения разработки приложений winapi код не будет чем то отличаться, просто вместо стартовой функции main будет функция dllmain буквально просто меняешь стартовую функцию, свойства проекта и вот у тебя уже dll.

НО загружать эту dll сторонние приложения должны уметь. А они в свою очередь могут потребовать чтобы эта dll была организована особым образом, т.е. имела определенные функции, использовала определенные типы переменных и т.п. Т.е. нужно читать документацию этого языка, подробно с примерами.

Достаточно давно майкрософт предложила универсальный инструменты OLE, COM и фреймворк ActiveX специально чтобы был стандарт для межпроцессорного взаимодействия, не важно на чем эти процессы написаны, и до сих пор активно его поддерживает в своих продуктах, хотя не во всех.

Технология очень удобная для использования, хотя наверное очень 'многословная' для программиста.

К сожалению/или нет, на эту технологию все забили более чем полностью, и изобретают все свое. Могу предположить из-за лицензии использования (как и все, за что берется майкрософт и их маркетологи, превращают отличную идею в говно), но этот момент нужно уточнять.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
firedragon
@firedragon
Senior .NET developer
Сделайте проще используйте сокеты. Ваша консоль будет запускать gui и передавать ему информацию и получать.
Ответ написан
@vabka
Токсичный шарпист
Вы можете использовать winapi напрямую, и создавать окна через него.
Ответ написан
RiseOfDeath
@RiseOfDeath
Диванный эксперт.
Если язык умеет вызывать DLL, то в чем проблема подключить виндовые DLL и рисовать окна?

C++, если что, тоже "не умеет рисовать окна", просто в студию встроены обвязки поверх winapi.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы