⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chatclient.c

📁 PrintNow is a 32-bit application that runs only under Windows 95 or Windows NT 4.0. It allows your
💻 C
📖 第 1 页 / 共 2 页
字号:
		if(ret == 0)
			MessageBox(hwnd, "Could not SetTimer()!", "Error", MB_OK | MB_ICONEXCLAMATION);
		
        
		

		
		
		
		
		hInstance = (HINSTANCE) GetWindowLong( hwnd, GWL_HINSTANCE );
		//接收显示
		hwndReceiveEdit = CreateWindow( TEXT("edit"), NULL,
			WS_CHILD | WS_VISIBLE | WS_DISABLED | WS_HSCROLL | WS_VSCROLL | WS_BORDER
			| ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_LEFT,
			0, 0, 0, 0, hwnd, (HMENU) ID_RECEIVEEDIT, hInstance, NULL );
		//发送显示
		hwndSendEdit = CreateWindow( TEXT("edit"), NULL,
			WS_CHILD | WS_VISIBLE | WS_DISABLED | WS_HSCROLL | WS_VSCROLL | WS_BORDER
			| ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_LEFT,
			0, 0, 0, 0, hwnd, (HMENU) ID_SENDEDIT, hInstance, NULL );
		//发送按钮
		hwndButtonSend = CreateWindow( TEXT("button"), TEXT("发送"),
			WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON,
			0,0,0,0,
			
			hwnd, (HMENU) ID_BUTTONSEND, hInstance, NULL );
		//接收文件按钮
		hwndButtonRecvFile = CreateWindow( TEXT("button"), TEXT("接收文件"),
			WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
			0,0,0,0,
		
			hwnd, (HMENU) ID_BUTTONRECVFILE, hInstance, NULL );

		//设置端口号
		hwndServPort=CreateWindow( TEXT("edit"), "127.0.0.1",
			WS_CHILD | WS_VISIBLE | WS_BORDER
			| ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_LEFT,
			0, 0, 0, 0, hwnd, (HMENU) ID_SERVPORT, hInstance, NULL );
		//连接按钮
		hwndButtonConn=CreateWindow( TEXT("button"), TEXT("连接"),
			WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
			0,0,0,0,
			
			hwnd, (HMENU) ID_BUTTONCONN, hInstance, NULL );

		//发送文件按钮

		hwndSendFile=CreateWindow( TEXT("button"), TEXT("发送文件"),
			WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
			0,0,0,0,
			
			hwnd, (HMENU) ID_BUTTONSENDFILE, hInstance, NULL );
		
		
		
		return 0;
		
	case WM_SIZE:
		cxClient = LOWORD( lParam );
		cyClient = HIWORD( lParam );
		
		hpen = CreatePen( PS_DOT, 1, RGB(58,110,165) );
		hrgnx = CreateEllipticRgn(  90, 130, 490, 280 );
		hrgny = CreateEllipticRgn( 215,   5, 365, 405 );
		CombineRgn( hrgn, hrgnx, hrgny, RGN_XOR );
		
		DeleteObject( hrgnx );
		DeleteObject( hrgny );
		
		MoveWindow( hwndReceiveEdit, LOWORD(lParam)/2, 0, LOWORD(lParam)/2,2*HIWORD(lParam)/5,  TRUE );
		MoveWindow( hwndSendEdit, LOWORD(lParam)/2, 3*HIWORD(lParam)/5, LOWORD(lParam)/2, HIWORD(lParam)/5, TRUE );
		MoveWindow( hwndButtonSend, LOWORD(lParam)/2,4*HIWORD(lParam)/5+10,80,30, TRUE );
		MoveWindow( hwndButtonRecvFile, LOWORD(lParam)/2+100,4*HIWORD(lParam)/5+10,80,30, TRUE );
		MoveWindow( hwndServPort, LOWORD(lParam)/2+100,3*HIWORD(lParam)/5-50,150,30, TRUE );
		MoveWindow( hwndButtonConn, LOWORD(lParam)/2+300,3*HIWORD(lParam)/5-50,80,30, TRUE );
		MoveWindow( hwndSendFile, LOWORD(lParam)/2+200,4*HIWORD(lParam)/5+10,80,30, TRUE );
		
		
		return 0;
	case WM_SOCKET:
		wEvent = WSAGETSELECTEVENT(lParam);
		wError = WSAGETSELECTERROR(lParam);
		
		switch( wEvent )
		{
		case FD_CONNECT:
			if( wError )
			{
				MessageBox( hwnd, "Connect Error!", "Client", MB_ICONERROR | MB_OK );
				return 0;
			}
			
			EnableWindow( hwndSendEdit, TRUE );
			EnableWindow( hwndReceiveEdit, TRUE );
			return 0;
			
		case FD_READ:
			if( wError )
			{
				MessageBox( hwnd, "Read Error!", "Client", MB_ICONERROR | MB_OK );
				return 0;
			}
			
			recv( remote_server, szReceive, sizeof(szReceive)-1, 0 );
			//设置显示方式
			if(strlen(szReceive)<1000)
			{
			_strtime( tbuffer ); 
			
			strcat(szShow,szReceive);
			strcat(szShow,"    :Server ");
			strcat(szShow,tbuffer);
		strcat(szShow,"\r\n");
			SetWindowText( hwndReceiveEdit, szShow );
			}
			return 0;
		}
		return 0;
		
		
		case WM_SETFOCUS:
			SetFocus( hwndSendEdit );
			return 0;
			
		case WM_COMMAND:
			//发送消息按钮被单击
			if(( LOWORD(wParam) == ID_BUTTONSEND )&&( HIWORD(wParam) == BN_CLICKED ))
			{
				GetWindowText( hwndSendEdit, szSend, GetWindowTextLength( hwndSendEdit ) + 1 );
				if(GetWindowTextLength( hwndSendEdit )==0)
					MessageBox(NULL,"不能发空消息","Error!",MB_OK);
				else
					send( remote_server, szSend, strlen(szSend)+1, 0 );
				SetWindowText(hwndSendEdit,NULL);
			}
			//连接按钮被单击
			if(LOWORD(wParam) == ID_BUTTONCONN )
				if( HIWORD(wParam) == BN_CLICKED )
				{
					GetWindowText( hwndServPort, SERVER_ADDR, GetWindowTextLength(  hwndServPort ) + 1 );
					if( nError = WSAStartup( MAKEWORD(2,0), &WSAData ) )
					{
						MessageBox( hwnd, "WinSock Startup Error!", "Client", MB_ICONERROR | MB_OK );
						
						return TRUE;
					}
					
					remote_server = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
					if( remote_server == INVALID_SOCKET )
					{
						MessageBox( hwnd, "Socket Creation Error!", "Client", MB_ICONERROR | MB_OK );
						
						WSACleanup();
						return TRUE;
					}
					
					if( SOCKET_ERROR == WSAAsyncSelect( remote_server, hwnd, 
						WM_SOCKET, FD_CONNECT | FD_READ ) )
					{
						MessageBox( hwnd, "WSAAsyncSelect Error!", "Client", MB_ICONERROR | MB_OK );
						
						closesocket( remote_server );
						WSACleanup();
						return TRUE;
					}
					
					server.sin_family = AF_INET;
					server.sin_port = htons( SERVER_PORT );
					server.sin_addr.S_un.S_addr = inet_addr( SERVER_ADDR );
					connect( remote_server, (struct sockaddr *)&server, sizeof(server) );
					if( WSAGetLastError() != WSAEWOULDBLOCK )
					{
						MessageBox( hwnd, "Connect Error:Would Block!", "Client", MB_ICONERROR | MB_OK );
						
						closesocket( remote_server );
						WSACleanup();
						return 0;
					}
				}
				

				//发送文件按钮被单击
				if( LOWORD(wParam) == ID_BUTTONSENDFILE)
					if( HIWORD(wParam) == BN_CLICKED )
					{
						GetOpenFileName(&sendfile);
						hfsend = CreateFile(sendfile.lpstrFile, GENERIC_READ,
							0, (LPSECURITY_ATTRIBUTES) NULL,
							OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
							(HANDLE) NULL);
						
							SetFilePointer(hfsend,0,NULL,FILE_BEGIN);
						
						
						
						
						
						dwFileSize = GetFileSize(hfsend, NULL);
						ReadFile(hfsend, szChar,dwFileSize,  &dwRead, NULL);
						
						send( remote_server, szChar, dwFileSize, 0 );
						CloseHandle(hfsend);
						
						
						
						
					}
					//接收文件按钮被单击

				if((LOWORD(wParam) == ID_BUTTONRECVFILE )&&
					( HIWORD(wParam) == BN_CLICKED ))
				{
					
					if(!szReceive)
						MessageBox(NULL,"无文件传送过来","Error",MB_OK);
					
					else
					{
						GetSaveFileName(&ofn);
						hf = CreateFile(szFileName, GENERIC_READ|GENERIC_WRITE,
							0, (LPSECURITY_ATTRIBUTES) NULL,
							OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
							(HANDLE) NULL);
						WriteFile(hf,szReceive,strlen(szReceive)+1,&dwWrite,NULL);
						SetFilePointer( hf, 0, NULL, FILE_END ); 
					
						
						
					}
					CloseHandle(hf);
					
				}
				
				
				
				switch(LOWORD(wParam))
				{
				case ID_EXIT:
					PostMessage(hwnd, WM_CLOSE, 0, 0);
				case IDR_ABOUT:
					DialogBox(GetModuleHandle(NULL), 
						MAKEINTRESOURCE(IDD_ABOUT), hwnd, AboutDlgProc);
				}
				
			
				
				return 0;
				
				
				
				case WM_PAINT:
					{
					
						
						PAINTSTRUCT ps;
						HDC hdc = BeginPaint(hwnd, &ps);
						
						
						
						
					
					 
						//显示小球
						DrawBall(hdc, &rcClient);
						
						
						SelectObject( hdc, hpen );
						SelectClipRgn( hdc, hrgn);
						//显示背景
						for( x = cxClient/100; x < cxClient; x += cxClient/100 )
						{
							MoveToEx( hdc, x, 0, NULL );
							LineTo( hdc, x, cyClient );
						}
						
						for( y = cyClient/100; y < cyClient; y += cyClient/100 )
						{
							MoveToEx( hdc, 0, y, NULL );
							LineTo( hdc, cxClient, y );
						}
						
						
						EndPaint(hwnd, &ps);
					}
					break;
				case WM_TIMER:
					{
						
						HDC hdc = GetDC(hwnd);
						
						
						
						UpdateBall(&rcClient);
						DrawBall(hdc, &rcClient);
						
						ReleaseDC(hwnd, hdc);
					}
					break;
					
				case WM_DESTROY:
					KillTimer(hwnd, ID_TIMER);
					closesocket( remote_server );
					WSACleanup();
					
					PostQuitMessage( 0 );
					return 0;
	}
	
	return DefWindowProc( hwnd, message, wParam, lParam );
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -