热情软件屋

 

Shift参数的表达和使用


编号:QA004243
建立日期: 2001年6月6日 最后修改日期:2001年6月6日
所属类别:

康志刚:
    操作系统: windows98
    编程工具: c++ builder5
    问题: 我不理解Shift参数的表达和使用。
    例如:在窗体的OnMouseMove事件中,我想控制当按着鼠标右键move时,才去执行某些语句。但以下语句中“if (Shift == 3 )”不能通过编译。应该怎么使用Shift参数呢?TShiftState为枚举数据类型(ssShift,ssAlt,ssCtrl,ssLeft,ssRight,ssMiddle,ssDouble),“if (Shift == 4 )和if (Shift == ssRight )”都不能通过编译,敬请赐教。
    //程序源码:
    void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
     int X, int Y)
    {
    
    
    if (Shift == 3 )
     {
     Canvas->Brush->Color = clMenu;
     Canvas->Font->Color = clGreen;
     .........
     .........
    
     }
    }
    水平: 刚入门

回答:

    TShiftState并不是枚举数据类型,而是集合(SET)类型。所以你不能直接比较,而是应该调用Contains方法,如:
    if( Shift.Contains(ssRight))
    {
    }

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio