当前位置:文档之家› VC之美化界面篇

VC之美化界面篇

VC之美化界面篇
VC之美化界面篇

VC之美化界面篇

本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础:

1. 大致了解MFC框架的基本运作原理;

2. 熟悉Windows消息机制,熟悉MFC的消息映射和反射机制;

3. 熟悉OOP理论和技术;

本文根据笔者多年的开发经验,并结合简单的例子一一展开,希望对读者有所帮助。

正文

1. 美化界面之开题篇

相信使用过《金山毒霸》、《瑞星杀毒》软件的读者应该还记得它们的精美界面:

图1 瑞星杀毒软件的精美界面

程序的功能如何如何强大是一回事,它的用户界面则是另一回事。千万不要忽视程序的用户界面,因为它是给用户最初最直接的印象,丑陋的界面、不友好的风格肯定会影响用户对软件程序的使用。

“受之以鱼,不若授之以渔”,本教程并不会向你推荐《瑞星杀毒软件》精美界面的具体实现,而只是向你推荐一些常用的美化方法。

2. 美化界面之基础篇

美化界面需要先熟悉Windows下的绘图操作,并明白Windows的幕后绘图操作,才能有的放矢,知道哪些可以使用,知道哪些可以避免……

2.1 Windows下的绘图操作

熟悉DOS的读者可能就知道:DOS下面的图形操作很方便,进入图形模式,整个屏幕就是你的了,你希望在哪画个点,那个地方就会出现一个点,红的、或者黄的,随你的便。你也可以花点时间画个按钮,画个你自己的菜单,等等…… Windows本身就是图形界面,所以Windows下面的绘图操作功能更丰富、简单。要了解Windows下的绘图操作,要实现Windows界面的美化,就必须了解MFC

封装的设备环境类和图形对象类。

2.1.1 设备环境类

Windows下的绘图操作说到底就是DC操作。DC(Device Context设备环境)对象是一个抽象的作图环境,可能是对应屏幕,也可能是对应打印机或其它。这个环境是设备无关的,所以你在对不同的设备输出时只需要使用不同的设备环境就行了,而作图方式可以完全不变。这也就是Windows的设备无关性。

MFC的CDC类封装了Windows API 中大部分的画图函数。CDC的常见操作函数包括:

Drawing-Attribute Functions:绘图属性操作,如:设置透明模式

Mapping Functions:映射操作

Coordinate Functions:坐标操作

Clipping Functions:剪切操作

Line-Output Functions:画线操作

Simple Drawing Functions:简单绘图操作,如:绘制矩形框

Ellipse and Polygon Functions:椭圆/多边形操作

Text Functions:文字输出操作

Printer Escape Functions:打印操作

Scrolling Functions:滚动操作

*Bitmap Functions:位图操作

*Region Functions:区域操作

*Font Functions:字体操作

*Color and Color Palette Functions:颜色/调色板操作

其中,标注*项会用到相应的图形对象类,参见2.1.2内容。

2.1.2 图形对象类

设备环境不足以包含绘图功能所需的所有绘图特征,除了设备环境外,Windows还有其他一些图形对象用来储存绘图特征。这些附加的功能包括从画线的宽度和颜色到画文本时所用的字体。图形对象类封装了所有六个图形对象。

下面的表格列出了MFC的图形对象类:

MFC类图形对象句柄图形对象目的

CBitmap HBITMAP 内存中的位图

CBrush HBRUSH 画刷特性—填充某个图形时所使用的颜色和模式

CFont HFONT 字体特性—写文本时所使用的字体

CPalette HPALETTE 调色板颜色

CPen HPEN 画笔特性—画轮廓时所使用的线的粗细

CRgn HRGN 区域特性—包括定义它的点

表1 图形对象类和它们封装的句柄

使用CDC和图形对象类,在Windows里绘图还算是很简单的。观察以下的画面:

图2 使用CDC绘制出的按钮

该画面通过以下代码自行绘制的假按钮:

BOOL CUi1View::PreCreateWindow(CREATESTRUCT& cs)

{

//设置背景色

//CBrush CUi1View::m_Back

m_Back.CreateSolidBrush(::GetSysColor(COLOR_3DFACE));

cs.lpszClass = AfxRegisterWndClass(0, 0, m_Back, NULL);

return CView::PreCreateWindow(cs);

}

int CUi1View::OnCreate(LPCREATESTRUCT lpCreateStruct) {

if (CView::OnCreate(lpCreateStruct) == -1)

return -1;

//创建字体

//CFont CUi1View::m_Font

m_Font.CreatePointFont(120, "Impact");

return 0;

}

void CUi1View::OnDraw(CDC* pDC)

{

//绘制按钮框架

pDC->DrawFrameControl(CRect(100, 100, 220, 160), DFC_BUTTON, DFCS_BUTTONPUSH);

//输出文字

pDC->SetBkMode(TRANSPARENT);

pDC->TextOut(120, 120, "Hello, CFan!");

}

呵呵,不好意思,这并不是真的Windows按钮,它只是一个假的空框子,当用户在按钮上点击鼠标时,放心,什么事情都不会发生。

2.2 Windows的幕后绘图操作

在Window中,如果所有的界面操作都由用户代码来实现,那将是一个很浩大的工程。笔者曾经在DOS设计过窗口图形界面,代码上千行,但实现的界面还是很古板、难看,除了我那个对编程一窍不通的女友,没有一个人欣赏它L;而且,更要命的是,操作系统,包括别的应用程序并不认识你的界面元素,这才是真正悲哀的。认识这些界面的只有你的程序,图2中的按钮永远只是一个无用的框子。

有了Windows,一切都好办了,Windows将诸如按钮、菜单、工具栏等等这些通用界面的绘制及动作都交给了系统,程序员就不用花心思再画那些按钮了,可以将更多的精力放在程序的功能实现方面。

所有的标准界面元素都被Windows封装好了。Windows知道怎么画你的菜单以及你的标注着“Hello, Cfan!”的按钮。当CFan某个快乐的小编(譬如:小飞)点击这个按钮的时候,Windows也明白按钮按下去的时候该有的模样,甚至,当这个友好的按钮获取焦点时,Windows也会不失时机地为它准备一个虚框……

有利必有弊。你的不满这时候产生了:你既想使用Windows的True Button,可也嫌它的界面不够好看,譬如,你喜欢用蓝色的粗体表达你对CFan的无限情怀(正如图2那样)——人心不足,有办法吗?有的。

3. 美化界面之实现篇

Windows还是给程序员留下了很多后门,通过一些途径还是可以美化界面的。本章节我们系统学习一下Windows界面美化的实现。

3.1 美化界面的途径

如何以合法的手段来达到美化界面的效果?一般美化界面的方法包括:

1. 使用MFC类的既有函数,设定界面属性;

2. 利用Windows的消息机制,截获有用的Windows的消息。通过MFC的消息映射(Message Mapping)和反射(Message Reflecting)机制,在Windows准备或者正在绘制该元素时,偷偷修改它的状态和行为,譬如:让按钮的边框为红色;

3. 利用MFC类的虚函数机制,重载有用的虚函数。在MFC框架调用该函数的时候,重新定义它的状态和行为;

一般来说,应用程序可以通过以下两种途径来实现以上的方法:

1. 在父窗口里,截获自身的或者由子元素(包括控件和菜单等元素)传递的关于界面绘制的消息;

2. 子类化子元素,或者为子元素准备一个新的类(一般来说该类必须继承于MFC 封装的某个标准类,如:CButton)。在该子元素里,截获自身的或者从父窗口反射过来的关于界面绘制的消息。譬如:用户可以创建一个CXPButton类来实现具有XP风格的按钮,CXPButton继承于CButton。

对于应用程序,使用CXPButton类的途径相对于对话框窗口和普通窗口分成两种:

①对话框窗口中,直接将原先绑定按钮的CButton类替换成CXPButton类,或者在绑定变量时直接指定Control类型为CXPButton,如图3所示:

图3 为按钮指定CXPButton类型

②在普通窗口中,直接创建一个CXPButton类对象,然后在OnCreate()中调用CXPButton的Create方法;

以下的章节将综合地使用以上的方法,请读者朋友留心观察。

3.2 使用MFC类的既有函数

在界面美化的专题中,MFC也并非一无是处。MFC类对于界面美化也做了部分的努力,以下是一些可以使用的,参数说明略去。

CWinApp::SetDialogBkColor

void SetDialogBkColor( COLORREF clrCtlBk = RGB(192, 192, 192), COLORREF clrCtlText = RGB(0, 0, 0) );

指定对话框的背景色和文本颜色。

CListCtrl::SetBkColor

CReBarCtrl::SetBkColor

CStatusBarCtrl::SetBkColor

CTreeCtrl::SetBkColor

COLORREF SetBkColor( COLORREF clr );

设定背景色。

CListCtrl::SetTextColor

CReBarCtrl::SetTextColor

CTreeCtrl::SetTextColor

COLORREF SetTextColor( COLORREF clr );

设定文本颜色。

CListCtrl::SetBkImage

BOOL SetBkImage( LVBKIMAGE* plvbkImage );

BOOL SetBkImage( HBITMAP hbm, BOOL fTile = TRUE, int xOffsetPercent = 0, int yOffsetPercent = 0);

BOOL SetBkImage( LPTSTR pszUrl, BOOL fTile = TRUE, int xOffsetPercent = 0, int yOffsetPercent = 0 );

设定列表控件的背景图片。

CComboBoxEx::SetExtendedStyle

CListCtrl::SetExtendedStyle

CTabCtrl::SetExtendedStyle

CToolBarCtrl::SetExtendedStyle

DWORD SetExtendedStyle( DWORD dwExMask, DWORD dwExStyles );

设置控件的扩展属性,例如:设置列表控件属性带有表格线。

图4是个简单应用MFC类的既有函数来改善Windows界面的例子:

图4 使用MFC类的既有函数美化界面

相关实现代码如下:

BOOL CUi2App::InitInstance()

{

//…

//设置对话框背景色和字体颜色

SetDialogBkColor(RGB(128, 192, 255), RGB(0, 0, 255));

//…

}

BOOL CUi2Dlg::OnInitDialog()

{

//…

//设置列表控件属性带有表格线

DWORD NewStyle = m_List.GetExtendedStyle();

NewStyle |= LVS_EX_GRIDLINES;

m_List.SetExtendedStyle(NewStyle);

//设置列表控件字体颜色为红色

m_List.SetTextColor(RGB(255, 0, 0));

//填充数据

m_List.InsertColumn(0, "QQ", LVCFMT_LEFT, 100);

m_List.InsertColumn(1, "昵称", LVCFMT_LEFT, 100);

m_List.InsertItem(0, "5854165");

m_List.SetItemText(0, 1, "白乔");

m_List.InsertItem(1, "6823864");

m_List.SetItemText(1, 1, "Satan");

//…

}

嗯,这样的界面还算不错吧?

3.3 使用Windows的消息机制

使用MFC类的既有函数来美化界面,其功能是有限的。既然Windows是通过消息机制进行通讯的,那么我们就可以通过截获一些有用的消息来美化我们的界面,以下是一些有用的Windows消息:

WM_PAINT

WM_ERASEBKGND

WM_CTLCOLOR*

WM_DRAWITEM*

WM_MEASUREITEM*

NM_CUSTOMDRAW*

注意,标注*的消息是子元素发送给父窗口的通知消息,其它的为窗口或者子元素自身的消息。

3.3.1 WM_PAINT

WM_PAINT消息相信大家都很熟悉,一个窗口要重绘了,就会有一个WM_PAINT 消息发送给窗口。

可以响应窗口的WM_PAINT,以更改它们的模样。WM_PAINT的映射函数原型如下:

afx_msg void OnPaint();

控件也是窗口,所以控件也有WM_PAINT消息,通过消息映射我们完全可以定义控件的界面。如图5所示:

图5 利用WM_ PAINT消息美化界面

实现代码也很简单:

void CLazyStatic::OnPaint()

{

CPaintDC dc(this); // device context for painting

//什么都不输出,仅仅画一个矩形框

CRect rc;

GetClientRect(&rc);

dc.Rectangle(rc);

}

哈哈,简单吧?不过WM_PAINT确实绝了点,它要求应用程序完成元素界面的所有绘制过程,想象一下如何画出一个完整的列表控件?太烦了吧。一般来说,很少有人喜欢使用WM_PAINT,还有其它更细致的消息。

3.3.2 WM_ERASEBKGND

Windows在向窗口发送WM_PAINT消息之前,总会发送一个WM_ERASEBKGND 消息通知该窗口擦除背景,默认情况下,Windows将以窗口的背景色清除该窗口。

可以响应窗口(包括子元素)的WM_ERASEBKGND,以更改它们的背景。

WM_ERASEBKGND的映射函数原型如下:

afx_msg BOOL OnEraseBkgnd( CDC* pDC );

返回值:

指定背景是否已清除,如果为FALSE,系统将自动清除

参数:

pDC指定了绘制操作所使用的设备环境。

图6是个简单的例子,通过OnEraseBkgnd为对话框加载了一副位图背景:

图6 利用WM_ ERASEBKGND消息美化界面

实现代码也很简单:

BOOL CUi4Dlg::OnInitDialog()

{

//…

//加载位图

//CBitmap m_Back;

m_Back.LoadBitmap(IDB_BACK);

//…

}

BOOL CUi4Dlg::OnEraseBkgnd(CDC* pDC)

{

CDC dc;

dc.CreateCompatibleDC(pDC);

dc.SelectObject(&m_Back);

//获取BITMAP对象

BITMAP hb;

m_Back.GetBitmap(&hb);

//获取窗口大小

CRect rt;

GetClientRect(&rt);

//显示位图

pDC->StretchBlt(0, 0, rt.Width(), rt.Height(),

&dc, 0, 0, hb.bmWidth, hb.bmHeight, SRCCOPY);

return TRUE;

}

HBRUSH CUi4Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {

//设置透明背景模式

pDC->SetBkMode(TRANSPARENT);

//设置背景刷子为空

return (HBRUSH)::GetStockObject(HOLLOW_BRUSH);

}

同时别忘了响应OnCtlColor,否则窗口里面的控件就不透明了。OnCtlColor的内容,详见3.3.3章节。

3.3.3 WM_CTLCOLOR

在控件显示之前,每一个控件都会向父对话框发送一个WM_CTLCOLOR消息要求获取绘制所需要的颜色。WM_CTLCOLOR消息缺省处理函数CWnd::OnCtlColor 返回一个HBRUSH类型的句柄,这样,就可以设置前景和背景文本颜色,并为控件或者对话框的非文本区域选定一个刷子。

WM_CTLCOLOR的映射函数原型如下:

afx_msg HBRUSH OnCtlColor( CDC* pDC, CWnd* pWnd, UINT nCtlColor ); 返回值:

用以指定背景的刷子

参数:

pDC指定了绘制操作所使用的设备环境。

pWnd 控件指针

nCtlColor 指定控件类型,其取值如表2所示:

类型值含义

CTLCOLOR_BTN 按钮控件

CTLCOLOR_DLG 对话框

CTLCOLOR_EDIT 编辑控件

CTLCOLOR_LISTBOX 列表框

CTLCOLOR_MSGBOX 消息框

CTLCOLOR_SCROLLBAR 滚动条

CTLCOLOR_STATIC 静态控件

表2 nCtlColor的类型值与含义

作为一个简单的例子,观察以下的代码:

BOOL CUi5Dlg::OnInitDialog()

{

//…

//创建字体

//CFont CUi1View::m_Font1, CUi1View::m_Font2

m_Font1.CreatePointFont(120, "Impact");

m_Font3.CreatePointFont(120, "Arial");

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

HBRUSH CUi5Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)

{

HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

if(nCtlColor == CTLCOLOR_STATIC)

{

//区分静态控件

switch(pWnd->GetDlgCtrlID())

{

case IDC_STATIC1:

{

pDC->SelectObject(&m_Font1);

pDC->SetTextColor(RGB(0, 0, 255));

break;

}

case IDC_STATIC2:

{

pDC->SelectObject(&m_Font2);

pDC->SetTextColor(RGB(255, 0, 0));

break;

}

}

}

return hbr;

}

生成的界面如下:

图7 利用WM_CTLCOLOR消息美化界面

3.3.4 WM_DRAWITEM

OnCtlColor只能修改元素的颜色,但不能修改元素的界面框架,

WM_DRAWITEM则可以。

当一个具有Owner draw风格的元素(包括按钮、组合框、列表框和菜单等)需要显示外观时,该元素会发送一条WM_DRAWITEM消息至它的隶属窗口(Owner)。WM_DRAWITEM的映射函数原型如下:

afx_msg void OnDrawItem( int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct );

参数:

nIDCtl 该控件的ID,如果该元素为菜单,则nIDCtl为0

lpDrawItemStruct 指向DRAWITEMSTRUCT结构对象的指针,DRAWITEMSTRUCT的结构定义如下:

typedef struct tagDRAWITEMSTRUCT

{

UINT CtlType;

UINT CtlID;

UINT itemID;

UINT itemAction;

UINT itemState;

HWND hwndItem;

HDC hDC;

RECT rcItem;

DWORD itemData;

}DRAWITEMSTRUCT;

CtlType指定了控件的类型,其取值如表3所示:

类型值含义

ODT_BUTTON 按钮控件

ODT_COMBOBOX 组合框控件

ODT_LISTBOX 列表框控件

ODT_LISTVIEW 列表视图

ODT_MENU 菜单项

ODT_STATIC 静态文本控件

ODT_TAB Tab控件

表3 CtlType的类型值与含义

CtlID 指定自绘控件的ID值,该成员不适用于菜单项

itemID表示菜单项ID,也可以表示列表框或者组合框中某项的索引值。对于一个空的列表框或组合框,该成员的值为?C1。这时应用程序只绘制焦点矩形(该矩形的坐标由rcItem 成员给出)虽然此时控件中没有需要显示的项,但是绘制焦点矩形还是很有必要的,因为这样做能够提示用户该控件是否具有输入焦点。当然也可以设置itemAction 成员为合适值,使得无需绘制焦点。

itemAction 指定绘制行为,其取值为表4中所示值的一个或者多个的联合:类型值含义

ODA_DRAWENTIRE 当整个控件都需要被绘制时,设置该值。

ODA_FOCUS 如果控件需要在获得或失去焦点时被绘制,则设置该值。此时应该检查itemState成员,以确定控件是否具有输入焦点。

ODA_SELECT 如果控件需要在选中状态改变时被绘制,则设置该值。此时应该检查itemState 成员,以确定控件是否处于选中状态。

表4 itemAction的类型值与含义

itemState 指定了当前绘制项的状态。例如,如果菜单项应该被灰色显示,则可以指定ODS_GRAYED状态标志。其取值为表5中所示值的一个或者多个的联合:类型值含义

ODS_CHECKED 标记状态,仅适用于菜单项。

ODS_DEFAULT 默认状态。

ODS_DISABLED 禁止状态。

ODS_FOCUS 焦点状态。

ODS_GRAYED 灰化状态,仅适用于菜单项。

ODS_SELECTED 选中状态。

ODS_HOTLIGHT 仅适用于Windows 98/Me/Windows 2000/XP,热点状态:如果鼠标指针位于控件之上,则设置该值,这时控件会显示高亮颜色。

ODS_INACTIVE 仅适用于Windows 98/Me/Windows 2000/XP,非激活状态。ODS_NOACCEL 仅适用于Windows 2000/XP,控件是否有快速键。

ODS_COMBOBOXEDIT 在自绘组合框控件中只绘制选择区域。

ODS_NOFOCUSRECT 仅适用于Windows 2000/XP,不绘制捕获焦点的效果。

表5 itemState的类型值与含义

hwndItem 指定了组合框、列表框和按钮等自绘控件的窗口句柄;如果自绘的对象为菜单项,则表示包含该菜单项的菜单句柄。

hDC 指定了绘制操作所使用的设备环境。

rcItem 指定了将被绘制的矩形区域。这个矩形区域就是上面hDC的作用范围。系统会自动裁剪组合框、列表框或按钮等控件的自绘制区域以外的部分。也就是说rcItem中的坐标点(0,0)指的就是控件的左上角。但是系统不裁剪菜单项,所以在绘制菜单项的时候,必须先通过一定的换算得到该菜单项的位置,以保证绘制操作在我们希望的区域中进行。

itemData

对于菜单项,该成员的取值为由CMenu::AppendMenu、CMenu::InsertMenu、CMenu::ModifyMenu等函数传递给菜单的值。

对于列表框或这组合框,该成员的取值为由ComboBox::AddString、CComboBox::InsertString、CListBox::AddString或者

CListBox::InsertString等函数传递给控件的值。

如果ctlType 的取值是ODT_BUTTON或者ODT_STATIC,itemData的取值为0。图5是个相应的例子,它修改了按钮的界面:

图8 利用WM_DRAWITEM消息美化界面

实现代码如下:

BOOL CUi6Dlg::OnInitDialog()

{

//…

//创建字体

//CFont CUi1View::m_Font

m_Font.CreatePointFont(120, "Impact");

//…

}

void CUi6Dlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) {

if(nIDCtl == IDC_HELLO_CFAN)

{

//绘制按钮框架

UINT uStyle = DFCS_BUTTONPUSH;

//是否按下去了?

if (lpDrawItemStruct->itemState & ODS_SELECTED)

uStyle |= DFCS_PUSHED;

CDC dc;

dc.Attach(lpDrawItemStruct->hDC);

dc.DrawFrameControl(&lpDrawItemStruct->rcItem, DFC_BUTTON, uStyle);

//输出文字

dc.SelectObject(&m_Font);

dc.SetTextColor(RGB(0, 0, 255));

dc.SetBkMode(TRANSPARENT);

CString sText;

m_HelloCFan.GetWindowText(sText);

dc.TextOut(lpDrawItemStruct->rcItem.left + 20, lpDrawItemStruct->rcItem.top + 20, sText);

//是否得到焦点

if(lpDrawItemStruct->itemState & ODS_FOCUS)

{

//画虚框

CRect rtFocus = lpDrawItemStruct->rcItem;

rtFocus.DeflateRect(3, 3);

dc.DrawFocusRect(&rtFocus);

}

return;

}

CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct);

}

别忘了标记Owner draw属性:

图9 指定按钮的Owner draw属性

值得一提的是,CWnd内部截获了WM_DRAWITEM、WM_MEASUREITEM等消息,并映射成子元素的相应虚函数的调用,如CButton::DrawItem()。所以,以上例子也可以通过派生出一个CButton的派生类,并重载该类的DrawItem()函数来实现。使用虚函数机制实现界面美化参见3.4章节。

3.3.5 WM_MEASUREITEM

仅仅WM_DRAWITEM还是不够的,对于一些特殊的控件,如ListBox,系统在发送WM_DRAWITEM消息前,还发送WM_MEASUREITEM消息,需要你设置ListBox 中每个项目的高度。

WM_DRAWITEM的映射函数原型如下:

afx_msg void OnMeasureItem( int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct );

nIDCtl 该控件的ID,如果该元素为菜单,则nIDCtl为0 lpMeasureItemStruct指向MEASUREITEMSTRUCT结构对象的指针,MEASUREITEMSTRUCT的结构定义如下:

typedef struct tagMEASUREITEMSTRUCT

{

UINT CtlType;

UINT CtlID;

UINT itemID;

UINT itemWidth;

UINT itemHeight;

DWORD itemData

} MEASUREITEMSTRUCT;

CtlType指定了控件的类型,其取值如表6所示:

类型值含义

ODT_COMBOBOX 组合框控件

ODT_LISTBOX 列表框控件

ODT_MENU 菜单项

表6 CtlType的类型值与含义

CtlID 指定自绘控件的ID值,该成员不适用于菜单项

itemID表示菜单项ID,也可以表示可变高度的列表框或组合框中某项的索引值。该成员不适用于固定高度的列表框或组合框。

itemWidth 指定菜单项的宽度

itemHeight指定菜单项或者列表框中某项的的高度,最大值为255

itemData

对于菜单项,该成员的取值为由CMenu::AppendMenu、CMenu::InsertMenu、CMenu::ModifyMenu等函数传递给菜单的值。

对于列表框或这组合框,该成员的取值为由ComboBox::AddString、CComboBox::InsertString、CListBox::AddString或者

CListBox::InsertString等函数传递给控件的值。

图示出了OnMeasureItem的效果:

图10 利用WM_MEASUREITEM消息美化界面

相应的OnMeasureItem()实现如下:

void CUi7Dlg::OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct)

{

if(nIDCtl == IDC_COLOR_PICKER)

{

labview界面美化问题(自动保存的)

labview界面美化问题(自动保存的) 部门: xxx 时间: xxx 整理范文,仅供参考,可下载自行编辑

LABVIEW前面板加工美化问题 2018-09-14 14:17xuanxi2005 | 分类:其他编程语言| 浏览5702次 我设计了一个LABVIEW程序,生成EXE可执行文件后,觉得前面板很难看,主要是因为操作页面也就是前面板和网页一样,虽然菜单栏什么的都可以去掉,但界面上有很多没有控件的版面,我的所有控件都集中在一个矩形框内,能否打开仅仅显示有用的部分呢? b5E2RGbCAP 忘了图。。 分享到: 2018-09-15 15:30 提问者采纳 当然可以了!剔除矩形框以外的部分对吧!VI属性》类别“窗口大小”,设置为你矩形框的大小即可。运行后,只显示,你输入的大小。试一下哈,可以的。p1EanqFDPw

在labview中怎样实现界面切换 ------解决方案-------------------- 1.可以使用选项卡 2.可以使用sub面板 3.适当加一些控件隐藏,显示功能 ytclimbsky | 二级 不是很明白你的问题,可否贴下图。如果只是要在程序面板中使用不需要在前面板显示,那可以在前面板中右击不用的控件,高级-->隐藏显示控件,这样就不会在前面板出现了DXDiTa9E3d labview前面板怎么插入图片,还有去掉网格 2018-11-06 13:49u3434u | 分类:其他编程语言| 浏览2344次

分享到: 2018-11-06 14:13网友采纳 仅仅是美化的话,在前面板中粘贴进来就行了; 网格嘛,你说的是图中的这个选项所指代的网格不?这个网格在运行的时候是不显示的呀,你把圈出来的勾选去掉,编辑时也不显示了RTCrpUDGiT labview怎么隐藏前面板的菜单栏和工具栏? 2018-08-26 16:53wlfry2009 | 分类:Windows | 浏览748次分享到: 2018-08-27 21:08 提问者采纳

MFC用户界面设计

MFC用户界面设计 (2007-07-03 14:08:02) 转载 MFC用户界面设计一 (创建一个MFC工程的框架) 打开VC++6.0选择New,出现如下界面: 然后选中MFC AppWizard[exe] ,即我们将创建一个MFC的可执行文件,然后在Project Name下面的框中写入这个工程的名字,注意: 工程的名字不要是中文的,且不要太过于长(到底多长是长我也不知道),最好使用英语的单词来定义你所要实现的工程项目的名字。 Location你可以自定义你的创建的这个工程的存放地方。个人建议不要存放在C盘。以防病毒感染之后C盘打不开,你的工作就全没有了。并且最好建一个专用的C++工程的存放文件夹。不推荐使用中文文件夹和存储路路径较长的文件

夹。如:D:\xx\xxx\xxx\xxx\xxx\xxx\xxxx\xxxxxxx\xxx(这样至少自己找的时候都要烦死了)。 Platform只有选择Win32了。在完成了这些之后就可以点击OK了。已开始创建的6小步中的第一步。如下图所示。 可以看见。上面的标题栏显示的是 MFC AppWizard Step 1,这一步是规划一个MFC程序框架的最重要的一部,我们可以选择 1:Single Document(单文档)即创建的程序能在某个时间内装入和编辑一个文档,使用了所有四个基类(C WinApp CFrameWnd CDocument Cview,至于四个基类都是什么作用参考第二章中所述)。典型的对话框应用程序包括配置硬件设备的应用程序、屏幕保护程序和游戏程序等。 2:Multiple Documents (多文档)一次可以装载和编辑多个文档,并且不但使用了所有四个基类,还使用了CFrameWnd的两个派生类,即CMDIFrameWnd和CMDIChildWnd。

mfc界面图书管理系统

目录 1.设计目的 (1) 2.问题描述 (2) 3.需求分析 (2) 3.1 数据需求 (2) 3.2 基本功能需求 (2) 3.3 非功能性需求 (3) 4.概要设计 (3) 5.详细设计 (5) 5.4.1增加书籍 (20) 5.4.2 删除书籍 (21) 5.4.3 查询书籍 (21) 6.调试分析 (22) 7.使用说明 (23) 8.设计总结 (26) 9.参考文献 (27)

《数据结构》课程设计 图书管理 1.设计目的 “数据结构”是计算机科学与技术专业一门十分重要的专业技术基础课,计算机科学各领域及有关的应用软件都要使用到各种数据结构。对于从事计算机科学及其应用的科技工作者来说,数据结构与算法是必须透彻地掌握的重要基础。 学习数据结构与算法的最终目的是解决实际的应用问题,特别是非数值计算类型的应用问题。课程设计是加强学生实践能力的一个强有力手段。课程设计所安排的题目,在难度和深度方面都大于平时的上机训练,要求同学在完成设计和编写中小型软件的过程中,深化对数据结构与算法课程中基本概念、理论和方法的理解;训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念;使同学的程序设计与调试水平有一个明显的提高。 课程设计要求学生在完成程序设计的同时能够撰写比较规范的设计报告。严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用。

2.问题描述 采用Visual C++编程语言开发工具和MFC,设计并实现图书管理系统。该系统实现了图书管理中的添加,查询,删除,全部查询,退出等功能,以及汇总图书清单,包括对书籍各项信息的汇总。 3.需求分析 3.1 数据需求 图书信息:书名,所属类型,作者,定价,出版日期以及ISBN。 3.2 基本功能需求 1.汇总图书清单,包括对书籍各项信息的汇总;(各项信息包括书名,所属类型,作者,定价,出版日期以及ISBN。) 2.对书籍信息的增、删、查、全部查询等功能。其中删除功能主要依靠第一无二的ISBN,查询功能可以依靠任何一种图书信息(即书名,所属类型,作者,定价,出版日期以及ISBN任意一种)。

网站界面如何美化的几种方法

武汉网页设计培训:网站界面如何美化的几种方法 网站的界面是网站给来访者留下第一印象的直接窗口。网站界面的漂亮与否直接影响到访客对网站的兴趣以及停留时间!所以网站的界面美化工作是应该引起足够重视的。那到底该如何美化网站界面使他容易被访客所接受呢?今天我们就跟大家一起来探讨一下网站界面的美化的几个原则以及具体的方法。 一、网页设计界面优化原则 武汉网页设计界面优化原则一、行业特征 网站就像你的穿着打扮,要有自己的风格自己的个性。但是这种个性要与自己的身份职务相搭配。也就是说你的网站要根据你的行业特点进行美化,比如说科技类网站善用蓝色,娱乐类网站善用橙色,政府门户类网站大多用红色调。 总结下就是你的网站界面要符合行业特征! 武汉网页设计界面优化原则二、访客喜好 如果你的访客是年轻人充满活力个性十足的,那你的网站配色以及LOGO就要符合这个定位符合你受众的喜好。你的网站色调也要表现的充满活力动感十足!举个例子说太平洋女性网主色调就是紫色,因为紫色代表的就是时尚浪漫。试问哪些女性朋友们不渴望一份浪漫与时尚呢? 总结下就是作访客喜欢的! 武汉网页设计界面优化原则三、统一性原则 你的网站一定色调要统一,最好属于同一个色系。至多不要超过三个颜色!如果颜色过多会导致人们审美疲劳!慢慢的离开你的网站!从而失去一定访客,导致PV下降! 总结下就是统一色调效果佳! 武汉网页设计界面优化原则四、细致入微 俗话说细节决定成败,一个网站的界面就是一个个小像素块组成的,做网站的美化要尽量细致到每一个小细节,不要觉得一个点一个图片的小角不重要。其实不然,一个人穿的邋里邋遢就可以看出这人性格如何了。一个人非常漂亮就是嘴角戴着一粒米,这严重影响自己的形象。网站也是一样的你不注意界面的小细节访客就有理由认为你这网站内容不怎么样!

MFC启动画面设计

MFC启动画面设计 玩过微软的Office的人都知道,每当打开Office软件,在它初始化的那段时间里,都会出现一个画面,这个画面就是启动画面。 所谓启动画面也就是Splash Screen,你也可以说它是“炫耀画面”。它常常用以显示公司的标志和版权等信息。 目标 用一张位图来作为启动画面,在进入程序时显示。 策略 在应用程序类的I n i t I n s t a n c e ()函数中,在最早时刻创建启动窗口。启动窗口用一个位图类显示在普通窗口中。 步骤 1.创建一个启动窗口类 1)用ClassWizard创建一个从一般CWnd类(当然也可以是CFrameWnd类)派 生的普通窗口类。如图所示:

2)添加Create()成员函数到该类,在该函数中装入启动窗口中显示的位图,以及 在屏幕中央创建该窗口。 void CWzdSplash::Create(UINT nBitmapID) { m_bitmap.LoadBitmap(nBitmapID); BITMAP bitmap; m_bitmap.GetBitmap(&bitmap); int x=(::GetSystemMetrics(SM_CXSCREEN)-bitmap.bmWidth)/2; int y=(::GetSystemMetrics(SM_CYSCREEN)-bitmap.bmHeight)/2; CRect rect(x,y,x+bitmap.bmWidth,y+bitmap.bmHeight); CreateEx(0,AfxRegisterWndClass(0),"",WS_POPUP|WS_VISIBLE|WS_BORDE R,rect,NULL,0); } 3)用ClassWizard添加一个WM_PAINT消息处理函数到该窗口类中,在这里用 BitBlt()把位图绘制到屏幕上。

办公室环境美化实施方案

办公室环境美化方案

————————————————————————————————作者:————————————————————————————————日期: 2

办公室环境美化方案 一办公室环境美化具体实施方案 (一) 颜色 我认为我们办公室在颜色方面应该改善以下几点: 1.地板:我认为我们这间办公室的地板应该改为棕色,不容易被污染 2.墙壁:我们这间办公室在我们领导方向的墙壁不动,仍为白色;而在我们员工这三面的 墙壁应该设计为浅黄色,这样颜色有区分,既有主次之分,又可以给我们工作人员以温馨的感觉。 3.办公室桌面为赤色,这样办公桌布显得脏和乱。 (二)摆放更改

1.为了使我们的办公环境更加美化,我们应该改变摆放位 置,在我们每个办公桌上都加上蓝色隔板,这样就像每个人 一间办公桌一样,也免得在自己工作时不能集中精力。 2.我认为在我们墙壁上的墙角上应该画上常春藤,这样使我们自己在 看到墙壁的常春藤时心情更好一点,没有那么枯燥、无味。 3.在我们每个办公桌上都摆放一盆仙人球,这样做的话可以有效隔离电脑电磁波辐射,还可以吸附空气中的灰尘,抑制空气中的细菌,净化室内空气。 4.在领导的办公桌上放上一盆君子兰, 同样和仙人球一样的效果。 5.在我们的每个窗台上放上富贵竹, 这样我们的这间办公室就不会显得单调无味了, 而且空气还格外的好,视觉感觉也很不错。 6.最后我们在办公室与领导对面的墙壁上挂上植物装饰画,这样装饰画的主题和我们 办公室的美化环境的主题相一致,恰到好处。 (三)桌椅 为了减少噪音的来源:我们可以在打字机与计算机底下垫上毛垫,并在其余的设备底下置橡

网站界面分析和优化设计 (2)

网站界面分析和优化设计 一、网站界面优化的重要性。 web技术的发展,使得互联网用户从单纯浏览信息时代迈入了更加注重交互、更加人性化的时代。网民使用互联网产品已经不仅仅只关注工作效率,而是越来越关心使用过程中的体验。网站界面的本质是让用户做主,操作简便性、强调交互性。 在互联网发展的过程中,最初希望通过建立网站来抢占市场、树立形象的企业逐步认识到网站提供优质的用户体验才是可持续发展的竞争优势,而网站服务界面的设计效果是用户体验好坏的直接影响因素。某电商网站Allurent曾经做过一个调查,当用户对某一网站的验较差时,80%的用户表示不会再次访问该网站,60%的用户表示影响到了自己对该商家的整体印象,而40%的用户表示甚至可能不再去该商家的实体店铺。用户不良体验无疑是在与网站界面的交互中形成的。目前,很多商业网站已经充分认识到周到、贴心的网站界面设计对于企业利益获取的重要性。很多跨国公司如雅虎、惠普、IBM微软、苹果、等都先后成立了用户体验研究机构,尝试将用户体验的研究成果应用到界面设计中来,国内互联网企业如百度、腾讯等也都建立了相应的研究团队。 二、网站界面优化的核心要素 网站服务界面是指网站为用户办事服务和提供信息的网页内容展现方式。关注服务界面,就是要做好网页界面的优化设计工作。基于用户体验进行网站服务界面优化设计,需要将用户体验从不同层次、

维度进行分解,提取与网页界面相关的要素,然后才能对相应要素实施具体的优化设计。 Adaptive Path公司的创始人James Garrett对用户体验的要素进行过较为系统地研究,将用户体验划分为战略、范围、结构、框架、表现10个核心要素,如图所示。这5个层面自下而上逐步的从抽象转为具体。 图1. 用户体验要素模型 这一用户体验要素模型中与界面优化直接相关的是框架层和表现层的四个关键要素,即界面设计、导航设计、信息设计和视觉设计。我们主要讨论界面设计这一主要要素。 三、网站界面的优化 3.1提高页面响应速度 随着科技的发展用户等待网页加载的耐性越来越低。2009年,微软搜索引擎必应(bing)进行过一项调查,研究页面载入速度和其他网站指标是否有明显相关性。根据报告显示,每2秒钟的延迟页面会使用户满意度降低3.8%的,减少4.3%的单位用户收入和减少4.3%

医疗器械软件界面美化设计

医疗器械软件界面美化设计 一、规格要求:所有图片必需是位真彩色、*格式,同一类图片尺寸大小必须一致 二、风格参考:要求对所有图标统一制订并使用一种风格(包括色调风格和文字字体风 格等),可以参考类医学风格 三、图片要求:所有按钮图片叠放在背景图片上都能自然融合一体 四、具体图片需求如下: 1.主背景: 1)要求:简单、淡色调、半透明(可考虑用我司,图片靠右下) 2)数量:个 ) 尺寸:≥× 2.工具栏背景: 1)要求:简单、淡色调、半透明,并且倍左右方向拉伸变形不明显(可考虑使 用我司名称,图片靠右,小字体) 2)数量:个 3)尺寸:≥× 3.子框架通用背景: 1)要求:简单、淡色调、半透明、与主背景色调兼容,并且倍方向拉伸变形不 明显 2)数量:个 3)尺寸:≥× 4.大按钮<类正方形>: 1)要求:图片文字的上下结构组成, 图片能直观的表现出按钮的功能 2)其它要求:每个按钮都必需有四种不同状态的图片,四种状态分别为:鼠标 悬停、鼠标按下、鼠标弹起、按钮失效 3)所需制作的按钮名称:信息、采集、分析、报告、查询、对比、左眼、右 眼 4)数量:×+个空按钮×种状态 (个) ) 尺寸:≈× 5.按钮<长方形>: 1)要求:图片文字的左右结构组成(如文字一行无法容纳,可以使用两行,最 多两行,并且要上下对齐), 图片能直观的表现出按钮的功能 2)其它要求:每个按钮都必需有四种不同状态的图片,四种状态分别为:鼠标 悬停、鼠标按下、鼠标弹起、按钮失效 3)所需制作的按钮名称:自动播放、暂停、下一帧、上一帧、拉直、对比、自 动测量、地形图、删除已存图片、显示、保存、报告、显示已存图片、上一

界面设计方案

界面设计方案

目录 一、概述 (3) 二、用户界面设计原则 (3) 三、关于软件界面设计 (5) 1.用户导向(User oriented)原则 (5) 2.KISS(Keep It Simple And Stupid)原则 (6) 3.布局控制 (6) 4.视觉平衡 (7) 5.色彩的搭配和文字的可阅读性 (8) 6.和谐与一致性 (9) 7.个性化 (9) 四、关于网页界面设计 (10) 五、交互设计 (11) 六、图标 (11) 七、界面设计需求分析 (11) 八、界面参考 (12) 福隆界面设计 (12) 其他界面欣赏 (15) 1.WebQQ (15) 2. 一个虚拟展会软件的中国官网设计 (16) 3.香港置地集团 (20) 4、图标 (23) 5.景观园林 (28) 6.一组精美的外国网页 (30) 7、匈牙利M1LLAH网页界面欣赏 (38) 8、Web design 页面设计收集 (42) 9. 色彩与质感并重的国外网页设计欣赏 (47) 10、漂亮简洁的布局 (56)

一、概述 界面设计是人与机器之间传递和交换信息的媒介,包括硬件界面和软件界面,是计算机科学与心理学、设计艺术学、认知科学和人机工程学的交叉研究领域。近年来,随着信息技术与计算机技术的迅速发展,网络技术的突飞猛进,人机界面设计和开发已成为国际计算机界和设计界最为活跃的研究方向。 UI即 User Interface(用户界面)的简称。UI设计则是指对软件的人机交互、操作逻辑、界面美观的整体设计。好的UI设计不仅是让软件变得有个性有品味,还要让软件的操作变得舒适、简单、自由,充分体现软件的定位和特点。 二、用户界面设计原则 1.简易性 界面的简洁是要让用户便于使用、便于了解、并能减少用户发生错误选择的可能性。 2.用户语言 界面中要使用能反应用户本身的语言,而不是游戏设计者的语言。 3.记忆负担最小化 人脑不是电脑,在设计界面时必须要考虑人类大脑处理信息的限度。人类的短期记忆极不稳定、有限,24小时内存在25%的遗忘率。所以对用户来说,浏览信息要比记忆更容易。

教室美化方案

教室美化方案 教室美化不仅能提高班级中同学之间的凝聚力,体现团结协作的精神,树立良好的班风,展示班级的个性,同时经过大家齐心协力美化的教室也能为同学们提供更为舒适的学习环境。 设计方案如下: 前黑板上的字: 班训:求真尚美,砺志笃行。后黑板上的字:天道酬勤,宁静致远。 字迹要工整、大方,多用楷书、隶书或正体美术字。 教室右角:图书角:小小图书角让学生在知识的海洋里遨游。图书设置:放一些与教材相关的读物供求知欲强的同学, 对课堂上所学的东西有更广更深的了解。以书架或书柜摆放,设专人管理或轮流管理,借阅制度要清楚,严格执行。 前黑板的左边:专门搞一个“心灵信箱”,因为进入初中,同学会有压力和负担,把自己的心里话说出来。信箱的钥匙由班长和老师管理,可由老师或班长或其他可信赖的人回答,之后由那人亲自交给写信的人。 黑板的右边:公告栏:(有能展示班级集体精神的图标,个性化班级名,班级口号或格言,班级公约、课程表、作息时间表等) 右边的墙:荣誉榜:将学生的优良表现及进步幅度颇大的表现,明白地公告于此榜。粘贴班级的每位同学心目中竞争对象,可激励学习的热情。

左边的墙:单元重点:以分科分节的形式将各科的重点明显地展现出来,让学生在学习时,能有要点可循,即使老师没有在班上授课时,学生仍然能依此布置的提示,自动学习。 作品展示:将一些学生的优良作品及进步幅度颇大的作品,陈列于此。一幅幅同学的优秀字画作品成为班内一道靓丽的风景。教室里张贴作品,不只是好学生作品,中下学生的作品也应张贴,人人都受尊重,都获得鼓励。 后黑板的左边:幸福一刻栏(班级幸福目标,个人幸福目标,幸福口号,照片) 后黑板的右边:班、团队角(团队活动角、行为规范角、学习园地、中队植物角等) 另外还可以再补充(1)心得感想区:供学生把当天所学的心得与感想写出来和同学分享。(2)忏悔区:供学生对自己今天的不对和错误的地方进行忏悔或对某些同学的道歉。(3)心情晴雨表:由于年龄特点,一年级的学生采用画笑脸和苦脸表示自己的心情,这样能及时发现学生的心理问题,与心理老师及时联系,利用“心理辅导”室,疏导学生的心理压力和心理问题。 建立中队植物角,在特定位置上摆放有学生亲自种下的各种花草和学生从家里带来绿色植物,有花,有草,专门安排了一名同学浇水和其他护理,绿色植物让教室充满生机。绿色植物让教室充满生机。 卫生角:摆放扫除用具,整齐有序,设专人管理或轮流管理。 苏霍姆林斯基说过:让校园的每一块墙壁都“说话”,让每处环境都

C++ MFC界面读写USB HID设备数据程序

第一步:列举所有的HID设备: m_ctllHIDdevices.ResetContent(); //这是MFC里面一个list控件,用来显示所有的HID设备的,如果你没有界面,可以不需要此行 UpdateData(FALSE); //更新界面 CString temp; int Count = 0; //Total number of devices found DWORD strSize=0,requiredSize=0; BOOL result1,result2; ULONG DeviceInterfaceDetailDataSize; //定义一些变量,以后会用到 SP_DEVINFO_DA TA DeviceInfoData; SP_DEVICE_INTERFACE_DATA DeviceInterfaceData; PSP_DEVICE_INTERFACE_DETAIL_DATA DeviceInterfaceDetailData; //PSP_DEVICE_INTERFACE_DETAIL_DATA test; //第一步:获取deviceID GUID deviceId; HidD_GetHidGuid(&deviceId); //第二步:获取设备信息 HDEVINFO handle; handle = SetupDiGetClassDevs(&deviceId, NULL, NULL, DIGCF_DEVICEINTERFACE | DIGCF_PRESENT); //Get only HID devices //第三步:对所有的设备进行枚举 //SetupDiEnumDeviceInterfaces(); result1=false; //定义一些变量 result2=false; CString temp11=""; do { DeviceInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DA TA); result1 = SetupDiEnumDeviceInterfaces( handle, NULL, // IN PSP_DEVINFO_DA TA DeviceInfoData, OPTIONAL &deviceId, Count, &DeviceInterfaceData ); //获得设备详细数据(初步) SetupDiGetDeviceInterfaceDetail(handle,

MFC之编写一个简单的登录对话框

编写一个简单的登录对话框 大家好,我们利用MFC编写一个简单的登录对话框。主窗体是单文档界面。程序运行的时候,先弹出一个简单的登录对话框,输入用户名和密码后主窗体显示出来。 1、开打VC++6.0。点击文件,新建,点击工程中的MFC AppWizard(exe),在右边选择工程保存的位置,并且为工程取好名字。 2、点击确定后,选择单个文档,你可以一直点击下一步,直到完成,或者在这里直接点击完成即可,完成后界面如下。 3、点击工具栏中的“!”号试着编译运行一次,看是否有问题。如果没有问题,我们继续。点击左边的ResourceView,在Dialog上面鼠标右键单击弹出一弹出框,单击Insert Dialog。

4、在右边新增的对话框中,适当改变窗口大小,加入静态文本框和文本编辑框。 输入用户名:。然后回车

同样在下面的第二个静态文本框的属性标题改为:输入密码:。然后回车。 6、在第一个文本编辑框上右键单击,点击属性,把ID框中的IDC_EDIT1改为容易理解的名字,如:IDC_EDIT_NAME,注意前面的IDC_EDIT最好不要去掉,这样容易见名而知义。同样,对第二个文本编辑框的属性中的IDC_EDIT2改为:IDC_EDIT_PWD 7、在对话框上的任何空白的地方右键单击,点击建立类向导。

然后弹出 选择建立Create a new class,点击OK。 这是为这个对话框创建一个新的类。在Name中,为该对话框类取个名字:CDlg_login。下面的Base class以及Dialog ID不要随便改动。然后点击OK。这样新的类CDlg_login就与本对话框建立起了联系。

网页设计方案大作业设计方案说明书

网页设计方案大作业设计方案说明书

《网页设计与制作工程实训》 大作业 选题名称:__伊人网的制作与体会________________设计人:___李薇_______________ 班级:__软件工程081班______________ 学号:__________________ 南昌大学软件学院 .元 设计说明书: 一.选题的分析 1.我是怎么想到做女性网站的? 作业刚布置下来的时候,我心里千回百转过很多念头,做什么网站能将我们学过的知识全部都用上呢?貌似除了作为模板教

案的购物网站就没有其它更好的选择了,可是继续做教案时学的淘宝或拍拍太无新意,不和我意。想来想去,还是没有中意的方案。可能是白天想这个想太多了,我晚上竟然梦到了我要做的,就是易物网站。不知老师是否记得一个曲别针换一个大房子的事,这就是我要做的易物网。终于得到了一个让我满意的方案,很开心。可睡醒了仔细一想觉得还是不行,可行性不大,于是我放弃了这个方案。当时已经是实训最后一天了,在结束实训的时候,我突然灵光一闪,决定做一个女性网站。 首先,一个女性网站针对了我的特点,是我想做的,也是我感兴趣做的。 其次,一个女性网站能够包括购物频道和bbs频道,能够充分将我学到的知识运用上去而又不免于流俗。 2.我要表示什么内容,如何展开设计? 打定主意便开始设计。这个女性网站是针对都市女性的网站,旨在在她们休闲的时候有个能让她们放松自我,同时得到很多对自己有用的信息。为了达到放松的目的,网站的主色调采用暖色系,主打粉色系,看上去温暖活泼时尚舒适,让人有一探究竟的欲望。而为了同时达到对女性自身有益的目的,我在选择网站内容版块上下了很大的功夫。女性最关注的是什么呢?是她们的感情与魅力。Bbs能让她们能有个诉说感情发泄心情的地方,同时能在那浏览别人的故事,互相鼓励和帮助,还能交流日常生活<美容服饰等)的小信息。购物频道能让满足女性爱买东西的天

Visual C++ 2008 SP1 MFC (OFFICE界面)使用入门

图形画板2008设计文档 目录 1. 图形后台框架 1.1. 基本图形类框架如下: 2. 界面框架 2.1. 快捷菜单 2.2. 主菜单 2.3. 工具栏 3. 如何创建OFFICE风格的MFC工程 4. 如何在工具栏上面添加按钮 4.1. 添加菜单主项

4.2. 为菜单项添加事件 4.3. 添加Ribbon字符 4.4. 将按钮添加到工具栏 4.4.1. 创建主类别(CMFCRibbonCategory) 4.4.2. 创建面板(CMFCRibbonPanel) 4.4.3. 添加按钮(CMFCRibbonButton)到面板? ? 1. 图形后台框架 1.1. 基本图形类框架如下: 2. 界面框架

主用应用了Visual Studio 2008 SP1添加的新增强包,可以方面的创建出像OFFCIE2007的Ribbon界面。 Ribbon工具栏是在MainFrm.CPP中的void CMainFrame::InitializeRibbon()生成的 整个工具栏CMFCRibbonBar分为 2.1. 快捷菜单 2.2. 主菜单 主菜单按钮CMFCRibbonApplicationButton

主菜单CMFCRibbonMainPanel 2.3. 工具栏 主要分成3层结构: 第一层:分类(容器)CMFCRibbonCategory,如图中红色部分所示。

第二层:面板(容器)CMFCRibbonPanel ,如图中红色部分所示。 第三层:元素CMFCRibbonBaseElem,如图中红色部分所示。 先有一个整体的概念~ 3. 如何创建OFFICE风格的MFC工程 以下是创建Visual C++ 2008 SP1创建Office风格的MFC的步骤: 首先,新建项目,选择Visual C++ 中的MFC应用程序,输入名称,点击确定

软件界面美化方案

软件美化方案 一,美化依据 管理类软件具有面向特定用户层,可视化,综合性,专业化,标准化等特点。 因此教育装备管理软件应具有良好的图形用户界面,界面直观,对用户透明,用户接触软件后对界面的操作一目了然,无需过多培训甚至阅读帮助即可进行操作,并且,在操作过程中用户对相关功能模块不会产生歧义。 此教育装备管理软件软件是集学校版,分校版等多个版本为一体的系列产品,各个版本相互联系,专业性强。 因此,各版本软件系列产品要保持一致的界面风格,如背景色、字体、菜单排列方式、图标、安装过程、按钮用语等应该大体一致。避免程序看起来非常混乱、没有条理、价值降低,甚至可能引起对应用程序可靠性的怀疑。并且保持软件界面简单明了。包括:左侧菜单的排列顺序序,背景的色彩,按钮名称,按钮摆放位置,按钮样式等。 二,美化准则 1,独特性 2,易用性 3,规范性 4,合理性 5,美观与协调性 6,保持界面的简明

7,界面元素的一致性 8,空白空间的合理使用 9,使用颜色与图像协调 三,软件界面所存在的问题(以学校版为例)1相同按钮在不同模块页面显示效果不一样 2个别背景样式显示不完整

3按钮位置摆放不规范,留有太大空缺 4同一页面按钮排列顺序在不同版本浏览器中显示效果不一致 (ie浏览器显示效果) (360浏览器显示效果) 5相同页面在不同版本浏览器中显示效果不一样

(360浏览器显示效果) (ie浏览器显示效果) 6软件填写信息框格大小不一致,影响美观

四,相关美化操作 1)修改按钮的样式,统一各个版本相同页面相同按钮尺寸,使同一按钮在不同页面显示效果一致 2)调整按钮位置,放置完按钮界面不应有很大的空缺位置,完成同一功能或任务的按钮应放在相同位置 3)修改背景样式,使其各个页面风格都能统一,正常显示 4)修改部分代码,使同一页面在不同版本浏览器都能正常显示 5)修改背景空白部分,使有内容部分显示在合理位置,方便用户查询,操作 6)调整部分表格大小,使其在页面显示合理,正常 7)以某个版本为标准调整其他版本相同页面,使其按钮,表格等显示效果一致 8)修改部分页面文字字体格式,使其显示自然美观 9)修改部分显示设置,使显示信息与录入信息同步显示,使其更规范10)修改部分页面导航条,长度要根据显示信息的长度或宽度能及时变换,以利于用户了解显示信息的位置和百分比,使其应用更便捷合理 11)修改文件资料模块部分,字的大小、颜色、字体应该相同,以保持界面风格一致 12)调整恢复部分按钮功能,使其功能正常 13)调整登陆页面登陆框,按钮的位置,使其整体显示紧凑,协调14)修改软件安装界面,安装界面应包括正确的公司简介以及软件介绍 15)修改安装程序,软件的安装尽量不要重新启动系统,软件的卸载过程尽量不要留下除用户创建的文件之外的其他的文件或注册表项目

软件界面美化方案

软件界面美化方案

软件美化方案 一,美化依据 管理类软件具有面向特定用户层,可视化,综合性,专业化,标准化等特点。 因此教育装备管理软件应具有良好的图形用户界面,界面直观,对用户透明,用户接触软件后对界面的操作一目了然,无需过多培训甚至阅读帮助即可进行操作,并且,在操作过程中用户对相关功能模块不会产生歧义。 此教育装备管理软件软件是集学校版,分校版等多个版本为一体的系列产品,各个版本相互联系,专业性强。 因此,各版本软件系列产品要保持一致的界面风格,如背景色、字体、菜单排列方式、图标、安装过程、按钮用语等应该大体一致。避免程序看起来非常混乱、没有条理、价值降低,甚至可能引起对应用程序可靠性的怀疑。并且保持软件界面简单明了。包括:左侧菜单的排列顺序序,背景的色彩,按钮名称,按钮摆放位置,按钮样式等。 二,美化准则 1,独特性 2,易用性 3,规范性 4,合理性 5,美观与协调性 6,保持界面的简明

3按钮位置摆放不规范,留有太大空缺 4同一页面按钮排列顺序在不同版本浏览器中显示效果不一致 (ie浏览器显示效果) (360浏览器显示效果) 5相同页面在不同版本浏览器中显示效果不一样

(360浏览器显示效果) (ie浏览器显示效果) 6软件填写信息框格大小不一致,影响美观

四,相关美化操作 1)修改按钮的样式,统一各个版本相同页面相同按钮尺寸,使同一按钮在不同页面显示效果一致 2)调整按钮位置,放置完按钮界面不应有很大的空缺位置,完成同一功能或任务的按钮应放在相同位置 3)修改背景样式,使其各个页面风格都能统一,正常显示 4)修改部分代码,使同一页面在不同版本浏览器都能正常显示 5)修改背景空白部分,使有内容部分显示在合理位置,方便用户查询,操作 6)调整部分表格大小,使其在页面显示合理,正常 7)以某个版本为标准调整其他版本相同页面,使其按钮,表格等显示效果一致 8)修改部分页面文字字体格式,使其显示自然美观 9)修改部分显示设置,使显示信息与录入信息同步显示,使其更规范10)修改部分页面导航条,长度要根据显示信息的长度或宽度能及时变换,以利于用户了解显示信息的位置和百分比,使其应用更便捷合理11)修改文件资料模块部分,字的大小、颜色、字体应该相同,以保持界面风格一致 12)调整恢复部分按钮功能,使其功能正常 13)调整登陆页面登陆框,按钮的位置,使其整体显示紧凑,协调14)修改软件安装界面,安装界面应包括正确的公司简介以及软件介绍15)修改安装程序,软件的安装尽量不要重新启动系统,软件的卸载过程尽量不要留下除用户创建的文件之外的其他的文件或注册表项目16)修改窗体设置,如果窗体支持最小化和最大化或放大时,窗体上的控件,图片也要随着窗体而缩放;不能只放大窗体而忽略控件,图片的整体缩放

MFC如何创建多按钮功能的界面

MFC如何创建多按钮功能的界面 最终的效果如下:点击按钮“方块”,弹出方块设置对话框,输入值然后点OK时,绘画方块图像;点击按钮“三角”,同样弹出三角设置对话框然后点OK时,绘画三角图像。

下面介绍制作步骤: 一、创建一图形显示界面 二、创建两图形显示界面 三、创建三图形显示界面 四、创建四图形显示界面 1.打开visual C++,点“文件”,“新建”,“MFC AppWizard(exe)”,“工程名称”,“位置”, “确定”“基本对话框”“完成” 2.得到如图: 按照我的习惯,“确定”“取消”和“TODO”全部删掉,如图: 3. 创建三个按钮和一个静态文本,分别命名“方块”“三角”“OK”。静态文本清空,其属性里“扩展样式”“静态边缘”打勾。他们的ID分别为:IDC_fang,IDC_san,IDC_OK,IDC_DRAW。如图:

4. 双击“方块”按钮,点“确定”,然后输入代码: void CTest425Dlg::Onfang() { // TODO: Add your control notification handler code here extern int flag; flag=1; } 其中变量flag的作用是用来标志,用来判断接下来点“OK”的时候,执行哪种操作。 因为是全局变量,所以加上了extern 同样,双击“三角”按钮,输入代码: void CTest425Dlg::Onsan() { // TODO: Add your control notification handler code here extern int flag; flag=2; } 当然,如果我们需要更多功能时,可以绘制更多的按钮,然后给他们flag=3,flag=4等等的赋值。 5. 双击“OK”按钮,输入代码前半段: void CTest425Dlg::OnOk() { // TODO: Add your control notification handler code here extern int flag; CWnd *pWnd=GetDlgItem(IDC_DRAW); CDC *pDC=pWnd->GetDC(); CBrush WhiteBrush; WhiteBrush.CreateSolidBrush(RGB(255,255,255)); CRect rect; pWnd->Invalidate(); pWnd->UpdateWindow(); pWnd->GetClientRect(&rect);

美化策划书模板(3篇)

美化策划书模板(3篇) 一、活动目的: 弘扬爱国主义精神,庆祝建国60周年,营造班级良好爱国热情,增强班级凝聚力,体现班级良好的精神面貌和学习氛围。为此,机电学院面向09级新生,特举办本次班级课室设计大赛。同时也能促进班级同学团结向上和学习文化知识的热情,增强班级的集体荣誉感,为建国60周年献礼。 二、活动主题:祖国在我班中 三、活动对象:09级各班 四、活动地点:09级各班负责教室 五、比赛时间:XX年11月——XX年12月 六、活动主办方:机电学院自律委员会督察部 七、前期宣传 1、向09级各班发放比赛通知单、宣传单 2、在教学楼、食堂张贴宣传海报,以加大宣传力度。 3、召开各班宣传委员会议,向他们讲解和说明此次活动的一些要求和规 则,使同学们了解本次活动的意义。 注:所有的宣传工作要在比赛开始前完成。 八、比赛规则与流程 1、规则 1、各班要在规定的准备时间内完成对本班级教室的设计,如超出时间规定则回酌情扣分。

2、评比正式开始后,评委会依次到每个班级听取讲解员的讲解,每班的讲解员的讲解时间为两到三分钟,在这段时间里,讲解员需用简短精练的语言向评委说明本班的主题,班徽、口号等的涵义,并且以怎样的设计方式来实现这个主题。演讲超时也回酌情扣分。 3、各班班歌评比将由文娱部协助评比(班歌要求:歌曲内容需积极向上,年轻活力,能体现当代大学生的精神面貌,最好是爱国歌曲) 4、无理由退出本次比赛的班级,将会扣本班所有人的德育实践分,并取消评“优秀班级、优秀支部”的评比资格。 5、评选各奖项时各班级至少10名同学出席,无理由不出席的班级或个人,将会扣班级或个人的德育实践分,如有特殊原因需向活动负责人说明清楚。 2、流程 1、到了规定比赛时间时,所有班级的设计必须完毕,讲解人员在本班等候评委的到来。评委的手中已经拿有本次比赛的评分表。 2、班歌将由文娱部和组织部协助督察部负责评比, 3、第一轮评选地点在本班的教室,由评委依次到各班教室听取各班讲解员的讲解,每个班级的讲解时间为两到三分钟。之后评委根据班级环境的布置、班级博客、班徽口号的涵义及爱国主题表达等方面的表现打分,并写下对这个班级的意见或者自己的看法。 4、所有的班级都评选过之后,根据评委手中的评分表统计各个班级的平均得分,挑选出得分较高的10个班级进入第三轮的评选。 5、第二轮的比赛地点在阶梯教室中进行,内容是各班的班歌评比,将由文娱部评比出三个班级,为一、二、三等奖,

MFC界面设计

画直线:ye 在cview 中加入 private: CPoint m_point; //自己加的 在onlbutoondown 加入 m_point=point; //自己加的 在onlbuttonup 加入 HDC hdc; //自己加的hdc=::GetDC(m_hWnd); MoveToEx(hdc,m_point.x,m_point.y,NULL); LineTo(hdc,point.x,point.y); ::ReleaseDC(m_hWnd,hdc); //自己加的 完成功能 圆,直线,矩形的画法ye1 首先在菜单添加各种ID 然后定义一个变量m_way赋予不同的值 然后增加鼠标按下和弹起的函数处理根据m_way的值 按下:m_point=point;保存点的相关信息 弹起:CClientDC dc(this); CPen pen(m_linestyle1,m_linewidth,RGB(255,0,0)); dc.SelectObject(&pen); CBrush *pbrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH)); dc.SelectObject(pbrush); switch(m_way) { case 1: dc.SetPixel(point,RGB(255,0,0)); break; case 2: dc.MoveTo(m_point); dc.LineTo(point); break; case 3: dc.Rectangle(CRect(m_point,point)); break; case 4: dc.Ellipse(CRect(m_point,point)); break; } 再定义一个类: 实现设置不同的线宽和线形,在弹出框进行编写

专题页面优化方案

如何进行专题/单页面优化 专题/单页面优化方法步骤: 第一:重要标签的优化 对于标签的优化我们主要说的是title标签、keywords标签和description标签,当然还有一些其他标签的优化,例如h1,h2标签的优化,alt 标签的优化等。在单页面中这几个标签就显得尤为重要,这是提升网站关键词密度和权重的主要阵地。 A、首先当然是title标签,无论是搜索者还是搜索引擎首先看到的就是网站的标题,因为地理优势它的权重理所当然的有相当高的权重。标签的优化主要要凸显在关键词上,而关键词不仅仅要考虑一些热词,也要考虑一些长尾词,以及网站的品牌词,如果市场是面向一个地区性的,最好加上地区。另外要充分考虑百度的分词技术,合理组合,将最多的情况都包含在里面。 B、其次就是keywords标签,虽然keywords标签现在被搜索引擎降低了一些权重,但作为衡量网站主要方向的一个重要标准,写好了可以更利于搜索引擎对于我们网站的评价。对于关键词的标签,建议采用根据关键词的难度分层次的来选择关键词,至于顺序,也建议大家采用“难中易”的方法。 C、再来就是description标签了。description标签现在的权重越来越低,但是对于这一块是给用户看的,所以显得非常重要,我们是简单的堆积一些关键词,还是用心的组织一段诱惑人访问网站的话语,我想大家都知道选择。当然,在组织这一段话的时候一定要注意自然合理的尽可能的把所有的关键词都插入到里面,另外可以加一个咨询电话,给人一种权威性。 D、最后就是其他标签。通常我们做单页面,主关键词肯定集中在一两个,除了title标签、keywords标签和description标签,再就是h1,h2标签和alt标签了,在这些地方尽可能合理的出现关键词。 第二:结构的合理性 专题/单页面一般就是一个简单的静态页面,通常布局都会非常简单,除了应该有的几个栏目之外,其他的应该尽量的简化。关于导航其实就是按照所有的优化需要的那样,尽可能的安排关键词作为导航栏目。对于文章页面尽可能的安排推荐页面,热门文章等。合理的链接结构是提升网站权重的一个很好的方面,也能给用户最好的体验。 第三:关键词的布局

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