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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2013, 10:58   #1
Dmitry_B
Пользователь
 
Регистрация: 29.03.2009
Сообщений: 83
По умолчанию Почему не работает DLL - функция, содержащая CDialog?

Почему у меня не работает DLL-функция Test()?
Вызов:
Код:
#include "stdafx.h"
typedef void (*LPFUNC)(void);
 
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
 	// TODO: Place code here.
	HINSTANCE Graph;
	ULONG Error;
	LPFUNC Paint;
	Graph=LoadLibrary("C:\\Program Files\\Microsoft Visual Studio\\MyProjects\\TestDLL\\Debug\\TestDLL.dll");
	Error=GetLastError();
	Paint=(LPFUNC) GetProcAddress(Graph,"Test");
	Error=GetLastError();
	(*Paint)();
	FreeLibrary( Graph );
	return 0;
}
Функция:
Код:
void Test(){
	int a=0;
	int Result;
	MessageBox(NULL,"++++++++++++","&&&&&&&&&&&&",MB_OK);
	CTestDialog myTest;
	if(myTest.m_hWnd==INVALID_HANDLE_VALUE) return;
	Result=myTest.DoModal();
}
Класс CTestDialog:
Код:
#include "stdafx.h"
#include "Resource.h"
#include "TestDialog.h"
CTestDialog::CTestDialog(CWnd* pParent /*=NULL*/)
	: CDialog(CTestDialog::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTestDialog)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}
void CTestDialog::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTestDialog)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTestDialog, CDialog)
	//{{AFX_MSG_MAP(CTestDialog)
		// NOTE: the ClassWizard will add message map macros here
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()
В результате вызова функции на экран выводится MessageBox, а затем – при вызове myTest.DoModal() – появляется сообщение "Debug Assertion Failed" из-за "ASSERT(afxCurrentResourceHandl e != NULL)" в afxwin1.inl.

Последний раз редактировалось Stilet; 20.01.2013 в 11:54.
Dmitry_B вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу понять почему не работает функция SeRhy JavaScript, Ajax 0 09.02.2012 17:41
Почему не работает функция? Jony Wocker Общие вопросы C/C++ 2 21.04.2010 00:01
функция Get Document не работает в CDialog. как получить документ в CDIalog MFCCasper Общие вопросы C/C++ 4 24.03.2010 15:06
dll содержащая функции выполнения sql запросов jb_007 Помощь студентам 10 13.05.2009 13:39
Почему не работает функция? rocky7 Общие вопросы C/C++ 2 17.02.2009 08:37