as title
============================

解决方案 »

  1.   

    还是 WM_CHAR,WM_KEYDOWN,WM_KEYUP 等那一套,
    TAB键是普通字符。
      

  2.   

    自己顶一下,可能说的不清楚,
    我的意思就是平常我们可以用tab键跳向下一个按钮或者文本输入框,
    那么系统是根据什么来判断应该跳转了,根据什么来判断该跳转到哪里?
      

  3.   

    那也应该有相应的事件来驱动吧?
    要不然系统如何识别呢?
    TAB跟别的键盘不同,跟ALT一样,有着自己特定的功能啊
      

  4.   

    比如在CDialog中,肯定系统已经截获了TAB键并做了默认处理,
    如果你重载 PreTranslateMessage(MSG* pMsg) 不调用
    return CDialog::PreTranslateMessage(pMsg);就可以自己处理了。用CDialog::PrevDlgCtrl 和 CDialog::NextDlgCtrl 可以按设置的
    tab order 移动焦点。
      

  5.   

    根据在.rc文件中,各控件的先后顺序!如:下面的.rc文件中,TAB顺序依次为:
    1)IDC_BUTTON2
    2)IDOK
    3)IDC_BUTTON1
    ////////////////////////////////////
    ..................
    IDD_ABOUTBOX DIALOG DISCARDABLE  0, 0, 235, 121
    STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
    CAPTION "关于 GetEmail"
    FONT 9, "宋体"
    BEGIN
        PUSHBUTTON      "Button2",IDC_BUTTON2,161,67,67,26
        DEFPUSHBUTTON   "确定",IDOK,182,4,46,16,WS_GROUP
        PUSHBUTTON      "Button1",IDC_BUTTON1,166,34,62,19
    .......
    ////////////////////////////////////
    你可以自己试一试 :D
    在Dialog设计窗体中按下Ctrl+D更改顺序,然后再Ctrl+D退出,Ctrl+S保存后,用Notepad.exe打开对应.rc文件。
    你会发现这种改变。
      

  6.   

    re Hakki(yao):观察到这个现象了 :Dre licyme(锥子):你说的那些确实可以实现,但是有一点不明白,跟Tab相关的并不只是Dlg,
    ie,explore等好多windows相关的对象对Tab按下都有相应的自己的响应,这些都是通过按下Tab实现的,
    那么现在的问题是,如果我不通过键盘,只想单纯通过给系统发送消息或事件,使得当前窗口响应
    跟按下Tab一样的动作,无论是对话框也好,打开的网页也好,该如何实现呢?翻了下msdn,找到的关于Tab Control的资料都是预备文档,极度郁闷中····
      

  7.   

    WM_KEYDOWN   wparam 和 lparam 查msdn
      

  8.   

    我笨!我理解不了!:(能否给段小程序代码供我理解?
    我想这样,程序执行后,首先激活另一窗口(对话框也好,什么都成)
    然后通过间断时间向系统发送消息,使得被激活窗口上的button,edit box等等
    按照窗口tab order的顺序依次聚焦,就像在键盘上按Tab键的效果一样。
    可以实现嘛?
      

  9.   

    tab只是ASCII码不同而以其他和别的键一样 系统捕获按键消息
    然后根据键值分别处理
      

  10.   

    re bill858(sun):
    很遗憾,但我想知道的就是如何分别处理的
      

  11.   

    就好比你打开一个浏览器,按一下tab,默认的,系统会把焦点转到地址栏,再按一下,可能就会转到页面的某个文本输入框,我就是想知道这些是如何实现的。
      

  12.   

    我想应该是Window系统在做公共窗口或对话框里都有一定的内部结口,就像一些控件一样,其实质都是一些窗口,是不是也是有对待对话框一样,首先有一个框架类型是最上面的父窗口,就像IE,里面的一些可支持输入的窗口(控件)都是Tab跳转的对象.你说的好象是用软件方法来触发 WM_KEYDOWN 事件,你可以先取得窗口(主框架?)句柄,然后 用
    SendMessage ( ) 向其发WM_KEYDOWN 消息,好象可以把Tab键的虚码给当作一个参数给传过去.
      

  13.   

    我试过把VK_TAB通过SendMessage()发送给其他窗口,可是好像不成,不知道是为什么!
      

  14.   

    嘿,老兄,想要做什么呢,你可以用函数
    keybd_event(VK_TAB,0,WM_KEYDOWN,0);
    来模仿发送Tab键
    用SendMessage会有窗口句柄的问题,你很难控制的。