Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++Builder->WinAPI] Работа с окнами 
:(
    Опции темы
radist
Дата 23.4.2008, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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);
}
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0882 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.