我写了个atl com的库,在vb中可以通过添加类型库的方法调用,但是我想能够做成控件的形式,就是在组件栏中加入我写的组件,这个组件有一个图标,可以用鼠标拖动组件到vb的form里面去,拖过去的类似于一个label,label可以控制大小,运行时不可见,这样调用起来就比较方便,不过不知道从何下手,请高手指点。具体的问题:
比如如何在控件里加载一个图片,添加组件到控件栏中显示的是一个有图标的控件

解决方案 »

  1.   

    要在From里面显示图片可以在OnDraw函数里面实现,代码如下:
        HRESULT OnDraw(ATL_DRAWINFO& di)
    {
    HBITMAP bitmap = LoadBitmap( ATL::_AtlBaseModule.GetResourceInstance(), MAKEINTRESOURCE( IDB_TEST1 ) );
    HDC hdc = di.hdcDraw; 
    HDC hMemDC = ::CreateCompatibleDC( hdc );
    SelectObject(hMemDC,bitmap);
    ::BitBlt( hdc, 0, 0, 32, 32, hMemDC, 0, 0, SRCCOPY );
    ::DeleteObject( bitmap );
    ::DeleteDC( hMemDC ); return S_OK;
    }
    如果你要固定控件的大小,如Timer控件,就在构造函数中加入如下代码:
    test1()
    {
    m_bWindowOnly = true;
    // Don't allow a resize
    m_bAutoSize = true;
    // Set the initial size
    SIZEL size = {32, 32};
    AtlPixelToHiMetric( &size, &m_sizeExtent );
    // Make sure the natural extent is the correct size too
    m_sizeNatural = m_sizeExtent;
    }说明:以上代码都是创建一个不可变大小(位图32*32大小)的代码。但如何才能在“添加组件到控件栏中显示的是一个有图标的控件”中显示图片,我有时创建一个会有,有时创建一个又没,刚学做COM,估计跟你一样,搜问题解决就到这里了,把知道的说出来,希望对你有所帮助?!也求知道的“添加组件到控件栏中显示的是一个有图标的控件”的同仁能说一下,谢谢!