Работа С Формой

Тема в разделе "MS Visual C++", создана пользователем alexbad, 22 дек 2011.

  1. alexbad

    alexbad Гость

    Добрый день. В программировании я не опытен и с формами в студии работать не приходилось, а тут пришлось. MS Visual Studio 2008, запнулся на одном из шагов.
    Вот я создал форму с помощью Toolbox. В файле .h у меня появился namespace, класс формы, "задавание" всех элементов из тулбокса. Далее я в файле .cpp создал функцию WinMain. И вот что дальше делать не понимаю. Для начала мне достаточно чтобы программа просто выводила форму, которую я сделал на экран. Как это сделать?
    Application::Run не работает
    А ShowWindow и ShowDialog я не понимаю как использовать.
     
  2. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    HWND WINAPI CreateDialog( HINSTANCE hInstance, LPCTSTR lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc );
    hInstance - это то что в WinMain первым параметром идет.
    lpTemplate = MAKEINTRESOURCE( идентификатор формы )
    hWndParent - родительское окно. (необязательный параметр, можно написать NULL)
    lpDialogFunc - функция обработки событий окна ( http://msdn.microsoft.com/en-us/library/wi...v=vs.85%29.aspx )

    Источник: http://msdn.microsoft.com/en-us/library/wi...v=vs.85%29.aspx
     
  3. alexbad

    alexbad Гость

    Из того что Вы мне сообщили я написал код.Почему он не работает??? Несколько дней сижу ломаю голову над такой мелочью как просто вывод формы, которую я сдизайнил в Toolbox на экран. Подскажите, пожалуйста... А лучше просто напишите эту заветную пару строчек кода...

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
    {
    HWND hWnd;
    hWnd = CreateDialog (hInstance, LPCTSTR("Form1"), 0, NULL) ;
    ShowWindow(hWnd,SW_SHOW);
    while (1);
    }




    В файле .h написано вот такое




    namespace AVVt {
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;

    /// <summary>
    /// Summary for AVVt
    ///
    /// WARNING: If you change the name of this class, you will need to change the
    /// 'Resource File Name' property for the managed resource compiler tool
    /// associated with all .resx files this class depends on. Otherwise,
    /// the designers will not be able to interact properly with localized
    /// resources associated with this form.
    /// </summary>
    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
    Form1(void)
    {
    InitializeComponent();

    //
    //TODO: Add the constructor code here
    //
    }

    protected:
    /// <summary>
    /// Clean up any resources being used.
    /// </summary>
    ~Form1()
    {
    if (components)
    {
    delete components;
    }
    }

    ...................................................
    ...................................................
    .................................................
     
  4. alexbad

    alexbad Гость

    Это же пипец!!! Как форму вывести на экран? Есть класс в файле .h, куча нужной и ненужной документации... А КАК ПРОСТО ВЫВЕСТИ СДИЗАЙНЕННУЮ ФОРМУ НА ЭКРАНН????????????????
     
  5. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Попробуй так:
    Код (C++):
    INT_PTR CALLBACK dialog_proc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam )
    {
    switch ( uMsg ) {
    case WM_DESTROY:
    PostQuitMessage( 0 );
    return TRUE;
    }

    return FALSE;
    }

    int APIENTRY WinMain( HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
    {
    MSG     msg;
    HWND    hWnd;

    hWnd = CreateDialog( hInstance, LPCTSTR("Form1"), 0, dialog_proc );
    ShowWindow( hWnd, SW_SHOW );

    while ( GetMessage( &msg, NULL, 0, 0 ) ) {
    TranslateMessage( &msg );
    DispatchMessage( &msg );
    }
    return 0;
    }
    А вообще я бы тебе посоветовал заместо LPCTSTR("Form1") передавать идентификатор формы.
    Кстати ресурс подключается, компилируется, линкуется?
     
  6. alexbad

    alexbad Гость

    Спасибо. Позже попробую, т.к. пока возможности не имею.
    Да, компилируется, линкуется.

    А то что вместо LPCTSTR("Form1") надо идентификатор формы это я понимаю. Но как ид-р получить? Как получить идентификатор формы, которую я сам сдизайнил в toolbox'е? Через MAKEINTRESOURCE я не понимаю как это можно сделать
     
  7. vol4ek88

    vol4ek88 Гость

    WinApi в CLR... ну-ну. удачи
     
  8. alexbad

    alexbad Гость

    Форма всё равно не показывается....
     
  9. AlixBZ

    AlixBZ Гость

    Создавайте проект "Windows Forms Application" и нажимайте F5.
    Иначе читайте книжки.
     
Загрузка...
Похожие Темы - Работа Формой
  1. nwtat
    Ответов:
    0
    Просмотров:
    1.327
  2. Микура
    Ответов:
    1
    Просмотров:
    1.433
  3. Andrey Kha
    Ответов:
    0
    Просмотров:
    28
  4. Hoasker
    Ответов:
    0
    Просмотров:
    64
  5. garri671
    Ответов:
    0
    Просмотров:
    55

Поделиться этой страницей