Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
 
17 / 17 / 2
Регистрация: 02.05.2010
Сообщений: 122
1

Win API не обрабатівается кнопка ОК на диалоге

27.09.2010, 15:04. Просмотров 533. Ответов 0
Метки нет (Все метки)


Всем привет!
проблемка у меня, помогите, пожалуйста
Суть : вектор данных (пиво: сорт (комбо бокс) назване, цена и стоимость) Два диалога В одном комбо бокс(выбор сорта) и три листбокса ( название, цена, стоимость) есть меню (оно и контекстное) добавить /удалить и редактировать) это меню выводится по нжатитию правой кнопки мыши в любом местею Второй диалог запускается при активации пункта меню "добавить В этом диалоге три эдита
для дабавления цены названия и объёма Так вот, данные должны вносится в вектор по нажатию ОК
а у меня этот ОК на диалоге 2 не реботает
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#include"beerdialog.h"
PCD*PCD::p=NULL;
PCD::PCD(){p=this;}
 
 
 
WCHAR*tmpname;
WCHAR*tmpsort;
WCHAR*tmpprice;
WCHAR*tmpvolum;
WCHAR*combotxt;
 
int x=0,ind=0,size=0,num=0;
vector <beer> Br;
beer tmpbeer;
 
 
void PCD::onClose(HWND hWnd){EndDialog(hWnd,0);}
 
BOOL CALLBACK PCD::DlgProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
    switch(msg)
    {
        HANDLE_MSG(hWnd,WM_CLOSE,p->onClose);
        HANDLE_MSG(hWnd,WM_INITDIALOG,p->onInitDialog);
        HANDLE_MSG(hWnd,WM_COMMAND,p->onCommand);
        HANDLE_MSG(hWnd,WM_CONTEXTMENU,p->onContextMenu);
    }
    return FALSE;
}
 
void PCD::onCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    switch(id)
    {
    case WM_USER+2://delete
        {
            int bn=0;
        int index = SendMessage(hList1, LB_GETCURSEL, 0, 0);
        SendMessage(hList1, LB_DELETESTRING, index, 0);
        vector<beer>::iterator itb=Br.begin(),ite=Br.end();
        for(int i=0;i<Br.size();i++)
        {
            if (wcscmp(tmpbeer.GetName(),Br[i].GetName()))
                if (tmpbeer.GetPrice()==Br[i].GetPrice())
                    if (tmpbeer.GetVolum()==Br[i].GetVolum())
                        Br.erase(Br.begin()+bn);
                    else bn++;
        }
 
        break;
        }
    case WM_USER+1:///add
        {
            WCHAR tmpsort = SendMessage(hCombo, LB_GETCURSEL, 0, 0);
            DialogBox(GetModuleHandle(0), MAKEINTRESOURCE(IDD_DIALOG2), NULL, PCD::DlgProc);
            ShowWindow(hDialog1, SW_SHOW);
            
/////////////////////
            if(id==IDOK)
            {
            /* if (LOWORD (wParam)==IDOK)*/
            vector<beer>::iterator itb=Br.begin(),ite=Br.end();
                for(int i=0;i<Br.size();i++)
                {
                        ++size;     
                        GetWindowText(hEdit1,tmpname,50);
                        GetWindowText(hEdit2,tmpprice,50);
                        GetWindowText(hEdit3,tmpvolum,50);
                        int n=_wtoi(tmpprice);
                        int m=_wtoi(tmpvolum);
                        beer tmpbeer(tmpname,&tmpsort,n,m);
                        Br.push_back(tmpbeer);
 
                        SendMessage(hList1,LB_ADDSTRING,0,LPARAM(tmpname));
                        SendMessage(hList2,LB_ADDSTRING,0,LPARAM(tmpprice));
                        SendMessage(hList3,LB_ADDSTRING,0,LPARAM(tmpvolum));
                        SetFocus(hEdit1);
                        SetWindowText(hList1,tmpname);
                        SetWindowText(hList2,tmpprice);
                        SetWindowText(hList3,tmpvolum);
                }
 
            }
        break;
        }
            
 
///////////////////////
            
 
        }
//case WM_USER+3: //"Редактировать");
//      {
//      
//      }
    
 
 
 
}
 
 
 
BOOL PCD::onInitDialog(HWND hWnd,HWND focus,LPARAM lParam)
{
 
        Br.resize(size);
        tmpname=new WCHAR[50];
        tmpprice=new WCHAR[50];
        tmpsort=new WCHAR[50];
        combotxt=new WCHAR[50];
 
        hList1=GetDlgItem(hWnd,IDC_LIST1);
        hList2=GetDlgItem(hWnd,IDC_LIST2);
        hList3=GetDlgItem(hWnd,IDC_LIST3);
        hCombo=GetDlgItem(hWnd,IDC_COMBO1);
        hEdit1=GetDlgItem(hWnd,IDC_EDIT1);
        hEdit2=GetDlgItem(hWnd,IDC_EDIT2);
        hEdit3=GetDlgItem(hWnd,IDC_EDIT3);
 
 
        SetWindowText(hCombo,L"сорт");
        SendMessage(hCombo,CB_ADDSTRING,0,LPARAM(L"тёмное"));
        SendMessage(hCombo,CB_ADDSTRING,0,LPARAM(L"светлое"));
        SendMessage(hCombo,CB_ADDSTRING,0,LPARAM(L"нефильтрованное"));
 
    HMENU hmainMenu = CreateMenu();
    HMENU hM1 = CreatePopupMenu();
    HMENU hMFile = CreatePopupMenu();
    HMENU hMBeer= CreatePopupMenu();
  
    AppendMenu(hM1, MF_STRING, WM_USER+1, L"Добавить");
    AppendMenu(hM1, MF_STRING, WM_USER+2, L"Удалить");
    AppendMenu(hM1, MF_STRING, WM_USER+3, L"Редактировать");
    AppendMenu(hMBeer, MF_POPUP, (UINT_PTR)hM1, L"Выбрать");
 
 
    /*AppendMenu(hMFile, MF_STRING, WM_USER+4, L"Сохранить");
    AppendMenu(hMFile, MF_STRING, WM_USER+5, L"Открыть");*/
    AppendMenu(hMFile, MF_SEPARATOR, 0, 0);
    AppendMenu(hMFile, MF_STRING, WM_USER+6, L"Выход");
 
    AppendMenu(hmainMenu, MF_POPUP, (UINT_PTR)hMFile, L"Файл");
    AppendMenu(hmainMenu, MF_POPUP, (UINT_PTR)hMBeer, L"Пиво");
 
    SendMessage( hList1, LB_ADDSTRING,0,LPARAM(L"Оболонь" ))   ; 
    SendMessage( hList1, LB_ADDSTRING,0,LPARAM(L"Название1" ))   ; 
    SendMessage( hList1, LB_ADDSTRING,0,LPARAM(L"Название2" ))   ; 
    
 
    SetMenu(hWnd, hmainMenu);
 
    return 1;
}
 
void PCD::onContextMenu(HWND hWnd, HWND hwndContext, UINT xPos, UINT yPos)
{
 
    HMENU hM1 = CreatePopupMenu();
    HMENU hMFile = CreatePopupMenu();
    HMENU hMBeer= CreatePopupMenu();
  
    AppendMenu(hM1, MF_STRING, WM_USER+1, L"Добавить");
    AppendMenu(hM1, MF_STRING, WM_USER+2, L"Удалить");
    AppendMenu(hM1, MF_STRING, WM_USER+3, L"Редактировать");
    AppendMenu(hMBeer, MF_POPUP, (UINT_PTR)hM1, L"Выбрать");
     
    TrackPopupMenu(hM1,TPM_RIGHTALIGN,xPos,yPos,0,hWnd,0);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.09.2010, 15:04
Ответы с готовыми решениями:

WIN API устарел как начать программировать на C++ .NET API (Без VisualStudio)
WIN API устарел как начать программировать на C++ .NET API (Без VisualStudio)

Залипает кнопка Win
Здравствуйте. На ноутбуке Asus N751JX стоит Win10. Появилась следующая проблема: при нажатии...

Глючит кнопка win
Глючит кнопка win и вместе с ней вся клавиатура, нельзя ничего напечатать, при нажатие клавиш ...

Win API
Как получить доступ к элементам другого приложения?? Например запущена какая нить прога на ней...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.09.2010, 15:04

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

API Win 32
Вообщем-то нужно определить конфигурацию компьютера посредствам функций api win 32. Какие диски,...

Win API
Посоветуйте пожалуйста какую-нибудь хорошую книжку по WinAPI в c#

WIN API
Доброе время суток. Учусь в институте и дали сделать такую хрень: Реализовать приложения Win32API:...

WIN API C++
Недавно заинтересовался win api, с++ знаю только по консоли и с++ билдере. У меня 2 вопроса) 1....


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.