科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件使用Visual C++.NET的WEB对话框

使用Visual C++.NET的WEB对话框

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

最新的Visual C++.NET支持WEB对话框,它提供两个MFC类:CDHtmlDialog和CMultiPageDHtmlDialog用来创建基于动态HTML页面的对话框

作者:Adding 来源:YESKY 2007年11月16日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
三、WEB对话框编程

  WEB对话框给了我们一个新的设置WEB应用程序的设计理念,它使得我们可以利用动态HTML的性能去优化和丰富我们的桌面程序。这里就WEB对话框中关于HTML元素的事件映射和数据交换(DDX机制)作阐述,这也是WEB对话框编程的核心内容。

  1、HTML元素的事件映射

  对于熟悉VC++6.0的用户来说,使用功能强大的ClassWizard可以对某个类添加某个对象(窗口、控件)的消息映射函数,而对于控件来说,可以映射其不同的通知消息,并且这个映射的过程一般是自动完成的。

  与控件相类似,HTML元素的事件映射也可添加在WEB对话框类中,只不过需要手动进行。例如,下面就是为WEB对话框(设类为CMyDlg)中的一个按钮元素<input id=Button1 type=button value=Button>添加onClick(单击)的事件处理过程:

  (1) 打开WEB对话框类CMyDlg文件MyDlg.cpp,在文件的前面找到BEGIN_DHTML_EVENT_MAP(CMyDlg)与END_DHTML_EVENT_MAP()之间的程序段,然后添加下列代码:

  DHTML_EVENT_ONCLICK(_T("Button1"),OnButton1)

  DHTML_EVENT_ONCLICK是一个事件处理宏,第一个参数是用来指定WEB对话框中HTML元素的ID名称,第二个参数是映射该事件的函数名称,注意上句代码后面没有";"号。

  (2) 打开头文件MyDlg.h,在图10的位置处添加下列代码:



   HRESULT OnButton1(IHTMLElement *pElement);

  实际上,IHTMLElement是HTML元素的通用接口,用来调用其方法来获取和设置相关属性。所有元素的事件的映射函数都具有与上述函数相类似的格式。

  (3) 再切换到MyDlg.cpp窗口,在程序的最后添加下列代码:

HRESULT CMyDlg::OnButton1(IHTMLElement* /*pElement*/)
{
MessageBox("你好!");

return S_OK; // return TRUE unless you set the focus to a control
}

  (4) 这样就可以运行了,当用户单击Button时,就弹出一个"你好!"对话框。

  除了DHTML_EVENT_ONCLICK,Visual C++.NET还提供了超过三十个这样的事件映射宏,在VC++.NET的MSDN中键入DHTML_EVENT关键词就可以查到,这里不再重复。

  2、数据交换(DDX)

  DDX/DDV机制曾为程序员带来了许多方便,它将某个变量和某个控件相关联起来,通过UpdateData使变量的值传送到控件中(参数为FALSE)或将控件中的值保存到变量中(参数为TRUE)。

  同样在WEB对话框中仍然可以使用DDX技术。例如,下面就是为WEB对话框CMyDlg添加一个单行文本元素<input id=Text1 type=text value=Text1>,然后用m_strEdit的CString变量将其关联起来:

  (1) 打开MyDlg.h文件,在类中添加一个成员变量:

   CString m_strEdit;

  (2) 打开MyDlg.cpp文件,然后添加下面的代码:

  DDX_DHtml_ElementText(pDX,_T("Text1"),DISPID_A_VALUE ,m_strEdit);

  这样就将m_strEdit和该元素的值关联起来了。

  (3) 在CMyDlg::OnInitDialog中添加下列代码:

BOOL CMyDlg::OnInitDialog()
{
CDHtmlDialog::OnInitDialog();
m_strEdit="Hello";
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
}


  (4) 将CMyDlg::OnButton1的代码改成:

HRESULT CMyDlg::OnButton1(IHTMLElement* /*pElement*/)
{
UpdateData(TRUE);

MessageBox(m_strEdit);
return S_OK; // return TRUE unless you set the focus to a control
}

  (5) 运行后就会看到:开始时,单行文本字段中显示的是"hello",当用户键入其他字符后,再单击Button按钮,就会弹出一个对话框,显示出m_strEdit内容。

  实际上,CDHtmlDialog还提供DDX_DHtml_CheckBox(用于复选框)、DDX_DHtml_ElementText(设置或获取元素的任意属性)、DDX_DHtml_Radio(用于单选框)、DDX_DHtml_SelectIndex(设置或获取列表框当前项的索引值)、DDX_DHtml_SelectString(设置或获取列表框当前选项的文本)、 DDX_DHtml_SelectValue(设置或获取列表框当前选项的值)等。

  至此,对如何使用WEB对话框就有一个较为全面的了解。当然,这里还没有对CMultiPageDHtmlDialog以及HTML元素的深入编程和CSS样式的设置还没有讨论,期待下一次与大家见面。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章