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元素的属性。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器