Megosztás:


Felhasználó által definiált eszközök

Az MFC támogatja a felhasználó által definiált eszközöket. A felhasználó által definiált eszközök egy speciális parancsok, amelyek egy külső, felhasználó által megadott programot hajtanak végre. A testreszabási folyamat segítségével kezelheti a felhasználó által definiált eszközöket. Ezt a folyamatot azonban nem használhatja, ha az alkalmazásobjektum nem a CWinAppEx osztályból származik. A testreszabásról további információt az MFC testreszabása című témakörben talál.

Ha engedélyezte a felhasználó által definiált eszközök támogatását, a testreszabási párbeszédpanel automatikusan tartalmazza az Eszközök lapot. Az alábbi ábrán az Eszközök lap látható.

A Testreszabás párbeszédpanel Eszközök lapja.
Testreszabás párbeszédpanel Eszközök lap

Felhasználó által definiált eszközök támogatásának engedélyezése

Ha engedélyezni szeretné a felhasználó által definiált eszközöket egy alkalmazásban, hívja meg a CWinAppEx::EnableUserTools parancsot. Először azonban több állandót kell definiálnia az alkalmazás erőforrásfájljaiban, hogy paraméterekként használhassa ezt a hívást.

Az erőforrás-szerkesztőben hozzon létre egy olyan próbabábuparancsot, amely egy megfelelő parancsazonosítót használ. Az alábbi példában a parancsazonosítót használjuk ID_TOOLS_ENTRY . Ez a parancsazonosító megjelöl egy helyet egy vagy több menüben, ahol a keretrendszer beszúrja a felhasználó által definiált eszközöket.

A felhasználó által definiált eszközök megjelenítéséhez hozzá kell rendelni néhány egymást követő azonosítót a sztringtáblában. A félretett sztringek száma megegyezik a felhasználók által definiálható felhasználói eszközök maximális számával. Az alábbi példában ezeket ID_USER_TOOL1-től ID_USER_TOOL10-ig nevezték el.

Javaslatokat tehet a felhasználóknak, hogy segítsenek kiválasztani az eszközökként meghívandó külső programok könyvtárait és argumentumait. Ehhez hozzon létre két előugró menüt az erőforrás-szerkesztőben. Az alábbi példában ezek neve IDR_MENU_ARGS és IDR_MENU_DIRS. A menük minden parancsához definiáljon egy sztringet az alkalmazás sztringtáblájában. A sztring erőforrás-azonosítójának meg kell egyenlõnek lennie a parancsazonosítóval.

A CUserTool osztályból származtatott osztályt is létrehozhat az alapértelmezett implementáció lecseréléséhez. Ehhez adja meg a származtatott osztály futtatókörnyezeti adatait a CWinAppEx::EnableUserTools negyedik paramétereként a RUNTIME_CLASS(CUserTool osztály) helyett.

A megfelelő állandók definiálása után hívja meg a CWinAppEx::EnableUserTools parancsot a felhasználó által definiált eszközök engedélyezéséhez.

Az alábbi metódushívás bemutatja, hogyan használhatja ezeket az állandókat:

EnableUserTools(ID_TOOLS_ENTRY,
                ID_USER_TOOL1,
                ID_USER_TOOL10,
                RUNTIME_CLASS(CUserTool),
                IDR_MENU_ARGS,
                IDR_MENU_DIRS);

Ebben a példában az Eszközök lap megjelenik a Testreszabás párbeszédpanelen. A keretrendszer minden olyan parancsot lecserél, amely megfelel a parancsazonosítónak ID_TOOLS_ENTRY bármely menüben a jelenleg definiált felhasználói eszközök készletével, amikor egy felhasználó megnyitja a menüt. A ID_USER_TOOL1 és ID_USER_TOOL10 közötti parancsazonosítók fenntartva vannak a felhasználó által definiált eszközök számára. Az osztály CUserTool osztálya kezeli a felhasználói eszközökre irányuló hívásokat. A Testreszabás párbeszédpanel eszközlapja az argumentum- és könyvtárbejegyzési mezők jobb oldalán található gombokat tartalmaz a menük IDR_MENU_ARGS és IDR_MENU_DIRS eléréséhez. Amikor egy felhasználó kiválaszt egy parancsot ezen menük egyikéből, a keretrendszer hozzáfűzi a megfelelő szövegmezőhöz azt a sztringet, amelynek erőforrás-azonosítója megegyezik a parancsazonosítóval.

Előre definiált eszközökkel együtt

Ha előre szeretne definiálni néhány eszközt az alkalmazás indításakor, felül kell bírálnia az alkalmazás főablakának CFrameWnd::LoadFrame metódusát. Ebben a módszerben a következő lépéseket kell végrehajtania.

Új eszközök hozzáadása a LoadFrame-ben
  1. A CWinAppEx::GetUserToolsManager meghívásával szerezze be a CUserToolsManager osztályobjektumra mutató mutatót.

  2. Minden létrehozni kívánt eszközhöz hívja meg a CUserToolsManager::CreateNewTool parancsot. Ez a metódus egy CUserTool osztályobjektumra mutató mutatót ad vissza, és hozzáadja az újonnan létrehozott felhasználói eszközt az eszközök belső gyűjteményéhez. Ha megadta a CUserTool Class egy származtatott osztályának futtatókörnyezeti adatait a CWinAppEx::EnableUserTools negyedik paramétereként, akkor a CUserToolsManager::CreateNewTool annak az osztálynak egy példányát fogja példányosítani és visszaadni.

  3. Minden eszközhöz állítsa be a szövegfeliratot úgy, hogy beállítja CUserTool::m_strLabel , és állítsa be a parancsot úgy, hogy meghívja CUserTool::SetCommand. A CUserTool osztály alapértelmezett implementációja automatikusan lekéri a rendelkezésre álló ikonokat a hívásban SetCommandmegadott programból.

Lásd még

Az MFC testreszabása
CUserTool osztály
CUserToolsManager osztály
CWinAppEx osztály