按F5说错误位置在这里。
if(m_edit)
{//将编辑框中的数据写回对应的子项目中
UpdateData( );
CString str;
m_edit->GetWindowText(str);
SetItemText(m_item,m_subitem,str);
delete m_edit;
m_edit=NULL;
}
*pResult = 0;
m_edit是自己定义的一个指针,初始为空。
First-chance exception in Hourratecalculator01.exe (MFC42D.DLL): 0xC0000005: Access Violation.这个是错误提示。mfc
if(m_edit)
{//将编辑框中的数据写回对应的子项目中
UpdateData( );
CString str;
m_edit->GetWindowText(str);
SetItemText(m_item,m_subitem,str);
delete m_edit;
m_edit=NULL;
}
*pResult = 0;
m_edit是自己定义的一个指针,初始为空。
First-chance exception in Hourratecalculator01.exe (MFC42D.DLL): 0xC0000005: Access Violation.这个是错误提示。mfc
{
public:
DECLARE_WND_SUPERCLASS(_T("CListEditCtrl"), GetWndClassName())
private:
typedef CListEditCtrlImpl<CListEditCtrl> baseClass;public: BEGIN_MSG_MAP_EX(CListEditCtrl)
// MSG_WM_SETFOCUS(OnSetFocus)
MSG_WM_KILLFOCUS(OnKillFocus)
MSG_WM_SHOWWINDOW(OnShowWindow)
CHAIN_MSG_MAP(baseClass)
END_MSG_MAP() void OnSetFocus(CWindow wndOld)
{
SetMsgHandled(FALSE);
} void OnKillFocus(CWindow wndFocus)
{
ShowWindow(SW_HIDE);
SetMsgHandled(FALSE);
} void OnShowWindow(BOOL bShow, UINT nStatus)
{
if (nStatus == SW_HIDE)
{
::SendMessage(GetParent(), WM_USER_UPDATA_ITEM, 1, 0);
SetWindowText("");
}
SetMsgHandled(FALSE);
}
};CListEditCtrl m_edit;m_edit.Create((m_hWnd), &rcDefault, "", ES_AUTOHSCROLL|WS_CHILD|ES_RIGHT|ES_WANTRETURN|WS_BORDER);
m_edit.ShowWindow(SW_HIDE);
m_edit.CreateCaret(NULL);
void EditItem(int nItem, int nSubItem)
{
if (::IsWindow(m_edit.m_hWnd))
{
if (nItem >= 0 && nSubItem >= 0)
{
CRect rcCtrl;
GetSubItemRect(nItem, nSubItem, LVIR_LABEL, &rcCtrl);
TCHAR szItem[128] = {0};
GetItemText(nItem, nSubItem, szItem, _countof(szItem));
m_edit.MoveWindow(&rcCtrl);
m_edit.SetWindowPos(m_hWnd, rcCtrl.left, rcCtrl.top, rcCtrl.Width(), rcCtrl.Height(), SWP_SHOWWINDOW);
m_edit.ShowWindow(SW_SHOW);
m_edit.SetWindowText(szItem);
::SetFocus(m_edit.m_hWnd);
m_edit.SetSel(-1);
m_edit.BringWindowToTop();
SetCaretPos(rcCtrl.right-2,rcCtrl.top);
m_edit.ShowCaret(); m_nlastSelectItem = nItem;
m_nlastSelectSubItem = nSubItem;
}
}
} void SaveEditItem(int nItem, int nSubItem)
{
if (m_edit.IsWindowVisible() && nItem >=0 &&nSubItem >= 0)
{
TCHAR szItem[128] = {0};
m_edit.GetWindowText(szItem, _countof(szItem));
SetItemText(nItem, nSubItem, szItem);
//::SendMessage(GetParent().GetParent().m_hWnd, WM_USER_UPDATE_DEFINE_PRICE, m_nlastSelectItem, nSubItem);
}
}