Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Создание собственных динамических библиотек (dll-файлов)

Rusa


dll




DLL Dynamic Link Library - динами­чески присоед&# 727s185h 1080;няемая библиотека), как создать DLL Visual C++, и как использовать DLL

DLL DLL dll dll Circle dll DrawCircle CalculateCirdeArea Circle dll

DLL является библиотекой, которая дина­мически присоед&# 727s185h 1080;няется к использующей ее программе. Это означает, что, когда Вы создаете dll DLL dll

dll

\Windows\System ( Windows Me/98/95);

\Windows\System32 ( Windows XP/2000/NT);

Install dll Windows System dll

DLL Visual C++ и Visual Basic dll Visual C++, которая к нему обращается.

MyDLL cpp MyDLL def

Library MyDLL

Visual Studio Visual Studio):

File → New → Win32 Dinamic Link Library → Location ( \Library-13-2) → Project Name ( MyDLL).

MyDLL cpp

Пример MyDLL cpp

DllEntryPoint DLL

#include <Windows.h>

DllEntryPoint(HINSTANCE hDLL,

DWORD dwReason, LPVOID Reserved)

case DLL_PROCESS_DETACH:

}

return TRUE

}

MyDLL cpp DllEntryPoint DLL DLL DLL DllEntryPoint MyDLL dll

DllEntryPoint состоит из оператора switch

switch (dwReason)

case DLL_PROCESS_DETACH:

}

switch dwReason DllEntryPoint()

case DLL PROCESS ATTACH DLL присоед&# 727s185h 1080;няется к ехе-файлу (когда ехе-файл загружает DLL case DLL PROCESS ATTACH



case DLL PROCESS DETACH DLL отсоед&# 727s185h 1080;няется от ехе-файл. Например, когда ехе-файл, который использует DLL case DLL PROCESS DETACH case dll process detach

MyDll cpp

MyBeep -

MyDelay

MyBeep()

int MyBeep(DWORD frequency, //

DWORD duration)

MyDelay()

int MyDelay(long wait)  //

MyDll.cpp:

MyDLL.cpp

#include <Windows.h>

DLL

int MyBeep(DWORD, DWORD);

int MyDelay(long);

DllEntryPoint() : DLL

DllEntryPoint(HINSTANCE hDLL,

DWORD dwReason, LPVOID Reserved)

case DLL_PROCESS_DETACH:

}

return TRUE;

}

int MyBeep(DWORD frequency, //

DWORD duration)

int MyDelay(long wait)  //

MyDLL def

def MyDLL dll

LIBRARY mydll

CODE PRELOAD MOVEBLE DISCARDABLE

DATA PRELOAD SINGLE

EXPORTS

; ) DLL

DLL включены в библиотеку и «экспортируются» после загрузки библиотеки (оператор EXPORTS def

MyBeep

MyDelay

MyDLL def

def-файл для библиотеки MyDLL dll

LIBRARY mydll

CODE PRELOAD MOVEBLE DISCARDABLE

DATA PRELOAD SINGLE

EXPORTS

; ) DLL

MyBeep

MyDelay

DLL Ex Example



HINSTANCE gLibMyDLL NULL

MyBeep MyDLL dll

typedef int(*MYBEEP)(DWORD, DWORD);

MYBEEP MyBeep = NULL;

MyDelay() MyDLL.dll

typedef int(*MYDELAY)(long);

MYDELAY MyDelay = NULL;

DLL LoadLibrary

gLibMyDLL LoadLibrary "MYDLL DLL");

LoadLibrary

\Windows\System ( Windows Me/98/95);

\Windows\System32 ( Windows XP/2000/NT);

gLibMyDLL NULL

FARPROC GetProcAddress HMODULE hModule

LPCSTR lpProcName

hModule lpProcName NULL

MyBeep =(MYBEEP)GetProcAddress(gLibMyDLL,"MyBeep");

MyDelay=(MYDELAY)GetProcAddress(gLibMyDLL,"MyDelay");

DLL

DLL DLL

Mydialog rc

#include <Windows.h>

#include "Text.h"

MYMENU MENU

MYMENU ACCELERATORS

Соответственно, изменится и вспомогательный файл Text.h:

#define ID_SHOW 100

#define ID_RESET 101

#define ID_LOAD 102

#define ID_BEEP 104

define ID HELP 105

DLL

case ID LOAD

// Если файл MyDLL DLL

// сообщить

// пользователю и завершить эту функцию

if(gLibMyDLL != NULL)

MessageBox(hwnd,

"Библиотека MyDLL уже загружена",

"Внимание:",MB_OK);

else

}

// Получить адрес функции МуВеер()

// библиотеки MyDLL.dll

MyBeep MYBEEP GetProcAddress gLibMyDLL

"MyBeep");

// Получить адрес функции MyDelay()

// библиотеки MyDLL.dll

MyDelay MYDELAY GetProcAddress gLibMyDLL

"MyDelay");

InvalidateRect(hwnd,NULL,1); //

break;

case ID BEEP

if(MyDelay != NULL && MyBeep != NULL

&& gLibMyDLL != NULL)

else

MessageBox(hwnd,



"Причины: библиотека MyDLL "

"не загружена, либо "

"отсутствуют функции "

"MyBeep MyDelay ",

" :", MB_OK);

InvalidateRect(hwnd,NULL,1); //

break

// Демонстрация работы с библиотекой MyDLL,

#include <Windows.h>

#include <String.h>

#include <Stdio.h>

#include "Text.h"

LRESULT CALLBACK WindowFunc(HWND,UINT,WPARAM,LPARAM);

char szWinName[] = " "; //

char str[255]; // Буфер строки вывода

int X=0, Y=0; // Текущие координаты строки

int maxX, maxY; // Размеры экрана

HDC  memdc; // DC виртуального окна

HBITMAP hbit; // Растр - это виртуальное окно

HBRUSH hbrush; //

HINSTANCE gLibMyDLL = NULL;

typedef int(*MYBEEP)(DWORD, DWORD);

MYBEEP MyBeep = NULL;

typedef int(*MYDELAY)(long);

MYDELAY MyDelay = NULL;

int WINAPI WinMain (HINSTANCE hThisInst,

HINSTANCE hPrevInst,

LPSTR lpszArgs,

int nWinMode)

return msg. wParam;

}

// Windows и получает в качестве параметров сообщения

LRESULT CALLBACK WindowFunc(HWND hwnd,

UINT message,

WPARAM wParam,

LPARAM lParam)

}

// Получить адрес функции МуВеер()

// библиотеки MyDLL.dll

MyBeep=(MYBEEP)

GetProcAddress(gLibMyDLL,

"MyBeep");

// Получить адрес функции MyDelay()

// библиотеки MyDLL.dll

MyDelay=(MYDELAY)

GetProcAddress(gLibMyDLL,

"MyDelay");

InvalidateRect(hwnd,NULL,1); //

break;

case ID_BEEP:

if(MyDelay != NULL && MyBeep != NULL

&& gLibMyDLL != NULL)

else

MessageBox(hwnd,

"Причины: библиотека MyDLL "

"не загружена, либо "

"отсутствуют функции "

"MyBeep MyDelay ",

" :", MB_OK);

InvalidateRect(hwnd,NULL,1); //

break;

case ID_HELP:

MessageBox(hwnd,"F2: \n"

"F3: В начала экрана\n"

"F4: Загрузить DLL \n"

"F5: Звуковой сигнал",

" ",MB_OK);

InvalidateRect(hwnd,NULL,1); //

break;

}

break;

case WM_PAINT: //

hdc=BeginPaint(hwnd,&paintstruct); // DC

// Теперь копируем растр из памяти на экран

BitBlt(hdc,0,0,maxX,maxY,memdc,0,0,SRCCOPY);

EndPaint(hwnd,&paintstruct); // DC

break;

case WM_DESTROY: // Завершение программы

DeleteDC(memdc); // Удалить виртуальное окно

PostQuitMessage(0);

break;

default:

// Все сообщения, не обрабатываемые в данной

// функции, направляются на обработку по

// умолчанию

return DefWindowProc(hwnd,message,

wParam,lParam);

return 0;

}


MyDLL




Document Info


Accesari: 3064
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2025 )