是你的DLL创建了一个窗口,不是UG。所以instance就是你的DLL,而且它可以在case DLL_PROCESS_ATTACH中获取到,其它可能还有方法
#include <windows.h>
#include <uf.h>
#include <uf_ui.h>
#include <uf_exit.h>
#include "resource.h"
BOOL CALLBACK AboutDlgProc (HWND hDlg, UINT message,WPARAM wParam, LPARAM lParam);
/////
HINSTANCE hInstance = NULL;
//////////////////////////////////////////////////////////////////////////////
BOOL APIENTRY DllMain( HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
hInstance = (HINSTANCE)hModule;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
//////////////////////////////////////////////////////////////////////////////
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
{
HWND hWnd=NULL;
/* Initialize the API environment */
UF_initialize();
hWnd=(HWND)UF_UI_get_default_parent();
UF_DISP_make_display_up_to_date();
DialogBox(hInstance,(LPCTSTR)IDD_DIALOG1, hWnd, (DLGPROC)AboutDlgProc);
UF_terminate();
}
////////////////////////////////////////////////////////////
BOOL CALLBACK AboutDlgProc (HWND hDlg, UINT message,WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG :
return TRUE ;
case WM_COMMAND :
switch (LOWORD (wParam))
{
case IDOK :
case IDCANCEL :
EndDialog(hDlg, 0) ;
return TRUE ;
}
break ;
}
return FALSE ;
}
//////////////////////////////////////////////////////
extern int ufusr_ask_unload( void )
{
return( UF_UNLOAD_IMMEDIATELY);
} |