С Новым годом! Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
60 / 60 / 7
Регистрация: 16.05.2010
Сообщений: 632
1

Список не реагирует на нажатия

22.04.2012, 13:44. Показов 903. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
При попытке выбора элемента списка программа вылетает(не зависает,а именно прерывается отладка),при этом проблемы только принажатии на элемент списка
основной файл
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#include"StdAfx.h"
#include"resource.h"
 
#include<string>
using std::string;
 
 
#pragma comment(lib,"comctl32.lib")
 
LRESULT CALLBACK ListBoxExampleWndProc(HWND,UINT,WPARAM,LPARAM);
 
BOOL CALLBACK ListBoxDialogProc(HWND,UINT,WPARAM,LPARAM);
 
HINSTANCE hInst;
 
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
                    LPSTR lpszCmdLine,int nCmdShow)
{
    HWND hWnd;
    MSG Msg;
    WNDCLASS WndClass;
    CHAR szClassName[] = "ListExample";
 
    hInst = hInstance;
    InitCommonControls();
 
    WndClass.style = CS_VREDRAW | CS_HREDRAW;
    WndClass.lpfnWndProc = ListBoxExampleWndProc;
    WndClass.cbClsExtra = 0;
    WndClass.cbWndExtra = 0;
    WndClass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
    WndClass.hCursor = LoadCursor(NULL,IDC_ARROW);
    WndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    WndClass.hInstance = hInst;
    WndClass.lpszMenuName = MAKEINTRESOURCE(ListBoxMenu);
    WndClass.lpszClassName = szClassName;
 
    if(!RegisterClass(&WndClass))
    {
        MessageBox(NULL,"Cannot register class","Error",MB_OK);
        return 0;
    }
 
    hWnd = CreateWindow(szClassName,"ListBox Example",
                        WS_OVERLAPPEDWINDOW,
                        CW_USEDEFAULT,CW_USEDEFAULT,
                        CW_USEDEFAULT,CW_USEDEFAULT,
                        NULL,NULL,hInst,NULL);
 
    if(!hWnd)
    {
        MessageBox(NULL,"Cannot ctreate a window","Error",MB_OK);
        return 0;
    }
 
    ShowWindow(hWnd,nCmdShow);
    UpdateWindow(hWnd);
 
    while(GetMessage(&Msg,NULL,0,0))
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
 
    return Msg.wParam;
 
}
 
 
LRESULT CALLBACK ListBoxExampleWndProc(HWND hWnd,UINT Message,
                    WPARAM wParam,LPARAM lParam)
{
    switch(Message)
    {
    case WM_COMMAND:
 
        switch(LOWORD(wParam))
        {
        case IDM_DISPLAYDIALOG:
            DialogBox(hInst,MAKEINTRESOURCE(ListBox),hWnd,(DLGPROC)ListBoxDialogProc);
            break;
        case IDM_EXIT:
            SendMessage(hWnd,WM_CLOSE,0,0);
            break;
        }
 
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
 
    return DefWindowProc(hWnd,Message,wParam,lParam);
 
}
 
 
BOOL CALLBACK ListBoxDialogProc(HWND hDlg,UINT Message,
                            WPARAM wParam,LPARAM lParam)
{
    int i;
 
    LPSTR strItems[12] = {"а","б","в",
                        "г","д","е",
                        "ё","ж","з",
                        "и","й","к"};
    string message("Message about ");
    string strItem;
    static HWND hListBox;
 
 
    switch(Message)
    {
    case WM_INITDIALOG:
        hListBox = GetDlgItem(hDlg,ID_MYLISTBOX);
 
        for(i = 0;i < 12;i++)
            SendMessage(hListBox,LB_ADDSTRING,
                        (WPARAM)0,(LPARAM)strItems[i]);
 
        return true;
        
    case WM_COMMAND:
        switch(LOWORD(wParam))
        {
        case ID_MYLISTBOX:
            if(HIWORD(wParam) == LBN_SELCHANGE)
            {
                strItem = strItems[0];
                SendMessage(hListBox,LB_GETTEXT,SendMessage(hListBox,
                    LB_GETCURSEL,0,0),(LPARAM)strItem.c_str());
                message += strItem;
                SendDlgItemMessage(hDlg,ID_STATUSBAR,SB_SETTEXT,
                                    (WPARAM)0,(LPARAM)message.c_str());
            }
            break;
        case ID_CANCEL:
            EndDialog(hDlg,0);
            break;
        }
 
    case WM_CLOSE:
        EndDialog(hDlg,0);
 
    }
 
    return false;
}
Файл ресурсов
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// Menu
//
 
ListBoxMenu MENU
BEGIN
    POPUP "&File"
    BEGIN
        MENUITEM "&Exit",                       IDM_EXIT
    END
    MENUITEM "&Display Dialog",             IDM_DISPLAYDIALOG
END
 
 
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
 
ListBox DIALOGEX 50, 50, 280, 131
STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CONTEXTHELP | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "MyDialog"
FONT 12, "Monotype Corsiva", 400, 1, 0x0
BEGIN
    PUSHBUTTON      "Display",ID_OK,22,104,50,14
    PUSHBUTTON      "Cancel",ID_CANCEL,186,104,50,14
    LISTBOX         ID_MYLISTBOX,15,16,120,65,LBS_SORT | LBS_HASSTRINGS | LBS_NOTIFY | WS_VSCROLL | WS_TABSTOP
    CONTROL         "StatusBar",ID_STATUSBAR,"msctls_statusbar32",0x3,0,129,150,12
END
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
resource.h
#define ListBoxMenu                     301
#define ListBox                         302
 
#define IDM_EXIT                        101
 
#define IDM_CANCEL                      102
 
#define IDM_DISPLAYDIALOG               104
 
#define ID_OK                           201
#define ID_CANCEL                       202
#define ID_MYLISTBOX                    203
#define ID_STATUSBAR                    204
0
IT_Exp
Эксперт
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
Блог
22.04.2012, 13:44
Ответы с готовыми решениями:

ListView не реагирует на нажатия
Кинул на активность элемент ListView, присвоил ей кастомный адаптер и слой для элементов. В лист...

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

KeyPressEvent не реагирует на нажатия стрелок
собственно говоря, обрабатываю события клавиш, всё кроме стрелок нормально выводится в qDebug()&lt;&lt;...

Форма не реагирует на нажатия мышкой
Цель: (для локера экрана клуба) Создать 2 формы, одна на весь экран, вторая форма с текстбоксом...

5
Brainsbreaker
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
22.04.2012, 16:45 2
Угу... 86, 140: break;

Не по теме:

Хорош разводами заниматься. :)

0
60 / 60 / 7
Регистрация: 16.05.2010
Сообщений: 632
22.04.2012, 18:35  [ТС] 3
Цитата Сообщение от Digit@ll Посмотреть сообщение
Угу... 86, 140: break;
не понял
я в WinAPI 2 недели только,понятно что могу что-то неправильно сделать
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
33003 / 21306 / 8183
Регистрация: 22.10.2011
Сообщений: 36,609
Записей в блоге: 8
22.04.2012, 19:14 4
После обработки сообщения (любого, в твоем случае WM_COMMAND) надо из switch-а выйти, иначе начнут выполняться команды, относящиеся к другому, нижестоящему сообщению. Так что добавь там, где в листинге строки 86 и 140 break-и.

Не по теме:

Дельфист бывший? Обычно у них такие ошибки.

2
60 / 60 / 7
Регистрация: 16.05.2010
Сообщений: 632
25.04.2012, 16:17  [ТС] 5
Цитата Сообщение от UI Посмотреть сообщение
Не по теме:
Дельфист бывший? Обычно у них такие ошибки.
да,начинал с дельфи
спасибо,всё зарабатоло,а ошибки глупые,аж стыдно
и ещё можно вопрос,при выборе буквы из списка в строке состояния должна появиться эта буква,если список из руских букв,то выводятся непонятно что.Я понимаю,что это из-за кодировок,может стоит поменять в определениях препроцессора _UNICODE НА UNICODE?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
26.04.2012, 11:56 6
Цитата Сообщение от UI Посмотреть сообщение
Так что добавь там, где в листинге строки 86 и 140 break-и.
Не break-и а return 0;

Процедура окна обычно выглядит так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
LRESULT CALLBACK WindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
    switch ( uMsg ) {
        case WM_COMMAND:
            ...
            return 0;
 
        case WM_DESTROY:
            PostQuitMessage( 0 );
            return 0;
    }
    return DefWindowProc( hWnd, uMsg, wParam, lParam );
}
Процедура диалога:
C
1
2
3
4
5
6
7
8
9
INT_PTR CALLBACK WindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
    switch ( uMsg ) {
        case WM_COMMAND:
            ...
            return 0;
    }
    return DefDlgProc( hWnd, uMsg, wParam, lParam );
}
Если в ListBoxExampleWndProc поставить break, то будет вызвана DefWindowProc, а это не есть комильфо.
1
26.04.2012, 11:56
BasicMan
Эксперт
19315 / 2622 / 84
Регистрация: 17.02.2009
Сообщений: 10,364
Блог
26.04.2012, 11:56
Помогаю со студенческими работами здесь

Ноутбук: гаснет экран, не реагирует на нажатия
Свежий ноутбук, взятый сегодня с win10 home. Первый запуск прошёл обычно: вход в учётку (старую, не...

ReadKey() не реагирует на нажатия Alt,Ctrl,Shift
Не реагирует на нажатия Alt,Ctrl,Shift . ConsoleKeyInfo press; ...

Qt Creator не реагирует на события мышки и нажатия клавишь
Здравствуйте форумчане. Установлен Qt Creator последней версии на Ubuntu 14.04 Mate. Однажды...

В ECS nForce4M-A Биос не реагирует на нажатия клавиш
Появилась необходимость переустановить ОС. Перехожу с WinXP на Win7. Когда при старте компьютера...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Блоги программистов
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного суматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­хронный счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
Применение компонентов PrimeVue в Vue.js 3 на TypeScript
BasicMan 04.01.2025
Введение в PrimeVue и настройка окружения PrimeVue представляет собой мощную библиотеку компонентов пользовательского интерфейса для Vue. js 3, которая предоставляет разработчикам богатый набор. . .
Как стать Senior developer
cpp_developer 04.01.2025
В современной индустрии разработки программного обеспечения позиция Senior Developer представляет собой не просто следующую ступень карьерной лестницы, а качественно новый уровень профессионального. . .
Что известно о дате выхода Windows 12 и чего от нее ждать
IT_Exp 04.01.2025
В мире технологий постоянно происходят изменения, и операционные системы не являются исключением. Windows 11, выпущенная в октябре 2021 года, принесла множество инноваций и улучшений, но. . .
Что новенького в .NET Core 9
Programming 04.01.2025
Обзор ключевых изменений в . NET Core 9 Платформа . NET Core продолжает активно развиваться, и версия 9 представляет собой значительный шаг вперед в эволюции этой технологии. Новый релиз. . .
Инструкция по установке python3.13.1 в Debian 12
AlexSky-coder 03.01.2025
sudo apt update sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget. . .
Затестил триггеры. архив проекта прилагаю с GOA файлами в настройках архиватора проектов.
Hrethgir 03.01.2025
В этот раз нет закольцованности, потому что от неё только глюки, как я понял, логика не вырезанная. Триггеры очень быстрые если верить измерениям с помощью анализатора от Gowin. Есть ещё регистры,. . .
Python в помощь DevOps
IT_Exp 03.01.2025
Причины использования Python в работе DevOps Python стал неотъемлемой частью мира DevOps, и это не случайно. Этот язык программирования обладает множеством преимуществ, которые делают его. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru