ActiveX编写的控件,还没有运行程序的时候设置的属性在运行程序以后全部没有了!!!!!晕。。。

老田低代码 2005-11-28 10:15:33
大佬们:
我为了学习C++做了个基于VC++6.0ActiveX的网格控件,其中有两个属性:Rows,Cols在将控件画在VB窗体上然后设置属性是可以的!但是运行VB程序以后就没有了。。。不知道为什么会这样!!
代码如下:
void CMyCellCtrl::SetRows(long nNewValue)
{
m_Rows=nNewValue;

m_CellDoc->SetRows(nNewValue);

//改变控件属性的时候重新画表格
InvalidateControl();
SetModifiedFlag();
BoundPropertyChanged(dispidRows);
}

还有我希望在控件中使用滚动条:
CScrollBar m_hScrollBar; //水平滚动条
然后在控件的OnDraw中:(这里用this是不是不行啊?但是为什么能够编译通过呢?)
m_hScrollBar.Create(WS_CHILD |WS_VISIBLE | SBS_HORZ,rtHScrollRect,this,IDC_HSCROLLBAR);
编译控件,然后画在VB窗体上。这是是有滚动条出现的,但是出现了程序错误:
错误位置:
Wincore.cpp下
void AFXAPI AfxHookWindowCreate(CWnd* pWnd)
{
_AFX_THREAD_STATE* pThreadState = _afxThreadState.GetData();
if (pThreadState->m_pWndInit == pWnd)
return;

if (pThreadState->m_hHookOldCbtFilter == NULL)
{
pThreadState->m_hHookOldCbtFilter = ::SetWindowsHookEx(WH_CBT,
_AfxCbtFilterHook, NULL, ::GetCurrentThreadId());
if (pThreadState->m_hHookOldCbtFilter == NULL)
AfxThrowMemoryException();
}
ASSERT(pThreadState->m_hHookOldCbtFilter != NULL);
ASSERT(pWnd != NULL);
ASSERT(pWnd->m_hWnd == NULL); // only do once --就是这个位置错了,不

ASSERT(pThreadState->m_pWndInit == NULL); // hook not already in progress
pThreadState->m_pWndInit = pWnd;
}
...全文
148 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧