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

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

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

C++ & Win32Api - C++

22.10.2009, 19:57. Просмотров 974. Ответов 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 (C++):

Ошибка: multiple definition of `void std::swap<A>(A&amp;, A&amp;) - C++
Хочу специализировать swap для своего класса. Получаю ошибку. Вот код:#ifndef A_H #define A_H #include &lt;string&gt; class A { ...

Почему friend ostrem& operator <<(ostream& outs, const Rational&); - invalid function declaration? - C++
Пытаюсь скомпилировать программу пишет friend ostrem&amp; operator &lt;&lt;(ostream&amp; outs, const Rational&amp;); - invalid function declaration. ...

В заштрихованную фигуру бросают точки с координатами x и y. Получить координаты первой точки не попавшей в эту область (фигура x*x+y*y<25&&x*x+y*y>=9& - C++
В заштрихованную фигуру бросают точки с координатами x и y. Получить координаты первой точки не попавшей в эту область (фигура...

ostream &operator<< (ostream &output, const Array &obj) - что означает эта строка? - C++
void Array::getArray() // вывод массива { for (int ix = 0; ix &lt; size; ix++) cout &lt;&lt; setw(5) &lt;&lt; ptr; // вывод элементов...

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
22.10.2009, 21:13 #2
создаете новый дескриптор и вызываете функцию создания окна (предварительно зарегестрировав еще один класс окна со своей оконной процедурой).
AloneHere
7 / 6 / 2
Регистрация: 18.11.2008
Сообщений: 43
22.10.2009, 23:56  [ТС] #3
А поподробнее можно? Просто я только начинаю кодить на спп, а задание с апи задали
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
23.10.2009, 00:33 #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).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2009, 00:33
Привет! Вот еще темы с ответами:

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

Порядок вычисления: операторы «|» и «||», «&» и «&&» - C++
В Java булевые операторы «|» и «||», и «&amp;» и «&amp;&amp;» отличаются друг от друга порядком вычеслений, а в C++ так же как и в Java или...

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

Friend ostream& operator<<(ostream& stream, CArr& obj); - C++
CArr.h #pragma once class CArr{ int* arr = nullptr; int size = 10; void swap(int *a, int *b); void swap(int &amp;a, int &amp;b); ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.10.2009, 00:33
Ответ Создать тему
Опции темы

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