Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2018, 12:25   #11
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

А вы пытались? https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Цитата:
nameID DIALOGEX x, y, width, height [ , helpID] [optional-statements] {control-statements}
Цитата:
width
Width of the dialog box, in dialog units.

height
Height of the dialog box, in dialog units.
p51x вне форума Ответить с цитированием
Старый 03.05.2018, 12:45   #12
ИвановБ
Пользователь
 
Регистрация: 19.12.2016
Сообщений: 70
По умолчанию

Хотя вот вроде нашел
Код:
#define IDD_DIALOG 101

IDD_DIALOG DIALOGEX 0, 0, 316, 180
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Dialog"
FONT 8, "Добавить", 400, 0, 0x1
BEGIN
    DEFPUSHBUTTON   "ОК",IDOK,205,159,50,14
    PUSHBUTTON      "Отмена",IDCANCEL,259,159,50,14
END
Правда пока не пойму как запустить это окно с кнопки меню
ИвановБ вне форума Ответить с цитированием
Старый 03.05.2018, 13:02   #13
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Вы нарочно игнорируете официальную документацию? https://msdn.microsoft.com/en-us/lib...x#modeless_box
p51x вне форума Ответить с цитированием
Старый 03.05.2018, 13:28   #14
ИвановБ
Пользователь
 
Регистрация: 19.12.2016
Сообщений: 70
По умолчанию

Вот посмотрите пожалуйста ошибки возникают понятно что глупые, но не пойму почему некоторые ошибки появились хотя раньше не было
Код:
// Подключаем библиотеки Windows для Win32
#include <windows.h>
#include <CommCtrl.h>
#pragma comment(lib, "Comctl32")
#include "resource.h" 

#define ID_LISTVIEW 1001

HINSTANCE g_hInstance;
HWND g_hMainWnd;
HWND g_hListView;

// Объявляем прототип CALLBACK функции
LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
 
BOOL ListViewCreate(HWND hParent);
BOOL ListViewAddItem(char* pCol1, char* pCol2);
VOID ListViewResize();
 
// Функция WinAPI для точки входа в программу
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    g_hInstance = hInstance;
    // Регистрация класса окна
    // Объявляем переменную типа WNDCLASSEX
 
    WNDCLASSEX wClass; 
    ZeroMemory(&wClass, sizeof(WNDCLASSEX)); // Обнуляем память
    // Заполняем структуру WNDCLASSEX
    wClass.cbSize = sizeof(WNDCLASSEX); // Размер равен размеру структуры
    wClass.hbrBackground = (HBRUSH)COLOR_WINDOW; // Определяем фон окна
    wClass.hInstance = hInstance; // hInstance window
    wClass.lpfnWndProc = (WNDPROC)WndProc; // Процедура обработки окна
    wClass.lpszClassName = "Athlete"; // Имя класса
 
    // Если произошла ошибка, то выводим сообщение
    if (!RegisterClassEx(&wClass))
    {
        int nResult = GetLastError();
        MessageBox(NULL, "Класс окна не был создан!", "Ошибка", MB_ICONERROR);
    }
 
    // Создаем окно при помощи функции WinApi CreateWindowEx
    g_hMainWnd = CreateWindowEx(NULL,
        "Athlete", // Имя класса, который мы определили ранее
        "Участники соревнований", // Заголовок окна
        WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,
        300, // x координата по горизонтали
        200, // y координата по вертикали
        516, // ширина создаваемого окна
        380, // высота создаваемого окна
        NULL,
        NULL,
        hInstance, // переменная экземпляра приложения
        NULL);

	//Создание строки состояния
    HWND hStatusWindow = CreateStatusWindow (WS_CHILD | WS_VISIBLE, "", g_hMainWnd, 5000); 
 
    HMENU hMainMenu, hPopMenuFile;
    hMainMenu = CreateMenu();
	hPopMenuFile = CreatePopupMenu();

    AppendMenu(hMainMenu, MF_STRING|MF_POPUP, (UINT)hPopMenuFile, "Меню"); 
	
	AppendMenu(hPopMenuFile, MF_STRING , 1000, "Добавить");
	AppendMenu(hPopMenuFile, MF_STRING , 1001, "Выход");

    SetMenu(g_hMainWnd, hMainMenu);
	
	HWND hDialog;

    // Если окно не было создано, то выдаем сообщение
    if (!g_hMainWnd)
    {
        int nResult = GetLastError();
        MessageBox(NULL, "Окно не было создано!", "Ошибка", MB_ICONERROR);
    }
	
    // Показываем окно
    ShowWindow(g_hMainWnd, nShowCmd);

    // Объявляем переменную для сообщений типа MSG
    MSG msg;
    // Цикл обработки сообщений
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
 
    return 0;
}
 
// определяем процедуру обратного вызова (WinApi)
 
LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
        case WM_CREATE:
            // Здесь будем создавать элементы управления окна
            ListViewCreate(hwnd);
            ListViewAddItem("Головин П. Н.", "1");
            ListViewAddItem("Марков В. А.", "2");
            ListViewAddItem("Кудряшов Н. К.", "3");
            ListViewAddItem("Маслов Е. С.", "4");
            return 0;
 
        case WM_SIZE:
            ListViewResize();
            return 0;
	
		case WM_COMMAND:
			switch (LOWORD(wParam)) 
			{ 
				case IDD_DIALOG: 
					if (!g_hMainWnd(hDialog)) 
				{ 
						hDialog = CreateDialog(hInstance, 
												MAKEINTRESOURCE(IDD_DIALOG), 
												NULL, 
												(DLGPROC)GoToProc); 
						ShowWindow(g_hMainWnd, nShowCmd);
						UpdateWindow(g_hMainWnd);
				} 
				break; 
			} 
			return 0L; 

        case WM_DESTROY: // Обработка нажатия кнопки закрытия окна
            PostQuitMessage(0);
            return 0;
    }
 
    return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
 
BOOL ListViewCreate(HWND hParent)
{
    INITCOMMONCONTROLSEX icex;
    icex.dwSize = sizeof(icex);
    icex.dwICC = ICC_LISTVIEW_CLASSES;
    InitCommonControlsEx(&icex);
    
    // размер главного окна
    RECT rcClient;
    GetClientRect(hParent, &rcClient);
 
    // создание списка
    g_hListView = CreateWindow(
        WC_LISTVIEW, 
        NULL, 
        LVS_SINGLESEL | LVS_REPORT | WS_CHILD | WS_VISIBLE, //стиль отображения столбцов
        rcClient.left, 
        rcClient.top, 
        rcClient.right - rcClient.left, 
        rcClient.bottom - rcClient.top, 
        hParent, 
        (HMENU) ID_LISTVIEW, 
        g_hInstance, 
        NULL);
 
    if (!g_hListView)
        return FALSE;
 
    // доп. свойства
    ListView_SetExtendedListViewStyleEx(g_hListView, LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);
 
    // добавить столбцы
    LVCOLUMN lvc;
    lvc.mask = LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
    lvc.iSubItem = 0;
    lvc.pszText = "ФИО";
    lvc.cx = 260;
    if (ListView_InsertColumn(g_hListView, 0, &lvc) == -1)
        return FALSE;
    lvc.iSubItem = 1;
    lvc.pszText = "Рейтинг";
    lvc.cx = 250;
    if (ListView_InsertColumn(g_hListView, 1, &lvc) == -1)
        return FALSE;
 
    return TRUE;
}
 
BOOL ListViewAddItem(char* pCol1, char* pCol2)
{
    LVITEM lvi;
    lvi.mask = LVIF_TEXT;
    lvi.iSubItem = 0;
    lvi.iItem = 0x7FFFFFFF;
    lvi.pszText = pCol1;
    // добавить элемент
    int index = ListView_InsertItem(g_hListView, &lvi);
    if (index < 0)
        return FALSE;
 
    // установить текст во второй столбец элемента
    ListView_SetItemText(g_hListView, index, 1, pCol2);
 
    return TRUE;
}
 
VOID ListViewResize()
{
    RECT rcClient;
    GetClientRect(g_hMainWnd, &rcClient);
 
    SetWindowPos(g_hListView, 0, 0, 0, rcClient.right-rcClient.left, rcClient.bottom-rcClient.top, SWP_NOZORDER);
}
И подключаемый ресурсный файл
Код:
#define IDD_DIALOG 101

IDD_DIALOG DIALOGEX 0, 0, 316, 180
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Dialog"
FONT 8, "Добавить", 400, 0, 0x1
BEGIN
    DEFPUSHBUTTON   "ОК",IDOK,205,159,50,14
    PUSHBUTTON      "Отмена",IDCANCEL,259,159,50,14
END
ИвановБ вне форума Ответить с цитированием
Старый 03.05.2018, 13:37   #15
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Код:
if (!g_hMainWnd(hDialog))
Вот что этой строкой вы хотели сказать? Не переменная от переменной - что это по вашему? Почему из примера не списали?
Код:
 if (!IsWindow(hwndGoto))
все ясно - если окна нет, то...
p51x вне форума Ответить с цитированием
Старый 03.05.2018, 13:52   #16
ИвановБ
Пользователь
 
Регистрация: 19.12.2016
Сообщений: 70
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
все ясно - если окна нет, то...
Как я понял по вашему сказанию ресурсный файл лажа... Ладно щас буду по другому разбираться.
ИвановБ вне форума Ответить с цитированием
Старый 03.05.2018, 13:58   #17
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от ИвановБ Посмотреть сообщение
Как я понял по вашему сказанию ресурсный файл лажа...
Э? Что вас на это навело?
p51x вне форума Ответить с цитированием
Старый 03.05.2018, 14:20   #18
ИвановБ
Пользователь
 
Регистрация: 19.12.2016
Сообщений: 70
По умолчанию

А вы про что имели в виду
Цитата:
Сообщение от ИвановБ Посмотреть сообщение
все ясно - если окна нет, то...
ИвановБ вне форума Ответить с цитированием
Старый 03.05.2018, 14:39   #19
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Я просто прочитал для вас строку из примера, можете проверить:
Код:
if (!IsWindow(hwndGoto))
p51x вне форума Ответить с цитированием
Старый 03.05.2018, 14:50   #20
ИвановБ
Пользователь
 
Регистрация: 19.12.2016
Сообщений: 70
По умолчанию

Ясно. Но я запутался вот взял из примера так?
Код:
	
		case WM_COMMAND:
			switch (LOWORD(wParam)) 
			{ 
				case IDM_GOTO: 
					if (!IsWindow(hwndGoto)) 
				{ 
						hwndGoto = CreateDialogParam(hInstance, 
											    MAKEINTRESOURCE(IDD_DIALOG), 
											    NULL, 
										            (DLGPROC)GoToProc); 
						ShowWindow(hwndGoto, nShowCmd);
				} 
				break; 
			} 
			return 0L;
ИвановБ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графический интерфейс KoRn0509 Python 7 23.10.2017 23:04
Графический интерфейс в DOS Maksimall89 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 21.12.2011 17:23
Не могу создать графический интерфейс PastoriXx Общие вопросы по Java, Java SE, Kotlin 2 08.12.2010 15:11
Графический интерфейс aTBepTKa Общие вопросы C/C++ 2 04.02.2009 16:18