Форум программистов, компьютерный форум, киберфорум
C++: WinAPI
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ WinAPI VirtualAlloc https://www.cyberforum.ru/ win-api/ thread355847.html
Народ,подскажите кто знает.Разбираюсь с фун VirtualAlloc();Работа с участком памяти расспределенным этой функцией в принципе похожа на работу с участком памяти полученным фун new?Т.е распределил...
Чтение нужной строки из файла C++ WinAPI
С помощью функций Win Api на C написать программу, которая по заданному файлу и слову выводит все строки, в которых это слово содержится. Есть какие-то функции для этого, не посимвольно же все...
Побитовое "ИЛИ" C++ WinAPI
Никак не пойму каким образом операция побитовое "ИЛИ" "|" комбиниует стили окон. Может кто объяснит=)
C++ WinAPI Меняющаяся при нажатии кнопки картинка Доброго всем времени суток! Есть такая задача: Нужно создать диалоговое окно, в котором есть две кнопки "Старт" и "Стоп", а также картинка, которая при нажатии на "Старт" меняется на следующую. Никак... https://www.cyberforum.ru/ win-api/ thread355341.html
C++ WinAPI Как фильтровать Edit в диалоговом окне без родителя? https://www.cyberforum.ru/ win-api/ thread355229.html
Всем привет!:) В общем имеется приложение, использующее диалоговое окно в качестве главного без родителя, загружаемое из ресурса. Там расположено парочка EditText'ов, на которое хотелось бы...
C++ WinAPI Защита файлов, каталогов
Получив задание на КП, впала в легкий ступор. Посоветуйте, с какого конца к нему подступиться, литературу, если можно. С программирование вроде не слишком плохо, но как начать ума не приложу.:-[ ...
C++ WinAPI Параметры WndProc проблема
У меня такая проблема. Читаю книгу Ганеев "Проектирование интерфейса пользователя средствами Win32 API". В этой книге ф-я WndProc выглядит так WndProc(HWND, UINT, WPARAM, LPARAM); Пишу на VS 2010(на...
C++ WinAPI Задержка С помощью каких функций(или функции) можно получить задержку для Win32 API C++? https://www.cyberforum.ru/ win-api/ thread354837.html
C++ WinAPI Нарисовать несколько прямоугольников https://www.cyberforum.ru/ win-api/ thread354771.html
hdc=BeginPaint(hwnd,&ps); int x=40; int y=40; for(int i=0;i<5;i++) { for(int j=0;j<5;j++) Rectangle(hdc,x,y,x+20,y); y+=20; } EndPaint(hwnd,&ps);
C++ WinAPI Проблема с обработкой сообщений Задание на лабораторную: Разработать программу, которая создает три окна. Действия по сворачиванию и закрытию одного окна должны выполняться над всеми окнами. Вот вроде на событие минимизации ставлю... https://www.cyberforum.ru/ win-api/ thread354540.html
art44
0

Функция CreateWindow не создает дочернее окно

24.09.2011, 17:56. Просмотров 1725. Ответов 3
Метки (Все метки)

Приветствую! Застрял с довольно идиотской проблемой. Необходимо создать приложение с дочерним окошком средствами WinApi. Я создал win32 приложение, а затем добавил туда код по регистрации и отрисовки дочернего окна. Однако функция CreateWindow не создает окошко.(специально добавил меседжбокс для проверки). Подскажите в чем дело.
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
#include "stdafx.h"
#include "1.h"
 
#define MAX_LOADSTRING 100
 
// Global Variables:
HINSTANCE hInst;                                // current instance
TCHAR szTitle[MAX_LOADSTRING];                  // The title bar text
TCHAR szWindowClass[MAX_LOADSTRING];            // the main window class name
 
TCHAR szChildTitle[] = L"233";                  // The title bar text
TCHAR szChildClass[] = L"657";          // the main window class name
 
// Forward declarations of functions included in this code module:
ATOM                MyRegisterClass(HINSTANCE hInstance);
ATOM                MyRegisterClass1(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK    ChildWndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);
 
int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);
 
    // TODO: Place code here.
    MSG msg;
    HACCEL hAccelTable;
 
    // Initialize global strings
    LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadString(hInstance, IDC_MY1, szWindowClass, MAX_LOADSTRING);
    MyRegisterClass(hInstance);
 
    // Perform application initialization:
    if (!InitInstance (hInstance, nCmdShow))
    {
        return FALSE;
    }
 
    hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_MY1));
 
    
    // Main message loop:
    while (GetMessage(&msg, NULL, 0, 0))
    {
        if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
 
    return (int) msg.wParam;
}
 
 
ATOM MyRegisterClass(HINSTANCE hInstance)
{
    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_MY1));
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName   = MAKEINTRESOURCE(IDC_MY1);
    wcex.lpszClassName  = szWindowClass;
    wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
 
    return RegisterClassEx(&wcex);
}
ATOM MyRegisterClass1(HINSTANCE hInstance)
{
 
    WNDCLASS wcex2;
 
    memset(&wcex2, 0, sizeof(wcex2));
 
    wcex2.style         = CS_HREDRAW | CS_VREDRAW;
    wcex2.lpfnWndProc   = ChildWndProc;
    wcex2.cbClsExtra        = 0;
    wcex2.cbWndExtra        = 0;
    wcex2.hInstance     = hInstance;
    wcex2.hIcon         = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MY1));
    wcex2.hCursor       = LoadCursor(NULL, IDC_ARROW);
    wcex2.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wcex2.lpszMenuName  = NULL;
    wcex2.lpszClassName = szChildClass;
    //wcex2.hIconSm     = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
 
    return RegisterClass(&wcex2);
}
 
 
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd, hChildWnd;
 
   hInst = hInstance; // Store instance handle in our global variable
 
   hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
 
   if (!hWnd)
   {
      return FALSE;
   }
 
   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);
 
   hChildWnd = CreateWindow(szChildClass, szChildTitle, WS_CHILDWINDOW,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, hWnd, NULL, hInstance, NULL);
 
   if(!hChildWnd) {MessageBox(hChildWnd,L"Ошибка",L"Ошибка",MB_OK);}
 
   ShowWindow(hChildWnd, SW_SHOW);
   UpdateWindow(hChildWnd);
 
 
   return TRUE;
}
 
 
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_EXIT:
            DestroyWindow(hWnd);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
        }
        break;
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        // TODO: Add any drawing code here...
        EndPaint(hWnd, &ps);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}
 
LRESULT CALLBACK ChildWndProc(HWND hChildWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch(message)
    {
    //case WM_CREATE:{MessageBox(hChildWnd,"ОШИБКА"); 
    };
    return 0;
}


Вернуться к обсуждению:
Функция CreateWindow не создает дочернее окно
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.09.2011, 17:56
Готовые ответы и решения:

Дочернее окно копируется в не дочернее(хотя не должно)
При нажатии кнопки появляется окно, но вместо того, что бы отрисоваться как надо, в него копируется...

Закрыть дочернее окно и открыть в единственном экземпляре Главное окно
Есть главная форма Main Form , там кнопка Button 1 при нажатии на Button 1 открывыется дочерняя...

Не создается окно CreateWindow
#include &lt;windows.h&gt; #include &lt;stdlib.h&gt; LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);...

Создать модальное окно (дочернее окно) как в одноклассниках
Здраствуйте всем, Нужна помощь. Я хочу создать модальное окно (дочерное окно) в ASP.NET на примере...

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