www.pudn.com > ntshell.rar > 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 templateclass 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 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_)