Click here to Skip to main content
15,886,110 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
C++
---------------------------DLL A----------------------------------
#ifdef SELIBCTRL_IMP
#define SELIBCTRL_API           __declspec(dllexport)
#define SELIBCTRL_EXT_CLASS    AFX_CLASS_EXPORT
#else
#define SELIBCTRL_API           __declspec(dllimport)
#define SELIBCTRL_EXT_CLASS    AFX_CLASS_IMPORT
#endif

class IListCtrl
{
   ...
};

SELIBCTRL_API IListCtrl* CreateIListCtrl(HWND hParent);

class CMyListCtrl : public CListCtrl, public IListCtrl
{
     ...
};
----------------------------DLL B------------------------------
void Test::CreateList()
{
    IListCtrl* pList = CreateIListCtrl(this->GetSafeHwnd());
}
---------------------------------------------------------------

I use a dll interface to create a CMyListCtrl, and override DrawItem(),
but it cant receive ownerdraw message,so DrawItem() is always not running, only can receive move event.

PS:I try use AFX_MANAGE_STATE(AfxGetStaticModuleState()), but its no useful

If dont use A dll, move the CMyListCtrl class to the B dll, it will be OK,
Why is this problem? Can anyone give me a suggestion? Thanks.

-------------------------------------------------------------
TO: Richard MacCutchan
I have already set the style when i create this CListCtrl.
But, thanks a lot of you answer^^
Posted
Updated 26-Nov-12 23:33pm
v4

1 solution

You need to include the LVS_OWNERDRAWFIXED style in your call to CListCtrl::CreateEx()[^].
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900