Programming 版 (精华区)
发信人: Mice (做梦的鼠儿), 信区: Programming
标 题: VC++4.0 的 DLL问题
发信站: 紫丁香 (Sun Oct 12 11:36:42 1997)
我用VC++4。0作了一个DLL,为MFC的EXTENDED DLL,其
> 主要内容为两个基于CPropertyPage的工具。作好以后,自己
> 作测试,无论是MDI还是SDI均无问题,但是一联入自己的一个实际
> 课题中,就出毛病。÷而此课题除了巨大以外没有别的东西。
> 谈的具体点:
> 我的这个工具主要是应用于控制图形系统的层次。主要解决两个问题,
> 一个是层次的命名,一个是每层的开关控制(是否显示此层〕。这样,我用
> 一个CPropertyPage资源(采用CCtrlList)来控制层次命名,它没有问题。
> 另外一个我放入了GRID。OCX控制,控制内采用了ICON显示,担一运行就
> 出问题,毛病定位在DLGDATA。CPP的276行上,是VC的SOURCE CODE,毛病
> 到底出在何处?判各位大侠指点一二!!!!!
> 较急!多谢!!!!!!!!!!!
> 一个苦恼的程序员
//下面是你出错的函数.
void AFXAPI DDX_Radio(CDataExchange* pDX, int nIDC, int& value)
// must be first in a group of auto radio buttons
{
HWND hWndCtrl = pDX->PrepareCtrl(nIDC);
ASSERT(::GetWindowLong(hWndCtrl, GWL_STYLE) & WS_GROUP);//This is 267th line
//如果你是在这一行出错的话,那么应该一直出错。为什么和你的课题连接后才出错?
//我想不明白。只好解释一下,在什么情况下会导致该错误:
//程序的意思是,你的资源ID号为nIDC的控制不具有WS_GROUP的属性。
//可能你没有在你的第一个(!,指ID号最小 )Radio Button设上GROUP属性。
//然后在一组Radio Button结束的下一个控制设上GROUP属性来终止GROUP.
//另外,从下面的程序可以看出,最好把一组Radio Button按从小到大顺序排列,
//在最初设计对话框时,就把一组Radio Button一口气安排好,不要再来增加,
//不然可能会把Radio Button加到另外的GROUP去。
//当然,如果对Windows熟悉,也可对resource.h手工改动,以保证ID的连续性。
ASSERT(::SendMessage(hWndCtrl, WM_GETDLGCODE, 0, 0L) & DLGC_RADIOBUTTON);
if (pDX->m_bSaveAndValidate)
value = -1; // value if none found
// walk all children in group
//直到下一个具有WS_GROUP属性的控制。
int iButton = 0;
do
{
if (::SendMessage(hWndCtrl, WM_GETDLGCODE, 0, 0L) & DLGC_RADIOBUTTON)
{
// control in group is a radio button
if (pDX->m_bSaveAndValidate)
{
if (::SendMessage(hWndCtrl, BM_GETCHECK, 0, 0L) != 0)
{
ASSERT(value == -1); // only set once
value = iButton;
}
}
else
{
// select button
::SendMessage(hWndCtrl, BM_SETCHECK, (iButton == value), 0L);
}
iButton++;
}
else
{
TRACE0("Warning: skipping non-radio button in group.\n");
}
hWndCtrl = ::GetWindow(hWndCtrl, GW_HWNDNEXT);
} while (hWndCtrl != NULL &&
!(GetWindowLong(hWndCtrl, GWL_STYLE) & WS_GROUP));
}
//如果你改了以后还出问题,那多半是你的课题程序有问题
--
我是一只好老鼠!
/>>>
(*>
()%\%\%\%|*|33333333333333333333333333333333333>
(*>
\>>>
※ 来源:.紫丁香 pclinux.hit.edu.cn.[FROM: 202.118.226.75]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.982毫秒