2010-11-30 4 views
0

на this сайт под названием «Edit Control», есть несколько строк кода, как это ..win32 файл ресурсов помощь

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 tutorial показано, как создать меню с использованием файла ресурсов, а также описать диалоговое окно и т. Д. Но я не могу помещать какие-либо элементы управления в основное (родительское) окно с помощью файла ресурсов.

, например, у меня есть следующий файл .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?. 

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

ответ

3

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

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

    (File -> New Project -> Visual C++/MFC -> MFC Application -> OK -> Тип приложения -.> Диалог на основе)

    Сформированный Затем приложение создаст свой основной диалог для вас, и выход, когда он закрывается.

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

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

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

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

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

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

+0

какой проект мастера? – Default 2010-11-30 10:17:36

+0

Файл -> Новый проект -> Visual C++/MFC -> Приложение MFC -> OK -> Тип приложения -> На основе диалога. – 2010-11-30 10:20:17

2

TheForger добавил все его примеру код в zip fi ле, вы можете download them и проверить его.

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

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

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

Главное окно (а) не указано.

2

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

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

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

Приветствия & НТН.,

1

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

1

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

Смежные вопросы