当前位置:首页
开发技术指南» 文章正文
    引言:

    摘要: 我用c#和sqldmo配合做数据恢复时,要通过用户选择目录来取得已经备份好的文件,现在目录能选择了,就是在选定好目录后,不能取得该目录下的文件列表,请大家看看有没有方法取得文件列表? 还有,在做备份功能时,发现设置backupclass.files属性时,不能设为带有空格的路径,不知道是为什么? 请大家帮忙,多谢! ......
    摘要: 用户登陆网站时赋session("usname")初始值 用户在没有正常按退出按钮退出该网站的时候连接到了其它网站,然后再次浏览到本网站,此时应该session("usname")的值为空了,但网页上仍能显示session("usname")原来的值,这是什么问题? 注:我在global.asa里的session_onstart事......


拖图

我们在使用reader阅读文件时,在工具栏选项有一个手状的工具,点击后可实现我们对当前文本拖动,那么我们在vc中是如何实现的呢?原理是什么呢?

NO.1   作者: thebit

当我练习打字咯....  
   
  在求是科技的这本书<VC++实效编程百例>>里有一个贴切的例子:P78   实例32:拖放选中对象.  
  如下:  
   
  实现方法:当鼠标左键在图形区域被按下时,捕捉所有鼠标消息,并且响应鼠标移动消息,随时师尊图形的位置,重画图形.  
   
  (1)利用AppWizard创建SDI床的应用等距离   MoveSelOb,并且选择视图类的蕨类为CScrollView.  
  (2)在视图类的头文件中增加4个变量,用来保存图形位置和鼠标捕捉情况,其代码如下:  
  protected:  
  const   CSize   m_sizeEllipse;  
  CPoint   m_pointLeft;  
  CSize   m_sizeOffset;  
  BOOL   m_bCaptured;  
  (3)在构造类的构造函数中初始化变量,其代码如下:  
  CMoveSelObView::CMoveSelObView():m_sizeEllipse(100,-100),m_pointLeft(0,0),m_sizeOffset(0,0)  
  {  
  //   TODO:   add   construction   code   here  
  m_bCaptured=   FALSE;  
   
  }  
  (4)在视图类的   OnInitialUpdate   函数中初始化视图的滚动范围:  
  void   CMoveSelOb1View::OnInitialUpdate()    
  {  
  CView::OnInitialUpdate();  
   
  //   TODO:   Add   your   specialized   code   here   and/or   call   the   base   class  
  //   设置滚动范围  
  CSize   sizeTotal(800,1050); //   8-by-10.5   inches  
  CSize   sizePage(sizeTotal.cx/2,sizeTotal.cy/2);  
  CSize   sizeLine(sizeTotal.cx/50,sizeTotal.cy/50);  
  SetScrollSizes(MM_LOENGLISH,   sizeTotal,sizePage,sizeLine);  
  }  
  (5)在视图类的   OnDraw   函数中绘图:  
  void   CMoveSelOb1View::OnDraw(CDC*   pDC)  
  {  
  CMoveSelOb1Doc*   pDoc   =   GetDocument();  
  ASSERT_VALID(pDoc);  
  //   TODO:   add   draw   code   for   native   data   here  
  //   创建红色画刷  
  CBrush   brushHatch(HS_DIAGCROSS,   RGB(255,0,0));  
  CPoint   point(0,0);  
   
  //   转换逻辑坐标为设备坐标  
  pDC->LPtoDP(&point);  
  pDC->SetBrushOrg(point);  
  CBrush*   pOldBrush   =   pDC->SelectObject(&brushHatch);  
   
  //   画红色圆圈  
  pDC->Ellipse(CRect(m_pointLeft,m_sizeEllipse));  
  pDC->SelectObject(pOldBrush);  
  }  
  (6)响应WM_LBUTTONDOWN   消息:  
  void   CMoveSelOb1View::OnLButtonDown(UINT   nFlags,   CPoint   point)    
  {  
  //   TODO:   Add   your   message   handler   code   here   and/or   call   default  
  CRect   rectEllipse(m_pointLeft,m_sizeEllipse);  
  CRgn   circle;  
   
  CClientDC   dc(this);  
  OnPrepareDC(&dc);  
  dc.LPtoDP(rectEllipse);  
  circle.CreateEllipticRgnIndirect(rectEllipse);  
   
  if(circle.PtInRegion(point)){  
  //   捕捉鼠标  
  SetCapture();  
  m_bCaptured=   TRUE;  
  CPoint   pointLeft(m_pointLeft);  
  dc.LPtoDP(&pointLeft);  
  m_sizeOffset=point-pointLeft;  
   
  //   设置光标形状为十字状  
  ::SetCursor(::LoadCursor(NULL,   IDC_CROSS));  
   
  }  
  CView::OnLButtonDown(nFlags,   point);  
  }  
  (7)响应   WM_LBUTTONUP   :  
  void   CMoveSelOb1View::OnLButtonUp(UINT   nFlags,   CPoint   point)    
  {  
  //   TODO:   Add   your   message   handler   code   here   and/or   call   default  
  if(m_bCaptured){  
  //   释放鼠标捕捉  
  ::ReleaseCapture();  
  m_bCaptured=   FALSE;  
  }  
  CView::OnLButtonUp(nFlags,   point);  
  }  
  (8)响应   WM_MOUSEMOVE:  
  void   CMoveSelOb1View::OnMouseMove(UINT   nFlags,   CPoint   point)    
  {  
  //   TODO:   Add   your   message   handler   code   here   and/or   call   default  
  if(m_bCaptured){  
  //   如果有图形被选中,并且鼠标捕捉则更新图形位置  
  CClientDC   dc(this);  
  OnPrepareDC(&dc);  
  CRect   rectOld(m_pointLeft,m_sizeEllipse);  
  dc.LPtoDP(&rectOld);  
   
  //   擦除老位置的图形  
  InvalidateRect(rectOld,TRUE);  
  m_pointLeft   =   point   -   m_sizeOffset;  
  dc.DPtoLP(&m_pointLeft);  
   
  //   在新位置画图形  
  CRect   rectNew(m_pointLeft,m_sizeEllipse);  
  dc.LPtoDP(rectNew);  
  InvalidateRect(rectNew,   TRUE);  
  }  
   
  CView::OnMouseMove(nFlags,   point);  
  }  
   
  //----------------     THE   END   --------------------  
  如果要VC工程的完整代码,请给我email.   toahming@126.com,书没随送代码,只有自己敲。^_^


 ·最近浏览文件    »显示摘要«
    摘要: 在程序运行过程中,在file菜单底下,加入了最近浏览过的菜单。 关闭程序,重新运行在最近浏览过的文件中显示了程序加入的文件。 1、如何通过点击最近浏览文件访问到所选的文件。主要是不能确定点击菜单后如何响应那个消息。 是不是响应on_command(id_file_mru_file1, onfilemrufile1)消息呢?那么如何获得所点击的文件路径。 2、点击最近浏览文件菜单是,好像只能......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE