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φ.