📄 cmdshell.h
字号:
// consoleView.h : interface of the CCmdShell class
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_CONSOLEVIEW_H__1D46232F_7E9A_4370_8A2A_D091818F3CB7__INCLUDED_)
#define AFX_CONSOLEVIEW_H__1D46232F_7E9A_4370_8A2A_D091818F3CB7__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
class CCmdEditCtrl : public CWindowImpl<CCmdEditCtrl, CEdit>
{
public:
DECLARE_WND_SUPERCLASS(NULL, CEdit::GetWndClassName())
CCmdEditCtrl();
virtual ~CCmdEditCtrl();
BOOL PreTranslateMessage(MSG* pMsg);
BOOL StartCmdEditor(SOCKET sock);
BEGIN_MSG_MAP(CCmdEditCtrl)
MESSAGE_HANDLER(WM_KEYDOWN, OnKeyDown)
MESSAGE_HANDLER(WM_CHAR, OnChar)
MESSAGE_HANDLER(WM_RBUTTONDOWN, OnRButtonDown)
MESSAGE_HANDLER(WM_SOCKET_READ, OnSocketRead)
END_MSG_MAP()
// Handler prototypes (uncomment arguments if needed):
// LRESULT MessageHandler(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
// LRESULT CommandHandler(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
// LRESULT NotifyHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/)
LRESULT OnKeyDown(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
LRESULT OnChar(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
LRESULT OnRButtonDown(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
LRESULT OnSocketRead(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
LRESULT OnPaste(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
private:
typedef struct _RECORD_LIST
{
_RECORD_LIST *flink;
_RECORD_LIST *blink;
char cmd[];
} RECORD_LIST, *PRECORD_LIST;
SOCKET slave_sock;
int nCmdStartPos;
int nCmdRecord;
int nMaxCmdRecord;
PRECORD_LIST history;
void AddCmdRecord(char *cmd);
char *GetNextCmdRecord();
char *GetPrevCmdRecord();
};
class CCmdShell : public CDialogImpl<CCmdShell>
{
public:
enum { IDD = IDD_CMDSHELL };
CCmdEditCtrl m_edit;
BEGIN_MSG_MAP(CCmdShell)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
MESSAGE_HANDLER(WM_SIZE, OnSize)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
MESSAGE_HANDLER(WM_SOCKET_READ, OnSocketRead)
MESSAGE_HANDLER(WM_CONNECT_CREATED, OnConnectCreated)
MESSAGE_HANDLER(WM_CONNECT_CLOSED, OnConnectClosed)
END_MSG_MAP()
// Handler prototypes (uncomment arguments if needed):
// LRESULT MessageHandler(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
// LRESULT CommandHandler(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
// LRESULT NotifyHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/)
LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
// center the dialog on the screen
CenterWindow();
m_edit.SubclassWindow(GetDlgItem(IDC_CMDEDIT));
// register object for message filtering and idle updates
CMessageLoop* pLoop = _Module.GetMessageLoop();
ATLASSERT(pLoop != NULL);
return TRUE;
}
LRESULT OnSize(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/)
{
::MoveWindow(GetDlgItem(IDC_CMDEDIT), 7, 7, LOWORD(lParam) - 14, HIWORD(lParam) - 14, TRUE);
return TRUE;
}
LRESULT OnSetFocus(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
::SetFocus(GetDlgItem(IDC_CMDEDIT));
return TRUE;
}
LRESULT OnConnectCreated(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
m_edit.StartCmdEditor((SOCKET)wParam);
return TRUE;
}
LRESULT OnConnectClosed(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
m_edit.StartCmdEditor(INVALID_SOCKET);
return TRUE;
}
LRESULT OnSocketRead(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/)
{
return m_edit.SendMessage(WM_SOCKET_READ, wParam, lParam);
}
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_CONSOLEVIEW_H__1D46232F_7E9A_4370_8A2A_D091818F3CB7__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -