#ifndef __INPUTBOX__H
#define __INPUTBOX__H
int InputBox (HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, LPTSTR lpszBuffer, DWORD dwBufferSize);
#endif //__INPUTBOX__H
#include <windows.h>
#include <tchar.h>
#include "resource.h"
#include "inputbox.h"
typedef struct InputBoxParam
{
LPCTSTR lpszTitle;
LPCTSTR lpszPrompt;
LPTSTR lpszBuffer;
DWORD cBuffer;
} INPUTBOXPARAM, *LPINPUTBOXPARAM;
INT_PTR CALLBACK DialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
UINT len = 0;
LPINPUTBOXPARAM pParam = NULL;
switch (uMsg)
{
case WM_INITDIALOG:
if (lParam)
{
pParam = reinterpret_cast <LPINPUTBOXPARAM> (lParam);
SetWindowText (hwndDlg, pParam->lpszTitle);
SetDlgItemText (hwndDlg, IDC_STATIC_PROMPT, pParam->lpszPrompt);
SetDlgItemText (hwndDlg, IDC_EDIT_INPUTBOX, pParam->lpszBuffer);
SetProp (hwndDlg, _T ("InputBoxParam"), reinterpret_cast <HANDLE> (lParam));
}
break;
case WM_COMMAND:
switch (LOWORD (wParam))
{
case IDOK:
pParam = reinterpret_cast <LPINPUTBOXPARAM> (GetProp (hwndDlg, _T ("InputBoxParam")));
if (pParam)
{
len = GetDlgItemText (hwndDlg, IDC_EDIT_INPUTBOX, pParam->lpszBuffer, pParam->cBuffer);
}
EndDialog (hwndDlg, len);
break;
case IDCANCEL:
EndDialog (hwndDlg, 0);
break;
case IDC_EDIT_INPUTBOX:
{
WORD notify = HIWORD (wParam);
if (EN_SETFOCUS == notify)
{
HWND hControl = GetDlgItem (hwndDlg, IDC_EDIT_INPUTBOX);
SendMessage (hControl, EM_SETSEL, (WPARAM) 0, (LPARAM) -1);
}
}
break;
default:
break;
}
break;
}
return 0;
}
int InputBox (HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, LPTSTR lpszBuffer, DWORD dwBufferSize)
{
INPUTBOXPARAM Param;
ZeroMemory (&Param, sizeof (INPUTBOXPARAM));
Param.lpszTitle = lpCaption;
Param.lpszPrompt = lpText;
Param.lpszBuffer = lpszBuffer;
Param.cBuffer = dwBufferSize;
INT_PTR result = DialogBoxParam ((HINSTANCE) GetModuleHandle (NULL), (LPCTSTR) IDD_INPUTBOX, NULL, DialogProc, reinterpret_cast<LPARAM> (&Param));
return result;
}
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_INPUTBOX DIALOGEX 0, 0, 274, 62
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Dialog"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "OK",IDOK,203,7,64,14
PUSHBUTTON "キャンセル",IDCANCEL,203,23,64,14
LTEXT "スタティック",IDC_STATIC_PROMPT,7,7,191,30
EDITTEXT IDC_EDIT_INPUTBOX,7,43,260,12,ES_AUTOHSCROLL
END
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by getpath.rc
//
#define IDD_INPUTBOX 101
#define IDC_STATIC_PROMPT 1001
#define IDC_EDIT_INPUTBOX 1002
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 102
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1003
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
コメント