Я пытаюсь выяснить, как использовать значение void *, я знаю, что его предыдущее значение (при вызове функции) является CString.Вот пример:
В какой-то момент в этой переменной есть значение CString: sNumBlue значение может быть примерно таким: "000000000000000059841145"
pNumBlue = new CString(sNumBlue);
PostMessage (WM_BLUERD,DEF_BLUE_ADD_BLUE,(long)pNumBlue);
С этим последнимСтрока кода, он отправит значение CString в другую функцию, которая получает его как void *, у этой функции уже есть способ обработки void * с использованием класса, но я не могу использовать класс, потому что он предназначен для получениядругое значение или что-то еще, что я, кажется, не понимаю, и когда я пытаюсь использовать его, появляется исключение.Вот эта функция:
LRESULT CDat_color::OnBlueRd(short ColorType, void *pBlueRd )
{
CString sNumColor;
CColorRead* pColorRead;
try{
pColorRead = (CColorRead*) pBlueRd;
sNumColor = pColorRead->GetNumColor();
{Catch(catch stuff...)
//here it handles the exception
}
}
Это то, что я пробовал до сих пор:
Я пытался привести его к Cstring так:
CString * pMyNum = static_cast (pBlueRd);
Но я не думаю, что это правильно, я делаю что-то неправильно, потому что когда я пытаюсь вывести значение pMyNum , он отображает другие вещи, а не желаемое значение.
Я попытался скопировать класс CColorRead и дал ему функцию set и get.Я использовал функцию set для установки значения sNumBlue перед вызовом CDat_color :: OnBlueRd.И попробуйте получить значение, когда я нахожусь внутри функции OnBlueRd, но в этот момент значение равно NuLL, или оно выдает исключение, когда я пытаюсь его получить.
Что я могусделать, чтобы получить значение безопасно?Спасибо всем, и я извиняюсь, если вопрос не отредактирован, я спрашиваю с моего телефона, я попытаюсь исправить это с ПК.Не стесняйтесь спрашивать меня о чем-либо, я, честно говоря, не очень хороший программист на C ++, я каждый день учусь чему-то новомуКстати, я использую Visual C ++ 2006 и MFC Framework.Еще раз спасибо
Редактировать:
Это обработчик сообщений:
afx_msg LRESULT OnBlueRd(short shErr=0,void *pNum=NULL);
Добавлен MESSAGE_MAP:
BEGIN_MESSAGE_MAP(CDat_color, CDialog)
ON_MESSAGE(WM_BLUERD,OnBlueRd)
END_MESSAGE_MAP()