请教用SDK编程中,如何样在dll嵌入窗体,最好给出例子,多谢

请问用SDK编程中,怎么样在dll嵌入窗体,最好给出例子,谢谢
如题,谢谢!

------解决方案--------------------

void AboutDlg()
{
#ifdef _USRDLL
// If this is a DLL, need to set up MFC state
AFX_MANAGE_STATE(AfxGetStaticModuleState());
#endif

CAboutDlg dlg;
dlg.DoModal();
}
------解决方案--------------------
候捷的WINDOWS编程第21章,电子书和源码在网上都好找
------解决方案--------------------
自己画个

DoModal()封装在一函数里

把该函数作为dll的导出函数

用到的时候调用即可..
------解决方案--------------------
不如做个OCX 省事.
------解决方案--------------------
C/C++ code

LPCTSTR CLASS_NAME = L"CXXX Class";
LPCTSTR WINDOW_TITLE = L"XXXWinTitle";

HWND m_hWin = NULL;
bool m_bWinCreated = false;
HANDLE m_hThread = NULL;

UINT WorkingProc(LPVOID pParam);
HWND CreateMsgWin(CString strClass, CString strTitle);
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);

bool CXXX::Create()
{
    DWORD dwThreadId;

    m_hThread = CreateThread(NULL, 0, WorkingProc, NULL, 0, &dwThreadId);
    if (m_hThread)
    {
        while (!m_bWinCreated)
            Sleep(100);
        return true;
    }
    else
        return false;
}

HWND CreateMsgWin(CString strClass, CString strTitle)
{
    HINSTANCE hInstance = NULL;
    HWND hWnd = NULL;
    WNDCLASS wc;

    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = (WNDPROC) WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = NULL;
    wc.hCursor = 0;
    wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
    wc.lpszMenuName = 0;
    wc.lpszClassName = strClass;
    RegisterClass(&wc);

    hWnd = CreateWindow(strClass, strTitle, WS_VISIBLE,
        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);

    if (hWnd)
    {    
        ShowWindow(hWnd, SW_NORMAL);
        UpdateWindow(hWnd);
    }

    return hWnd;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
        case ...:
            break;
        case WM_CREATE:
            break;
        case WM_PAINT:
            break;
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
    }

    return 0;
}

UINT WorkingProc(LPVOID pParam)
{
    MSG msg;

    m_hWin = CreateMsgWin(CLASS_NAME, WINDOW_TITLE);
    if (m_hWin)
    {
        m_bWinCreated = true;
    
        while (GetMessage(&msg, ppParam->m_hWin, 0, 0))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }

    return 0;
}

------解决方案--------------------
把DoModal()封装在dll的导出函数里

就行了..