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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2009, 16:17   #1
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию Как перерисовать кнопку Пуск после изменения надписи

Программа каждые пол-секунды меняет надпись на "Пуске". Потом закрывается.
Все хорошо и все работает, но только визуально надпись меняется только после того, как по пуску повозишь мышью.
Собственно, вопрос: как его перерисовывать? Пробовал WM_PAINT посылать, но безрезультатно..

Код:
#include <windows.h>

HWND h1,h2;
UINT Timer;
long cnt;
bool b;

LRESULT CALLBACK fun(HWND hWnd, UINT Message, UINT wParam, LONG lParam);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{

MSG Msg;
h1 = FindWindow("Shell_TrayWnd","");
h2 = FindWindowEx(h1,NULL,"Button",NULL);
b = false;
cnt = 0;

Timer = SetTimer(NULL,1,500,(TIMERPROC)fun);

while(GetMessage(&Msg,NULL,0,0))
 {
 TranslateMessage(&Msg);
 DispatchMessage(&Msg);
 }
 return Msg.wParam;
}

LRESULT CALLBACK fun(HWND hWnd, UINT Message, UINT wParam, LONG lParam)
{
 switch(Message)
  {
   case WM_TIMER:
     if(b) { SetWindowText(h2,"o_O"); b=false; }
     else {SetWindowText(h2,"O_o"); b=true; }

     UpdateWindow(h2);  // пробую обновить, но ничего не происходит

     if(cnt++>50)
       fun(hWnd,WM_DESTROY,0,0);
     break;

   case WM_DESTROY:
    PostQuitMessage(0);
    KillTimer(hWnd,Timer);
    return 0;
  }
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 08.06.2009, 17:36   #2
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

попробуйте
Код:
InvalidateRect(h2, 0, true);
***
вместо апдейта
Uguu~

Последний раз редактировалось __STDC__; 08.06.2009 в 17:39.
__STDC__ вне форума Ответить с цитированием
Старый 08.06.2009, 17:45   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

То, что нужно Спасибо..
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как принудительно перерисовать форму. IliaIT Общие вопросы Delphi 2 23.04.2009 14:34
Запретить изменения Книги после истечения месячного срока komar73 Microsoft Office Excel 0 31.03.2009 11:01
Проблемма с выводом надписи при нажатии на кнопку prikolist Общие вопросы C/C++ 6 06.02.2009 16:11
Как обновить\перерисовать рисунок на форме или компоненте? Selebro Общие вопросы C/C++ 1 21.12.2008 21:16
Как обновить GridView после изменения SELECT в SqlDataSource? posdnyaa БД в Delphi 2 21.04.2008 11:55