50 lines
1.3 KiB
C++
50 lines
1.3 KiB
C++
#include "stdafx.h"
|
|
#include "Resource.h"
|
|
|
|
extern HINSTANCE g_radardll_hinst;
|
|
|
|
int g_dlgpk_vkey = 0;
|
|
HWND g_dlgpk_hdlg = NULL;
|
|
WNDPROC g_dlgpk_oldproc = NULL;
|
|
|
|
LRESULT CALLBACK DlgPressKey_StaticDlgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
|
|
{
|
|
if( uMsg == WM_KEYUP )
|
|
{
|
|
g_dlgpk_vkey = (int)wParam;
|
|
PostMessage( g_dlgpk_hdlg, WM_CLOSE, 0, 0 );
|
|
return 0;
|
|
}
|
|
return CallWindowProc( g_dlgpk_oldproc, hWnd, uMsg, wParam, lParam );
|
|
}
|
|
|
|
INT_PTR CALLBACK DlgPressKey_DlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam )
|
|
{
|
|
HWND hwndSt = NULL; wParam; lParam;
|
|
switch( uMsg )
|
|
{
|
|
case WM_INITDIALOG:
|
|
g_dlgpk_vkey = 0;
|
|
g_dlgpk_hdlg = hDlg;
|
|
hwndSt = GetDlgItem( hDlg, IDC_APPLY );
|
|
g_dlgpk_oldproc = (WNDPROC)(void *)(LONG_PTR)GetWindowLongPtr( hwndSt, GWLP_WNDPROC );
|
|
SetWindowLongPtr( hwndSt, GWLP_WNDPROC, (LONG_PTR)(void *)DlgPressKey_StaticDlgProc );
|
|
break;
|
|
case WM_CLOSE:
|
|
if( g_dlgpk_vkey == 0 )EndDialog( hDlg, IDCANCEL );
|
|
else EndDialog( hDlg, IDOK );
|
|
break;
|
|
default: return FALSE; break;
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
int DlgPressKey_InputPressKey( HWND hWndParent )
|
|
{
|
|
g_dlgpk_vkey = 0;
|
|
INT_PTR ret = DialogBoxParam( g_radardll_hinst, MAKEINTRESOURCE(IDD_PRESSKEY),
|
|
hWndParent, DlgPressKey_DlgProc, 0 );
|
|
if( ret == IDCANCEL ) return 0;
|
|
return g_dlgpk_vkey;
|
|
}
|