📄 inputdlg.h
字号:
// inputdlg.h: interface for the CInputDlg class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_INPUTDLG_H__C511A281_1524_4679_B534_FE9A1847CF72__INCLUDED_)
#define AFX_INPUTDLG_H__C511A281_1524_4679_B534_FE9A1847CF72__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define INPUT_BUFFER_SIZE 280
template <WORD t_wDlgTemplateID, int t_iType = 1, BOOL t_bCenter = TRUE>
class CInputDlg : public CDialogImplBase
{
public:
int DoModal(HWND hWndParent = ::GetActiveWindow(), LPARAM dwInitParam = NULL)
{
ATLASSERT(m_hWnd == NULL);
_Module.AddCreateWndData(&m_thunk.cd, (CDialogImplBase*)this);
int nRet = ::DialogBoxParam(_Module.GetResourceInstance(),
MAKEINTRESOURCE(t_wDlgTemplateID), hWndParent, (DLGPROC)StartDialogProc, dwInitParam);
m_hWnd = NULL;
return nRet;
}
typedef CInputDlg<t_wDlgTemplateID, t_iType, t_bCenter> thisClass;
BEGIN_MSG_MAP(thisClass)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
COMMAND_ID_HANDLER(IDOK, OnOK)
COMMAND_ID_HANDLER(IDCLOSE, OnClose)
COMMAND_ID_HANDLER(IDCANCEL, OnClose)
END_MSG_MAP()
LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/)
{
if (t_bCenter)
CenterWindow(GetParent());
LPTSTR lpText = (LPTSTR)lParam, p1, p2;
SetWindowLong(GWL_USERDATA, (LONG)lpText);
if (lpText == NULL)
return FALSE;
TCHAR tx0[INPUT_BUFFER_SIZE];
TCHAR tx1[16] = "", tx2[16] = "";
switch (t_iType)
{
case 1:
SetDlgItemText(IDC_EDITTEXT, lpText);
SendMessage(GetDlgItem(IDC_EDITTEXT), EM_SETSEL, 0, strlen(lpText));
break;
case 2:
p1 = strrchr(lpText, ':');
p2 = strrchr(p1, '-');
if (p1 != NULL)
{
strncpy(tx0, lpText, p1 - lpText);
tx0[p1 - lpText] = '\0';
}
if (p2 != NULL)
{
strncpy(tx1, p1 + 1, p2 - p1);
tx1[p2 - p1 - 1] = '\0';
strcpy(tx2, p2 + 1);
}
SetDlgItemText(IDC_EDITTEXT, tx0);
SetDlgItemText(IDC_NUMBER1, tx1);
SetDlgItemText(IDC_NUMBER2, tx2);
break;
}
return TRUE;
}
LRESULT OnOK(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
if (::GetWindowTextLength(GetDlgItem(IDC_EDITTEXT)) <= 0)
return TRUE;
LPTSTR lpText = (LPTSTR)GetWindowLong(GWL_USERDATA);
if (lpText == NULL)
{
::EndDialog(m_hWnd, FALSE);
return TRUE;
}
switch (t_iType)
{
case 1:
GetDlgItemText(IDC_EDITTEXT, lpText, INPUT_BUFFER_SIZE);
break;
case 2:
GetDlgItemText(IDC_EDITTEXT, lpText, INPUT_BUFFER_SIZE);
strcat(lpText, ":");
GetDlgItemText(IDC_NUMBER1, strrchr(lpText, '\0'), INPUT_BUFFER_SIZE - strlen(lpText));
strcat(lpText, "-");
GetDlgItemText(IDC_NUMBER2, strrchr(lpText, '\0'), INPUT_BUFFER_SIZE - strlen(lpText));
break;
}
::EndDialog(m_hWnd, TRUE);
return TRUE;
}
LRESULT OnClose(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
::EndDialog(m_hWnd, FALSE);
return TRUE;
}
};
#endif // !defined(AFX_INPUTDLG_H__C511A281_1524_4679_B534_FE9A1847CF72__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -