MFC 와 콘솔 연동 관련해서 질문드립니다.

yoongun35795의 이미지

현재 Cstring을 사용하여 AccController에 있는 NewAcc를 이용하여 버튼을 누르면 값을 입력한 값을 list로 넘기고자 합니다.

현재 AccController.cpp의 NewAcc는

void AccController::NewAcc(CString name,CString money)
{
	char szAccount[30]={0,};
 
	srand((unsigned int)time(NULL));//초기화
 
	int iRandAccount = (rand() % 100);//난수발생
 
 
	sprintf(szAccount, "%d%d",iRandAccount,m_static_iSeq);
 
	AccData * object = new AccData(atoi(szAccount),atoi(money),name);
	m_AccManager->AddAcc(object);
	m_static_iSeq++;
}

입니다.

질문 : 여기서 atoi 매개변수를 Cstring에서 const char*로 변환할 수 없다고 합니다. 어떻게 고치면 되나요?

질문 : 또한 지금 sprintf에서 에러가 나는데 이건 무시해도 되나요?

warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

이런 에러가 납니다..

이것을 받는 Button함수입니다.

void CrrDlg::OnBnClickedButton1()
{
	// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
	UpdateData(TRUE);
 
 
 
 
	AccController::Getinstance(AccManager::Getinstance())->NewAcc(m_input1,m_input2);
 
 
		m_list.DeleteAllItems();
	//std::map<int,AccData*>::iterator DataBegin()
	//std::map<int,AccData*>::iterator DataEnd()
 
	std::map<int,AccData*>::iterator itr;
 
	for(itr=AccController::Getinstance(AccManager::Getinstance())->DataBegin(); itr!=AccController::Getinstance(AccManager::Getinstance())->DataEnd(); itr++)
	{
		CString cstrtemp;
		cstrtemp.Format("%d",itr->second->Getm_iaccNum());
		m_list.InsertItem(0,cstrtemp);
		m_list.SetItem(0,1,LVIF_TEXT,itr->second->Getm_cname(),0,0,0,NULL);
		cstrtemp.Format("%d", itr->second->Getm_imoney());
		m_list.SetItem(0,2,LVIF_TEXT,cstrtemp,0,0,0,NULL);
	}	
 
	m_input1="";
	m_input2="";
	m_input3="";
	UpdateData(FALSE);
 
}

여기서 지금 오류가 나고 있습니다.

error C2664: 'void ATL::CStringT::Format(const wchar_t *,...)' : 매개 변수 1을(를) 'const char [3]'에서 'const wchar_t *'(으)로 변환할 수 없습니다.
1> with
1> [
1> BaseType=wchar_t,
1> StringTraits=StrTraitMFC_DLL
1> ]
1> 가리킨 형식이 관련이 없습니다. 변환하려면 reinterpret_cast, C 스타일 캐스트 또는 함수 스타일 캐스트가 필요합니다.

Format관련해서 이런 오류가 납니다. Format을 저런식으로 쓰는게 아닌가요? 만약 아니라면 수정은 어떻게 해야하나요?

+추가

yoongun35795의 이미지

유니코드를 멀티바이트형으로 고쳐서 해결했습니다.

근데 제가 지금 button을 눌러서 입력을 할 때

값이 없어도 계속 이름 부분이 숫자로 들어가면서 입력이 됩니다.

이걸 막는 방법이 있나요?