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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2015, 22:53   #1
marllboro
Новичок
Джуниор
 
Регистрация: 14.12.2015
Сообщений: 1
Печаль Winapi. Вызов диалога из DLL.

Нужно загрузить диалог на котором находятся 4 кнопки из dll.

Код в DLL:
Код:
// Source.cpp
#include <windows.h>
#include "resource.h"

extern "C" _declspec(dllexport) INT_PTR Dialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	UNREFERENCED_PARAMETER(lParam);
	switch (message)
	{
	case WM_INITDIALOG:
		return (INT_PTR)TRUE;

	case WM_COMMAND:
		if (LOWORD(wParam) == IDC_BUTTON1)
		{
			EndDialog(hDlg, LOWORD(wParam));
			return (INT_PTR)TRUE;
		}
		else if(LOWORD(wParam) == IDC_BUTTON2)
		{
			MessageBox(hDlg, L"Knopka2...", L"Ответ", MB_OK);
		}
		else if(LOWORD(wParam) == IDC_BUTTON3)
		{
			MessageBox(hDlg, L"Knopka3", L"Ответ", MB_OK);
		}
		else if(LOWORD(wParam) == IDC_BUTTON4)
		{
			MessageBox(hDlg, L"Knopka4", L"Ответ", MB_OK);
		}
		break;
	}
	return (INT_PTR)FALSE;
}
Код:
// resource.h
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by DLL6Laba.rc
//
#define IDD_DIALOG1                     101
#define IDC_BUTTON1                     1001
#define IDC_BUTTON2                     1002
#define IDC_BUTTON3                     1003
#define IDC_BUTTON4                     1004

// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        102
#define _APS_NEXT_COMMAND_VALUE         40001
#define _APS_NEXT_CONTROL_VALUE         1005
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif
Код проги в которую загружаю dll
Код:
// Source.cpp
// 6Laba.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#define IDD_DIALOGBOX1 101

typedef INT_PTR (*DialogPointer)(HWND, UINT, WPARAM, LPARAM);

int _tmain(int argc, _TCHAR* argv[])
{
	HMODULE library=LoadLibrary(L"DLL6Laba.dll");
	if(!library)
	{
		MessageBox(NULL, L"Нет библиотеки", NULL, MB_OK);
		exit(1);
	}
	
	HRSRC logFind=FindResource(library, L"#IDD_DIALOGBOX1", RT_DIALOG);
    if(!logFind)
	{
		MessageBox(NULL, L"Нет ресурса диалога", NULL, MB_OK);
		exit(1);
	}
	HGLOBAL log=LoadResource(library, logFind);
	if(!log)
	{
		MessageBox(NULL, L"Не удалось загрузить диалог", NULL, MB_OK);
		exit(1);
	}

	DialogPointer dialogFunc=(DialogPointer)GetProcAddress(library, "Dialog");
	if(!dialogFunc)
	{
		MessageBox(NULL, L"Нет функции диалога", NULL, MB_OK);
		exit(1);
	}

	CreateDialog(NULL, MAKEINTRESOURCE(log), NULL,          (DLGPROC)&dialogFunc);

	FreeLibrary(library);
	FreeResource(log);

	return 0;
}
Но почему-то не работает, подскажите пж. в чем может быть проблема

Последний раз редактировалось Stilet; 14.12.2015 в 23:26.
marllboro вне форума Ответить с цитированием
Старый 15.12.2015, 01:50   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Но почему-то не работает, подскажите пж. в чем может быть проблема
Ну хоть какой-то из мессаджбоксов-то появляется или чо?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с DLL c# (Вызов Формы из DLL) updaite C# (си шарп) 16 24.10.2013 05:48
Вызов функции из DLL(C#) ZverSS88 Помощь студентам 0 25.11.2010 11:27
Фон диалога - картинка. MFC + dll ACE Valery Visual C++ 2 23.06.2009 23:22
Модуль диалога выбора папки на WinAPI Veress Помощь студентам 0 13.06.2009 23:31
Вызов функции из dll-ки VVVadim Общие вопросы Delphi 2 28.04.2009 10:37