请教用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 省事.
------解决方案--------------------
如题,谢谢!
------解决方案--------------------
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的导出函数里
就行了..