JAVA通过JNI来调来一个VC写的DLL,此DLL显示一个含有activeX控件的对话框,死活就是显示不出来。而用另一个VC写的程序去调用此DLL时,就能够显示出来此对话框,请问是何原因?  如果JAVA调用的此对话框中没有activeX,也会成功!动态库中的关键代码如下:
JNIEXPORT void JNICALL 
Java_test_test1_ShowMessage(JNIEnv * jEnv,jobject obj,jstring jMsg,jobject window) 
{
  const char * msg;
  msg = jEnv->GetStringUTFChars(jMsg,0);
  MessageBox(HWND_DESKTOP, msg, "Thinking in Java: JNI",MB_OK | MB_ICONEXCLAMATION);
  jEnv->ReleaseStringUTFChars(jMsg,msg);
   
  
printf("call Java_MyWindow1_MyWindow_init nResponse\r\n");
_flushall();

    CTest test;
printf("3call Java_MyWindow1_MyWindow_init nResponse\r\n");
_flushall();
    int ret=test.DoModal ();//此句返回值为-1,表示创建对话框失败了,注意:此对话框中有activeX,如果没有activeX,也会成功!
printf("3call Java_MyWindow1_MyWindow_init nResponse DoModal ret=%d\r\n",ret);
_flushall();}
extern "C" __declspec(dllexport) void Show()
{
AfxEnableControlContainer();
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
    CTest test;
    test.DoModal ();//此句为VC的程序调用动态库时,创建对话框语句,可以成功!
}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【liuguibing】截止到2008-07-15 17:54:47的历史汇总数据(不包括此帖):
    发帖的总数量:22                       发帖的总分数:520                      每贴平均分数:23                       
    回帖的总数量:3                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:2                        结贴的总分数:120                      
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:20                       未结的总分数:400                      
    结贴的百分比:9.09  %               结分的百分比:23.08 %                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %