Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
AloneHere
7 / 6 / 2
Регистрация: 18.11.2008
Сообщений: 43
#1

C++ & Win32Api - C++

22.10.2009, 19:57. Просмотров 972. Ответов 3
Метки нет (Все метки)

Начал программировать на c++ и тут же задача:
Как создать 2 окна средствами Api?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
hwnd = CreateWindowEx (
           0,                   
           szClassName,        
           "Windows App",     
           WS_OVERLAPPEDWINDOW, 
           0,     
           0,    
           500,                
           400,                
           HWND_DESKTOP,      
           NULL,               
           hThisInstance,       
           NULL                
           );
Основное окно могу создать, а вот дочерные (вроде бы так называются) не могу.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2009, 19:57     C++ & Win32Api
Посмотрите здесь:

Win32API - C++
Как делать анимацию в Win32API ? можно обяснить ето на небольшом примере?

С++ и Win32API - C++
посоветуйте хорошую книгу по программированию на с++ с использованием winapi и чтобы там примеры реальных программ были самое главное.

Рисование c Win32API - C++
Доброго времени суток! Я нарисовал вот такую картинку(вложение рис1). И возник вопрос - как можно добавить цифры в эти эллипсы и как...

Получение параметра из потока win32api c++ - C++
Задача заключается в том,что мне присылают в main в качестве параметров количество потоков,и аргумент. Этот аргумент нужно в потоке...

win32api странности при выводе на экран - C++
Доброго времени суток. Возникла проблема: при использовании в цикле TextOut на экран выводится только одна первая цифра, считанная из...

Оператор if и логическая операция И (AND) && - C++
Вод подскажите что будет быстрей обрабатываться процессором: if(!a&&!b) { a+b; } или

Объясните почему не срабатывает И (&&) - C++
Есть задача нахождения наибольшего общего делителя для двух чисел. Программу я написал.Но почему когда я указывал в цикле И (&&), цикл...

Не работает gettimeofday(&tv1, &tz); - C++
#include <iostream> //#include <сtime> #include <time.h> #include <windows.h> #include <math.h> using namespace std; const...

условие if (x && y && z ) - C++
День добрый. подскажите что не так: if(norcub() && nevk() && norok()) { cout<<"Условие не выполнено.\n"; count=30; } // эти 3...

Undefined reference to 'My_lab2::serialize_child(My_lab2::My_stack&,boost::interpro cess::file_lock&)') - C++
Компилирую test: g++ test.cpp -L. -lwrk -lboost_serialization -o programwrk -std=c++0x Так же компилирую libwrk до компиляции...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Monte-Cristo
2787 / 1373 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
22.10.2009, 21:13     C++ & Win32Api #2
создаете новый дескриптор и вызываете функцию создания окна (предварительно зарегестрировав еще один класс окна со своей оконной процедурой).
AloneHere
7 / 6 / 2
Регистрация: 18.11.2008
Сообщений: 43
22.10.2009, 23:56  [ТС]     C++ & Win32Api #3
А поподробнее можно? Просто я только начинаю кодить на спп, а задание с апи задали
Monte-Cristo
2787 / 1373 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
23.10.2009, 00:33     C++ & Win32Api #4
Есть несколько основных этапов работы с оконными приложениями.

1. Регистрация класса окна: заполнение структуры WNDCLASSEX и собственно регистрация.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    WNDCLASSEX wcex;
 
    wcex.cbSize = sizeof(WNDCLASSEX);
 
    wcex.style          = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = WndProc;
    wcex.cbClsExtra     = 0;
    wcex.cbWndExtra     = 0;
    wcex.hInstance      = hInstance;
    wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1));
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName   = MAKEINTRESOURCE(IDC_WIN32);
    wcex.lpszClassName  = szWindowClass;
    wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
 
        RegisterClassEx(&wcex);
2. Создание окна из указанного класса и запоминание его дескриптора (класс указывается именем. в данном случае имя содержится в переменной szWindowClass):
HWND hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);


3. Оконная процедура. Она обрабатывает все действия с окном (сообщений Windows посылает именно ей). Оконная процедура может быть лишь одна для класса окна. В примере выше для класса с именем szWindowClass указана оконная процедура WndProc:
C++
1
    wcex.lpfnWndProc = WndProc;
Общий вид WndProc:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;
 
    switch (message)
    {
    case WM_COMMAND:
        wmId    = LOWORD(wParam);
        wmEvent = HIWORD(wParam);
        // Parse the menu selections:
        switch (wmId)
        {
        case IDM_ABOUT:
            DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
            break;
        case IDM_EXIT:
            DestroyWindow(hWnd);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
        }
        break;
 
        case WM_PAINT:
          hdc = BeginPaint(hWnd, &ps);
          
          EndPaint(hWnd, &ps);
          break;
 
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

То есть, если вы хотите создать два окна с разным поведением (дочерные), нужно зарегестрировать класс для него, и создать оконную функцию (например WndProc1).
Yandex
Объявления
23.10.2009, 00:33     C++ & Win32Api
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru