Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 07.11.2011
Сообщений: 27

Поиск по тревью и добавление даты в Тревью

20.10.2015, 19:12. Показов 950. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Попробую в кратко описать суть.

Буфер:
C++
1
TCHAR szBuffer[100] = TEXT("");
C++
1
2
3
4
5
6
7
// создаем список
hwndTV = CreateWindowEx(0, TEXT("SysTreeView32"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | TVS_HASLINES | TVS_HASBUTTONS | TVS_LINESATROOT | LVS_REPORT, 10, 10, 250, 410, hwnd, (HMENU)IDC_LIST, lpCreateStruct->hInstance, NULL);
// создаем кнопку "Добавить неск. записей"
CreateWindowEx(0, TEXT("Button"), TEXT("Добавить / Удалить"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 270, 55, 200, 40, hwnd, (HMENU)IDC_BUTTON_ADD2, lpCreateStruct->hInstance, NULL);
// создаем кнопку "Найти запись"
CreateWindowEx(0, TEXT("Button"), TEXT("Найти запись"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 270, 145, 200, 40, hwnd, (HMENU)IDC_BUTTON_FIND, lpCreateStruct->hInstance, NULL);
DATETIME = CreateWindowEx(0, TEXT("SysDateTimePick32"), TEXT("Удалить запись"), WS_CHILD | WS_VISIBLE | DTS_LONGDATEFORMAT, 270, 100, 200, 40, hwnd, NULL, lpCreateStruct->hInstance, NULL);
Создаю в оконную форму, в ней есть тревью, добавление в тревью происходит с использованием функции с MSND

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
HTREEITEM AddItemToTree(HWND hwndTV, LPWSTR szText, int nLevel, HTREEITEM hParent)
{
    TVITEM tvi;
    TVINSERTSTRUCT tvins;
    static HTREEITEM hPrev = (HTREEITEM)TVI_LAST;
    static HTREEITEM hPrevRootItem = NULL;
    static HTREEITEM hPrevLev2Item = NULL;
    HTREEITEM hti;
    LPTVITEM qew;
    tvi.mask = TVIF_TEXT | TVIF_IMAGE
        | TVIF_SELECTEDIMAGE | TVIF_PARAM;
 
    // Set the text of the item. 
    tvi.pszText = szText;
    tvi.cchTextMax = sizeof(tvi.pszText) / sizeof(tvi.pszText[0]);
 
    // Assume the item is not a parent item, so give it a 
    // document image. 
 
    // Save the heading level in the item's application-defined 
    // data area. 
    tvi.lParam = (LPARAM)nLevel;
    tvins.item = tvi;
    tvins.hInsertAfter = hPrev;
 
    // Set the parent item based on the specified level. 
    if (nLevel == 1)
        tvins.hParent = TVI_ROOT;
    else if (nLevel == 2)
        tvins.hParent = hParent;
    else
        tvins.hParent = hPrevLev2Item;
 
    // Add the item to the tree-view control. 
    hPrev = (HTREEITEM)SendMessage(hwndTV, TVM_INSERTITEM,
        0, (LPARAM)(LPTVINSERTSTRUCT)&tvins);
 
    if (hPrev == NULL)
        return NULL;
 
    // Save the handle to the item. 
    if (nLevel == 1)
        hPrevRootItem = hPrev;
    else if (nLevel == 2)
        hPrevLev2Item = hParent;
 
    // The new item is a child item. Give the parent item a 
    // closed folder bitmap to indicate it now has child items. 
    if (nLevel > 1)
    {
        hti = TreeView_GetParent(hwndTV, hPrev);
        tvi.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE;
        tvi.hItem = hti;
        tvi.iImage = 2;
        tvi.iSelectedImage = 2;
        TreeView_SetItem(hwndTV, &tvi);
    }
    return hPrev;
}

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
case IDC_BUTTON_ADD2: 
            {
                                  HTREEITEM hwndTVSelect;
                                  hwndTVSelect = TreeView_GetSelection(hwndTV);
                                  if (hwndTVSelect != NULL)
                                  {
                                      if (Button_GetCheck(BUTTON1) == 1)
                                      {
                                          DateTime_GetSystemtime(DATETIME, szBuffer);
                                          AddItemToTree(hwndTV, szBuffer, 2, hwndTVSelect);
                                      }
                                      if (Button_GetCheck(BUTTON2) == 1)
                                      {
                                          int mbResult = MessageBox(hwnd, TEXT("Удалить выбранный элемент?"), TEXT("SampleWin32"), MB_YESNO | MB_ICONQUESTION);
 
                                          if (mbResult == IDYES)
                                          {
                                              // удаляем выделенный элемент из списка 
                                              TreeView_DeleteItem(hwndTV, hwndTVSelect);
                                          }// if 
                                      }
                                  }
            } // if
            break;
Суть первой проблемы: Я хочу чтобы при нажатии на кнопку добавить данные брались из SysDateTimePick32 и записывались в тривью, вот как данные выглядят в буфере: http://puu.sh/kRa9y/a7dce17875.png
информация трактуется как кода символов, из-за чего я не могу нормально вставить данные в тривью, как бороться с этой проблемой.

Следующая проблема как организовать поиск, тут вообще мрак ибо стандартной функции для поиска нету, да и MSDN вообще ничем не помогает.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        case IDC_BUTTON_FIND: // нажата кнопка "Найти запись" 
            if (0 == uFindMsgString)
            {
                // получим код сообщения FINDM5G5TRING
                uFindMsgString = RegisterWindowMessage(FINDMSGSTRING);
            } // if
            // если диалоговое окно "Найти" еще не создано 
            if (IsWindow(hFindDlg) == FALSE)
            {
                findDlg.lStructSize = sizeof(FINDREPLACE);
                // указываем дескриптор экземпляра приложения 
                findDlg.hInstance = hInstance;
                // указываем дескриптор окна владельца
                findDlg.hwndOwner = hwnd;
                // указываем строковый буфер 
                findDlg.lpstrFindWhat = szBuffer;
                // указываем размер буфера
                findDlg.wFindWhatLen = _countof(szBuffer);
                // создаем диалоговое окно "Найти" 
                hFindDlg = FindText(&findDlg);
            }// if
            break;
Вот и все что могу показать.
Основная проблема в написании своей функции - это как обратиться к записи(узла) в тривью зная её код, как считать содержимое такой записи(узла).

Так же на всякий случай предоставляю исходный код: https://yadi.sk/i/10foCvjkjsbnH
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.10.2015, 19:12
Ответы с готовыми решениями:

Добавление текущей даты к имени файла при нестандартном формате вывода даты
Приветствую ! Давно и успешно используется код, который мне когда-то подсказали тут на форуме set count=1 set...

Нужно настроить ввод даты в delphi в dbGrid, в ручную через edit. Добавление новой даты.
Добрый день. Прошу о помощи. У меня на форме есть dbGrid. Мне нужно, чтобы третья колонка была формата dd/mm/gggg. Если я сама заполняю БД...

Преобразование даты и поиск даты в массиве
Есть файл Excel на одном листе приведены массив дат, во втором листе приведены данные среди которых, также приведены даты, но в виде числа....

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.10.2015, 19:12
Помогаю со студенческими работами здесь

Добавление даты
В phpmyadmin не даёт создать поле дата если не установить NULL Error: INSERT INTO post...

Добавление даты в БД
Здравствуйте, помогите с проблемой добавить дату (д.м.г.м) + .jpg. на данный момент есть такой запрос: $date = date(d.m.y.i); ...

Добавление даты. Oracle
Допустим, есть таблица "о" Create table o( ooo Number(5), oooo Date ) Но не получается добавить дату(ни в виде...

Автоматическое добавление даты
Делаю бд через ADOQuery и MsAccess Как так сделать - при создании новой записи, после ввода 2-3 определенных строк(edit) в 4-тую сразу...

Добавление даты в firebird
Столкнулся с такой проблемой. Добавляю новую запись таким образом. FbCommand InsertSQL = new FbCommand("INSERT INTO FAULT(IDLAB,...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru