|
Программирование >> Формирование пользовательского контейнера
l.hCursor = LoadCursor(NULL, IDC ROW) ; стиль курсора l.lpszMenuName = ThreadpMenu ; главное меню wcl.cbClsExtra =0; дополнительной памяти не требуется l.clpWndExtra = 0; Делает цвет фона окна белым. WCl.hbrBackground = (HBRUSH) GetStockObject(WHITE BRUSH); Регистрирует класс окна. if (!RegisterClassEx(&wcl)) return 0; /* Теперь, когда класс окна зарегистрирован, можно создавать окно. */ hwnd = CreateWindow( wcl. IpszClassName, имя класса окна Using а Thread Control Panel , заголовок WSJDVERLAPPEDWINDOW, стиль окна - normal CWJUSEDEFAULT, координата X - пусть решает Windows CWJUSEDEFAULT, координата Y - пусть решает Windows 260, ширина 200, высота NULL, нет родительского окна NULL, нет переопределения меню класса hThisInst, дескриптор экземпляра NULL нет дополнительных аргументов hInst = hThisInst; сохраняет дескриптор экземпляра Загружает клавиши быстрого вызова. bAccel = LoadAccelerators(hThisInst, ThreadAppMenu ); Отображает окно. ShowWindow(hwnd, winMode) ,-OpdateWindow(hwnd) ; Создает цикл обработки сообщения. *hile(GetMessage(&msg, NULL, О, 0)) if (!TranslateAccelerator(hvmd, hAccel, umsg)) { TranslateMessage(&insg); трансляция клавиатурных сообщений DispatchMessageC&msg); возврат управления Windows return msg.wParam; /* Эта функция вызывается Windows и ей передаются сообщения из очереди сообщений. LRESULT CALLBACK WindowFunc (HWND hwnd, UINT message, WPARAM wParam, LPARAM 1 Param) int response; swi tch (message) { case WM COMMAND: swi tch (LOWORD (wParam)) { case IE 1 THREAD: создает потоки hThreadl = (HANDLE) beginthreadex(NULL, 0, Myrhreadl. (void *) hwnd, 0, &tidl); hThread2 = (HANDLE) beginthreadex(NULL, 0, MyThread2, (void *) hwnd, 0, &tid2); break; case IIM PANEL: активизирует панель управления ThrdCtrlPanel(hinst, hThreadl); ThrdCtrlPanel(hInst, hThread2); break; case II CEXIT: response = MessageBox(hwnd, Quit the Program? , Exit , MB YESN0); if(response == IDYES) PostQuitMessage(O); break; case IE HELP: поючносп 119 MessageBox (hvmd, FI: Help\nF2: Start Threads\nF3: Panel , Help , MB OK); break; break; case Wtl DESTROY: завершает программу PostQuitMessage(O); break; default: return DefWindowProc(hvtfnd, message, wParam, IParam); return 0; Первый поток. unsigned stdcall MyThreadl (void * param) int i; HDC hdc; for(i=0; i<MAX; i++) { wsprintf(str, Thread 1: loop # %5d , i); hdc = GetDC((HWND) param); TextOut(hdc, 1, 1, str, Istrlen(str)); ReleaseDC ((HWND) param, hdc); return 0; If Второй поток. signed stdcall bThread2 (void * param) int i; HDC hdc; for(i=0; i<MAX; i++) {
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |