Программирование >>  Формирование пользовательского контейнера 

1 ... 35 36 37 [ 38 ] 39 40 41 ... 156


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++) {



1 ... 35 36 37 [ 38 ] 39 40 41 ... 156

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика