[ Pobierz całość w formacie PDF ]
.char STRING[35];ltoa (serialnumber , STRING, 16);Label2->Caption = STRING;DWORD spc;DWORD bps;DWORD cluster;DWORD freeclust;GetDiskFreeSpace (YourDrive.c_str(), &spc, &bps, &freeclust,&cluster) ;Label3->Caption = SepAdd(spc);Label4->Caption = SepAdd(bps);Label5->Caption = SepAdd(cluster);unsigned int free_bytes = freeclust * spc * bps;Label6->Caption = SepAdd(free_bytes);}else{ShowMessage("Nie mo¿na odczytaæ informacji o dysku!");}}//---------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender){GetDriveInfo("C:\\");}Skompiluj i uruchom program.Klikniêcie przycisku spowoduje wyœwietlenie naformularzu informacji o iloœci wolnego miejsca oraz numeru seryjnego woluminu.Aby uzyskaæ podobne informacje dla dysku innego ni¿ C:, wystarczy zmieniæparametr wywo³ania funkcji GetDriveInfo() w przedostatnim wierszu.Zasadniczymi elementami przyk³adu s¹ wywo³ania funkcji GetDiskFreeSpace() iGetVolumeInformation().Warto równie¿ zapamiêtaæ sposób konwersji numeruseryjnego (danego wartoœci¹ typu DWORD) na ³añcuch czytelny dla u¿ytkownika.Migaj¹ce oknoW grupach dyskusyjnych poœwiêconych programowaniu czêsto pojawia siê pytanie omo¿liwoœæ odszukania wybranego okna lub ustawienia jego tekstu.Obs³ugê tychzadañ umo¿liwiaj¹ doœæ popularne funkcje: FlashWindow(), FlashWindowEx() iSetWindowText().Na kilku kolejnych stronach przyjrzymy siê ich dzia³aniu isposobowi praktycznego wykorzystania w programach.FlashWindowEx()Funkcja FlashWindowEx() jest nowym cz³onkiem „rodziny Win32”, pojawi³a siêbowiem w definicji API dopiero w systemach Windows 98 i 2000.Mo¿na j¹wykorzystaæ w zastêpstwie nieco starszej funkcji FlashWindow(), pozwalaj¹cej„mrugn¹æ” paskiem tytu³u.Daje to mo¿liwoœæ poinformowania u¿ytkownika ozajœciu okreœlonego zdarzenia w programie lub zg³oszenia gotowoœci okna dopracy (tj.mo¿liwoœci odbierania danych wprowadzanych za pomoc¹ klawiatury imyszy).Deklaracje obu tych u¿ytecznych funkcji mo¿na znaleŸæ w plikunag³Ã³wkowym winuser.h.FlashWindow() umo¿liwia jednokrotne „mrugniêcie” paska tytu³u, nie pozwalanatomiast wykonywaæ tej czynnoœci cyklicznie – w tym celu trzeba wywo³ywaæ j¹wielokrotnie z wykorzystaniem np.zdarzeñ zegara.Funkcja FlashWindowEx()posiada ju¿ w³asny mechanizm odmierzania czasu, a poza tym jest bardziejuniwersalna – pozwala ustaliæ liczbê „mrugniêæ”, czêstotliwoœæ migania okna zdok³adnoœci¹ do milisekundy, a tak¿e kilka dodatkowych parametrów.U¿ytkownicysystemu Windows 98 mieli zapewne okazjê widzieæ omawiane tu funkcje w dzia³aniu– wykorzystuj¹ je takie programy, jak np.: ICQ, AOL Instant Messenger czyaplikacje z pakietu Microsoft Office.Deklaracja funkcji FlashWindowEx() jest nastêpuj¹ca:BOOL FlashWindowEx {PFLASHWINFO pfwi // wskaŸnik do struktury zawieraj¹cej ustawienia);Jedynym parametrem funkcji jest wskaŸnik do struktury typu FLASHWINFO,opisuj¹cej sposób dzia³ania funkcji.Wartoœæ zwracana okreœla stan okna przedwywo³aniem funkcji i wynosi TRUE (wartoœæ ró¿na od zera), jeœli okno by³oaktywne, lub FALSE (zero), jeœli nie by³o aktywne.Funkcja FlashWindow() jestco prawda ³atwiejsza w u¿yciu, jednak w dalszych przyk³adach u¿yjemy bardziejuniwersalnej FlashWindowEx().Typ strukturalny FLASHWINFO zdefiniowany jest nastêpuj¹co:typedef struct {UINT cbSize;HWND hwnd;DWORD dwFlags;UINT uCount;DWORD dwTimeout;} FLASHWINFO, *PFLASHWINFO;Zawartoœæ pól struktury steruje sposobem pracy funkcji FlashWindowEx(), czylizachowaniem okna.Najwa¿niejszym parametrem jest tu pole dwFlags, kontroluj¹cesposób migania.Mo¿e ono zawieraæ wartoœci wyszczególnione w tabeli 14.22.Tabela 14.22.Mo¿liwe wartoœci pola dwFlags struktury FLASHWINFOSta³aZnaczenieFLASHW_STOPPrzerywa miganie i przywraca pierwotny stan okna.FLASHW_CAPTIONW³¹cza miganie paska tytu³u.FLASHW_TRAYW³¹cza miganie przycisku w pasku zadañ.FLASHW_ALLW³¹cza miganie paska tytu³u i przycisku w pasku zadañ (równowa¿na sumielogicznej sta³ych FLASHW_CAPTION i FLASHW_TRAY).FLASHW_TIMERW³¹cza cykliczne miganie okna, a¿ do zatrzymania za pomoc¹ opcji FLASHW_STOP.FLASHW_TIMERNOFGW³¹cza cykliczne miganie okna, a¿ do chwili „wywo³ania go” na pierwszy plan.U¿ycie powy¿szych sta³ych daje programiœcie szerokie mo¿liwoœci sterowaniazachowaniem wybranego okna.FindWindow()W razie koniecznoœci zlokalizowania okreœlonego okna mo¿na te¿ wykorzystaæfunkcjê Win32 FindWindow().Umo¿liwia ona znalezienie ¿¹danego okna najwy¿szegopoziomu na podstawie zawartoœci paska tytu³u i nazwy klasy, zwraca zaœ uchwytokna.Nale¿y jednak pamiêtaæ, ¿e zakres poszukiwañ ograniczony jest do okiennajwy¿szego poziomu i nie obejmuje okien potomnych (typu child).Dolokalizowania tych ostatnich mo¿na natomiast wykorzystaæ funkcjêFindWindowEx().Oto deklaracja funkcji FindWindow():HWND FindWindow(LPCTSTR lpClassName, // nazwa klasy oknaLPCTSTR lpWindowName // zawartoœæ paska tytu³u);Parametry funkcji lpClassName i lpWindowName s¹ wskaŸnikami do zakoñczonychzerami ³añcuchów zawieraj¹cych odpowiednio nazwê klasy okna oraz zawartoœæ jegopaska tytu³u.Funkcja zwraca wartoœæ uchwytu okna lub NULL w przypadkuniepowodzenia.SetWindowText()Funkcja SetWindowText() pozwala zmodyfikowaæ tekst okna.W przypadku „zwyk³ych”okien zmieniana jest zawartoœæ paska tytu³u; dla elementów steruj¹cych, takichjak np.przyciski – tekst zawarty w elemencie (np.opis przycisku, tekstetykiety).SetWindowText() nie pozwala na zmianê tekstu elementu steruj¹cegonale¿¹cego do innego programu [ Pobierz caÅ‚ość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • luska.pev.pl
  •