我在VC中创建了一个SDK工程,然后用资源编辑器新建了一个对话框,并在上面放置了一个编辑框控件。现在我想在窗口的过程函数中识别在编辑框中的按键。但是却不知道该怎么写?参考书上说“编辑框通过向其父窗口发送WM_COMMAND消息通知应用程序用户的交互信息”,但是常用的通知码中没有与识别按键相关的!请问我该如何处理?窗口过程函数如下所示:
………………
BOOL CALLBACK TestDlgProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
RECT rect ; switch (message)
{
case WM_INITDIALOG :
return FALSE ; case WM_COMMAND :
if (LOWORD (wParam) == IDC_WORDEDIT)
if (HIWORD (wParam) == EN_CHANGE)
MessageBox (hDlg, "", szAppName, MB_OK | MB_ICONSTOP) ;
break;
case WM_CLOSE :
EndDialog(hDlg, 0) ;
return TRUE ;
}
return FALSE ;
}
………………
BOOL CALLBACK TestDlgProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
RECT rect ; switch (message)
{
case WM_INITDIALOG :
return FALSE ; case WM_COMMAND :
if (LOWORD (wParam) == IDC_WORDEDIT)
if (HIWORD (wParam) == EN_CHANGE)
MessageBox (hDlg, "", szAppName, MB_OK | MB_ICONSTOP) ;
break;
case WM_CLOSE :
EndDialog(hDlg, 0) ;
return TRUE ;
}
return FALSE ;
}
BOOL CALLBACK EditProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CHAR :
//做你想做的事
break;
}
return DefWindowProc(hEdit, message, wParam, lParam);
}
SetWindowsLong(hEdit, GWL_WNDPROC, EditProc);
#include <windows.h>
#include "resource.h"WNDPROC EditProc;
LRESULT CALLBACK NewProc(HWND hEdit, UINT Msg, WPARAM wParam, LPARAM lParam)
{
if (Msg == WM_KEYDOWN && wParam == VK_F1)
MessageBox(GetParent(hEdit), "F1 Pressed!", "WM_CHAR", MB_OK);
return CallWindowProc(EditProc, hEdit, Msg, wParam, lParam);
}
LRESULT CALLBACK ProcMain(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch (Msg)
{
case WM_INITDIALOG:
{
EditProc = (WNDPROC)SetWindowLong(GetDlgItem(hDlg, IDC_EDIT), GWL_WNDPROC, (LONG)NewProc);
}
break;
case WM_CLOSE:
EndDialog(hDlg, 0);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, (DLGPROC)ProcMain, 0);
return 0;
}