在hadoophadoop 服务器评估上Jar包是正常的,从eclipse上直接使用就会出现not found mapper错误 但是我是有mapper的

[ MFC ] 对话框动态控件的创建 在Picture Control控件上显示图片 [大三TJB_708] - 博客频道 - CSDN.NET
《西决》 —— 克里斯·保罗
分类:-[小西南]-
平台:VS2012&
程序类型:MFC 应用程序
1 MFC对话框之上的动态控件的创建
在对话框上的控件是MFC类的一个具体对象,其对应的变量内包含了类的数据成员和函数成员。当在对话框之上使用静态控件时,可以根据类向导来为每个控件添加消息、响应函数以及变量。当需要在对话框中动态的创建某个控件时,就需要手动为动态控件添加消息、响应函数及变量,即是手动来代替类向导。
动态创建控件时,可按照以下步骤进行:
(1) 明确控件所属于的类
每一个控件都对应着一个类,如按钮Button所属于的类为CButton。在程序中我们需要用CButton类创建一个具体的按钮对象,并用函数指示它在对话框之上的位置及大小。由于指针的众多好处,可用一个CButton *类型的变量来管理所创建的按钮。但要谨慎使用指针变量,防止内存泄露,野指针。
(2) 确定控件的ID号
在对话框中的每一个控件都有一个独一无二的ID号。当用控件类来创建具体的控件对象时也需要这个ID来作为标识。ID号其实是一个宏,为了控件ID的有序性,可以到VS2012“资源管理器”下的String Table下为每一个控件定义ID值。这些ID号会自动的被保存到Resource.h文件中形成宏。
(3) 动态创建控件的一般流程
在明确了控件类和其ID号之后,就可以在合适的函数内编写动态创建控件的代码。动态生成按钮(Button)、文本框(Staic Text)、编辑框(Edit Control)、联合框(Combo Box)等控件的流程可表述如下(以创建文本框为例笔记):
//动态创建一个静态文本框
CStatic *CMFCDialogDlg::CreateOneStatic(LPCTSTR str, CRect Coord, UINT IDC)
CStatic *pStatic = NULL;
pStatic = new CS
ASSERT_VALID(pStatic);
pStatic-&Create(str,
WS_CHILD|WS_VISIBLE|SS_CENTER, Coord, this, IDC);
以上是创建一个文本框的函数。首先明确文本框类为CStatic,然后用C++的动态分配函数分配一个文本框对象,最后利用文本此对象的Create函数将对象按照指定风格(标题str,文本框显示外表,坐标,ID号)显示在对话框之上。最后将创建的控件地址返回给调用函数以管理。动态创建控件的核心就是每个控件类的对象中的create函数,不同的控件类的create函数需要的参数可能不同。当需要释放创建的动态按钮时,用delete语句释放动态按钮的地址即可(这也属于new-delete动态分配必须的搭配),在对画框之上创建的控件也会随之消失。
(4) 动态控件大小随对话框比例变化
利用控件内的Create函数动态创建控件到对话框上时,可以不要将坐标都用常值。因为对话框窗口可以跟随用户的需要发生变化。MFC中指定了对话框大小发生变化的消息ON_WM_SIZE(),只要在ON_WM_SIZE()消息对应的响应函数OnSize()中获取到大小变化后的对话框的尺寸大小,那么就能够按照动态控件与对话框的比例来决定当前控件的大小了。这样,动态控件也能够跟随对话框成比例的变化了。
2 Picture Control控件显示图片
在MFC中,CImage类中包含了载入图片、绘制图片到某区域的成员函数。而Picture &Control控件正是为CImage对象提供了一个平台。也就是说经CImage对象载入到内存中的图片可以在Picture Control控件之上绘制出来。所以,CImage类和Picture Control控件类可以搭配使用。
(1) 准备Picture &Control控件
直接切换到对话框文件下,往对话框中拖入一个Picture Control控件。记住其ID号。
(2) Picture Control控件显示图片的代码
只从显示图片这个角度上说。Picture Control控件只是为图片显示提供了一个平台,载入图片及绘制图片的操作都是由CImage对象的成员函数完成的,另外还会用到一些其它的常用函数。
//根据路径载入图片
image.Load(_T(&E:\\MyLibrayPhotoShop\\log.jpg&));
//获取图片的宽 高度
cx = image.GetWidth();
cy = image.GetHeight();
//获取Picture Control控件的大小
GetDlgItem(IDC_PICTURE)-&GetWindowRect(&rect);
//将客户区选中到控件表示的矩形区域内
ScreenToClient(&rect);
//窗口移动到控件表示的区域
GetDlgItem(IDC_PICTURE)-&MoveWindow(rect.left, rect.top, cx, cy, TRUE);
CWnd *pWnd = NULL;
pWnd = GetDlgItem(IDC_PICTURE);//获取控件句柄
pWnd-&GetClientRect(&rect);//获取句柄指向控件区域的大小
CDC *pDc = NULL;
pDc = pWnd-&GetDC();//获取picture的DC
image.Draw(pDc-&m_hDC, rect);//将图片绘制到picture表示的区域内
ReleaseDC(pDc);
读这段代码。
[1] CImage内的Load方法将指定路径下的图片载入,然后在利用其内的GetWidth和GetHeight方法获取到图片的宽度和高度。
[2] GetDlgItem通过PictureControl控件的ID获取到它的句柄后调用Picture Control中的GetWindRect方法来获取它本身在对话框中所占用的范围。然后利用ScreenToClient方法将客户区转到Picture Control内,目的是利用Picture Control内的MoveWindow方法重新设置Picture Control控件在对话框上所占的位置,是它适应图片的大小。
[3] 再重新设获取picture Control在对话框中占用的面积。用pDc来管理Picture Control中的DC。然后CImage的Draw方法就可以利用获取的参数在rect区域绘制图片了。
程序运行如下:
如果程序需要多次运行以上代码时才能够准确的显示图片,那么可以先一次性(如在OnInitDialog()函数中)载入图片。然后在OnPaint()函数中编写绘制图片的函数,让它得到多次运行。
MFC Note Over.
排名:第558名
(3)(425)Posts - 106,
Articles - 0,
Comments - 83
耐得住寂寞,才经得起繁华
17:44 by ATP_, ... 阅读,
转自:http://blog.csdn.net/mengkun2010/article/details/2979864
&1. 首先来了解以下FindControl的工作原理:
在ASP.NET 2.0中,引入了MasterPage的机制,在当前页使用MasterPage的情况下,放在 ContentPlaceholder1这样的内容页的控件无法用Page.FindControl来查找,原因何在?
MSDN对FindControl的解释:在当前的命名容器中搜索带指定&id&参数的服务器控件
这里有一篇文章阐述阐述FindControl方法和INamingContainers接口:
FindControl方法是在当前naming container查找指定ControlID对应的控件,该naming container是一个实现了INamingContainer接口的对象。
可以在该页的页指令中添加 Trace=Ture 指令来跟踪页面输出查看控件树。一个页面的控件树中,Page对象必然是顶级的naming container,但绝非必然是唯一的naming container。譬如当有GridView存在的话,GridView其实也是一个naming container,要找GridView中的一个ControlID,就不能用Page.FindControl,而得用[GridView对象].FindControl方法。
很多时候,因为是动态控件,明知道是在同一个naming container中,但不知道该naming container是什么对象,一个控件要找到另一个控件,可以用this.Parent.FindControl方法。
2. 解决问题:
因为使用MasterPage后,你再用Page.FindControl不可能找到的,这没什么疑问,因此正确的方法是你先找到此控件的naming container,这里也就是ContentPlaceHolder#的ID,然后在去找你的控件,比如:Page.Master.FindControl("ContentPlaceHolder1").FindControl("TextBox1")。
3. 深度分析:
显然在第二步里面我们给问题解决了,但是仔细分析,不难发现这个解决方案本身存在着另外一个问题,即:如果ContentPlaceHolder1这个ID改变了,那么你的CODE就不能用了,也要改变。
一个跟更好的解决方法是:
TextBox[]&tbx = new TextBox[] { this.TextBox1,this.TextBox2......}
然后使用tbx[index]来作为你要的控件。.GetControlID 获取控件ID
static function GetControlID (focus : ) : int
static function GetControlID (hint : int, focus : ) : int
static function GetControlID (contents : , focus : ) : int
static function GetControlID (focus : FocusType, position : ) : int
static function GetControlID (hint : int, focus : , position : ) : int
static function GetControlID (contents : GUIContent, focus : , position : ) : int
Description描述
Get a unique ID for a control.
为控件获取一个唯一ID。
using UnityE
using System.C
public class example :
void OnGUI() {
(&Available id: & + ());
// Prints a not used ID that can be assigned to a control
//打印一个没有使用的ID,可以被指定给一个控件
function OnGUI() {
// Gets a ID for a control that cannot receive keyboard focus (A button)
//为不能接收键盘焦点的控件(按钮),获取一个ID.
(&Available id: & + ());
本脚本参考基于Unity 3.4.1f5英文部分版权属&公司所有,中文部分&
版权所有,未经许可,严禁转载 。DevExpress控件使用经验总结 - 伍华聪 - 博客园
随笔 - 496, 文章 - 20, 评论 - 7264, 引用 - 20
DevExpress是一个比较有名的界面控件套件,提供了一系列的界面控件套件的DotNet界面控件。本文主要介绍我在使用DevExpress控件过程中,遇到或者发现的一些问题解决方案,或者也可以所示一些小的经验总结。总体来讲,使用DevExpress控件,可以获得更高效的界面设计以及更美观的效果。本文主要通过给出相应的例子以及相关界面效果来说明问题,希望大家能够从中获得好的知识和思路。&1、 应用Office2007和Office2010的界面主题开始使用DevExpress的时候,发现程序界面效果好像没有出现Office的样式,只是有几种可怜的内置效果。经过查找发现需要在入口函数里面添加几行代码,如下所示。&& & & & & &DevExpress.UserSkins.OfficeSkins.Register();&&&&&&&&&&&&DevExpress.UserSkins.BonusSkins.Register();&& & & & & &DevExpress.Skins.SkinManager.EnableFormSkins();&指定界面主题效果,可以通过代码设置,指定主题的名称即可。UserLookAndFeel.Default.SetSkinStyle("Office&2010&Blue");&或者在界面中添加一个控件&DefaultLookAndFeel,设置其对应的界面效果即可实现整个设计时刻和运行时刻的界面效果,如下图所示。&&2、Properties属性DevExpress很多控件的一般属性,会放置在该属性下面,如ComboBox下拉列表的属性操作如下& & & &&private&void&InitDictItem()&&&&&&&&{&&&&&&&&&&&&this.txtManufacture.Properties.Items.Clear();&&&&&&&&&&&&this.txtManufacture.Properties.Items.AddRange(DictItemUtil.GetDictByDictType("供货商"));& & & & }&&这是一个很丰富属性的归类,很多常用的属性基本上都囊括在这里了,如果你是从传统界面转换过来DevExperss开发,找不着相关的属性,尽管来这里看看。例如设置显示的可见性、可用性、&自定义显示格式等等。&3、GridView的相关操作获取选定行制定列的内容,用于删除记录的操作代码如下DevExpess的GridView控件,和传统WinFrom的GridView有很大的不同,如他没有GetSelectedRow的行集合操作,但可以通过GetSelectedRows获取制定的行序号,通过行序号来进行操作,如要获得指定行,制定列的内容,可以通过GetRowCellDisplayText&获取文本或者通过GetRowCellValue获取对应的值。如果需要获取当前选定行(焦点所在行)的制定列的数据,那么可以通过函数GetFocusedRowCellDisplayText("ID")来获取。& & & &&private&void&winGridViewPager1_OnDeleteSelected(object&sender,&EventArgs&e)&&&&&&&&{&&&&&&&&&&&&if&(MessageUtil.ShowYesNoAndTips("您确定删除选定的记录么?")&==&DialogResult.No)&&&&&&&&&&&&{&&&&&&&&&&&&&&&&return;&&&&&&&&&&&&}&&&&&&&&&&&&int[]&rowSelected&=&this.winGridViewPager1.GridView1.GetSelectedRows();&&&&&&&&&&&&foreach&(int&iRow&in&rowSelected)&&&&&&&&&&&&{&&&&&&&&&&&&&&&&string&ID&=&this.winGridViewPager1.GridView1.GetRowCellDisplayText(iRow,&"ID");&&&&&&&&&&&&&&&&BLLFactory&ItemDetail&.Instance.Delete(ID);&&&&&&&&&&&&}&&&&&&&&&&&&BindData();& & & & }&为GridView行提示信息以及显示行号,有时候为了方便数据的显示,需要在GridView的第一列显示该列的行信息以及行号,那么需要为GridView控件添加一个ToolTipController控件,然后实现该控件的GetActiveObjectInfo事件,在事件里面添加下面代码以及实现GridView控件的CustomDrawRowIndicator事件即可,如下代码所示。& & & &&private&void&toolTipController1_GetActiveObjectInfo(object&sender,&DevExpress.Utils.ToolTipControllerGetActiveObjectInfoEventArgs&e)&&&&&&&&{&&&&&&&&&&&&if&(e.SelectedControl&!=&gridControl1)&return;&&&&&&&&&&&&ToolTipControlInfo&info&=&null;&&&&&&&&&&&&//Get&the&view&at&the&current&mouse&position&&&&&&&&&&&&GridView&view&=&gridControl1.GetViewAt(e.ControlMousePosition)&as&GridV&&&&&&&&&&&&if&(view&==&null)&return;&&&&&&&&&&&&//Get&the&view's&element&information&that&resides&at&the&current&position&&&&&&&&&&&&GridHitInfo&hi&=&view.CalcHitInfo(e.ControlMousePosition);&&&&&&&&&&&&//Display&a&hint&for&row&indicator&cells&&&&&&&&&&&&if&(hi.HitTest&==&GridHitTest.RowIndicator)&&&&&&&&&&&&{&&&&&&&&&&&&&&&&//An&object&that&uniquely&identifies&a&row&indicator&cell&&&&&&&&&&&&&&&&object&o&=&hi.HitTest.ToString()&+&hi.RowHandle.ToString();&&&&&&&&&&&&&&&&StringBuilder&sb&=&new&StringBuilder();&&&&&&&&&&&&&&&&sb.AppendLine("行数据基本信息:");&&&&&&&&&&&&&&&&foreach&(GridColumn&gridCol&in&view.Columns)&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&if&(gridCol.Visible)&&&&&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&&&sb.AppendFormat("&&&&{0}:{1}\r\n",&gridCol.Caption,&view.GetRowCellDisplayText(hi.RowHandle,&gridCol.FieldName));&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&info&=&new&ToolTipControlInfo(o,&sb.ToString());&&&&&&&&&&&&}&&&&&&&&&&&&//Supply&tooltip&information&if&applicable,&otherwise&preserve&default&tooltip&(if&any)&&&&&&&&&&&&if&(info&!=&null)&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&=&&&&&&&&&&&&&}& & & & }&&&&&&&&&&private&void&gridView1_CustomDrawRowIndicator(object&sender,&RowIndicatorCustomDrawEventArgs&e)& & & & {&&&&&&&&&&&&if&(ShowLineNumber)&&&&&&&&&&&&{&&&&&&&&&&&&&&&&e.Appearance.TextOptions.HAlignment&=&DevExpress.Utils.HorzAlignment.F&&&&&&&&&&&&&&&&if&(e.Info.IsRowIndicator)&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&if&(e.RowHandle&&=&0)&&&&&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&&&.DisplayText&=&(e.RowHandle&+&1).ToString();&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&}&&&&&&&&&&&&}&&&&&&&&}&以上虽然是使用了我的DevExpress分页控件,不过分页控件的内部就是使用了DevExpress的GridControl控件的。&&4、常用布局控件。传统的数据编辑界面,我们一般需要添加一个Label,然后再加一个TextBox或者其他控件,而DevExpress在这方面确实下了不少功夫,引入了一个LayoutControl的控件,该控件可以在你添加一个TextBox等其他控件的时候,自动为你加入一个类似Label的控件,而且布局已经给你设计对齐好,添加几个可以在一行中放置多列控件,对齐效果也非常好,如果是重新设计界面,省却不少对齐以及维护Label的属性。另外,该布局属性可以设置类似GroupBox的边界效果(默认不显示文本和边界),也可以统一设计在该布局控件内部各种控件的效果,如ReadOnly为True的显示如何,Enable为False的显示如何,只需要设置一个地方,就可以统一界面效果了。总之,用起来相当的不错。&&&总体来讲,第一次使用DevExpress会觉得很多地方不太适应,甚至有时候找不到对应的属性,但是当慢慢熟悉了使用该控件来开发的时候,会觉得它确实在很多地方引入了较好的理念,习惯了就觉得效率提高了不少,界面设计上也会觉得更加美观和方便了。由于我只是在我平常开发的小例子,以及我的Winform开发框架中,应用了DevExpress控件的各种常用效果,应该还有很多常用的控件以及高级控件没有用到,以后有继续使用的话,会继续记录相应的经验心得供大家探讨。最后附上一个我应用DevExpress控件改进过Winform开发框架的界面效果图,里面应用到了Ribbon界面效果以及基于DevExpress控件的分页控件(前面有介绍过使用例子),使用了分页控件,对整个GridView的处理上,会方便很多,界面效果如下所示。&&2016年11月 VC/MFC大版内专家分月排行榜第二2016年4月 VC/MFC大版内专家分月排行榜第二2014年11月 VC/MFC大版内专家分月排行榜第二2014年1月 VC/MFC大版内专家分月排行榜第二2013年10月 VC/MFC大版内专家分月排行榜第二2013年9月 VC/MFC大版内专家分月排行榜第二2013年6月 VC/MFC大版内专家分月排行榜第二2013年4月 VC/MFC大版内专家分月排行榜第二2012年6月 VC/MFC大版内专家分月排行榜第二
2016年12月 VC/MFC大版内专家分月排行榜第三2016年10月 VC/MFC大版内专家分月排行榜第三2016年2月 VC/MFC大版内专家分月排行榜第三2015年10月 VC/MFC大版内专家分月排行榜第三2015年7月 VC/MFC大版内专家分月排行榜第三2012年10月 VC/MFC大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 hadoop web服务器 的文章

 

随机推荐