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

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

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2012, 18:20   #1
enjo
Пользователь
 
Регистрация: 14.12.2009
Сообщений: 47
По умолчанию Как добавить форму в проект

Здравствуйте, как правильно добавить форму в проект win32 console application и вызвать её?

в с++, visual studio 2010

Последний раз редактировалось Stilet; 29.10.2012 в 19:02.
enjo вне форума Ответить с цитированием
Старый 29.10.2012, 20:10   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

очень просто: регистрируешь класс окна, создаешь окно, запускаешь цикл сообщений.
counter вне форума Ответить с цитированием
Старый 30.10.2012, 16:21   #3
enjo
Пользователь
 
Регистрация: 14.12.2009
Сообщений: 47
По умолчанию

а есть простой исходник, хочу разобратьсмя, а вмануалах запутано
enjo вне форума Ответить с цитированием
Старый 30.10.2012, 16:38   #4
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

enjo, выйди из сумрака, сходи хоть раз в поиск.

Код:
#include <windows.h>
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    HWND hMainWnd;
    //char szClassName[] = "MyClass";
    MSG msg;
    WNDCLASSEX wc;
 
    // заполняем структуру класса окна
    wc.cbSize           = sizeof(wc);
    wc.style            = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc      = WndProc;
    wc.cbClsExtra       = 0;
    wc.cbWndExtra       = 0;
    wc.hInstance        = hInstance;
    wc.hIcon            = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor          = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground    = (HBRUSH) GetStockObject(WHITE_BRUSH);
    wc.lpszMenuName     = NULL;
    wc.lpszClassName    = L"MyClass";
    wc.hIconSm          = LoadIcon(NULL, IDI_APPLICATION);
 
    // регистрируем класс окна
    if (!RegisterClassEx(&wc))
    {
        MessageBox(NULL, L"Cannot register class", L"Error", MB_OK);
        return 0;
    }
 
    // создаем основное окно приложения
    hMainWnd = CreateWindow(L"MyClass", L"A Hello1 Application", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, 
                                          CW_USEDEFAULT, 0, (HWND)NULL, (HMENU)NULL, (HINSTANCE)hInstance, NULL);
 
    if (!hMainWnd)
    {
        MessageBox(NULL, L"Cannot create main window", L"Error", MB_OK);
        return 0;
    }
 
    // Показываем наше окно
    ShowWindow(hMainWnd, nCmdShow);
    // UpdateWindow(hMainWnd);
 
    // Выполняем цикл обработки сообщений до закрытия приложения
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
 
    return msg.wParam;
}

int main()
{
	WinMain(GetModuleHandle(NULL),0,0,SW_SHOW);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    HDC hDC;
    PAINTSTRUCT ps;
    RECT rect;
 
    switch(uMsg)
    {
    case WM_PAINT:
        hDC = BeginPaint(hWnd, &ps);
 
        GetClientRect(hWnd, &rect);
        DrawText(hDC, L"Hello, World!", -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
 
        EndPaint(hWnd, &ps);
        break;
    case WM_CLOSE:
        DestroyWindow(hWnd);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, uMsg, wParam, lParam);
    }   
    return 0;
}
counter вне форума Ответить с цитированием
Старый 30.10.2012, 17:14   #5
enjo
Пользователь
 
Регистрация: 14.12.2009
Сообщений: 47
По умолчанию

Спасибо! Очень помогли
enjo вне форума Ответить с цитированием
Старый 30.10.2012, 17:52   #6
enjo
Пользователь
 
Регистрация: 14.12.2009
Сообщений: 47
По умолчанию

а как можно довавить елементарные эллементи, типа edit,trackbar,button?
enjo вне форума Ответить с цитированием
Старый 30.10.2012, 18:50   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
p51x вне форума Ответить с цитированием
Старый 31.10.2012, 13:33   #8
enjo
Пользователь
 
Регистрация: 14.12.2009
Сообщений: 47
По умолчанию

спасибо, а правильно ли я понимаю: вот код выше регистрирует клас окно и тд.., а чтоб мне накидывать всевозможные еллементы, то надо добавить файл ресурса - .rc

и как вызвать окно, в какойто функции???

Последний раз редактировалось enjo; 31.10.2012 в 17:06.
enjo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как добавить в созданную динамически форму,компонент hackgirl Общие вопросы Delphi 2 21.01.2012 15:43
CodeGear. Как добавить уже сущесвиющий юнит в проект? TwiX Общие вопросы C/C++ 2 23.12.2009 15:01
Добавить новые вкладки на форму..КАК? mnejarko Помощь студентам 4 20.07.2009 20:57
Как добавить в основной проект юнит из совсем другого проекта? Nara Shikamaru Общие вопросы Delphi 3 09.06.2009 08:50
как добавить в форму ЧАСЫ samosval Общие вопросы .NET 1 29.12.2007 13:51