MessageBox

0
  1. jak zrobic zeby po kliknieciu w MessgeBox'ie wyslal sie jakis komunikat ? jesli sie nie da to jak zrobic okienke (nie buttona) z jakims przyciskiem ?
  2. Jak wyczyscic ekran okienka w WinAPI ?
0

int odp=Appliacation->MessageBox("Chcesz wyslac?","Komunikat",MB_YESNO);
if(odp==ID_YES)
//tu sobie wysylasz
else
//niewysylasz

0

ad 2 np. tak...

RECT r;
GetClientRect(win,&r);
HDC dc=GetDC(win);  // BeginPaint()
unsigned long bgr=

0x

102030;
HANDLE o=CreateSolidBrush((COLORREF)bgr);
o=SelectObject(dc,o);
PatBlt(dc,0,0,r.right,r.bottom,PATCOPY); // albo kombinuj z FillRectangle
o=SelectObject(dc,o);
DeleteObject(o);
ReleaseDC(win,dc); // EndPaint()

a jak chcesz wyczyscic cały obszar okna, to GetWindowDC() + GetWindowRect()

0

int odp=Appliacation->MessageBox("Chcesz wyslac?","Komunikat",MB_YESNO);
if(odp==ID_YES)
//tu sobie wysylasz
else
//niewysylasz

  • Application-> chyba niepotrzebne
  • nie ma czegos takiego jak ID_YES , na msdn tez nie znajduje
  • w MessgaeBox chyba jeszcze musi byc HWND
0

to co anubis napisal to jest bcb. W winapi jest tak:
if (MessageBox(0,"Komunikat","Komunikat",MB_YESNO )==IDYES)
{

}

0

ok dziala teraz co do tego czyszczenia ekranu... wypelnilem okno na samym poczatku tak:

wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW)

teraz jak zdobyc kolor tego okna ? bo unsigned long bgr=0x102030 koloruje na bialo

0

ta linie :
HANDLE o=CreateSolidBrush((COLORREF)bgr);
zastąp tym:
HANDLE o;
o=CreateSolidBrush(COLOR_WINDOW);

0

juz tak proboralem wczesniej. w momencie wywolania komunikatu z zamazywaniem okranu....zamazywuje wszystko na czarno
probowalem zdobyc kody kolorow i np. jak pobiore sobie z jakiego programu niebieski #0033CC i wklepie

CreateSolidBrush(0x0033CC) 

to koloruje na czerwono... tak jakby odrwacal okolry

0x0033CC oczywiscie :)

0

gdybys sie wczytal, to zauwazylbys, ze zmienna nazywa sie bgr, nie rgb.
i tak sie ustala kolory rysowania... na odwrot

// to nie jest od background
// Ziomal rozdzielenie deklaracji i przypisania nic nie da poza dodatkową linijka

// do postu ponizej... skilować i zalozyć nowy... chyba, że SetTimer z tym samym id zmieni przedzial bez kilowania, a jezeli nie chcesz w taki sposob, to zrob inaczej, ustaw sobie timer na przedzial n x mniejszy i reaguj na co m-ty messydz... Wtedy zmieniajac to m , na ktore reagujesz zmieniasz automatycznie czas.

0

wielkie dzieki
to moze jak jestescie juz tacy dobrzy to mi powiecie jak zmienic czas odliczany przez timer ? bo timer jest zakladany w momencie WM_CREATE i pozniej sprawdza tylko WM_TIMER .

1 użytkowników online, w tym zalogowanych: 0, gości: 1