Otßzky a odpov∞di
V tΘto rubrice najdete odpov∞di na svΘ otßzky, kterΘ m∙₧ete zasφlat na adresu
vbtipy@seznam.cz. Pokud nebudeme znßt odpov∞∩ na n∞jakou
otßzku, objevφ se v Φßsti Otßzky bez odpov∞di a budete-li znßt odpov∞∩ vy,
m∙₧ete nßm ji pomocφ v²Üe uvedenΘ adresy zaslat, rßdi ji zve°ejnφme.
Otßzky a odpov∞di
Otßzky bez odpov∞di
Otßzky a odpov∞di
Na ChipCD 3.2000 je p°φklad na p°ehrßvßnφ zvuku p°es DirectX a tak se chci zeptat, jestli
na n∞jakΘm minulΘm CD nebylo n∞co o DirectDraw a p°φpadn∞ jestli o tom bude n∞co v p°φÜtφch
Φφslech.
DirectX se bohu₧el nev∞nujeme, p°φklady o DirectX jsou v²hradn∞ z Internetu nebo pokud
je zaÜle n∞jak² Φtenß°. Proto nem∙₧eme p°esn∞ °φci, zda jeÜt∞ n∞jakΘ budou. Pßr p°φklad∙ na
pou₧itφ DirectDraw bylo na Chip CD 7/1999. Na Internetu m∙₧ete nalΘzt informace a zdrojovΘ
k≤dy t²kajφcφ se DirectX nap°. na adresßch www.chez.com/scribe a
msdn.microsoft.com/directx. Spousta odkaz∙
na dalÜφ servery je na www.vb-web-directory.com/game/gam_dx.shtml
Mohli byste mi prosφm vysv∞tlit, jak se vytvß°ejφ formulß°e, tzv. splash screen, tedy formulß°e,
kterΘ se objevφ na obrazovce, dokud se samotn² program teprve inicializuje.
Vytvß°∞jφ se ·pln∞ normßln∞, jako ostatnφ formulß°e. V∞tÜinou vÜak nemajφ titulkov² pruh. To
zp∙sobφ nastavenφ vlastnostφ BorderStyle = 3, Caption = "", ClipControls = False,
ControlBox = False. Zobrazenφ samotnΘho formulß°e potom b²vß mezi prvnφmi instrukcemi
programu a po provedenφ vÜech inicializacφ programu se formulß° zase schovß. Nap°.:
Private Sub Main()
frmSplash.Show
DoEvents
If App.Previnstance ... 'n∞jakΘ kontroly p°ed spuÜt∞nφm, otev°enφ DB apod.
If GetSettings( ...
otevriDatabazi(cesta) ...
...
Load frmMain
Unload frmSplash
frmMain.Show 'hlavnφ formulß° aplikace
End Sub
Pomocφ API funkce InsertMenu si mohu do menu okna p°idat co chci (nap°. "v₧dy
na vrchu"), ale v∙bec nevφm, jak zajistit, aby se p°i kliknutφ na toto menu n∞co
provedlo.
P°i p°idßvßnφ menu zφskßte jeho ID (Φtvrt² parametr funkce InsertMenu). Pomocφ
funkce SetWindowsLong nastavφte vlastnφ funkci pro obsluhu zprßv (°eΦeno zjednoduÜen∞)
a v nφ rozpoznßte (pomocφ zmφn∞nΘho ID), zda n∞kdo zvolil p°idanou polo₧ku v menu, kontrolou parametr∙ message
a wparam. Nap°.:
'====================== k≤d formulß°e ======================
Private Sub Form_Load()
insertmymenu
End Sub
Private Sub Form_Unload(cancel As Boolean)
unloadmymenu
End Sub
'====================== k≤d modulu =========================
Private lngID As Long
Private lngOldProcessID As Long
Public Sub insertmymenu()
Dim hWndSystemMenu As Long
hWndSystemMenu = GetSystemMenu(frmMenuSample.hwnd, 0&) 'zφskej ID systΘmovΘho menu
InsertMenu hWndSystemMenu, 0, MF_STRING, mlngID, "moje menu" 'vlo₧ polo₧ku menu
'nastav novou funkci pro obsluhu zprßv
lngOldProcessID = SetWindowLong(Form1.hwnd, GWL_WNDPROC, AddressOf SystemMenuCallBack)
End Sub
Public Sub unloadmymenu()
'Nastav p∙vodnφ obsluhu zprßv
SetWindowLong Form1.hwnd, GWL_WNDPROC, lngOldProcessID
End Sub
Public Function SystemMenuCallBack(ByVal lnghwnd As Long, ByVal lngMessage _
As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If lngMessage = WM_SYSCOMMAND Then 'bylo kliknuto na syst. menu
Select Case wParam 'kterß polo₧ka to byla
Case lngID
msgbox "Moje menu"
Exit Function
Case Else
End Select
End If
SystemMenuCallBack =CallWindowProc(lngOldProcessID, lnghwnd, lngMessage, wParam, lParam)
End Function
Cht∞l bych naprogramovat aplikaci, kterß by pomocφ modemu zp°φstupnila na jinΘm poΦφtaΦi
aplikaci s databßzφ. ProblΘm je v tom, ₧e nevφm, jak ud∞lat, aby ta druhß aplikace
zdvihla telefon a zaΦala komunikovat. Je v∙bec mo₧nΘ n∞co takovΘho vytvo°it pomocφ Visual Basicu?
Takovßto akce ve Visual Basicu ud∞lat jde. Pomocφ komponenty MSComm m∙₧ete vysφlat
i p°ijφmat data ze seriovΘho portu, tzn. i AT p°φkazy pro modem, kter² je na tomto
portu p°ipojen a t∞mi si m∙₧ete modem ovlßdat, jak chcete.
Mßm dva problΘmy ve VB5. Nejde mi vyrobit ChooseFont dialog s pou₧itφm pouze API funkcφ. P°i
volßnφ mi GetLastError vrßtφ chybu CDERR_STRUCTSIZE. Cht∞l bych pou₧φvat systΘmovß okna pro
FindText a ReplaceText (op∞t API). Okna se mi zobrazφ, ale pokud zvolφm cokoliv jinΘho ne₧
Storno, VB se zhroutφ.
Pravd∞podobn∞ je problΘm bu∩ v definici struktury nebo nenφ nastaveno, kterΘ fonty se majφ
zobrazit, pro tiskßrnu, obrazovku nebo obojφ. Zkuste strukturu naplnit takto:
cf.lStructSize = Len(cf)
cf.hwndOwner = Form1.hWnd
cf.hDC = Printer.hDC
cf.Flags = CF_BOTH Or CF_EFFECTS Or CF_FORCEFONTEXIST Or CF_INITTOLOGFONTSTRUCT Or CF_LIMITSIZE
cf.nFontType = REGULAR_FONTTYPE
cf.nSizeMin = 10
cf.nSizeMax = 72
Pokud jde o druh² problΘm s dialogy pro vyhledßvßnφ a nahrazenφ textu, netuÜφm proΦ to d∞lß
(kdo vφte jak na to, napiÜte).
Otßzky bez odpov∞di
V MSDN je zmienka o pou₧itφ interfacu k objektom Windows Exploreru na vlo₧enie
objektov (Listview, treeview, combo, taskbar at∩ ) do vlastn²ch aplikßciφ, ale prilo₧enΘ
vzory s· pre C++. Chcem Vßs po₧iada¥ o nejakΘ moduly alebo prφklady pre pou₧itie t²chto
objektov, za Φo Vßm budem ve╛mi v∩aΦn² ! Zaujφma ma hlavne zobrazenie Listview, treeview,
combo z exploreru a objekty z taskbaru (tabsysview, systraj objekt, objekt hodφn a ponuky
ètart pre vytvorenie novΘho typu taskbaru). Ve╛mi Vßs prosφm o pomoc.
Rßd by som zφskal informßcie o API funkcißch pre prßcu s resources, sp⌠sob ich volania
vo VB a informßcie potrebnΘ pre sprßvny chod funkcie:
loadresource, findresorce, freeresource, updateresource. Chcel by som urobi¥ mal²
lokalizßtor, a na to s· potrebnΘ tieto funkcie, v angliΦtine (MSDN) som Φosi porozumel,
ale neviem ako loadnutΘ resource zobrazi¥ v Image, txt objekte, a ako ich updatova¥ do
s·boru.
ZkouÜel jsem p°idat bitmapu do menu pomocφ API funkce SetMenuItemBitmaps. V normßlnφm menu
to funguje. Jakmile vÜak stejn² postup pou₧iji v PopupMenu, obrßzek se nezobrazφ.
|