Re: Attaching a control to a CDialog
Hi jc,
Is there a good reason for you to create this control dynamically? If
not, then using DDX_Control is much simpler.
Create a private BitTimingList member in your class (not a pointer) then
in your dialog's DoDataExchange function, put the line:
DDX_Control(pDX, IDC_BITTIMING_LIST, m_bitTimingList);
This way, your BitTimingList class "takes over" (technically,
"subclasses") the list control that came on the dialog... no need to put
another on top of the existing one. This may well solve your problem.
You need to make sure that if you've implemented an OnCreate() function
in your list class that you duplicate the code in PreSubclassWindow(),
because OnCreate() is not called at the right time when using this
technique, only PreSubclassWindow.
Hope that helps,
Nick
jc wrote:
On May 29, 1:57 am, David Lowndes <Dav...@example.invalid> wrote:
So, what's the essence of the code you've written to do this?
For example the all the lists are custom draw
...
Ignoring what your control does, I meant how have you "attached" it -
show some code otherwise we're left to guess what you're doing wrong.
oops i'm sorry. when you asked for the essence i misunderstood
CListCtrl *editCtrl;
editCtrl = (CListCtrl *)GetDlgItem(IDC_BITTIMING_LIST);
CRect rect;
editCtrl->GetWindowRect(&rect);
ScreenToClient(&rect);
m_pBitTimingList = new BitTimingList();//where bittiminglist is an
object derived from jcListControl whose base class is CListCtrl
m_pBitTimingList->Create(WS_CHILD|WS_VISIBLE|WS_BORDER | LVS_REPORT |
LVS_SHOWSELALWAYS, rect, this, IDC_BITTIMING_LIST);
editCtrl->MoveWindow(0, 0, 0, 0);//if i don't do this then the
original list control will be on top of the bit timing list and i
won't be able to see the actual list
m_pBitTimingList->Init();
for(i = 0;i < m_nListCount;i++){
AddItemByIndex(m_pBitTimingList, i, m_pParamList[i]);
}
jayachandran kamaraj