Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
Manip_Threads.cpp
Upload User: dq031136
Upload Date: 2022-08-08
Package Size: 802k
Code Size: 3k
Category:
Visual C++ Books
Development Platform:
C++ Builder
- #include <genstub.cpp>
- // Hot key values.
- #define RESUME_KEY 101
- #define SUSPEND_KEY 102
- #define TERMINATE_KEY 103
- DWORD WINAPI ThreadProc(HWND hWnd)
- {
- TCHAR szBuffer[128];
- wsprintf( szBuffer, "Starting Thread ID = %lX", GetCurrentThreadId() );
- SetWindowText( hWnd, szBuffer );
- Sleep( 5000 );
- wsprintf( szBuffer, "Thread %lX finished execution", GetCurrentThreadId() );
- SetWindowText( hWnd, szBuffer );
- ExitThread( TRUE );
- }
- LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- static HANDLE hChild = 0;
- switch (uMsg)
- {
- case WM_CREATE:
- RegisterHotKey(hWnd, RESUME_KEY, MOD_ALT, 'R');
- RegisterHotKey(hWnd, SUSPEND_KEY, MOD_ALT, 'S');
- RegisterHotKey(hWnd, TERMINATE_KEY, MOD_ALT, 'K');
- return DefWindowProc( hWnd, uMsg, wParam, lParam );
- case WM_DESTROY:
- UnregisterHotKey(hWnd, RESUME_KEY);
- UnregisterHotKey(hWnd, SUSPEND_KEY);
- UnregisterHotKey(hWnd, TERMINATE_KEY);
- PostQuitMessage( 0 );
- break;
- case WM_HOTKEY:
- {
- TCHAR szBuffer[128];
- DWORD dwExitCodeThread = STILL_ACTIVE;
- lstrcpy( szBuffer, "No Child Thread Running" );
- if (hChild)
- GetExitCodeThread(hChild, &dwExitCodeThread);
- if (dwExitCodeThread==STILL_ACTIVE)
- switch (wParam)
- {
- case SUSPEND_KEY:
- wsprintf( szBuffer, "Suspending thread %lX", hChild );
- SuspendThread(hChild);
- break;
- case RESUME_KEY:
- wsprintf( szBuffer, "Resuming thread %lX", hChild );
- ResumeThread(hChild);
- break;
- case TERMINATE_KEY:
- wsprintf( szBuffer, "Terminating thread %lX", hChild );
- TerminateThread(hChild, FALSE);
- break;
- }
- SetWindowText( hWnd, szBuffer );
- }
- break;
- case WM_COMMAND: // Process menu items.
- switch ( LOWORD( wParam ) )
- {
- case IDM_TEST:
- { // Start a thread. Only one thread at at time.
- DWORD dwExitCodeThread;
- DWORD dwChild;
- if (hChild)
- GetExitCodeThread( hChild, &dwExitCodeThread );
- if (dwExitCodeThread!=STILL_ACTIVE)
- hChild = CreateThread(NULL, 0, ThreadProc, hWnd, 0, &dwChild );
- }
- break;
- case IDM_EXIT:
- DestroyWindow( hWnd );
- break;
- }
- break;
- default:
- return DefWindowProc( hWnd, uMsg, wParam, lParam );
- }
- return NULL;
- }