当前位置:文档之家› 在对话框中加入属性页

在对话框中加入属性页

在对话框中加入属性页
在对话框中加入属性页

在对话框中加入属性页

方案一

在对话框上放置一个Tab Control的控件,再在对话框上放置所需的控件(本例放置了2个按钮,试图在每个标签中显示一个)。然后利用Class Wizard来为Tab Control控件创建一个控件变量,该变量是CTabCtrl类的,再为其他控件也创建相应的控件类。在主对话框的初始函数中CProperty1Dlg::OnInitDialog()加入如下代码:

//本例插入两个标签,实际运用中可通过循环插入所需个数的标签,运行后默认第一个标签被选中

m_tab.InsertItem( 0, _T("Tab1") );

m_tab.InsertItem( 1, _T("Tab2") );

//将不是第一个标签的控件隐藏掉,只留下你要的控件

m_button2.ShowWindow( SW_HIDE );

再利用ClassWizard处理Tab Control的

TCN_SELCHANGE 的消息。在消息处理函数中,利用CWnd::ShowWindow来使相应的控件显示

和隐藏。

void CProperty1Dlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)

{

//GetCurSel返回当前被选中的标签的索引号(以0为基础算起)

int sel = m_tab.GetCurSel();

switch(sel)

{

case 0:

m_button1.ShowWindow( SW_SHOW );

m_button2.ShowWindow( SW_HIDE );

break;

case 1:

m_button2.ShowWindow( SW_SHOW );

m_button1.ShowWindow( SW_HIDE );

break;

}

*pResult = 0;

} 这样做以后就可以使界面上的控件在不同的标签中显示了,但是这个方案也有很多弊病。

所有的控件仍然在一个对话框内,在使用对话框编辑器进行编辑时,操作很不方便。

为了能分类显示控件,必须用ClassWizard为每一个控件创建一个控件变量,以便利用各控件变量的CWnd基类的ShowWindow函数来显示和隐藏。有时为了使用DDX和DDV机制来进行数据交换,还要创建一些存放值的变量,这样就使得整个对话框类变得相当庞大难以操作。

当然你也可以使用数组来存放那些控件变量或值变量,但是这样并不是最好,有时一些不相关的控件变量放入一个数组中,通过没有实际意义的数组索引号来访问控件,对程序的编写会造成麻烦。最好能将所有控件进行分类,放入不通对话框类中,这些对话框作为子对话框出现在主对话框中。可以。现在看看方案二。

方案二

这个方案中,我将使用MFC中现成的CPropertySheet和CPropertyPage类来完成将控件分散到各个对话框类中。

首先加入两个(或数个)对话框资源。修改各对话框资源的属性,将对话框的Caption属性改为你要在标签上所显示的文字。将对话框的Style 属性改为:Child,Border属性改为:Thin,只选中Title Bar复选框,去掉其他复选框。然后你可以在这些对话框中加入要分开显示的各个控件。

为上述对话框资源分别制作一个对话框类,该对话框类是从CPropertyPage继承。这样一来各子对话框类就好了,主对话框类可以直接使用CPropertySheet类。使用如下代码即可:

CPropertySheet sheet("属性页对话框"); CPage1 page1;

CPage2 page2;

//加入子对话框作为一个属性页

sheet.AddPage(&page1);

sheet.AddPage(&page2);

//产生一个模态对话框,也可以使用Create方法来产生一个非模态对话框(具体参见MSDN)sheet.DoModal();

这样这个对话框效果如下:

但是会有人问,如何在主对话框中放置其他控件呢?如果直接使用CPropertySheet的话,是不可以的,但是别忘了我们可以从CPropertySheet类继承自己的类啊!下面来看看方案三的做法。

方案三

首先还是要创建那些要在属性页中的显示的子对话框类,创建步骤和方案二一样,都是从CPropertyPage继承。

这次我们将从CPropertySheet类继承自己的类(假设类名为CMySheet)。我们要在这里放上一个button控件。那么现在先在CMySheet中加入一个CButton类的成员变量m_button。

在CMySheet类中的OnInitDialog()函数里,这样写:

BOOL bResult =

CPropertySheet::OnInitDialog();

//取得属性页的大小

CRect rectWnd;

GetWindowRect(rectWnd);

//调整对话框的宽度SetWindowPos(NULL, 0, 0,rectWnd.Width() + 100,rectWnd.Height(),SWP_NOMOVE |

SWP_NOZORDER | SWP_NOACTIVATE);

CRect rectButton(rectWnd.Width() + 25, 25,rectWnd.Width()+75, 75);

//用程序创建一个按钮

m_button.Create("Button", BS_PUSHBUTTON, CRect(rectWnd.Width(),

25,rectWnd.Width()+75, 50) , this, 1);

//显示这个按钮

m_button.ShowWindow( SW_SHOW ); CenterWindow();

return bResult;

效果如下:

使用方案三虽然能在主对话框中加入控件,但是也比较麻烦,首先所加的控件只能在属性页的右边或下边。并且用程序来产生控件比较烦琐,位置与大小不易控制。那么还有其他方法,既能在对话框中加入属性页,又能在主对话框随意添加控件?还是有的,看看方案四。

方案四

这次我们不从CPropertySheet继承自己的类,还是直接使用它。各属性页的子对话框类还是需要的,创建方法和上述两个方案相同。

首先我们新建一个基于对话框的工程。在编辑已有的一个主对话框中可以自由加一些所需的控件,但是得留出一定的空间用于放置属性页。

在主对话框类里加入一个CPropertySheet类的一个成员变量(m_sheet)代表整个属性页。再加入一些各子对话框类的实例作为成员变量

(m_page1、m_page2……)。

在主对话框类的OnInitDialog()函数中加入:

//加入标签,标签名由各个子对话框的标题栏决定

m_sheet.AddPage(&m_page1);

m_sheet.AddPage(&m_page2);

//用Create来创建一个属性页

m_sheet.Create(this, WS_CHILD | WS_VISIBLE, WS_EX_CONTROLPARENT);

RECT rect;

m_sheet.GetWindowRect(&rect);

int width = rect.right - rect.left;

int height = rect.bottom - rect.top;

//调整属性页的大小和位置

m_sheet.SetWindowPos(NULL, 20, 50, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);

效果如下:

这个方案可以自由在主对话框中加一些必要的控件,而且属性页中的控件也都分散在了各个子对话框类中,使用非常方便。

但是这样也有一些缺陷:主对话框不能处理属性页上标签的消息,即点击标签时无法通知主对话框。(可能笔者水平有限,理论上应该可以,但笔者尚未解决这个问题)

方案五

这次我们仍然要使用Tab Control,并且从CTabCtrl控件类继承自己的类(CTabSheet)来处理。(此方法来自CodeGuru的一篇文章,本人稍做修改使其使用更简便)

首先我先介绍一下如何使用CTabSheet。

先要制作子对话框类,这次的子对话框类不要从CPropertyPage继承,而是直接从CDialog继承。并且各个子对话框资源的属性应设置为:Style为Child,Border为None。

在主对话框资源中,加入一个Tab Control,并且适当调整位置和大小。利用ClassWizard来为这个Tab Control创建一个CTabSheet的控件变量。

在主对话框的OnInitDialog()加入:

m_sheet.AddPage("tab1", &m_page1,

IDD_DIALOG1);

m_sheet.AddPage("tab2", &m_page2,

IDD_DIALOG2);

m_sheet.Show();

就这样就可以在对话框上制作出一个完美的属性页了。效果和上图完全一样。

下面我就来讲讲CTabSheet类的细节内容。

CTabSheet是从CTabCtrl继承来的,用于Tab Control的控件类。在类中有一个成员变量用来记录各子对话框的指针CDialog*

m_pPages[MAXPAGE]; MAXPAGE是该类所能加载的标签的最大值。

类中有一个AddPage方法,用于记录子对话框的指针和所使用对话框资源的ID号。

BOOL CTabSheet::AddPage(LPCTSTR title, CDialog *pDialog,UINT ID)

{

if( MAXPAGE == m_nNumOfPages )

return FALSE;

//保存目前总的子对话框数

m_nNumOfPages++;

//记录子对话框的指针、资源ID、要在标签上显示的文字

m_pPages[m_nNumOfPages-1] = pDialog;

m_IDD[m_nNumOfPages-1] = ID;

m_Title[m_nNumOfPages-1] = title;

return TRUE;

}

在使用AddPage加入了若干子对话框后,必须调用CTabSheet的Show方法来真正生成标签和子对话框。

void CTabSheet::Show()

{

//利用CDialog::Create来创建子对话框,并且使用CTabCtrl::InsertItem来加上相应的标签for( int i=0; i < m_nNumOfPages; i++ ) {

m_pPages[i]->Create( m_IDD[i], this ); InsertItem( i, m_Title[i] );

}

//由于对话框显示时默认的是第一个标签被选中,所以应该让第一个子对话框显示,其他子对话框隐藏

m_pPages[0]->ShowWindow(SW_SHOW);

for( i=1; i < m_nNumOfPages; i++)

m_pPages[i]->ShowWindow(SW_HIDE);

SetRect();

}

生成好标签和子对话框后,调用CTabSheet::SetRect来计算并调整属性页的大小。

void CTabSheet::SetRect()

{

CRect tabRect, itemRect;

int nX, nY, nXc, nYc;

//得到Tab Control的大小

GetClientRect(&tabRect);

GetItemRect(0, &itemRect);

//计算出各子对话框的相对于Tab Control的位置和大小nX=itemRect.left;

nY=itemRect.bottom+1;

nXc=tabRect.right-itemRect.left-2;

nYc=tabRect.bottom-nY-2;

//利用计算出的数据对各子对话框进行调整

m_pPages[0]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_SHOWWINDOW);

for( int nCount=1; nCount < m_nNumOfPages; nCount++ )

m_pPages[nCount]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_HIDEWINDOW);

}

在单击标签栏后,应该是相应的子对话框显示,

正在显示的子对话框应该隐藏。因此利用ClassWizard来处理WM_LBUTTONDOWN消息。void CTabSheet::OnLButtonDown(UINT nFlags, CPoint point)

{

CTabCtrl::OnLButtonDown(nFlags, point);

//判断是否单击了其他标签

if(m_nCurrentPage != GetCurFocus())

{

//将原先的子对话框隐藏

m_pPages[m_nCurrentPage]->ShowWindow(SW_HI DE);

m_nCurrentPage=GetCurFocus();

//显示当前标签所对应的子对话框

m_pPages[m_nCurrentPage]->ShowWindow(SW_SH OW);

}

}

这样利用CTabSheet这个类就可以轻松地在对话

框上放置自己的属性页了,并且控件都分散在各

子对话框类中,符合对象封装的思想。而且用这

个方法来制作属性页就可以利用ClassWizard来

轻松地生成消息映射处理Tab Control的消息了。例如:可以处理TCN_SELCHANGE消息来对切换

了标签时进行一些动作。

VC++ MFC属性表对话框的运行机制

VC++ MFC属性表对话框的运行机制 2008-07-01 19:09 属性表对话框的初始化包括框架对话框的初始化和页的初始化。页的初始化工作可在OnInitDialog函数中进行,而框架对话框的初始化应该在OnCreate函数中完成。 根据CPropertySheet::DoModal返回的是IDOK还是IDCANCEL,程序可以判断出关闭对话框时按的是OK还是Cancel按钮,这与普通对话框是一样的。 如果属性表对话框是模态对话框,在其底部会有3个按钮,依次为OK、Cancel 和Apply(应用)按钮,如果对话框是非模态的,则没有这些按钮。OK与Cancel 按钮的意义与普通按钮没什么两样,Apply按钮则是属性表对话框所特有的。普通的模态对话框只有在用户按下了OK按钮返回后,对话框的设置才能生效,而设计Apply的意图是让用户能在不关闭对话框的情况下使对话框的设置立即生效。由此可见,Apply按钮的作用是使用户在设置完数据后,不必退出对话框,就可以反复进行设置,这在许多应用场合下是很有用的。 为了对上述3个按钮作出响应,CPropertyPage类提供了OnOK,OnCancel和OnApply函数,用户可覆盖这3个函数以完成所需的工作。需要指出的是这3个函数并不是直接响应按钮的BN_CLICKED消息的,但在按钮按下后它们是被间接调用。这些函数的说明如下: 1. Virtual void OnOK( ):在按下OK或Apply按钮后,该函数被调用。默认的OnOK函数几乎什么也不干,像数据交换和关闭对话框这样的工作是在别的地方完成的,这与普通对话框的OnOK函数是不同的: 2. Virtual void OnCancel( ):在按下Cancel按钮后,该函数将被调用。默认的OnCancel函数也是几乎什么也不干; 3. Virtual BOOL OnApply( ):在按下OK或Apply按钮后,该函数将被调用。默认的OnApply 会调用OnOK函数。函数的返回值如果是TRUE,则对话框中的设置将生效,否则无效。 令人不解的是,MFC并未考虑CPropertySheet类的按钮响应问题,不要指望能通过ClassWizard来自动创建按钮的BN_CLICKED消息处理函数,通常的按钮响应都是在CPropertyPage类完成的。 下面几个CPropertyPage类的成员函数也与属性表的运行机制相关。 Void SetModified( BOOL bChanged = TRUE ):该函数用来设置修改标志。若参数bChanged为True,则表明对话框中的设置已改动,否则说明设置未改动。该函数的一个主要用途是允许或禁止Apply按钮。在默认情况下,Apply按钮是禁止的。只要一调用SetModified(TRUE),Apply按钮就被允许,而调用SetModified(FALSE)并不一定能使Apply按钮禁止,只有在所有被标为改动的页

把本地连接属性里面的TCPIP协议属性对话框打开.pdf

把本地连接属性里面的TCP/IP协议属性对话框打开,然后选手动配置IP,随便填入192.168.0.1之类的IP,子网掩码输入255.255.255.0,点确定即可。 出现提示的原因是: SP2更多考虑了安全问题,你的IP设置为自动获取,其实是从DHCP服务器获取IP及相关参数,但是这个过程可能由于某种原因,没有完成.在SP1时代,这种情况下,操作系统为了防止脱网(微软这么写的),自作主张为网卡设置 169.x.x.x的保留IP,不作任何错误提示,如果有多台计算机没有获得正确的IP,那么他们通过保留地址还可以互相通讯。但是安装SP2后,操作系统依据“安全”至上的原则,不分配任何IP,切断网络连接,并报告错误“本地连接受限制或无 连接”。 脑上的本地连接显示受限制或无连接是跟网络服务器和网卡有关的。反正属于网络方面的问题,跟计算机没多大关系,不影响系统,可以不用管他的。如果实在 烦,可以在“网络连接“的”本地连接“的设置里把”无连接时通知我“的选项去掉.不影响上网 内网的话指定一个IP就好啦........ 快速修复浏览器方案(请活学活用以下方法——根据具体情况决定做哪些) 管理加载项”那里禁用所有可疑插件,或者你能准确1、打开浏览器,点“工具”→“ 知道没问题的保留。然后→工具→INTERNET选项→常规页面→删除cookies→删除文件→钩选删除所有脱机内容→确定→设置使用的磁盘空间为:8MB或以下(我自己使用1MB)→确定→清除历史纪录→网页保存在历史记录中的天数:3以下→应用确定(我自己使用的设置是0天)。 2、还原浏览器高级设置默认值:工具→INTERNET选项→高级→还原默认设置。 3、恢复默认浏览器的方法“工具”→Internet选项→程序→最下面有个“检查Internet Explorer是否为默认的浏览器”把前面的钩选上,确定。 4、设置主页:“工具”→Internet选项→常规→可以更改主页地址→键入你喜欢的常用网址→应用。 5、如果浏览器中毒就使用卡卡助手 4.0版本修复,然后做插件免疫:全部钩选→免疫。然后→全部去掉钩选→找到“必备”一项,把能用到的插件重新钩选→取 消免疫。能用到的就是FLASH和几种播放器的,其余的不要取消免疫。

对话框

Windows编程基础 东软人才实训中心 Copyright 2010 By Neusoft Group. All rights reserved 1

本课程旨在向学员介绍: 1)对话框和对话框类2)模式对话框 3)无模式对话框 4)属性页对话框 5)通用对话框时间:学时6 教学方法:讲授+课上练习+课下作业 第四章对话框 2

3 ?Windows 应用程序的基本工作流程是从用户那里得到数据,经过相应的处理后,再把计算结果输出到屏幕或打印机。获取数据的方法会涉及很重要的界面对象-对话框。?首先学习对话框应用程序的好处: –它比基于文档/视图应用程序更易于理解 –涉及的类少,但与文档/视图应用程序有相同的威力。 学习对话框的重要性

4 ?主要有以下两种 –模态(Modal)对话框,必须首先响应这个对话框才可以进行其他动作。 –非模态(Modaless)对话框,用户可以操作该程序的其他窗口。 对话框的类型

CDialog类 ?CDialog类从CWnd类派生而来,所以它继承了CWnd类的成员函数,具有CWnd类的基本功能,可以编写代码移动、显示或隐藏对话框,并能根据对话框的特点增加新的成员函数,扩展它的功能。 CObject CmdTarget CWnd CDialog 5

6 对话框类相关成员函数 用于关闭对话框窗口 CDialog::EndDiaolg()响应WM_INITDIALOG 消息CDialog::OnInitDialog() 单击取消或Esc 调用该函数,内部调用EndDialog()CDialog::OnCancel() 单击OK 按钮调用该函数,内部调用EndDialog()CDialog::OnOK() 根据对话框模板资源创建非模态对话框CDialog::Create() 激活模态对话框,显示对话框窗口直到该窗口关闭返回CDialog::DoModal() 功能描述成员函数

Step7 5.5 变量属性 属性对话框 属性标签页

Step7 5.5 关于变量属性属性对话框属性标签页共三个问题,其实也就一个问题,三种不同形式。 第一个,在组织块OB的对象属性对话框的属性标签页的属性设置问题。 第二个,在功能FC的对象属性对话框的属性标签页的属性设置问题。 第三个,在功能块FB的声明变量的对象属性对话框的属性标签页的属性设置问题。 希望能为我解惑! 问题补充: 帮助文件给的提示是“在此处输入属性名称。系统属性始终以S7_开始。用户可以随意定义属性名称,但是不能以S7_开始。您不能改变已经在这里输入的系统属性。”,随意定义的属性名称有什么用,跟什么有关系? 图片说明: 1,组织块OB 对象属性问题2,功能块FB 声明变量的对象属性问题3,功能FC的对象属性问题最佳答案 系统属性是应用程序间的属性。它们控制和协调单个应用程序间的功能。例如,消息只需在S7/M7块中组态一次,同样的组态即可用来在可视化系统上显示这些消息。 系统属性分为块的系统属性和参数的系统属性。 块的系统属性: 1块的系统属性应用于整个块。 2块的系统属性可用于定义FB、SFB、FC、SFC、UDT、OB和DB,但不能用于定义VAT和SDB。 3如果修改了块的系统属性,则会产生新的代码时间标志。因此时间标志可以反映是否发生了改变。 4当为功能块(FB)时,通过背景数据块继承块的系统属性。为背景DB定义的任何系统属性均将附加到FB上。 5无法改变受知识产权保护的块的块系统属性。 通过上面第二条,可以看出你问的问题其实就是一个问题。 改变块的系统属性。 块的系统属性(按字母顺序排列 属性用于:简要描述: S7_alarm_ui CFC、消息组态块消息所对应的PCS 7特定的消息对话框打开 S7_asset 维护站将块/图表标识为资产代理 S7_blockview CFC CFC中块的格式或视图 S7_driver CFC 信号预处理驱动程序块的标识号 S7_hardware CFC 模块专用驱动程序块的标识号 S7_language 管理多语言文本 "管理多语言文本"功能的语言和时间标志 S7_linklist S7-GRAPH 可用于将其它块/实例分配给S7-GRAPH块 S7_m_c CFC、OCM 块与控制系统相关 S7_pdiag S7-PDIAG 具有诊断功能的块,可以使用S7-PDIAG进行过程错误诊断 S7_pdiag_motion S7-PDIAG S7-PDIAG语言编译器的UDT S7_pdiag_s_unit S7-PDIAG S7-PDIAG语言编译器的UDT S7_pdiag_unit S7-PDIAG S7-PDIAG语言编译器的UDT S7_rawdata WinCC 块实例也包括WinCC中的一个原始数据变量 S7_read_back CFC CFC中"图表回读"功能的标识号 S7_skipconn CFC代码发生器防止为正在被处理的块互连生成代码。 S7_state_rep Mapper 标识用于WinCC中自动报警隐藏的块 S7_tag CFC、OCM WinCC中测量点列表的标识号 S7_tagcollect SIMATIC BATCH 块是TagCollect块

孙鑫第8课--对话框的编程(属性页,属性表单)

选择一个基于对话框的MFC工程。 下面做一个逃跑按钮。 在对话框上添加两个按钮。 新建一个CBtn,基类是CButton.为这个类添加:CBtn *pbtn; 为这两个按钮关联新建立的这个按钮类。 在BOOL CTestDlg::OnInitDialog()中添加: m_btn1.pbtn=&m_btn2; m_btn2.pbtn=&m_btn1; void CBtn::OnMouseMove(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default ShowWindow(SW_HIDE); pbtn->ShowWindow(SW_SHOW); CButton::OnMouseMove(nFlags, point); } 运行,达到效果,但是初始化运行的时候能看到两个按钮。为此做如下修改: 将其中一个按钮的可见性不选。 下面是属性表单和向导的创建: 创建一个MFC的单文档程序。 为菜单增加一个显示属性表单的按钮,并添加VIEW类中响应。 添加三个属性页对话框。(由于在上面要写中文,将属性改为中文),并为这三个属性页创建一个类,再新建一个对话框,为它创建一个属性表单类。

在属性表单的头文件中添加:(要包含三个属性页的头文件) public: CPage1 m_page1; CPage2 m_page2; CPage3 m_page3; 为属性表单的构造函数: CPageSheet::CPageSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage) :CPropertySheet(nIDCaption, pParentWnd, iSelectPage) { AddPage(&m_page1); AddPage(&m_page2); AddPage(&m_page3); } CPageSheet::CPageSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage) :CPropertySheet(pszCaption, pParentWnd, iSelectPage) { AddPage(&m_page1); AddPage(&m_page2); AddPage(&m_page3); } void CTestView::OnPage() { // TODO: Add your command handler code here CPageSheet ps("属性表单"); ps.SetWizardMode();//设置向导,如没这句,不是设置向导。 ps.DoModal(); } CPageSheet类不用关联任何的对话框,直接创建这个类。 为单选按钮关联一个成员变量。 BOOL CPage1::OnSetActive() { // TODO: Add your specialized code here and/or call the base class CPageSheet* psheet = (CPageSheet*) GetParent(); psheet->SetWizardButtons(PSWIZB_NEXT); return CPropertyPage::OnSetActive(); } BOOL CPage2::OnSetActive() { CPropertySheet* psheet = (CPropertySheet*) GetParent(); psheet->SetWizardButtons(PSWIZB_BACK | PSWIZB_NEXT);

如何看明白ChemBioDraw的原子属性对话框

如何看明白ChemBioDraw的原子属性对话框ChemBioDraw软件可以轻松快捷地对原子中特定的属性类型进行查询和编辑。本教程将以ChemBioDraw中的隐含氢和环键数为例讲解ChemBioDraw查询结构的使用技巧。 隐含氢属性表示是否可以在被选原子上连接额外的隐含氢。如果隐含氢被禁用,原子上的所有原子价必须用连接非氢原子的键来补充。 下面是隐含氢在Atom Properties对话框的选项。 (1)Not allowed(禁用):找到被选原子上没有连接额外氢的化合物。 (2)Allowed(允许默认):找到匹配的化合物而不管被选原子上有没有氢连接。 Atom Properties对话框中的隐含氢选项 环键数指定任何大小的环上的原子连接的键的数目。简单地说,这也暗示了一个原子最多可以位于几个环中。

下面是环键数在Atom Properties对话框的选项。 Atom Properties对话框中的环键数选项 (1)Any(任何默认):找到匹配化合物,被选原子可以是任何类型环的成员,也可以不是任何环的成员。 (2)Nothing ring bonds(无环键):找到被选原子是脂肪族化合物。 (3)As drawn(与绘制的一样):找到匹配化合物,被选原子位于所画的相同类型和数目的环中。 (4)Simple ring(单一环):找到匹配化合物,被选原子只是一个环(该原子有两个环键)的成员。 (5)Fusion(融合):找到匹配化合物,被选原子位于融合的环中。(原子有三个环键)。 (6)Spiro or higher(螺旋或较高键):找到匹配化合物,被选原子是螺旋或较高键连接的医院(原子有4四个或更高的环键)。

Word2007表格属性对话框怎么设置行列尺寸

Word2007表格属性对话框怎么设置行列尺寸 在Word2007中,用户可以通过表格属性对话框对行高、列宽、表格尺寸或单元格尺寸进行更精确的设置,下面是小编给大家整理的一些有关Word2007表格属性对话框设置行列尺寸的方法,希望对大家有帮助! Word2007表格属性对话框设置行列尺寸的方法 第1步,打开Word2007文档窗口,在Word表格中右键单击准备改变行高或列宽的单元格,选择“表格属性”命令,或者单击准备改变行高或列宽的单元格,在“表格工具”功能区的“布局”选项卡中单击“单元格大小”分组中打开“表格属性”对话框按钮,用户还可以单击准备改变行高或列宽的单元格,在“表格工具”功能区的“布局”选项卡中单击“表”分组中的“属性”按钮,

第2步,在打开的“表格属性”对话框中,切换到“表格”选项卡。选中“指定宽度”复选框,然后调整表格宽度数值, 第3步,切换到“行”选项卡,选中“指定高度”复选框,并设置当前行的高度数值。在“行高值是”下拉菜单中,用户可以选择所设置的行高值为最小值或固定值。如果选择“最小值”,则允许

当前行根据填充内容自动扩大行高但不小于当前行高值;如果选择“固定值”,则当前行将保持固定的高度不改变。选中“允许跨页断行”复选框则可以在表格需要跨页显示时,允许在当前行断开。单击“上一行”或“下一行”按钮改变当前行, 第4步,切换到“列”选项卡,选中“指定宽度”复选框,并设置当前列宽数值。单击“前一列”或“后一列”按钮改变当前列,

第5步,切换到“单元格”选项卡,如果选中“指定宽度”复选框并设置单元格宽度数值后,则当前单元格所在列的宽度将自动适应该单元格宽度值。也就是说,单元格宽度值优先作用于当前列的宽度值。设置完毕单击“确定”按钮,

在Word2010“表格属性”对话框设置行列尺寸

在Word2010“表格属性”对话框设置行列尺寸 在Word2010中,用户可以通过“表格属性”对话框对行高、列宽、表格尺寸或单元格尺寸进行更精确的设置,操作步骤如下所述: 第1步,打开Word2010文档窗口,在Word表格中右键单击准备改变行高或列宽的单元格,选择“表格属性”命令,如图2010081009所示 图2010081009 选择“表格属性”命令 或者单击准备改变行高或列宽的单元格,在“表格工具”功能区的“布局”选项卡中单击“单元格大小”分组中打开“表格属性”对话框按钮,的如图2010081010所示。

图2010081010 单击打开“表格属性”对话框按钮 用户还可以单击准备改变行高或列宽的单元格,在“表格工具”功能区的“布局”选项卡中单击“表”分组中的“属性”按钮,如图2010081011所示。 图2010081011 单击“属性”按钮 第2步,在打开的“表格属性”对话框中,切换到“表格”选项卡。选中“指定宽度”复选框,然后调整表格宽度数值,如图2010081012所示。

图2010081012 选中“指定宽度”复选框 第3步,切换到“行”选项卡,选中“指定高度”复选框,并设置当前行的高度数值。在“行高值是”下拉菜单中,用户可以选择所设置的行高值为最小值或固定值。如果选择“最小值”,则允许当前行根据填充内容自动扩大行高但不小于当前行高值;如果选择“固定值”,则当前行将保持固定的高度不改变。选中“允许跨页断行”复选框则可以在表格需要跨页显示时,允许在当前行断开。单击“上一行”或“下一行”按钮改变当前行,如图2010081013所示。

VS2010和MFC编程入门之15(对话框:一般属性页对话框的创建及显示)

VS2010MFC编程入门之十五(对话框:一般属性页对话框的创建 及显示) 属性页对话框包括向导对话框和一般属性页对话框两类,讲了如何创建并显示向导对话框,这里将继续介绍一般属性页对话框的创建和显示。 实际上,一般属性页对话框的创建和显示过程和向导对话框是很类似的。将上一节中的向导对话框进行少量修改,使其成为一般属性页对话框。 一般属性页对话框的创建步骤: 1.创建属性页对话框资源 属性页对话框资源的创建方法同向导对话框是一样的,上一讲中的对话框资源不需进行任何修改。 2.创建属性页类 属性页类的创建和向导对话框的属性页类也基本一样,只是一般属性页对话框中不需要“下一步”和“完成”等按钮,所以上一讲中属性页类的OnSetActive和OnWizardFinish等重载函数可以去掉。即CSummandPage类中的OnSetActive函数、CAddPage类中的OnSetActive函数和OnWizardFinish函数可以删除或注释掉。其他部分不需作任何修改。 3.创建属性表类 创建属性表类的过程同向导对话框属性表类也是一样的,所以上一讲中的CAddSheet 类不需修改。 4.显示一般属性页对话框

上一讲向导对话框的显示是在OnBnClickedInstructButton函数中实现的,其中语句sheet.SetWizardMode();旨在设置属性表为向导对话框模式,所以显示一般属性页对话框时不需调用SetWizardMode成员函数。另外,我们可以将属性页对话框的标题设为“使用说明”,在构造属性表对象时将此字符串作为构造函数的参数传入。OnBnClickedInstructButton函数修改如下: C++代码 void CAdditionDlg::OnBnClickedInstructButton() { // TODO: Add your control notification handler code here // 创建属性表对象 CAddSheet sheet(_T("使用说明")); // 打开模态一般属性页对话框 sheet.DoModal(); } 这样一般属性页对话框的创建和显示就讲完了,我们运行下程序,在结果对话框上点“使用说明”按钮看看效果吧:

定义对话框

对话框 一、DCL 文件结构 DCL 文件按照树型结构方式定义对话框,其中树型结构顶端的(dialog) 控件用于定义对话框本身。AutoCAD 提供的base.dcl和acad.dcl 文件被放置在AutoCAD 的support 目录下。创建对话框时,必须针对应用程序新建一个DCL 文件。所有定义的DCL 文件都可以使用base.dcl 中定义的控件。通过include directive,DCL 文件可以使用在其他DCL 文件中定义的控件。include directive 的格式如下: @include filename 其中,filename 是用引号括起的其他DCL 文件的完整文件名(包括.dcl扩展名)。例如,以下样例引用一个名为usercore.dcl 的DCL 文件: @include "usercore.dcl" 注意不能使用@include "acad.dcl",也不能使用在acad.dcl 文件中定义的对话框。但是,如果要创建与其中某些对话框类似的对话框,可以将其定义复制并粘贴到自己的DCL 文件中。 DCL文件可以包含一个或多个对话框的描述,或者只包含供其他DCL文件使用的控件原型或组件。 1、DCL 语法 控件定义格式如下: name : item1 [ : item2 : item3 ... ] { attribute = value; ... } 其中,每一个item 都是前面已定义的控件。新控件(name) 继承了所有指定项目(item1, item2, item3, ...) 的属性,同时新控件还继承(或添加)大括号({}) 中的属性,如果属性名已经存在,则替换继承的定义。如果多个父定义中指定了一个同名属性,则使用第一个遇到的属性作为新定义控件的属性。 如果新定义的控件不包含子定义,则为一个控件原型。引用此控件原型时,可以修改或添加其属性。如果新定义的控件是一个带有子定义的组件,引用此组件时,不能修改其属性。 控件或控件原型的name 只能由字母、数字或下划线( _ ) 组成,但必须以字母开始。控件名是区分大小写的。例如,bigbutton 与BigButton 或BIGBUTTON 可以用来表示不同的控件名。 以下是按钮控件的(内部)定义: button : tile { fixed_height = true; is_tab_stop = true; } base.dcl 文件中对此引申定义了一个default_button: default_button : button { is_default = true; }

相关主题
文本预览
相关文档 最新文档