Witam wszystkich mam taki problemi otóż chodzi mi o sformatowanie przez was do minimum kodu tego wygaszacza. Część już zrobiłem i się dobrze kompiluje na razie powinien się wyświetlić czarny napis (programk kompilowany w dev c++ z dodaniem bibliotek libscrnsave.a libcomctl32.a i libscrnsavw.a) . Proszę o pomoc co i gdzie mam wpisać aby misię wyświetlił jakiś napis np : printf("Witaj"); gdzie mam to wpisać?????
// Wygaszacz, Padaśnieg
// Autor Adam Kowalczyk.
#include <windows.h>
#include <commctrl.h>
#include <scrnsave.h>
long IleStar; // Liczba gwiazdek
long RozneKolory; // nie zero to gwiazdki w roznych koloryach
#define IleStarMax 500
#define NazwaKlucza "SOFTWARE\ProgramyAdama\WygaszaczPadaSnieg"
long predkosc, iSzerokosc, iWysokosc;
long lIleJest;
BOOL bUsuwamy;
UINT uTimer;
void RysujWygaszacz();
void Odczytaj();
void Zapisz();
// Procedura dialogu konfiguracyjnego
BOOL WINAPI ScreenSaverConfigureDialog(HWND dialog,
UINT komunikat, WPARAM wParam, LPARAM lParam)
{
switch(komunikat)
{
case WM_INITDIALOG:
// Odczytaj prędkość z rejestru
Odczytaj();
// Ustaw zakres paska przesuwnego na 0-20
SendDlgItemMessage(dialog, 110, TBM_SETRANGE, TRUE, MAKELONG(1,20));
// Ustaw pozycję suwaka zależnie od prędkości
SendDlgItemMessage(dialog, 110, TBM_SETPOS, (WPARAM)TRUE, predkosc);
// Ustaw zakres paska przesuwnego na 5-500
SendDlgItemMessage(dialog, 111, TBM_SETRANGE, TRUE, MAKELONG(5,500));
// Ustaw pozycję suwaka zależnie od prędkości
SendDlgItemMessage(dialog, 111, TBM_SETPOS, (WPARAM)TRUE, IleStar);
if (RozneKolory!=0) CheckDlgButton(dialog, 113, BST_CHECKED);
else CheckDlgButton(dialog, 113, BST_UNCHECKED);
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
predkosc = SendDlgItemMessage(dialog, 110, TBM_GETPOS, 0, 0);
IleStar = SendDlgItemMessage(dialog, 111, TBM_GETPOS, 0, 0);
if (IsDlgButtonChecked(dialog, 113)==BST_CHECKED) RozneKolory=1;
else RozneKolory=0;
// Zapisz prędkość do rejestru
Zapisz();
EndDialog(dialog, TRUE);
case IDCANCEL:
EndDialog(dialog, FALSE);
return TRUE;
case 112:
MessageBox(dialog,"Ten program jest prostym wygaszaczem ekranu. \n Może być w dowolny sposób kopiowany i rozpowszechniany.\n Autor: Adam Kowalczyk. [email protected]", "Lelas", 0);
return FALSE;
}
}
return FALSE;
}
BOOL WINAPI RegisterDialogClasses(HANDLE hInst)
{
InitCommonControls();
return TRUE;
}
LONG WINAPI ScreenSaverProc(HWND okno, UINT komunikat, WPARAM wParam, LPARAM lParam)
{
HDC kont;
RECT prost;
int i;
switch(komunikat)
{
case WM_CREATE:
{
Odczytaj();
/* Włącz zegar generujący komunikaty WM_TIMER co okres czasu = prędkość*1/10 [sek] */
iSzerokosc=GetSystemMetrics(SM_CXSCREEN);
iWysokosc=GetSystemMetrics(SM_CYSCREEN);
lIleJest=0;
bUsuwamy=0;
uTimer = SetTimer(okno, 1, 50, NULL);
break;
}
case WM_TIMER:
{
HPEN poppioro, pioro;
int x,y;
kont = GetDC(okno);
// Tu rysujemy gwiazdki
RysujWygaszacz(kont);
ReleaseDC(okno,kont);
break;
}
case WM_DESTROY:
if (uTimer) KillTimer(okno, uTimer);
break;
}
return DefScreenSaverProc(okno, komunikat, wParam, lParam);
}
// Funkcja odczytuje prędkość wygaszacza z rejestru
void Odczytaj()
{
HKEY klucz;
DWORD rozm = 4;
// Otwórz odpowiedni klucz rejestru
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, NazwaKlucza, 0,
KEY_QUERY_VALUE, &klucz) == ERROR_SUCCESS)
{
// Odczytaj prędkość
RegQueryValueEx(klucz, "Prędkość", 0, NULL, (BYTE *)&predkosc, &rozm);
if(predkosc<0 || predkosc>20) predkosc = 2;
// Odczytaj liczbe gwiazd
RegQueryValueEx(klucz, "LiczbaGwiazd", 0, NULL, (LONG *)&IleStar, &rozm);
if (IleStar<5) IleStar=5;
if (IleStar>IleStarMax) IleStar=IleStarMax;
// Odczytaj czy zmiana kolorow
RegQueryValueEx(klucz, "RozneKolory", 0, NULL, (LONG *)&RozneKolory, &rozm);
// Zamknij otwarty klucz rejestru
RegCloseKey(klucz);
} else
{
IleStar=20;
predkosc = 5;
RozneKolory=1;
}
}
// Funkcja zapisuje prędkość wygaszacza do rejestru
void Zapisz()
{
HKEY klucz;
DWORD akcja;
// Otwórz odpowiedni klucz rejestru
RegCreateKeyEx(HKEY_LOCAL_MACHINE, NazwaKlucza , 0, NULL,
REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &klucz, &akcja);
// Zapisz informacje o prędkości
RegSetValueEx(klucz, "Prędkość", 0, REG_DWORD, (CONST BYTE *)&predkosc, 4);
// Zapisz informacje o liczbe gwiazd
RegSetValueEx(klucz, "LiczbaGwiazd", 0, REG_DWORD, (CONST BYTE *)&IleStar, 4);
RegSetValueEx(klucz, "RozneKolory", 0, REG_DWORD, (CONST BYTE *)&RozneKolory, 4);
// Zamknij otwarty klucz rejestru
RegCloseKey(klucz);
}
void RysujWygaszacz()
{
return(0);
}
// rozdwojenie jaźni, czy co? asiunia, heh :-8 - ŁF