Symbian3/SDK/Source/GUID-ECE9B461-B473-5B7B-B5EB-FAA60479848C.dita
changeset 0 89d6a7a84779
equal deleted inserted replaced
-1:000000000000 0:89d6a7a84779
       
     1 <?xml version="1.0" encoding="utf-8"?>
       
     2 <!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
       
     3 <!-- This component and the accompanying materials are made available under the terms of the License 
       
     4 "Eclipse Public License v1.0" which accompanies this distribution, 
       
     5 and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
       
     6 <!-- Initial Contributors:
       
     7     Nokia Corporation - initial contribution.
       
     8 Contributors: 
       
     9 -->
       
    10 <!DOCTYPE concept
       
    11   PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
       
    12 <concept xml:lang="en" id="GUID-ECE9B461-B473-5B7B-B5EB-FAA60479848C"><title>Passing Arguments from Client to Server Classes</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>To make the animation architecture work, some mechanism is required to pass arguments across the client/server boundary. The Window Server acts as courier, but a packaging mechanism is still required if arbitrary information is to be passed through it. The following example is taken from an anim DLL, which deals with handwriting. </p> <p>On the client side, a struct (<codeph>THandwritingDrawData</codeph>) is packaged in a <xref href="GUID-029C644B-BE0F-37C6-95E2-D27F974E6AD3.dita"><apiname>TPckgBuf</apiname></xref> templated argument descriptor and passed to the server-side <xref href="GUID-029C644B-BE0F-37C6-95E2-D27F974E6AD3.dita"><apiname>CAnim</apiname></xref> instance via the <xref href="GUID-029C644B-BE0F-37C6-95E2-D27F974E6AD3.dita"><apiname>RAnim::Command()</apiname></xref> function. </p> <p>An opcode, <codeph>EHwOpSetDrawData</codeph>, is used by the server-side <codeph>CAnim</codeph> derived class to carry out some functionality. </p> <p>The <codeph>param()=</codeph> expression sets the value of the <codeph>THandwritingDrawData</codeph> object inside the package to <codeph>aDrawData</codeph>. </p> <codeblock id="GUID-C9CA5949-F469-58E5-871D-27DD0651D3C2" xml:space="preserve">void RHandWritingAnim::SetDrawData(const THandwritingDrawData&amp; aDrawData)
       
    13     {
       
    14     TPckgBuf&lt;THandwritingDrawData&gt; param;
       
    15     param()=aDrawData;
       
    16     Command(EHwOpSetDrawData,param);
       
    17     }</codeblock> <p>The Window Server calls the <xref href="GUID-029C644B-BE0F-37C6-95E2-D27F974E6AD3.dita"><apiname>CAnim::Command()</apiname></xref> function in response to application calls to the client side command function <codeph>RAnim::Command()</codeph>. The arguments passed to the function by the Window Server are the same as were used on the client side function call. </p> <codeblock id="GUID-5D53A6A7-CD17-55E2-83E9-F8EA3FEDE7D0" xml:space="preserve">void CHandWritingAnim::Command(TInt aOpcode,TAny *aParams)
       
    18     {
       
    19     switch (aOpcode)
       
    20         {
       
    21         case EHwOpActivate:
       
    22             Activate();
       
    23             break;
       
    24         case EHwOpDeactivate:
       
    25             Deactivate();
       
    26             break;
       
    27         case EHwOpSetDrawData:;
       
    28             SetDrawData(STATIC_CAST(THandwritingDrawData*,aParams));
       
    29             break;
       
    30         default:
       
    31             iFunctions-&gt;Panic();
       
    32         }
       
    33     }</codeblock> </conbody><related-links><link href="GUID-FAF1B60A-A4B5-5E45-B9B9-84DA982F2E2B.dita"><linktext>Animations</linktext> </link> </related-links></concept>