就是 添加ctrl下的一个方法,方法的输入参数怎么设置啊。short CMegicCtrl::Write(这里这里。。) 
{
char s【100】;}
在向导为这个控件添加这个write方法的时候,我想接收一个字符串。然后转化成数组,怎么弄

解决方案 »

  1.   

    short CMegicCtrl::Write(const char* pData, int nDataLen) 

        char s[100];
        nDataLen >= 100 ? memcpy(s, pData, 100) : memcpy(s, pData, nDataLen);
      

  2.   

    const char* pData,怎么在下拉框中没有啊。有的都是ole 乱七八糟的东西
      

  3.   

    使用VARIANT &charArray做参数。
    如:
    void CAXGridCtrl::Write(VARIANT &charArray)
    {
        if (charArray.vt==(VT_ARRAY|VT_UI1))
       {
    SAFEARRAY* sarr=charArray.parray; BYTE* bArray=new BYTE[1];
    long lbound(0);
    long ubound(0);
    ::SafeArrayGetLBound(sarr, 1, &lbound);
    ::SafeArrayGetUBound(sarr, 1, &ubound);
    ::SafeArrayAccessData(sarr, (void HUGEP* FAR*)&bArray); int itemCount=(ubound-lbound)+1;
    SafeArrayUnaccessData(sarr);
        }
    }在IDL文件中声明可以如下:
    [id(100), helpstring("方法Write")] void Write(SAFEARRAY(BYTE) charArray)
      

  4.   

    如果是字符串的话,可以用BSTR
      

  5.   

    谢谢你啊vcplayer,我的是采用了unicode编码,我还糊涂怎么变量传的一点没错,就是只写进了一个数。而且莫名的多了个ReleaseU。。呵呵