Red de conocimiento informático - Computadora portátil - Cómo mostrar un cuadro de diálogo en modo C

Cómo mostrar un cuadro de diálogo en modo C

Cómo usar cuadros de diálogo modales en HTML

La función SHOWHTMLDIALOGFN de mshtml.dll se usa para mostrar un cuadro de diálogo HTML, pero requiere elementos COM para conversiones de cadenas y otras transacciones. Para simplificar todas estas tareas, el autor utiliza una clase para encapsular los elementos COM de la siguiente manera:

Clase CMshtmlDialog

{

Público:

void SetDlgOptions(LPCTSTR lpszOptions);

void SetSize(int x, int y);

variante LPC GetReturnVariant();

cadena cs obtiene cadena de retorno ();

void set param(LPCTSTR lpszArgs);

void set param(VARIANT * pvarArgs);

virtual int DoModal();

CMshtmlDialog(LPCTSTR lpszURL, BOOL bRes = FALSE, CWnd * p padre = NULL);

CMshtmlDialog (UINT nResID, CWnd * p padre = NULL); ();

virtual ~ CMshtmlDialog();

Privado:

recorrido de recursos vacío en línea (LPCTSTR lpszURL); construct();

Protegido:

HWND m_hWndParent

CString m_strOptions

COleVariant m_varArgs, m_varReturn

CString m _ strURL

HINSTANCE m _ hInstMSHTML

};

El archivo de implementación de la clase cmshtmlddialog.

CMshtmlDialog:: CMshtmlDialog()

{

TRACE0("Advertencia: Es posible que la inicialización no se complete: constructor no funcional");

}

CMshtmlDialog:: ~ CMshtmlDialog()

{

//Liberar Mshtml.dll

Biblioteca gratuita

}

CMshtmlDialog::CMshtmlDialog(UINT nResID, CWnd* pParent/*= NULL*/)

{

m_hWndParent = pParent? p parent-〉GetSafeHwnd(): NULL

CString strTemp

strTemp.

formato(" d ", nResID);

recorrido de recursos(strTemp

construcción común();

}

CMshtmlDialog); ::CMshtmlDialog(LPCTSTR lpszURL, BOOL bRes, CWnd* pParent/*= NULL*/)

{

m_hWndParent = pParent? p parent-〉GetSafeHwnd(): NULL

If (bRes)

{

recurso de recursos(lpszURL);

}

Otros

m _ strURL = lpszURL

construcción común();

}

int CMshtmlDialog: :DoModal()

{

//Primero obtenga el proceso ShowHTMLDialog

SHOWHTMLDIALOGFN * pfnShowHTMLDialog;

pfnshowtmldialog =(SHOWHTMLDIALOGFN *) GetProcAddress (m_hInstMSHTML,TEXT("ShowHTMLDialog"));

If (!pfnShowHTMLDialog)

return-1;

//Ahora crea el apodo de URL

IMoniker * pmk = NULL

BSTR bstrURL = m_strURL. AllocSysString();

CreateURLMoniker(NULL, bstrURL, amppmk);

If (!pmk)

return-1;

TCHAR *poptions = m_options. ¿Está vacío()? NULO: m_strOptions. get buffer(0);

//Ahora muestra el cuadro de diálogo HTML

HRESULT HR =(* pfnshowtmldialog)(m_hwnd parent, pmk, m_varArgs, pchOptions, m_var return );

si (fallo(hora))0

retorno-1;

retorno 0;

}

void CMshtmlDialog::common construct()

{

m_hInstMSHTML =::LoadLibrary(TEXT("MSHTML.

DLL "));

}

CMshtmlDialog vacío en línea::resource tourl(LPCTSTR lpszURL)

{

h instancia h instancia = AfxGetResourceHandle();

ASSERT(hin instancia!= NULL);

LPTSTR lpszModule = new TCHAR[_ MAX _ PATH];

if( GetModuleFileName (instancia hin, lpszModule, _MAX_PATH))

{

m_strURL Format(_T("res://s/s "), lpszModule, lpszURL);

}

Eliminar []módulo lpsz;

}

void CMshtmlDialog::set param(VARIANT * pvarArgs)

{

m _ varArgs = pvarArgs

}

void CMshtmlDialog::set param(LPCTSTR lpszArgs)

{

m _ varArgs = lpszArgs

}

CString CMshtmlDialog::get returnstring()

{

ASSERT(m _ var return . VT == VT _ BSTR);

CString str = m _ var return .

Cadena de retorno;

}

Variante LPC CMshtmlDialog::GetReturnVariant()

{

return(variante LPC)m_var return;

}

void CMshtmlDialog::SetSize(int x, int y)

{

m_strOptions("ancho del diálogo: d; altura del diálogo: d", x, y);

}

void cmshtmdldialog::SetDlgOptions(LPCTSTR lpszOptions)

{

m _ strOptions = lpszOptions

}

Ejemplo sencillo de uso de CMshtmlDialog

Por ejemplo, si queremos utilizar esta clase en el cuadro de diálogo Acerca de, todo lo que tenemos que hacer es escribir un archivo HTML y agregarlo. Está incluido en el archivo de recursos como IDR_ABOUT_HTM. Las funciones de OnAppAbout se enumeran a continuación:

void CHDDemoApp::OnAppAbout()

{

CMshtmlDialog dlg(IDR_ABOUT_HTM, AfxGetMainWnd());

dlg.

DoModal();

}

También puede usar el constructor para pasar un recurso de cadena o URL para mostrar, y puede usar recursos gráficos y de sonido en HTML en el cuadro de diálogo Acerca de Cuadro que muestra efectos complejos.

2007/1019/568011 .shtml