Справка по файлу ресурсов Win32 - PullRequest
0 голосов
/ 30 ноября 2010

на этом веб-сайте, под заголовком " Редактировать ", есть несколько строк кода, подобных этому ..

case WM_CREATE:
    hwndEdit = CreateWindow(TEXT("Edit"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
                50, 50, 150, 20, hwnd, (HMENU) ID_EDIT,
                NULL, NULL);

    hwndButton = CreateWindow(
        TEXT("button"), TEXT("Set Title"),       
        WS_VISIBLE | WS_CHILD,  
        50, 100, 80, 25,        
        hwnd, (HMENU) ID_BUTTON, NULL, NULL);      

    break;

Я знаючто этот метод создания кнопок и тому подобное выполняется на лету, но мне было интересно, как бы вы это сделали, не делая этого, вместо этого, используя файл ресурсов?В учебнике Forgers Win32 показано, как создать меню с использованием файла ресурса, как описать диалоговое окно и т. Д. Но я не могу поместить какие-либо элементы управления в главное (родительское) окно с помощью ресурсафайл ??.

например, у меня есть следующий файл .rc

#include "resource.h"
ID_MENU MENU
BEGIN
    POPUP "&File"
    BEGIN
        MENUITEM "E&xit", ID_FILE_EXIT
    END
    POPUP "&About"
    BEGIN
        MENUITEM "&Information", ID_ABOUT_INFO
    END
END

ID_ABOUT_INFO DIALOG DISCARDABLE  0,0,250,250 
CAPTION "Information"
BEGIN
    CTEXT "some text",ID_BLA,15,15,144,33
END

//this is all fine but how do I decribe the main window?, instead of the menu and dialog boxes?.

Как мне описать главное окно вместо создания вещей на лету ?.Есть какое-то ключевое слово?

Ответы [ 5 ]

3 голосов
/ 30 ноября 2010

Вы можете создать диалог в качестве основного окна.

  1. Если вы используете MFC в Visual Studio, используйте мастер проектов для создания приложения на основе диалога.

    (Файл -> Новый проект -> Visual C ++ / MFC -> Приложение MFC -> ОК -> Тип приложения -> На основе диалогового окна.)

    Сгенерированное приложение создаст для вас главное диалоговое окно и закроется, когда закроется.

    Простой пример такого зверя, включая источник, находится здесь:

    http://www.pretentiousname.com/ICFRanger/index.html

  2. Если вы используете прямой Win32, вы должны создать диалоговое окно, используя CreateDialogParam (или подобное), а затем показать его, как любое другое окно, и запустить цикл обработки сообщений. (Или вы можете использовать DoModal, который запускает свой собственный цикл сообщений, но помните, что модальные диалоги должны вести себя немного по-другому, особенно когда дело доходит до закрытия.)

    Простой пример этого, включая источник, приведен здесь:

    http://www.pretentiousname.com/setpoint_aon/index.html

(Это обе программы, которые я написал, но они очень простые, так что понять, что они делают, нечего.)

2 голосов
/ 30 ноября 2010

На уровне API рассмотрим такие функции, как CreateDialog.

Это не сложнее, чем это.

Хотя у диалогового окна в качестве основного окна есть некоторые проблемы, особенно в MFC (который обрабатывает его особенно).

Приветствия & hth.,

2 голосов
/ 30 ноября 2010

TheForger добавил все свои примеры кода в zip-файл, вы можете скачать их и проверить.

Вам все еще нужно создать окно, TheForger также делает это, но затем он включает значки и меню в WNDCLASSEX struct , которая передается окну, которое должно быть создано. Затем он собирается из файла ресурсов (файл .rc) через файл resouce.h.

MSDN также имеет раздел о файлах ресурсов, и, как вы можете видеть

Ресурсы могут состоять из широкого ряд элементов, включая интерфейс элементы, которые предоставляют информацию пользователь (например, растровое изображение, значок, или курсор); пользовательские ресурсы, которые содержать данные, необходимые приложению; ресурсы версии, которые используются настройки API; и меню и диалоговое окно ресурсы.

Основные окна не упоминаются.

1 голос
/ 27 февраля 2011

Используйте CreateWindow и различные предопределенные классы.Если бы вы создали кнопку, вы бы использовали класс «BUTTON», установите стиль WS_CHILD | WS_VISIBLE и установите для оконной процедуры значение NULL.

1 голос
/ 30 ноября 2010

Вы можете создать окно, похожее на диалоговое окно, и поместить его в свой файл ресурсов. Затем используйте функции FindResource и LoadResource, чтобы получить указатель на DLGTEMPLATE, который содержит макет всех диалогов, которые вы можете использовать для определения размера своего окна.и поместите элементы управления в позиции, которые вы определили в диалоговом окне (хотя интерпретировать DLGTEMPLATE непросто).Не забудьте освободить указатель на DLGTEMPLATE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...