非标题栏窗体拖动问题

非标题栏窗体拖动问题

楼主enlightenment(破冰超人) 2000-09-26 15:59:00 在 Delphi / VCL组件开发及应用 提问

        要想用鼠标点击窗体任意处拖动窗体,以前使用的是截取窗体消息接收,欺骗窗体的Client区域为Caption区域,但是这样只是对单个Form有用, 如何能够象Winnap一样可以实现鼠标点击,程序的所有的窗体一齐无抖动拖动(在拖动窗口显示其内容前提下),敬请指教。  
          不要使用Timer组件,效果太差。

 

 var  
      Form1:   TForm1;  
      oldx,oldy:integer;  
   
  procedure   TForm1.FormMouseMove(Sender:   TObject;   Shift:   TShiftState;   X,  
      Y:   Integer);  
  begin  
  if   ssLeft   in   Shift   then  
      begin  
          Left:=Left+(x-oldx);  
          Top:=top+(y-oldy);  
      end;  
   
  end;  
   
  procedure   TForm1.FormMouseDown(Sender:   TObject;   Button:   TMouseButton;  
      Shift:   TShiftState;   X,   Y:   Integer);  
  begin  
      oldx:=x;  
      oldy:=Y;  
  end;



当鼠标移动到按钮上时设置鼠标指针形状


变量:

HCURSOR m_hButtonCursor;

重载函数:

afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT msg);

函数实现:

BOOL CMyDialog::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT msg) {  CString sClassName;  ::GetClassName(pWnd->GetSafeHwnd(),sClassName.GetBuffer(80),80);  if (sClassName=="Button" && m_hButtonCursor) {   ::SetCursor(m_hButtonCursor);   return TRUE;  }  return CDialog::OnSetCursor(pWnd, nHitTest, msg); }


http://www.diybl.com/course/3_program/c++/cppsl/2008712/132903.html




VC中如何实现输出文字方向改变?比如文字侧着输出?请高手指点。


用CFont的CreateFont建立这种字体,详细的看MSDN中函数的参数,然后TextOut就行了


楼上说的没错。CreateFont()中的参数nEscapement定义字体标注行的逆时针方向的旋转角度(以1/10度为单位),当标注行进行逆时针旋转时,字体页旋转同样的角度。



font1.CreateFont(50,0,-900,0,600,FALSE,FALSE,0,GB2312_CHARSET,OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_MODERN,"楷体 _GB2312");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值