Первое и последнее окно не отображаются - PullRequest
0 голосов
/ 10 марта 2010

Я создаю приложение WinApi для моего курса программирования. Программа должна показывать светодиодные часы, используя отдельное окно для каждого «блока». Я понял большую часть этого, за исключением одного: при создании двумерного массива окон первое и последнее окна никогда не отображаются. Вот фрагмент кода из функции InitInstance:

for (int x=0;x<8;x++)
    for (int y=0;y<7;y++) {
    digitWnd[x][y] = CreateWindowEx((WS_EX_LAYERED | WS_EX_TRANSPARENT | WS_EX_NOACTIVATE | WS_EX_STATICEDGE),
        szWindowClass, szTitle, (WS_POPUP| WS_BORDER), NULL, NULL, NULL, NULL, dummyWnd, NULL, hInstance, NULL);
    ShowWindow(digitWnd[x][y], nCmdShow);
    UpdateWindow(digitWnd[x][y]);
    } 

При каждом взаимодействии с окнами используются одни и те же границы цикла (установите положение и включите / отключите). Кажется, что все окна работают нормально, кроме digitWnd[0][0] и digitWnd[7][6] ... Есть идеи, что происходит?

Ответы [ 3 ]

1 голос
/ 10 марта 2010

Откройте Spy ++ и проверьте, действительно ли отсутствующие окна отсутствуют или просто перекрываются другими окнами. Возможно, у вас есть небольшая ошибка в коде расчета позиции, которая помещает их за другим окном или за пределы экрана.

0 голосов
/ 13 марта 2010

Это ваш первый звонок на ShowWindow()? Если это так, в соответствии с MSDN , «nCmdShow: [in] Указывает, как должно отображаться окно. Этот параметр игнорируется при первом вызове приложения ShowWindow». Это может означать, что вы можете исправить вашу программу, просто вызвав ShowWindow() дважды. Попробуйте и посмотрите, работает ли он. Кроме этого, вам, вероятно, придется предоставить больше кода, чтобы мы могли на него посмотреть.

0 голосов
/ 10 марта 2010

Чтобы проверить ваш механизм создания, я бы проверил:

  1. Инициализация массива HWND digitWnd [8] [7]

  2. если родительское окно dummyWnd действительно

  3. возвращаемое значение CreateWindowEx() != NULL

Еще один момент, который мне приходит в голову, это то, что вы создаете окна с размером 0 - без ширины или высоты. Поэтому, возможно, было бы неплохо установить размер в CreateWindowEx (...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...