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

📄 qssreadbotdlg.cpp

📁 空调数据多线程采集
💻 CPP
📖 第 1 页 / 共 5 页
字号:
						 WS_OVERLAPPEDWINDOW,		// 窗口风格
						 CW_USEDEFAULT,				// 
						 CW_USEDEFAULT,				// 窗口作上角坐标为缺省值
						 CW_USEDEFAULT,
						 CW_USEDEFAULT,				// 窗口宽高为缺省值
						 NULL,						// 此窗口无主窗口
						 NULL,						// 此主窗口无菜单
						 hInstance,					// 创建此窗口的应用程序的当前句柄
						 NULL ) ;					// 消息 WM_CREATE 通过 CREATESTRUCT 结构传递过来的 lParam 参数 

	if ( NULL == hWnd )
	{
		DWORD dwRet = GetLastError() ;
		return FALSE ;
	}

	
	// 显示窗口( nShowCmd )
	//ShowWindow( hWnd, SW_SHOWMAXIMIZED ) ;	// 最大化窗口
	//ShowWindow( hWnd, SW_SHOW ) ;	

	// 绘制用户区
	//UpdateWindow( hWnd ) ;
	
	SetTimer( hWnd, ID_TIMER8, uTimerElapse, NULL ) ;

	// 消息循环
	while( GetMessage( &Msg, NULL, 0, 0 ) )
	{
		TranslateMessage( &Msg ) ;
		DispatchMessage( &Msg ) ;
	}

	return Msg.wParam ;		// 消息循环结束(程序终止)时将消息返回系统
	


}

//===============================================================

LRESULT CALLBACK Thread9( void ) 
{
	HINSTANCE hInstance = AfxGetApp()->m_hInstance ;

	// 主窗口操作
	HWND hWnd = NULL ;
	LPCTSTR lpszClassName = "QssThread9" ;
	LPCTSTR lpszTitle = "QssThread9" ;

	// 设置背景画刷( WHITE_BRUSH )
    HBRUSH hBrush = (HBRUSH)GetStockObject( GRAY_BRUSH );
	HICON hIcon   = LoadIcon( NULL, IDI_APPLICATION );
	HCURSOR hCursor = LoadCursor( NULL, IDC_ARROW );

	MSG Msg;
	WNDCLASS wndClass;

	// 窗口类定义
	wndClass.cbClsExtra  = 0;
	wndClass.cbWndExtra  = 0;
	wndClass.hbrBackground = hBrush; 
	wndClass.hCursor = hCursor;
	wndClass.hIcon   = hIcon;
	wndClass.hInstance   = hInstance;
	wndClass.lpfnWndProc = (WNDPROC)OnThreadProc9;
	wndClass.lpszClassName = lpszClassName ;
	wndClass.lpszMenuName  = NULL;
	wndClass.style = CS_HREDRAW|CS_VREDRAW;    

	// 窗口类注册
	if ( !RegisterClass( &wndClass ))
	{
		MessageBeep( 0 ) ;
		return FALSE ;
	}

	// 创建窗口
	hWnd = CreateWindow( lpszClassName,				// 窗口类名
						 lpszTitle,					// 窗口实例标题名
						 WS_OVERLAPPEDWINDOW,		// 窗口风格
						 CW_USEDEFAULT,				// 
						 CW_USEDEFAULT,				// 窗口作上角坐标为缺省值
						 CW_USEDEFAULT,
						 CW_USEDEFAULT,				// 窗口宽高为缺省值
						 NULL,						// 此窗口无主窗口
						 NULL,						// 此主窗口无菜单
						 hInstance,					// 创建此窗口的应用程序的当前句柄
						 NULL ) ;					// 消息 WM_CREATE 通过 CREATESTRUCT 结构传递过来的 lParam 参数 

	if ( NULL == hWnd )
	{
		DWORD dwRet = GetLastError() ;
		return FALSE ;
	}

	
	// 显示窗口( nShowCmd )
	//ShowWindow( hWnd, SW_SHOWMAXIMIZED ) ;	// 最大化窗口
	//ShowWindow( hWnd, SW_SHOW ) ;	

	// 绘制用户区
	//UpdateWindow( hWnd ) ;
	
	SetTimer( hWnd, ID_TIMER9, uTimerElapse, NULL ) ;

	// 消息循环
	while( GetMessage( &Msg, NULL, 0, 0 ) )
	{
		TranslateMessage( &Msg ) ;
		DispatchMessage( &Msg ) ;
	}

	return Msg.wParam ;		// 消息循环结束(程序终止)时将消息返回系统
	


}

//===============================================================

LRESULT CALLBACK Thread10( void ) 
{
	HINSTANCE hInstance = AfxGetApp()->m_hInstance ;

	// 主窗口操作
	HWND hWnd = NULL ;
	LPCTSTR lpszClassName = "QssThread10" ;
	LPCTSTR lpszTitle = "QssThread10" ;

	// 设置背景画刷( WHITE_BRUSH )
    HBRUSH hBrush = (HBRUSH)GetStockObject( GRAY_BRUSH );
	HICON hIcon   = LoadIcon( NULL, IDI_APPLICATION );
	HCURSOR hCursor = LoadCursor( NULL, IDC_ARROW );

	MSG Msg;
	WNDCLASS wndClass;

	// 窗口类定义
	wndClass.cbClsExtra  = 0;
	wndClass.cbWndExtra  = 0;
	wndClass.hbrBackground = hBrush; 
	wndClass.hCursor = hCursor;
	wndClass.hIcon   = hIcon;
	wndClass.hInstance   = hInstance;
	wndClass.lpfnWndProc = (WNDPROC)OnThreadProc10;
	wndClass.lpszClassName = lpszClassName ;
	wndClass.lpszMenuName  = NULL;
	wndClass.style = CS_HREDRAW|CS_VREDRAW;    

	// 窗口类注册
	if ( !RegisterClass( &wndClass ))
	{
		MessageBeep( 0 ) ;
		return FALSE ;
	}

	// 创建窗口
	hWnd = CreateWindow( lpszClassName,				// 窗口类名
						 lpszTitle,					// 窗口实例标题名
						 WS_OVERLAPPEDWINDOW,		// 窗口风格
						 CW_USEDEFAULT,				// 
						 CW_USEDEFAULT,				// 窗口作上角坐标为缺省值
						 CW_USEDEFAULT,
						 CW_USEDEFAULT,				// 窗口宽高为缺省值
						 NULL,						// 此窗口无主窗口
						 NULL,						// 此主窗口无菜单
						 hInstance,					// 创建此窗口的应用程序的当前句柄
						 NULL ) ;					// 消息 WM_CREATE 通过 CREATESTRUCT 结构传递过来的 lParam 参数 

	if ( NULL == hWnd )
	{
		DWORD dwRet = GetLastError() ;
		return FALSE ;
	}

	
	// 显示窗口( nShowCmd )
	//ShowWindow( hWnd, SW_SHOWMAXIMIZED ) ;	// 最大化窗口
	//ShowWindow( hWnd, SW_SHOW ) ;	

	// 绘制用户区
	//UpdateWindow( hWnd ) ;
	
	SetTimer( hWnd, ID_TIMER10, uTimerElapse, NULL ) ;

	// 消息循环
	while( GetMessage( &Msg, NULL, 0, 0 ) )
	{
		TranslateMessage( &Msg ) ;
		DispatchMessage( &Msg ) ;
	}

	return Msg.wParam ;		// 消息循环结束(程序终止)时将消息返回系统
	


}

////////////////////////////////////////////////////////////////////////////////////


//================================================================================
// 
// 线程处理函数 1 处理 QSS 1 连接的数据
// 

LRESULT WINAPI OnThreadProc1( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) 
{
	int nRet = -1 ;
	HRESULT hr ;
	hWnd1 = hWnd ;

	switch( message )
	{
		case WM_CREATE:
			hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);			/// COINIT_APARTMENTTHREADED
			if ( S_OK != hr )
				AfxMessageBox("线程一组件库初始化错误!") ;

			break ;
		case WM_TIMER:
			switch( wParam ) 
			{
				case ID_TIMER1:
					nRet = QSSReadWrite( 1, strQSS[0] ) ;
					break ;
			}

			break ;
		case WM_DESTROY:
			// 
			//SendMessage( NULL, 
			if ( KillTimer( hWnd, ID_TIMER1 ) == 0 ) 
				AfxMessageBox("关闭定时器 1 错误") ;

			CoUninitialize() ;

			PostQuitMessage( 0 ) ;
			break ;

		default:
			return DefWindowProc( hWnd, message, wParam, lParam ) ;
	}

	return 0 ;

}

//================================================================================
// 
// 线程处理函数 2 处理 QSS 2 连接的数据
//
// ODBC 连接数据库

LRESULT WINAPI OnThreadProc2( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) 
{
	int nRet = -1 ;
	HRESULT hr ;
	hWnd2 = hWnd ;

	switch( message )
	{
		case WM_CREATE:
			hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);			/// COINIT_APARTMENTTHREADED
			if ( S_OK != hr )
				AfxMessageBox("线程二组件库初始化错误!") ;

			break ;
		case WM_TIMER:
			switch( wParam ) 
			{
				case ID_TIMER2:
					nRet = QSSReadWrite( 2, strQSS[1] ) ;
					break ;
			}

			break ;
		case WM_DESTROY:
			if ( KillTimer( hWnd, ID_TIMER2 ) == 0 ) 
				AfxMessageBox("关闭定时器 2 错误") ;

			CoUninitialize() ;

			PostQuitMessage( 0 ) ;
			break ;

		default:
			return DefWindowProc( hWnd, message, wParam, lParam ) ;
	}

	return 0 ;

}



//================================================================================
// 
// 线程处理函数 3 处理 QSS 3 连接的数据
//
// ODBC 连接数据库

LRESULT WINAPI OnThreadProc3( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) 
{
	int nRet = -1 ;
	HRESULT hr ;
	hWnd3 = hWnd ;

	switch( message )
	{
		case WM_CREATE:
			hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);			/// COINIT_APARTMENTTHREADED
			if ( S_OK != hr )
				AfxMessageBox("线程三组件库初始化错误!") ;

			break ;
		case WM_TIMER:
			switch( wParam ) 
			{
				case ID_TIMER3:
					//MessageBox( NULL, "WM_TIMER","",MB_OK) ;
					nRet = QSSReadWrite( 3, strQSS[2] ) ;
					break ;
			}

			break ;
		case WM_DESTROY:
			if ( KillTimer( hWnd, ID_TIMER3 ) == 0 ) 
				AfxMessageBox("关闭定时器 3 错误") ;

			CoUninitialize() ;

			PostQuitMessage( 0 ) ;
			break ;

		default:
			return DefWindowProc( hWnd, message, wParam, lParam ) ;
	}

	return 0 ;

}

//================================================================================
// 
// 线程处理函数 4 处理 QSS 4 连接的数据
//
// ODBC 连接数据库

LRESULT WINAPI OnThreadProc4( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) 
{
	int nRet = -1 ;
	HRESULT hr ;
	hWnd4 = hWnd ;

	switch( message )
	{
		case WM_CREATE:
			hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);			/// COINIT_APARTMENTTHREADED
			if ( S_OK != hr )
				AfxMessageBox("线程四组件库初始化错误!") ;

			break ;
		case WM_TIMER:
			switch( wParam ) 
			{
				case ID_TIMER4:
					//MessageBox( NULL, "WM_TIMER","",MB_OK) ;
					nRet = QSSReadWrite( 4, strQSS[3] ) ;
					break ;
			}

			break ;
		case WM_DESTROY:
			if ( KillTimer( hWnd, ID_TIMER4 ) == 0 ) 
				AfxMessageBox("关闭定时器 4 错误") ;

			CoUninitialize() ;

			PostQuitMessage( 0 ) ;
			break ;

		default:
			return DefWindowProc( hWnd, message, wParam, lParam ) ;
	}

	return 0 ;

}

//================================================================================
// 
// 线程处理函数 5 处理 QSS 5 连接的数据
//
// ODBC 连接数据库

LRESULT WINAPI OnThreadProc5( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) 
{
	int nRet = -1 ;
	HRESULT hr ;
	hWnd5 = hWnd ;

	switch( message )
	{
		case WM_CREATE:
			hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);			/// COINIT_APARTMENTTHREADED
			if ( S_OK != hr )
				AfxMessageBox("线程五组件库初始化错误!") ;

			break ;
		case WM_TIMER:
			switch( wParam ) 
			{
				case ID_TIMER5:
					//MessageBox( NULL, "WM_TIMER","",MB_OK) ;
					nRet = QSSReadWrite( 5, strQSS[4] ) ;
					break ;
			}

			break ;
		case WM_DESTROY:
			if ( KillTimer( hWnd, ID_TIMER5 ) == 0 ) 
				AfxMessageBox("关闭定时器 5 错误") ;

			CoUninitialize() ;

			PostQuitMessage( 0 ) ;
			break ;

		default:
			return DefWindowProc( hWnd, message, wParam, lParam ) ;
	}

	return 0 ;

}

//================================================================================
// 
// 线程处理函数 6 处理 QSS 6 连接的数据
//
// ODBC 连接数据库

LRESULT WINAPI OnThreadProc6( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) 
{
	int nRet = -1 ;
	HRESULT hr ;
	hWnd6 = hWnd ;

	switch( message )
	{
		case WM_CREATE:
			hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);			/// COINIT_APARTMENTTHREADED
			if ( S_OK != hr )
				AfxMessageBox("线程六组件库初始化错误!") ;

			break ;
		case WM_TIMER:
			switch( wParam ) 
			{
				case ID_TIMER6:
					//MessageBox( NULL, "WM_TIMER","",MB_OK) ;
					nRet = QSSReadWrite( 6, strQSS[5] ) ;
					break ;
			}

			break ;
		case WM_DESTROY:
			if ( KillTimer( hWnd, ID_TIMER6 ) == 0 ) 
				AfxMessageBox("关闭定时器 6 错误") ;

			CoUninitialize() ;

			PostQuitMessage( 0 ) ;
			break ;

		default:
			return DefWindowProc( hWnd, message, wParam, lParam ) ;
	}

	return 0 ;

}

//================================================================================
// 
// 线程处理函数 7 处理 QSS 7 连接的数据

⌨️ 快捷键说明

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