Здравствуйте, я пытаюсь написать небольшую утилиту на с++ с использованием winapi и столкнулся с проблемой. Есть основное окно, в нем хочу создать несколько похожих дочерних, один под одним для элементов из БД и еще одно пустое, для добавления элемента. Написал код, но вижу только одно окно. Начал искать в чем беда, когда оставил одно любое из окон, то оно создается. Потом я сместил окно с элементом бд, и за ним окна добавления нет. Почему оба окна не создаются вместе? Код (C): for (i = 0; i < keys.size(); i++) { keys[i].Register(hWnd, 1); Child = CreateWindowEx(0, CHILD_CLASSNAME, L"Child 1", WS_CHILDWINDOW | WS_VISIBLE, WindowRectSize.left + 50, WindowRectSize.top + (int)i * 102, WindowRectSize.right, 100, hWnd, NULL, g_hInst, (LPVOID)(&keys[i])); ShowWindow(Child, SW_SHOW); UpdateWindow(hWnd); } Child = CreateWindowEx(0, CHILD_CLASSNAME, L"Child 999", WS_CHILDWINDOW | WS_VISIBLE, WindowRectSize.left, WindowRectSize.top + (int)i * 102, WindowRectSize.right, 100, hWnd, NULL, g_hInst, NULL); ShowWindow(Child, SW_SHOW); UpdateWindow(hWnd); Естественно все возвращаемые значения проверял, и брекпойнт срабатывает дважды в WndProc
Окна создаются, но их просто не видно (хендлы не нулевые)? Что говорит Spy++? Как организована обработка WM_PAINT у родителя, у потомков? WS_CLIPCHILDREN стоит для родительского окна?
Окно Spy++ прикрепил. Окна есть, почему то одновременно не видно. WM_PAINT родитель не обрабатывает. Потомки тоже не обрабатывают. На WM_CREATE родитель создает детей, а дети создают кнопочки. WS_CLIPCHILDREN добавил, ничего не поменялось
В общем спасибо за подсказку, совсем забыл о Spy++. Сейчас поковырялся в коде и нашел. Я по ошибке в наследниках привязал позицию кнопок к позиции наследника, и на первом все сходилось, а второй уже рисовал кнопки ниже размера наследника, поэтому все было, только его не было видно. Или если сказать страшнее я не нарисовал окно не там, я контролы в окне нарисовал за пределами этого окна.