Tvorba uživatelského rozhraní
Přehled informací

Prostředky použitelné při tvorbě uživatelského rozhraní
Při tvorbě dialogového rozhraní můžeme využívat služeb standartních dialogových 
  oken Visual C++ nebo používat rozšířený sytém Autodesku. Aba dva systémy je 
  možné, z programátorského pohledu použítí, považovat za ekvivalentní. V dalším 
  výkladu budeme používat MFC systém firmy Autodesk. 
MFC systém Autodesku pro tvorbu uživatelského rozhraní je rozdělen do dvou 
  knihoven:
  - AdUi - nezávislý na AutoCADu, větší část funkčnosti,
 
  - AcUi - obsahuje specifický vzhled a chování.
 
AdUi rozšiřuje standartní MFC knihovnu. Aby bylo možné používat třídy, funkce 
  a proměnné z AdUi a AcUi musí být do projektu importovány soubory 
  knihoven adui.h, adui15.lib (viz  nastavení 
  projektu)
Třídy implementované v AdUi nabízí:
  - změnu velikosti dialogového boxu,
 
  - stálost dialogových dat,
 
  - interakci dialogu s výkresovým editorem,
 
  - bitmapová tlačítka,
 
  - statická bitmapová tlačítka,
 
  - bitmapová tlačítka, které mají drag and drop strany,
 
  - bitmapová tlačítka stylu - nástrojová lišta,
 
  - vlastnická tlačítka,
 
  - podporu pro dialogy typu ToolTips,
 
  - podporu pro dialogy typu TextTips,
 
  - podporu pro dialogy typu DrawTips,
 
  - uživatelské zasílání zpráv,
 
  - přístup k registrům.
 

Obecný postup tvorby ObjectARX MFC aplikace
Dialogové panely se mohou v aplikaci vyskytovat ve dvou podobách:
  - dialalogové okna typu modal - dokud nejsou po otevření uzavřena, 
    nelze provádět žádná činnost mimo okno,
 
  - dialogové okna typu modeless - mohou zůstat otevřená a uživatel mezitím 
    může pracovat (nemusí se zavřít).
 
V dalším výkladu se budeme zabývat použítím modálních dialogových oken.
Vytvoření kostry aplikace s dialogovým oknem
  - Pro vytvoření aplikace využijeme služeb pomocníka pro vytvoření nového projektu 
    ObjectARX ve Visual C++. Postup tvorby: 
 
  
    - otevřeme Visual C++,
 
    - z nabídky File vyberte položku New,
 
    - v kartě Project vyberte typ projektu ObjectARX 2000 
      AppWizard,
 
    - zadejte jméno např. novyDialog, případně změňte umístění,
 
    - potvrďte zadané hodnoty tlačítkem OK,
 
    - otevře se druhé dialogové okno, v kterém si zkontrolujte správné zadání 
      zvýrazněných hodnot. Nezapomeňte zadat hodnotu do editovacího pole Your 
      Registered Developer Symbol. Pokud nejste registrováni u firmy Autodesk, 
      zadejte zde libovolnou trojici - čtveřici znaků, kterými bude začínat prefix 
      Vámi definovaných tříd.
 
  
   
    
  
  
    - zkontrolujte si zadané hodnoty a zmáčkněte tlačítko Finish.
 
  
  - Pomocník vytvoří kostru aplikace připravenou na přidání dialogových prvků.
 
  - Otevřete si soubor se stejným jménem jako má vytvořený projekt s koncovkou 
    .cpp. Na začátek tohoto souboru musíme přidat příkaz pro importování 
    knihovny (obsahuje podporu pro snažší správu zdrojů): 
    
 
      #include "AcExtensionModule.h" 
     
   
  - Přidáme funkci pro vytvoření dialogu, která bude 
    přibližně následujícího tvaru (jména tříd se mohou u Vaší funkce lišit): 
    
  // Vyvolání dialogu
  void vytvorDialog()
  {
    // vytvářený dialog bude typu modalní dialog
    CZadaniDialog dlg(CWnd::FromHandle(adsw_acadMainWnd()));
    int nReturnValue = dlg.DoModal();
  }
   
  - Do funkce aktivované při inicializaci AcExtensionModule.h InitApplication() 
    dopíšeme následující kód: 
    
  void InitApplication();
  {
    novyDialogDLL.AttachInstance()
    CAcModulResourceOverride resOverride;
    acedRegCmds->addCommand("jméno_skupiny_příkazů",
                "jméno_příkazu,
                "jméno_příkazu",
                ACRX_CMD_MODAL,
                 jméno_funkce_vytvořené_v_bodu_4,
                NULL,
                -1,
                novyDialog.ModuleResourceInstance());
  }
    Poznámka - označení novyDialogDLL se ve Vaší aplikaci může lišit (pokud 
      jste zadali jiný název projektu), zjistíte ho ve volání rozšířeného modulu 
      objektu (vygenerováno na začátku souboru):
     
      AC_IMPLEMENT_EXTENSION_MODULE(novyDialogDLL);
     
   
  - Do funkce aktivované při odstranění aplikace, doplníme kód pro odsranění 
    zdrojů: 
    
void UnloadApplication()
{
  acedRegCmds->removeGroup("jméno_skupiny_příkazů");
  novyDialogDLL.DetachInstance();
}
   
  - Do příkazu switch, který odchytává zprávy z AutoCADu musíme přidat 
    položku, která bude reagovat na zprávu kInitDialogMsg - inicializace dialogu: 
    
	case AcRx::kInitDialogMsg:
		break;
   

Vytvoření dialogového okna pomocí App Studia
  - Ve Visual C++ přidáme do projektu nový prostředek typu Dialog. Postup 
    přidání dialogového prvku: 
    
      - otvřeme nabídku Insert,
 
      - z nabídky vybereme položku Resource..., otevře se dialogové 
        okno Resoures, 
 
    
    
   
  
    - z dialogu vybereme prostředek Dialog a zmáčkneme tlačítko 
       New,
 
  
   
    
  
  
    - vytvoří se nový dialogový prvek.
 
  
   
    
  
  - Do novém dialogového okna vložíme všechny požadované prvky.
 
  - Zkontrolujeme jednoznačnost ID prvků. Dialogové okno vlastností prvku, vyvoláme: 
    
      - umístíme kurzor myši nad prvek, u kterého potřebujeme změnit vlastnosti,
 
      - klikneme pravým tlačítkem myši, zobrazí se plovoucí nabídka, z které 
        vybereme položku Properties..,
 
      - otevře se dialogové okno Properties pro zvolený dialogový 
        prvek. V dialogovén okně můžeme měnit všechny dostupné vlastnosti.
 
    
   


Vytvoření tříd a ovladačů
Když máme vytvořený dialog můžeme nechat vygenerovat pomocí pomocníka tříd 
  Class Wizardu novou třídu pro dialog a přidat jednotlivé členské funkce. 
  Postup:
  - Dvojklikněte levým tlačítkem myši nad vytvořeným dialogovým oknem, zobrazí 
    se následující dotaz: 
    

    Na dotaz jestli chceme vytvořit novou třídu pro dialog odpovíme zatržením: 
      "Create a new class" a zmáčkneme tlačítko OK.
   
  - Otervře se dialogové okno New Classs dotazem pro zadání nového jména 
    třídy: 
    
    
Do dialogu vyplníme jméno třídy a zkontrolujeme třídu, z které je naše 
      třída odvozena (zatím CDialog). Zadané údaje potvrdíme tlačítkem OK.
   
  - Dále musíme přidat do projektu hlavičkový soubor stejného jména, jako má 
    projekt. Do souboru dopíšeme deklarace našich funkcí.
 
  - Musíme vytvořit správce (ovladače) jednotlivých dialogových prvků a svázat 
    je s jednotlivými prvky (pomocí Class Wizardu).
 
  - Dopíšeme kód obslužných funkcí.
 
Nakonec nesmíme zapomenout změnit názvy dialogových prvků a rodičovské třídy 
  dialogu (aby byly používány prvky AcUi a ne standartní prvky Visual C++) 
  podle následujícího schématu: 
  - CDialog -> CAcUiDialog,
 
  -  CComboBox -> CAcUiSymbolComboBox,
 
  -  CListBox -> CAcUiListBox,
 
  -  CButton -> CAcUiPickButton,
 
  - CEdit -> CAcUiNumericEdit atd. (všechny typy prvků je možné nalézt v 
    dokumentaci k ObjectARX),
 

Příklady tvorby aplikace s uživatelským rozhraním
Podrobný postup jak vytvořit aplikaci s uživatelským rozhraním naleznete v 
  příkladě 3 (funkce s jednoduchým uživatelským rozhraním) a příkladě 4 (funkce 
  s komplexním uživatelským rozhraním). 
