Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. 如何攔截在Edit上按下的Return?(win32 project)

如何攔截在Edit上按下的Return?(win32 project)

Scheduled Pinned Locked Moved C / C++ / MFC
debuggingquestion
4 Posts 4 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    akirachen
    wrote on last edited by
    #1

    g_hDlgWnd=CreateDialog(g_hInst,MAKEINTRESOURCE(IDD_DIALOG_TEST),hWnd,(DLGPROC)DlgTestProc); ShowWindow(g_hDlgWnd, SW_SHOWNORMAL); 以function建立一個Dialog(IDD_DIALOG_TEST),在IDD_DIALOG_TEST加入一個IDC_EDIT_INPUTTEXT(Edit Control) 我想在IDC_EDIT_INPUTTEXT按下Return時Call其他的Function, 問題就是:如何攔截在Edit上按下的Return?(win32 project) INT_PTR CALLBACK DlgTestProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { long rvalue = 0; /* int processed = CGM.WinProc(hDlg, message, wParam, lParam, &rvalue); if (processed) return rvalue; */ switch(message) { case WM_INITDIALOG: return Test_OnInitialDialog(hDlg); case WM_COMMAND: switch(LOWORD(wParam)) { case IDC_EDIT_INPUTTEXT: { switch (HIWORD (wParam)) { //case VK_RETURN: // TRACE("VK_RETURN\n"); // break; case EN_CHANGE: { CHAR lpszPassword[MAX_TALK_WORD]; WORD cchPassword; cchPassword = (WORD) SendDlgItemMessage(hDlg, IDC_EDIT_INPUTTEXT, EM_LINELENGTH, (WPARAM) 0, (LPARAM) 0); *((LPWORD)lpszPassword) = cchPassword; // Get the characters. SendDlgItemMessage(hDlg, IDC_EDIT_INPUTTEXT, EM_GETLINE, (WPARAM) 0, // line 0 (LPARAM) lpszPassword); // Null-terminate the string. lpszPassword[cchPassword] = 0; TRACE(">>>> cchPassword=%d ,lpszPassword=%s \n",cchPassword,lpszPassword); } TRACE("IDC_EDIT_INPUTTEXT %d,%d\n",wParam,lParam); break; } } break;

    P 1 Reply Last reply
    0
    • A akirachen

      g_hDlgWnd=CreateDialog(g_hInst,MAKEINTRESOURCE(IDD_DIALOG_TEST),hWnd,(DLGPROC)DlgTestProc); ShowWindow(g_hDlgWnd, SW_SHOWNORMAL); 以function建立一個Dialog(IDD_DIALOG_TEST),在IDD_DIALOG_TEST加入一個IDC_EDIT_INPUTTEXT(Edit Control) 我想在IDC_EDIT_INPUTTEXT按下Return時Call其他的Function, 問題就是:如何攔截在Edit上按下的Return?(win32 project) INT_PTR CALLBACK DlgTestProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { long rvalue = 0; /* int processed = CGM.WinProc(hDlg, message, wParam, lParam, &rvalue); if (processed) return rvalue; */ switch(message) { case WM_INITDIALOG: return Test_OnInitialDialog(hDlg); case WM_COMMAND: switch(LOWORD(wParam)) { case IDC_EDIT_INPUTTEXT: { switch (HIWORD (wParam)) { //case VK_RETURN: // TRACE("VK_RETURN\n"); // break; case EN_CHANGE: { CHAR lpszPassword[MAX_TALK_WORD]; WORD cchPassword; cchPassword = (WORD) SendDlgItemMessage(hDlg, IDC_EDIT_INPUTTEXT, EM_LINELENGTH, (WPARAM) 0, (LPARAM) 0); *((LPWORD)lpszPassword) = cchPassword; // Get the characters. SendDlgItemMessage(hDlg, IDC_EDIT_INPUTTEXT, EM_GETLINE, (WPARAM) 0, // line 0 (LPARAM) lpszPassword); // Null-terminate the string. lpszPassword[cchPassword] = 0; TRACE(">>>> cchPassword=%d ,lpszPassword=%s \n",cchPassword,lpszPassword); } TRACE("IDC_EDIT_INPUTTEXT %d,%d\n",wParam,lParam); break; } } break;

      P Offline
      P Offline
      Prakash Nadar
      wrote on last edited by
      #2

      and the question is ?


      I have lost more blood shaving than on the battlefield - Adolf Hitler

      T 1 Reply Last reply
      0
      • P Prakash Nadar

        and the question is ?


        I have lost more blood shaving than on the battlefield - Adolf Hitler

        T Offline
        T Offline
        toxcct
        wrote on last edited by
        #3

        lol !!! "**如何攔截在Edit上按下的**" means what ?!?! ;P:omg::wtf::confused::eek: X| TOXCCT alias Nicolas C.

        J 1 Reply Last reply
        0
        • T toxcct

          lol !!! "**如何攔截在Edit上按下的**" means what ?!?! ;P:omg::wtf::confused::eek: X| TOXCCT alias Nicolas C.

          J Offline
          J Offline
          J B 0
          wrote on last edited by
          #4

          The question was posted (and encoded) in Traditional Chinese. In English, it can be translated as "How to capture the 'Enter key' hit on an Edit Control" My suggested solution would be to use PreTransMessage() and do something like the following;

          BOOL CMyDlg::PreTranslateMessage(MSG *pMsg)
          {
          	int ctrlID;
          
          	if (pMsg->message == WM_KEYDOWN)
          		if (pMsg->wParam == VK_RETURN)
          		{
          			ctrlID = (GetFocus())->GetDlgCtrlID();
          
          			if (ctrlID == IDC_MYEDIT)
          				// do your stuff here
          
          			return true;
          		}
          
          	return CDialog::PreTranslateMessage(pMsg);
          }
          

          Hope it helps

          1 Reply Last reply
          0
          Reply
          • Reply as topic
          Log in to reply
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes


          • Login

          • Don't have an account? Register

          • Login or register to search.
          • First post
            Last post
          0
          • Categories
          • Recent
          • Tags
          • Popular
          • World
          • Users
          • Groups