Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2014, 04:51   #11
uitzilopochtli
 
Регистрация: 17.04.2014
Сообщений: 4
По умолчанию

У меня похожая проблема. Кнопка создается, но ее не видно пока не начнешь таскать окно или изменять размер. Подскажите пожалуйста.
Код:
LRESULT CALLBACK WindowProcedure (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                  /* handle the messages */
    {
        HWND buttonStart;
        HDC hdc;
        static RECT windowRectangle;
        static int xBtnAxe = 830;
        static int yBtnAxe = 700;

        //GetWindowRect(hWnd, &windowRectangle);

        GetClientRect(hWnd, &windowRectangle);
        //xBtnAxe = windowRectangle.right - 130;
        //yBtnAxe = windowRectangle.bottom - 100;;

        case WM_CREATE:

            buttonStart =
            CreateWindow("BUTTON", "start",
                         CS_VREDRAW| BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE,
                         xBtnAxe, yBtnAxe,
                         BTN_WIDTH, BTN_HEIGTH, hWnd, (HMENU)ID_BTN_START,
                         ((CREATESTRUCT*)lParam)->hInstance, 0);
            ShowWindow(buttonStart, SW_SHOW);
            UpdateWindow(buttonStart);
            SendMessage(hWnd, WM_PAINT, NULL, NULL);
            break;

        case WM_PAINT:

            //MoveWindow(buttonStart, xBtnAxe, yBtnAxe, BTN_WIDTH, BTN_HEIGTH, TRUE);
            UpdateWindow(buttonStart);
            break;
        case WM_DESTROY:
            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
            break;
        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hWnd, message, wParam, lParam);
    }

    return 0;
}
uitzilopochtli вне форума Ответить с цитированием
Старый 17.04.2014, 10:45   #12
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Нельзя передавать CS_ константы в CreateWindow функцию.
Если указываете WS_VISIBLE, тогда не нужно вызывать ShowWindow()
Вместо посылки WM_PAINT следует использовать InvalidateWindow(), да и это лишнее, новосозданное окно должно само отрисоваться.
Код обработки WM_PAINT лишний.
waleri вне форума Ответить с цитированием
Старый 17.04.2014, 11:34   #13
uitzilopochtli
 
Регистрация: 17.04.2014
Сообщений: 4
По умолчанию

Все отлично. Нужно было написать обработчик WM_PAINT.
Код:
        case WM_PAINT: {
            PAINTSTRUCT ps;
            hdc = BeginPaint(hWnd, &ps);

            
            EndPaint(hWnd, &ps);
            break;
        }
uitzilopochtli вне форума Ответить с цитированием
Старый 17.04.2014, 11:35   #14
uitzilopochtli
 
Регистрация: 17.04.2014
Сообщений: 4
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Нельзя передавать CS_ константы в CreateWindow функцию.
Если указываете WS_VISIBLE, тогда не нужно вызывать ShowWindow()
Вместо посылки WM_PAINT следует использовать InvalidateWindow(), да и это лишнее, новосозданное окно должно само отрисоваться.
Код обработки WM_PAINT лишний.
Спасибо большое за подсказки.
uitzilopochtli вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод матрицы в диалоговом окне stas135642 Общие вопросы по Java, Java SE, Kotlin 2 24.10.2011 00:11
Как отловить сообщения с EditBox в диалоговом окне WinApi Gillian Foster Visual C++ 5 19.04.2011 20:52
Рисунок на диалоговом окне!! HunterMan Win Api 4 10.06.2008 12:25
Рисование в диалоговом окне (Си++) molo4nik Помощь студентам 1 06.05.2008 18:27
изменить цвет в диалоговом окне MessageDlg Михаил Юрьевич Общие вопросы Delphi 8 27.04.2008 18:20