1、在对话框内响应PreTranslateMessage消息,当我按F1时动态创建按钮,然后给按钮发送SetFocus()消息.
2、然后按F2又动态创建按钮后就出现错误了。
错误的是WinCore.cpp里头的875行出错内容是:ASSERT(::IsWindow(m_hWnd));
我想了一下一定是动态创建按钮里头的SetFocus()出错的,是不是要用Attach()把按钮传给对话框呢?
请问大家出现这样的错误具体如何解决了?
10 个解决方案
#1
按钮的创建程序写错了。
贴出来看一下吧
贴出来看一下吧
#2
m_DynaButton[j].Create(_T(Dim[j]),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
CRect(0,75+m_ButtonTop,130,115+m_ButtonBottom),this, nID + j);
我是用动态数组创建的
CRect(0,75+m_ButtonTop,130,115+m_ButtonBottom),this, nID + j);
我是用动态数组创建的
#3
BOOL CTheMain::DynaCreateButton(int m_nButton,UINT nID,CString Dim[])
{int m_ButtonTop=0; //创建按钮的顶部位置偏移量
int m_ButtonBottom=0; //创建按钮的底部位置偏移量
if (m_DynaButton && m_nButtonCount)
{
for (int i = 0; i < m_nButtonCount; i++)
{ m_DynaButton[i].DestroyWindow();}
delete *m_DynaButton;
m_DynaButton = NULL;
m_nButtonCount = 0;
}
m_DynaButton=new CButton[m_nButton];
if (!m_DynaButton) return false;
for (int j = 0; j < m_nButton; j++)
{m_DynaButton[j].Create(_T(Dim[j]),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
CRect(0,75+m_ButtonTop,130,115+m_ButtonBottom),this, nID + j);
m_ButtonTop+=40;
m_ButtonBottom+=40;
}
m_nButtonCount = m_nButton;
m_DynaButton[0].SetFocus();
return true;
}
{int m_ButtonTop=0; //创建按钮的顶部位置偏移量
int m_ButtonBottom=0; //创建按钮的底部位置偏移量
if (m_DynaButton && m_nButtonCount)
{
for (int i = 0; i < m_nButtonCount; i++)
{ m_DynaButton[i].DestroyWindow();}
delete *m_DynaButton;
m_DynaButton = NULL;
m_nButtonCount = 0;
}
m_DynaButton=new CButton[m_nButton];
if (!m_DynaButton) return false;
for (int j = 0; j < m_nButton; j++)
{m_DynaButton[j].Create(_T(Dim[j]),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
CRect(0,75+m_ButtonTop,130,115+m_ButtonBottom),this, nID + j);
m_ButtonTop+=40;
m_ButtonBottom+=40;
}
m_nButtonCount = m_nButton;
m_DynaButton[0].SetFocus();
return true;
}
#4
ASSERT(::IsWindow(m_hWnd));
出现这种错误,就表示此窗口不存在但是你在使用它,你可以debug跟踪下,看看是在create时出错,还是setfocus时出错,不过我估计是setFocus时出的错。
出现这种错误,就表示此窗口不存在但是你在使用它,你可以debug跟踪下,看看是在create时出错,还是setfocus时出错,不过我估计是setFocus时出的错。
#5
m_nButton的值什么时候改变?
#6
m_nButton的值是在按F1、F2、F3....中改变
#7
up
#8
up again
#9
动态创建按钮要考虑指定父窗口吗?
#10
按钮已经销毁?
#1
按钮的创建程序写错了。
贴出来看一下吧
贴出来看一下吧
#2
m_DynaButton[j].Create(_T(Dim[j]),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
CRect(0,75+m_ButtonTop,130,115+m_ButtonBottom),this, nID + j);
我是用动态数组创建的
CRect(0,75+m_ButtonTop,130,115+m_ButtonBottom),this, nID + j);
我是用动态数组创建的
#3
BOOL CTheMain::DynaCreateButton(int m_nButton,UINT nID,CString Dim[])
{int m_ButtonTop=0; //创建按钮的顶部位置偏移量
int m_ButtonBottom=0; //创建按钮的底部位置偏移量
if (m_DynaButton && m_nButtonCount)
{
for (int i = 0; i < m_nButtonCount; i++)
{ m_DynaButton[i].DestroyWindow();}
delete *m_DynaButton;
m_DynaButton = NULL;
m_nButtonCount = 0;
}
m_DynaButton=new CButton[m_nButton];
if (!m_DynaButton) return false;
for (int j = 0; j < m_nButton; j++)
{m_DynaButton[j].Create(_T(Dim[j]),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
CRect(0,75+m_ButtonTop,130,115+m_ButtonBottom),this, nID + j);
m_ButtonTop+=40;
m_ButtonBottom+=40;
}
m_nButtonCount = m_nButton;
m_DynaButton[0].SetFocus();
return true;
}
{int m_ButtonTop=0; //创建按钮的顶部位置偏移量
int m_ButtonBottom=0; //创建按钮的底部位置偏移量
if (m_DynaButton && m_nButtonCount)
{
for (int i = 0; i < m_nButtonCount; i++)
{ m_DynaButton[i].DestroyWindow();}
delete *m_DynaButton;
m_DynaButton = NULL;
m_nButtonCount = 0;
}
m_DynaButton=new CButton[m_nButton];
if (!m_DynaButton) return false;
for (int j = 0; j < m_nButton; j++)
{m_DynaButton[j].Create(_T(Dim[j]),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
CRect(0,75+m_ButtonTop,130,115+m_ButtonBottom),this, nID + j);
m_ButtonTop+=40;
m_ButtonBottom+=40;
}
m_nButtonCount = m_nButton;
m_DynaButton[0].SetFocus();
return true;
}
#4
ASSERT(::IsWindow(m_hWnd));
出现这种错误,就表示此窗口不存在但是你在使用它,你可以debug跟踪下,看看是在create时出错,还是setfocus时出错,不过我估计是setFocus时出的错。
出现这种错误,就表示此窗口不存在但是你在使用它,你可以debug跟踪下,看看是在create时出错,还是setfocus时出错,不过我估计是setFocus时出的错。
#5
m_nButton的值什么时候改变?
#6
m_nButton的值是在按F1、F2、F3....中改变
#7
up
#8
up again
#9
动态创建按钮要考虑指定父窗口吗?
#10
按钮已经销毁?