我在我的主窗口的客户区加载了dll中的一个child型的窗口,但窗口的按钮却不能响应,不知道问题出在哪?

解决方案 »

  1.   

    BOOL APIENTRY DllMain( HANDLE hModule, 
                           DWORD  ul_reason_for_call, 
                           LPVOID lpReserved
     )
    {
        switch( ul_reason_for_call) 
        { 
        case DLL_PROCESS_ATTACH:
            {   
                HINSTANCE hInstance;  
                hInstance=_Module.GetModuleInstance();
                _Module.Init( NULL, hInstance);
            }        break;
    }
    extern "C" __declspec(dllexport) HWND contract_window( HWND hwnd)
    {    
        if( mainframe.Create( hwnd) == NULL)
        {
            ATLTRACE( _T( "Main window creation failed!\n"));
        }     return mainframe.m_hWnd;
    }mainframe是dll中我要加载的对话框。调用DLL
     typedef HWND (__cdecl *TESTDLL)(HWND);
        HINSTANCE hmod;
        hmod =::LoadLibrary( "manage.dll");
        if(hmod==NULL)
        {
            MessageBox( "Load dll fail!");
            return 0;
        }
        TESTDLL lpproc;
        lpproc = ( TESTDLL)GetProcAddress( hmod, "contract_window");
        if(lpproc!=( TESTDLL)NULL)
        {
            ( *lpproc)( m_hWnd);  //m_hWnd是主窗口的句柄
        }
      

  2.   

    问题可能出在消息被拦截了,就是说你发送给那个dll的对话框的消息被你的主程序给吸收掉了。你看看吧,你的调用貌似...很奇怪,呵呵
      

  3.   

    看看resource.h里有没有这个按钮的ID
      

  4.   

    ID?你是说进程的ID?我跟过,是一样的
      

  5.   

    对话框建立完全没有问题的,resource.h里的ID不存在问题可以排除
      

  6.   

    回skypu(小土豆)
    我跟了一下,消息并没有被主窗口屏蔽。