188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
1

Как прикрепить к окну из ресурса меню тоже из ресурса?

18.05.2014, 11:48. Показов 986. Ответов 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
/*[url]http://www.lib.csu.ru/DL/bases/prg/frolov/books/bsp/v22/ch3.html*/[/url]
 
#include <Windows.h>
#include <tchar.h>
#include "resource.h"
#include <commctrl.h>
#pragma comment(lib, "ComCtl32.Lib")
 
/*Определяет кол-во и названия столбцов*/
const int colNum = 6;
char* header[colNum] = {"#", "Дата", "Название", "Размер", "Статус", "Оценка"};
 
/*Добавляет столбцы в таблицу*/
int SetListViewColumns(HWND hWndLV, int colNum, int textMaxLen, char** header)
{
    RECT rcl;
    GetClientRect(hWndLV, &rcl);
 
    int index = -1;
 
    LVCOLUMN lvc;
    lvc.mask = LVCF_TEXT | LVCF_WIDTH;
    lvc.cx = (rcl.right - rcl.left) / colNum;
    lvc.cchTextMax = textMaxLen;
 
    for (int i = 0; i < colNum; i++)
    {
        lvc.pszText = (LPWSTR)header[i];
        index = ListView_InsertColumn(hWndLV, i, &lvc);
        if (index == -1) break;
    }
 
    return index;
}
 
BOOL WINAPI AddListViewItems(HWND hWndLV, int colNum, int textMaxLen, LPWSTR line)
{
    int iLastIndex = ListView_GetItemCount(hWndLV);
 
    LVITEM lvi;
    lvi.mask = LVIF_TEXT;
    lvi.cchTextMax = textMaxLen;
    lvi.iItem = iLastIndex;
    lvi.pszText = line;
    lvi.iSubItem = 0;
 
    if (ListView_InsertItem(hWndLV, &lvi) == -1)
        return FALSE;
    for (int i = 1; i < colNum; i++)
        ListView_SetItemText(hWndLV, iLastIndex, i, L"Тест1");
 
    return TRUE;
}
 
 
 
LRESULT CALLBACK MainDlgProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
    switch(Msg)
    {
 
    case WM_CLOSE:
        EndDialog(hWnd, 1);
        break;
 
    case WM_INITDIALOG:
        {
 
 
            
 
        HWND hWndLV = CreateWindow(WC_LISTVIEW, L"",
            WS_CHILD | LVS_REPORT | WS_VISIBLE,
            0, 0, 300, 300,
            hWnd, (HMENU)NULL, GetModuleHandle(NULL), NULL);
 
        /*Вставим столбики в таблицу*/
    
            SetListViewColumns(hWndLV, colNum, 25, header);
        /*Строки в таблицу*/
            AddListViewItems(hWndLV, 0, 25, L"TETX"); 
 
             ShowWindow(hWndLV, SW_SHOWDEFAULT);
    
 
        }; break;
 
    default: return false; 
    }
    return 0;
}
 
int __stdcall WinMain(HINSTANCE hInst, HINSTANCE hInstance, PCHAR Line, int Mode)
{
    InitCommonControls(); 
    /*Инициализация главного окна*/
    DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG2), NULL, (DLGPROC)MainDlgProc);
 
 
 
    return 0;
}
Добавлено через 6 минут
Я попробовал так но ничего не заработало
SetMenu(hWnd, (HMENU)MAKEINTRESOURCE(IDR_MENU1));

Добавлено через 8 минут
и так тоже не работает

HMENU hMenu=LoadMenu(hInst_, MAKEINTRESOURCE(L"IDR_MENU1"));
SetMenu(hWnd, hMenu);
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.05.2014, 11:48
Ответы с готовыми решениями:

Каким образом из файла-ресурса меню должно передаться в основную часть программы?
Ночи доброй, форумчане! Вопрос следующий: что именно описывается в .h-файле, каким образом из...

Как получить hWnd ресурса?
как получить hWnd ресурса? Есть у меня на форме ресурса TreeView но для того чтобы туда добавить...

Как получить id ресурса по названию?
Подскажите, как можно из строкового значения, где впринципе записана константа(R.drawable.123),...

Как использовать картинку из ресурса
Дело такое. Нужно обращаться к картинке а таскать ее за собой неохота. Я вот и подумал а можно как...

2
68 / 65 / 21
Регистрация: 01.05.2014
Сообщений: 247
18.05.2014, 15:11 2
Приветствую!

C++
1
2
3
4
5
6
7
8
9
10
11
    case WM_INITDIALOG: 
     {
     /* ... */
 
     HMENU hMenu=LoadMenu(GetModuleHandle(NULL),MAKEINTRESOURCE(IDR_MENU1));
     SetMenu(hWnd,hMenu);
 
     /* ... */
 
     return TRUE;
     }
1
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
18.05.2014, 20:43  [ТС] 3
Цитата Сообщение от oxyfat Посмотреть сообщение
HMENU hMenu=LoadMenu(GetModuleHandle(NULL),MAKEINTRESOURCE(IDR_MENU1));
расшифруйте строку по русски

Добавлено через 3 минуты
Цитата Сообщение от oxyfat Посмотреть сообщение
case WM_INITDIALOG: { /* ... */ HMENU hMenu=LoadMenu(GetModuleHandle(NULL),MAKEINTRESOURCE(IDR_MENU1)); SetMenu(hWnd,hMenu); /* ... */ return TRUE; }

выполнил такой код но не совсем то что ожидалось - меню конечно появилось но субменю не появилось. почему это может быть?
0
18.05.2014, 20:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2014, 20:43
Помогаю со студенческими работами здесь

Как загрузить строку из ресурса ?
Есть dll(lang.dll) в нее положил два ресурса en.res и ru.res как мне получить строки из...

Как подгрузить картинку из ресурса?
Сотни туториалов и страниц гугла просмотренных так и не дали результата по вопросу как же загрузить...

Как установить фон в UserControl из ресурса?
Здравствуйте, у меня уже горит, поэтому пишу знающим людям. Перерыл уже всю сеть но внятного ответа...

Как получить скриншот стороннего ресурса?
привет.Как можно осуществить задумку?На выходе должно быть изображение. Добавлено через 5 часов...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru