Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 23.10.2012
Сообщений: 97
1

Добавление компонентов в окно, созданное через WinApi

13.10.2014, 13:28. Показов 1704. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создается окно с помощью WinApi. Можно ли на это окно добавлять визуальные компоненты?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.10.2014, 13:28
Ответы с готовыми решениями:

Добавление в уже созданное окно ListView
В общем, есть основная база данных, которая загружается с самого начала старта программы, все...

Как через WinAPI реализовать окно?
У меня код, и в одной функции int doLauncher() { // КОД ЛАУНЧЕРА return 0; } нужно...

Как отцентрировать созданное окно?
Загружается одно окно и создает небольшое второе. Как сделать так, чтобы оно было по центру...

Как открыть уже созданное окно?
Есть два окна, первое, форма авторизации, которая вызывает главное окно в случае пройденной...

8
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
13.10.2014, 13:38 2
Да.

Добавлено через 3 минуты
Вот статья с примерами:
http://dims.karelia.ru/win32/
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.10.2014, 17:02 3
Цитата Сообщение от _Sv_ Посмотреть сообщение
Создается окно с помощью WinApi. Можно ли на это окно добавлять визуальные компоненты?
А какой смысл? Почему не использовать форму вместо WinApi- окна ?
0
0 / 0 / 0
Регистрация: 23.10.2012
Сообщений: 97
14.10.2014, 11:18  [ТС] 4
Цитата Сообщение от Avazart Посмотреть сообщение
А какой смысл? Почему не использовать форму вместо WinApi- окна ?
Мне нужно посылать и принимать сообщения, например, WM_TIMER, WM_LBUTTONDOWN. Но я не знаю, как это сделать на форме
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,432
Записей в блоге: 8
14.10.2014, 12:44 5
Лучший ответ Сообщение было отмечено _Sv_ как решение

Решение

У формы есть метод WndProc, где можно ловить все сообщения, приходящие форме. Либо назначать обработчики только на нужные события через BEGIN_MESSAGE_MAP / END_MESSAGE_MAP
2
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.10.2014, 14:20 6
Кое что можно так-же ловить через компонент TApplicationEvents
0
0 / 0 / 0
Регистрация: 23.10.2012
Сообщений: 97
14.10.2014, 20:45  [ТС] 7
Написала вот так, но срабатывает не каждый раз. Щелкнула раз 12, а насчитало только 7. В чем может быть проблема? Если нажимать медленно, то все нормально, но если быстро, то не все щелчки отлавливает
C
1
2
3
4
5
6
7
8
void __fastcall TForm1::WndProc(Messages::TMessage &Message)
{
TCustomForm::WndProc(Message);
if(Message.Msg == WM_LBUTTONDOWN ){
     lclick++;
StringGrid1->Cells[0][1]=lclick;
   }
}
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,432
Записей в блоге: 8
15.10.2014, 11:18 8
Лучший ответ Сообщение было отмечено _Sv_ как решение

Решение

Цитата Сообщение от _Sv_ Посмотреть сообщение
но если быстро, то не все щелчки отлавливает
Половину. Ибо если щелкать быстро - то распознается двойной клик. Лови вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::WndProc(Messages::TMessage &Message)
{
    TForm::WndProc(Message);
    if (Message.Msg == WM_LBUTTONDBLCLK)
    {
        lclick++;
        StringGrid1->Cells[0][1] = lclick;
    }
    else if (Message.Msg == WM_LBUTTONDOWN)
    {
        lclick++;
        StringGrid1->Cells[0][1] = lclick;
    }
}
2
43 / 43 / 12
Регистрация: 06.10.2014
Сообщений: 135
15.10.2014, 13:50 9
Цитата Сообщение от UI Посмотреть сообщение
Ибо если щелкать быстро - то распознается двойной клик.
Да. Именно так. WM_LBUTTONDBLCLK
Вольный перевод небольшой части описания
Только окна, имеющие стиль CS_DBLCLKS, могут получать сообщения WM_LBUTTONDBLCLK...
Двойной щелчок левой кнопкой мыши на самом деле генерирует последовательность из четырех сообщений: WM_LBUTTONDOWN, WM_LBUTTONUP, WM_LBUTTONDBLCLK и WM_LBUTTONUP.
0
15.10.2014, 13:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.10.2014, 13:50
Помогаю со студенческими работами здесь

Добавить QWebView на созданное QMainWindow окно
Создаем окно: QMainWindow* secondWindow = new QMainWindow(this); ...

Можно ли окно, созданное OpenWindow, сделать прозрачным?
Вопрос в теме.

Qt С++, созданное окно зависает при функции show()
Всем добрый день. У меня есть 2 класса. Первый (Chat_Client) - клиент для онлайн-чата....

Просмотреть код ресурса и запустить созданное окно
Доброго времени суток. Только недавно начали изучать работу с окнами. Задание такое: Добавьте в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru