![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
radist |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 7.1.2007 Где: РОССИЯ Репутация: нет Всего: нет |
Здравствуйте!
Пишу программу где создаются дочерние и временные окна (этот кусок программы я написал), нужно: 1) после нажатия правой кнопки мыши - 3 раза "мигает" дочернее окно; 2) после нажатия левой клавиши мыши 4 раза "мигает" временное окно; 3) при этом окна выдают различные звуковые сигналы Вот мой кусок программы: #include <windows.h> #include <stdio.h> #pragma hdrstop //Задание //В левом верхнем (правом нижнем) углу рабочей области окна создать временное //(дочернее) окно. После нажатия левой клавиши мыши 4 раза "мигает" временное //окно, а после нажатия правой - 3 раза "мигает" дочернее окно. При этом окна //выдают различные звуковые сигналы. //--------------------------------------------------------------------------- #pragma argsused LRESULT CALLBACK HelloWorldWndProc (HWND,UINT,UINT,LONG); WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { HWND hWnd; // дискриптор окна 1 HWND hWnd1; // дискриптор временного окна HWND hWnd2; // дискриптор дочернего окна WNDCLASS WndClass; //структура содержащая набор ресурсов класса MSG Msg; //стуктура в которую помещается сообщения из очереди char szClassName[]="helloWord"; int x, y, x1,y1; //создаем и регестрируем класс //заполняем структуру типа WNDCLASS WndClass.style=CS_HREDRAW|CS_VREDRAW; WndClass.lpfnWndProc=HelloWorldWndProc; WndClass.cbClsExtra=0; WndClass.cbWndExtra=0; WndClass.hInstance=hInstance; WndClass.hIcon=LoadIcon (NULL,IDI_APPLICATION); WndClass.hCursor=LoadCursor (NULL,IDC_ARROW); WndClass.hbrBackground=(HBRUSH) GetStockObject(WHITE_BRUSH); WndClass.lpszClassName=NULL; WndClass.lpszClassName=szClassName; //регистрируем созданный класс if (!RegisterClass(&WndClass)) {MessageBox (NULL,"невозможно зарегестрировать класс","Ошибка!!!", MB_OK); return 0; } //создаем окно hWnd=CreateWindow (szClassName, "Домашняя работа №1",WS_OVERLAPPEDWINDOW, 0, 0, 600,600, NULL, NULL, hInstance,NULL); if (!hWnd) {MessageBox (NULL,"невозможно создать ГЛАВНОЕ окно","Ошибка!!!", MB_OK); return 0;} //вывод окна ShowWindow (hWnd, nCmdShow); UpdateWindow (hWnd); RECT Rect; GetWindowRect (hWnd, &Rect); x=Rect.left; y=Rect.top; //создаем временное окно hWnd1=CreateWindow (szClassName, "Окно №2",WS_OVERLAPPEDWINDOW, x,y,200,200, NULL,NULL, hInstance,NULL); if (!hWnd1) {MessageBox (NULL,"невозможно создать временное окно","Ошибка!!!", MB_OK); return 0;} //вывод временного окна ShowWindow (hWnd1, nCmdShow); UpdateWindow (hWnd1); //создаем дочернее окно GetWindowRect (hWnd, &Rect); char S[200]; x1=Rect.right; y1=Rect.bottom; sprintf(S,"x=%d y=%d",x1,y1); MessageBox (NULL,S,"коорд пр ниж угла", MB_OK) ; int w,h; w=200;h=200; x1=x1-w-5; y1=y1-h-34; hWnd2=CreateWindow (szClassName, "Окно №3",WS_CHILDWINDOW|WS_CAPTION, x1,y1, w,h, hWnd,NULL, hInstance,NULL); if (!hWnd2) {MessageBox (NULL,"невозможно создать дочернее окно","Ошибка!!!", MB_OK); return 0;} //вывод дочернего окна ShowWindow (hWnd2, nCmdShow); UpdateWindow (hWnd2); //запуск while (GetMessage (&Msg,NULL, 0,0)) {TranslateMessage (&Msg); DispatchMessage(&Msg);} return Msg.wParam;} //реализация оконной функции LRESULT CALLBACK HelloWorldWndProc (HWND hWnd, UINT Message, UINT wParam, LONG IParam) {HDC hDC; PAINTSTRUCT PaintStruct; RECT Rect; switch (Message) {case WM_PAINT: hDC=BeginPaint (hWnd, &PaintStruct); GetClientRect (hWnd,&Rect); DrawText (hDC, "Привет!!!",-1, &Rect, DT_SINGLELINE|DT_CENTER|DT_VCENTER); EndPaint (hWnd,&PaintStruct); return 0; case WM_DESTROY: PostQuitMessage (0); return 0; } return DefWindowProc (hWnd, Message,wParam,IParam); } |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |