首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

Enter 鍵控制焦點切換:KeyPreview + WM_NEXTDLGCTL 實現 Tab 鍵替代

     編輯:VC 教學

需求

使用者習慣按 Enter (而非 Tab) 在輸入框間移動焦點。

實現

  1. 表單 `KeyPreview = true`。
  2. `OnKeyPress` 事件:

void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
    if (Key == VK_RETURN) {
        SendMessage(Handle, WM_NEXTDLGCTL, 0, 0); // 移至下一控件
        Key = 0; // 吞掉按鍵,避免觸發按鈕 Click 等
    }
}

原理

`WM_NEXTDLGCTL` 讓系統按 `TabOrder` 尋找下一個可聚焦控件。`Key=0` 防止字元輸入或預設按鈕觸發。

進階:區分單行/多行編輯

若 `TRichEdit`/`TMemo` 需保留 Enter 換行,可判斷 `ActiveControl` 類型:


if (Key == VK_RETURN && !dynamic_cast(ActiveControl) && !dynamic_cast(ActiveControl)) {
    SendMessage(Handle, WM_NEXTDLGCTL, 0, 0);
    Key = 0;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved