Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > WindowsForm в dll


Автор: NatNiM 27.7.2012, 15:54
Здравствуйте.

Помогите, пожалуйста, разобраться.
Необходимо создать dll, которая должна запускать некоторое окно.
Первый вопрос встал такой, какого типа создавать проект (studio 2010)? 

Автор: Dem_max 27.7.2012, 16:53
Такого который тебе понравиться

Автор: saneea 27.7.2012, 17:04
В свойствах проекта можно указать, что тебе нужно на выходе (exe или dll). Попробуй сделать сначала просто WindowsForm проект, а затем поменять в свойствах тип выходного файла.

Автор: NatNiM 28.7.2012, 10:26
Я выбрал тип проекта dll, но там еще есть возможность выбрать atl или mfc.
dll должна запускать некоторую форму. Или же для работы с формой нужно подключать дополнительно еще библиотеки?

Автор: saneea 30.7.2012, 16:00
Маленьких совет: решай проблемы отдельно. В данный момент не понятно, в чём проблема в том что ты не знаешь как работать с формами или в том, что ты не умеешь работать с DLL (никаких упрёков, просто реально не понятно в чём вопрос).

Автор: NatNiM 30.7.2012, 19:01
Спасибо, разобрался, получилась dll.
А сможете подсказать, пожалуйста, как проверить ее работу.
Вот cpp-файл:

Код

#include "stdafx.h"
#include <Windows.h>
#include <stdio.h>
#include <iostream>
#include <stdio.h>

using namespace std;

extern "C++" __declspec(dllexport) void Window()
 {

  HINSTANCE instanceHandle;
  HWND MainWindowHandle = 0;
  MainWindowHandle = CreateWindow(
                            LPCWSTR(sum("lib.dll").c_str()),
                            LPCWSTR(sum("lib.dll").c_str()),
                            WS_OVERLAPPEDWINDOW,
                            CW_USEDEFAULT, 
                            CW_USEDEFAULT,
                            CW_USEDEFAULT,
                            CW_USEDEFAULT,
                            0,
                            0, 
                            instanceHandle,
                            0);
 }


Вот попытка загрузки dll:

Код

HMODULE hModule = LoadLibrary(TEXT("dtcd_01m_k1_3x.dll"));
typedef int ( *Wind)(); 
Wind lpClientInit = (Wind)GetProcAddress(hModule,"Window");
//lpClientInit(); //вот на этой строчке вылетает ошибка
if (lpClientInit == NULL)
{
   int errorCode = GetLastError();
} 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)