科技行者

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

知识库

知识库 安全导航

至顶网软件频道基础软件控制VC++.NET中WEB对话框的HTML元素属性

控制VC++.NET中WEB对话框的HTML元素属性

  • 扫一扫
    分享文章到微信

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

VC++.NET一个令人耳目一新的特性就是基于动态HTML的WEB对话框,它使得桌面程序界面和功能变得更容易实现。这里将对WEB对话框中HTML元素的CSS属性控制作探讨。

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

关键字:

  • 评论
  • 分享微博
  • 分享邮件
3、文本属性

  Style Builder对话框的Text页面可对元素中的文本进行对齐、缩进、字距、行距以及书写方式进行设置,如图5所示。



  (1) 对齐方式(Alignment)

  在水平方向(Horizontal)的对齐方式表现为:Left(左对齐)、Centered(中间对齐)、Right(右对齐)和Justified(两端对齐),而在垂直方向表现为Subscript text(垂直对齐文本的下标)和Supperscript text(垂直对齐文本的上标)。

  若在水平对齐方式选中Justified,还可有下列选项:

  Auto : 自动调整两端对齐

  Space words : 通过增加字之间的空格对齐文本。

  Newspaper style : 通过增加或减少字或字母之间的空格对齐文本。

  Distribute spacing : 处理空格很像newspaper,适用于东亚文档。

  Distribute all Lines : 两端对齐行的方式与distribute相同,适用于表意字文档。

  (2) 字距和行距

  字距(Letters)与行距(Lines)的调整相似,都有Normal(正常)和Custom(自定义)两项,若选中Custom,则可在右边设置具体的间距大小。

  (3) 文本流(Text Flow)

  文本流包括Indentation(缩进)和Text Direction(文本方向)两个属性。其中,文本方向可以有Left to right(从左到右)和Right to left(从右到左)两个选项。

  需要说明的是,以上的属性设置都有会在对话框下面的预览框看到相应的结果。

  二、在程序中获取和改变元素的CSS属性

  在WEB对话框类中获取和改变元素的CSS属性,可使用IHTMLElement接口,它提供了有关HTML元素的许多方法,其中get_style就是用来处理包括CSS在内的属性,它的原型如下:

   HRESULT get_style( IHTMLStyle **p );

  其中,p是IHTMLStyle指针变量,IHTMLStyle也是一个接口是用来提供获取和设置具体属性的方法。例如get_color和put_color是用来获取和设置元素的颜色,它们的原型如下:

  HRESULT get_color( VARIANT *p );

  HRESULT put_color( VARIANT v );

其中,VARIANT是与绝大多数数据类型相兼容的一种类型,使用时要注意设置VARIANT变量的具体类型。

  下面的例子是当鼠标划过一段文字时,其颜色从红色变成蓝色,具体步骤如下:

  (1) 选择File菜单->New菜单->Project命令,创建一个基于WEB对话框的Ex_Dlg方案工程(详细过程这里略)。

  (2) 切换到方案导航区的Resource View窗口,展开HTML项,双击IDR_HTML_EX_DLG_DIALOG项,这时就在文档窗口中显示相应的HTML模板。

  (3) 删除HTML模板中所有缺省的元素(包括OK和Cancel按钮),双击HTML工具箱的Linear Layout Panel按钮,在HTML页面中添加一个直线面板,在其中添加文字:"当你用鼠标划过这段文字时,看看有什么变化?"。

  (4) 在属性窗口中将上述添加的面板的ID号改为Div1,再单击Style项右边的Browse(...)按钮,将其文字颜色设置为红色(Red)。

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

  DHTML_EVENT_ONMOUSEOVER(_T("Div1"),OnMouseOverDiv1)

  DHTML_EVENT_ONMOUSEOUT(_T("Div1"),OnMouseOutDiv1)

  其中事件映射宏DHTML_EVENT_ONMOUSEOVER和DHTML_EVENT_ONMOUSEOUT分别用来映射鼠标移至和移出的事件。

  (6) 打开头文件Ex_DlgDlg.h,添加下面的事件映射函数的声明,并且添加成员变量m_varColor用来保存原来的颜色值:

public:
VARIANT m_varColor;
...
protected:
...
HRESULT OnMouseOverDiv1(IHTMLElement *pElement);
HRESULT OnMouseOutDiv1(IHTMLElement *pElement);

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

HRESULT CEx_DlgDlg::OnMouseOverDiv1(IHTMLElement *pElement)
{
IHTMLStyle *phtmlStyle;
pElement->get_style(&phtmlStyle);
if (phtmlStyle)
{
VARIANT varColor;
varColor.vt = VT_I4;
varColor.lVal = 0x0000ff;
phtmlStyle->get_color(&m_varColor);
phtmlStyle->put_color(varColor);
phtmlStyle->Release();
}

return S_OK;
}

HRESULT CEx_DlgDlg::OnMouseOutDiv1(IHTMLElement *pElement)
{
IHTMLStyle *phtmlStyle;
pElement->get_style(&phtmlStyle);
if (phtmlStyle)
{
phtmlStyle->put_color(m_varColor);
phtmlStyle->Release();
}

return S_OK;
}

  (8) 编译并运行,然后看看当鼠标划过那段文字后,颜色是不是会有变化?当移出时,颜色是不是以恢复到原来的红色?



  至此,通过以上的方法和技巧,我们就可以对HTML元素属性进行设置和程序控制。要提出来的是,在Visual C++.NET的Beta 1版中,WEB对话框类CDHtmlDialog的GetElementProperty和SetElementProperty好像并能有效获取和设置HTML元素的属性。

查看本文来源

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

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

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