小弟会delphi不会C++ 但是由于需要请问有人可以帮我转一下吗?
procedure WinMain;
var
fomr1:Tform;
begin
form1:=tform1.Create(form1);
form1.ShowModal;
end;
procedure DllEntryPoint(hModule: HMODULE; Reason: Integer; lpReserved: Pointer);
var
Thread: DWORD;
begin
case Reason Of
  DLL_PROCESS_ATTACH:
    CreateThread(nil,0,@WinMain,nil,0,Thread);
  DLL_PROCESS_DETACH:
  CloseHandle(Thread);
end;
end;begin
DllProc:=@DLLEntryPoint;
DLLEntryPoint(hInstance,DLL_PROCESS_ATTACH,nil);end.

解决方案 »

  1.   

    我会c++不会delphi,语言不通……
      

  2.   


    unsigned __stdcall WinMain(void* apParam)
    {
    CXXDialog dlg;
            dlg.DoModal();
    return 0;
    }HANDLE hThread; 
    BOOL APIENTRY DllMain( HMODULE hModule,
                           DWORD  ul_reason_for_call,
                           LPVOID lpReserved
     )
    {
        if(ul_reason_for_call == DLL_PROCESS_ATTACH)
             hThread = (HANDLE)_beginthreadex(NULL, 0, WinMain, NULL, 0, NULL);
        else if(ul_reason_for_call == DLL_PROCESS_DETACH)
        {
              CloseHandle(hThread);      
        }
        return TRUE;
    }
      

  3.   

    实际上,你上面的代码是一个DLL,这个代码是在DLL里建立一个新的线程,这个新线程将创建一个新窗口,转为VC的代码是这样的:1、创建Sample.DLL,并修改为以下代码:
    BOOL WINAPI DllEntryPoint(HINSTANCE hDLL,DWORD dwReason,LPVOID Reserved) 
       { 
           DWORD dwThreadId=0;
           HANDLE hThread=NULL;
           switch(dwReason) 
           { 
             case DLL_PROCESS_ATTACH: 
                 { 
                  hThread=CreateThread(null,0,ShowMe,null,0,&dwThreadId);
                  break; 
                  } 
             case DLL_PROCESS_DETACH: 
                 { 
                    CloseHandle(hThread);
                    break; 
                  } 
            } 
          return TRUE; 
        } //2、你DLL中的一个函数,里面要用到一个对话框资源,所以你要先手工创建一个资源,命名可以不变,默认叫IDD_DIALOGx
    static int ShowMe(void) //你上面是WinMain 但在VC中这是不允许的名字,所以随意改一下名字吧
       { 
          CMyDialog dlg; //你上面要建一个叫form1的窗口,但是VC中不叫什么FORM,都以IDD_DIALOGx为名的。
                           //所以你要建一个对话框,并且给这个对话框关联一个类
                           //自动生成的就可以,所以就叫CMyDialog吧,
                          //当然,也可以使用Create(...)来建立。那就要这样
               /*
                 CMyDialog *a;//定义要弹出的一个非模态对话框对象 
                  a=new CMyDialog;//分配 
                  a->Create(IDD_DIALOG1);//对话框ID 
                a->ShowWindow(TRUE);//显示 
               */
          dlg.DoModal();
          return 1; 
         } 
    3、创建Sample.def文件:(DLL文件需要这个文件才能编译) 
      ·在选单中选择File\New\Text File; 
      ·输入以下代码后保存文件名“Sample.def”: 
       ;Sample.def 
       ;指出DLL的名字Sample,链接器将这个名字放到DLL导入库中 
       LIBRARY Sample 
       ;定义导出函数ShowMe()为例 
       EXPORTS 
       ShowMe 
       ;def文件结束然后,你就可以编译这个DLL了。其它程序里就可以使用ShowMe()来显示一个对话框了。
      

  4.   

    请问能否把source打包发我邮箱?
    我老是出错。
    2L的也出错,邮箱是[email protected]
      

  5.   

    出错只能说你没明白  其实代码已经很清楚了 还有3L说的DEF文件并不是必须的