dll怎样调用主程序的函数

dll怎样调用主程序的函数,第1张

第一种方法:将主程序的窗口句柄传递到DLL中去,通过发送自定义消息传递参数

第二种方法:主程陵段序启动一个线程去主动获得DLL中的数据汪汪困。

第三种困念方法:创建回调函数,通过该回调函数传递参数。

下面建立一个简单的dll为例,dll实现建立一个文件,并将读到的String Table资源写到此文件中。

步骤如下:

1)在VC菜单中File->New新建一个命名为dlltest的Win32 Dynamic-Link Library工程,下一步选择

A simple DLL project。2)在dlltest.cpp文件中添加代码:

#include "stdafx.h"

#include "stdio.h"

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)

{

switch(fwdreason)

{

case DLL_PROCESS_ATTACH:

int i

FILE *fw

fw = fopen(filename, "w")

char str[200]

LoadString(hinstDLL,1,filename,MAX_PATH)

fprintf(fw,"%s\n", filename)

break

default:

break

}

return(TRUE)

}3)在VC菜单中Insert->Resource添加一个String Table,其ID为IDS_STRING1,Caption为abc,点禅脊击保

存,文件名为Script1.rc。4)在坦袭行Header Files中添加进resource.hResource Files中添加进Script1.rc。5)在dlltest.cpp中添加头文件resource.h。6)编译完成文件。

一个最简单的让哗调用例子:#include <stdio.h>

#include <windows.h>

int main(int argc, char *argv[])

{

HINSTANCE hDll

hDll = LoadLibrary("dlltest.dll")//加上路径

return 0

}可看到在修改IDS_STRING1的caption时,可读到不同的字符串。 类似地,可读取其他资源:函数为: HBITMAP LoadBitmap(HINSTANCE hInstance,LPCTSTR lpBitmapName)

HICON LoadIcon(HINSTANCE hInstance,LPCTSTR lpIconName)

HMENU LoadMenu(HINSTANCE hInstance,LPCTSTR lpMenuName)

int LoadString(HINSTANCE hInstance,UINT uID,LPTSTR lpBuffer,int BufferMax) 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sharkly/archive/2006/04/22/673537.aspx


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12567373.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存