📄 tcpclien.cpp
字号:
EnableMenuItem(hMenu,IDM_FILE_SAVEAS, MF_BYCOMMAND | MF_GRAYED);
EnableMenuItem(hMenu,IDM_FILE_PRINT, MF_BYCOMMAND | MF_GRAYED);
EnableMenuItem(hMenu,IDM_FILE_PRINTSETUP, MF_BYCOMMAND | MF_GRAYED);
EnableMenuItem(hMenu,IDM_EDIT_UNDO, MF_BYCOMMAND | MF_GRAYED);
EnableMenuItem(hMenu,IDM_EDIT_CUT, MF_BYCOMMAND | MF_GRAYED);
EnableMenuItem(hMenu,IDM_EDIT_COPY, MF_BYCOMMAND | MF_GRAYED);
EnableMenuItem(hMenu,IDM_EDIT_PASTE, MF_BYCOMMAND | MF_GRAYED);
EnableMenuItem(hMenu,IDM_EDIT_PASTELINK, MF_BYCOMMAND | MF_GRAYED);
EnableMenuItem(hMenu,IDM_EDIT_PASTELINKS, MF_BYCOMMAND | MF_GRAYED);
EnableMenuItem(hMenu,IDM_WINSOCK_DISCONNECT, MF_BYCOMMAND | MF_GRAYED);
RECT rcClient = { 10, 10, 10, 10};
GetClientRect(hWnd,&rcClient);
unsigned int height = (rcClient.bottom - rcClient.top) /20;
unsigned int width = (rcClient.right - rcClient.left) /20;
rcClient.left = rcClient.right - (5 * width);
rcClient.top = rcClient.bottom - (5 * height);
rcClient.right = width * 2;
rcClient.bottom = height + (height/2);
HWND hWndButton = CreateWindow(TEXT("BUTTON"),"Cancel",
WS_CHILD | WS_TABSTOP | BS_PUSHBUTTON,
rcClient.left, rcClient.top,
rcClient.right, rcClient.bottom,
hWnd,
(HMENU)1000,
hInstApp,
NULL);
ShowWindow(hWndButton,SW_SHOW);
rcClient.left -= (10 * width);
HWND hWndButton1 = CreateWindow(TEXT("BUTTON"),"&Connect",
WS_CHILD | WS_TABSTOP | BS_DEFPUSHBUTTON,
rcClient.left, rcClient.top,
rcClient.right, rcClient.bottom,
hWnd,
(HMENU)1001,
hInstApp,
NULL);
ShowWindow(hWndButton1,SW_SHOW);
rcClient.top -= (height * 10);
HWND hWndStaticStatus = CreateWindow(TEXT("STATIC"),"Status:",
WS_CHILD | WS_TABSTOP | SS_LEFT,
rcClient.left, rcClient.top,
rcClient.right, rcClient.bottom,
hWnd,
(HMENU)1001,
hInstApp,
NULL);
ShowWindow(hWndStaticStatus,SW_SHOW);
return FORWARD_WM_CREATE(hWnd, lpCreateStruct, DefWindowProc);
}
//Message cracker OnCommand which is for WM_COMMAND
//
//This routine is used to handle the user selection from the main menu
//
void TCPCLIENT_OnCommand(HWND hWnd,int wmID, HWND hWndCtl, UINT wmEvent)
{
switch (wmID) {
case IDM_HELP_ABOUT:
{
FARPROC lpProcAbout = MakeProcInstance((FARPROC)About, hInstApp);
DialogBox(TCPClientAppObject.hInstApp, // current instance
MAKEINTRESOURCE(IDD_ABOUTBOX), // dlg resource to use
hWnd, // parent handle
(DLGPROC)lpProcAbout); // About() instance address
FreeProcInstance(lpProcAbout);
}
break;
case IDM_FILE_EXIT:
DestroyWindow (hWnd);
break;
case IDM_HELP_TOPICS:
if (!WinHelp (hWnd, TEXT("TCPClient.HLP"),HELP_FINDER,(DWORD)0)){
MessageBox (GetFocus(),
TEXT("Unable to activate help"),
szAppName, MB_SYSTEMMODAL|MB_OK|MB_ICONHAND);
}
break;
case IDM_FILE_NEW:
break;
case IDM_FILE_OPEN:
break;
case IDM_FILE_SAVE:
break;
case IDM_FILE_SAVEAS:
break;
case IDM_EDIT_UNDO:
break;
case IDM_EDIT_CUT:
break;
case IDM_EDIT_COPY:
break;
case IDM_EDIT_PASTE:
break;
case IDM_EDIT_PASTELINK:
break;
case IDM_EDIT_PASTELINKS:
break;
case IDM_WINSOCK_CONNECT:
m_pClient = new CWClient;
if (m_pClient->GetCurrentSocketState() == eWSInitialized){
int iRet = m_pClient->ConnectToServer(constPortNo, NULL, hWnd);
if (iRet == 0){
HMENU hMenu = GetMenu(hWnd);
EnableMenuItem(hMenu,IDM_WINSOCK_DISCONNECT,
MF_BYCOMMAND | MF_ENABLED);
EnableMenuItem(hMenu, IDM_WINSOCK_CONNECT,
MF_BYCOMMAND | MF_GRAYED);
}
}
break;
case IDM_WINSOCK_DISCONNECT:
if (m_pClient != NULL){
delete m_pClient;
m_pClient = NULL;
HMENU hMenu = GetMenu(hWnd);
EnableMenuItem(hMenu, IDM_WINSOCK_CONNECT,
MF_BYCOMMAND | MF_ENABLED);
EnableMenuItem(hMenu, IDM_WINSOCK_DISCONNECT,
MF_BYCOMMAND | MF_GRAYED);
}
break;
default:
FORWARD_WM_COMMAND(hWnd,wmID,hWndCtl,wmEvent, DefWindowProc);
}
}
void TCPCLIENT_OnRButtonDown(HWND hWnd,BOOL fDoubleClick,int x,int y, UINT uflags)
{
MessageBox(hWnd,TEXT("Context Menu"),TEXT("RButtonDown"),MB_OK);
FORWARD_WM_RBUTTONDOWN(hWnd,fDoubleClick,x,y,uflags, DefWindowProc);
}
void TCPCLIENT_OnNCRButtonUp(HWND hWnd,int x,int y, UINT uflags)
{
if (TCPClientAppObject.TCPClientAppType.IsWindows9x())
if (SendMessage(hWnd, WM_NCHITTEST,0,MAKELPARAM(x,y)) == HTSYSMENU)
MessageBox(hWnd,TEXT("NC System Menu"),TEXT("NCRButtonUp"),MB_OK);
else
MessageBox(hWnd,TEXT("NCContext Menu"),TEXT("NCRButtonUp"),MB_OK);
FORWARD_WM_NCRBUTTONUP(hWnd,x,y,uflags, DefWindowProc);
}
//Received from Plug and Play when we are told that our display has changed
//fChanged is TRUE if the display has changed and x and y are the new screen size
//fChanged is FALSE if the display is changing and x and y are the original screen size
//
void TCPCLIENT_OnDisplayChange(HWND hWnd, BOOL fChanged, int x, int y)
{
FORWARD_WM_DISPLAYCHANGE(hWnd, fChanged,x,y,DefWindowProc);
}
void TCPCLIENT_OnEvent(HWND hWnd, WPARAM wParam, LPARAM lParam)
{
WS_TRACE0("Event received\n");
int iEvent = WSAGETSELECTEVENT(lParam);
int iError = WSAGETSELECTERROR(lParam);
SOCKET s = (SOCKET)wParam;
switch (iEvent){
case FD_READ:
OnRead(s, iEvent, iError);
break;
case FD_WRITE:
OnWrite(s, iEvent, iError);
break;
case FD_CLOSE:
OnClose(s, iEvent, iError);
break;
case FD_OOB:
OnOutOfBand(s, iEvent, iError);
break;
case FD_CONNECT:
OnConnect(s, iEvent, iError);
break;
default:
WS_TRACE1("Unknown Event %u",(LPCTSTR)iEvent);
break;
}
}
void OnRead(SOCKET s, int iEvent, int iError)
{
WS_TRACE0("Read Event\n");
}
void OnWrite(SOCKET s, int iEvent, int iError)
{
WS_TRACE0("Write Event\n");
TCHAR szTestData[250];
int err;
for (int i=0;i<10;i++){
wsprintf(szTestData,"TestData %u",i);
err = m_pClient->send(szTestData, lstrlen(szTestData),0);
if (err < 0){
WS_TRACE0("Send Error: ");
m_pClient->PrintError();
return;
}
}
}
void OnClose(SOCKET s, int iEvent, int iError)
{
WS_TRACE0("Close Event\n");
}
void OnOutOfBand(SOCKET s, int iEvent, int iError)
{
WS_TRACE0("Out of Band Event\n");
}
void OnConnect(SOCKET s, int iEvent, int iError)
{
WS_TRACE0("Connect Event\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -