Можем ли мы обновить значения в CREATESTRUCT
я храню значения в resgistery при закрытии приложения и при перезапуске приложения я получаю значения из registery (значения приходят правильно) и те значения, которые я хочу обновить в CREATESTRUCT
но значения не обновляются в
CREATESTRUCT
Что я уже пробовал:
LPTSTR p = Width.GetBuffer(dwLen / sizeof(TCHAR)); //Read TargetServer value from registry LSTATUS lStatus = ::RegQueryValueEx(hPathKey, _T("Width"), NULL, &dwtype, (LPBYTE)Width.GetBuffer(MAX_PATH), &nBytes); if (ERROR_SUCCESS == lStatus) { //m_ConnectServerVal.ReleaseBuffer(); } else { dwLastError = GetLastError(); } //Read TargetPort value from registry nBytes = (MAX_PATH) * sizeof(TCHAR); lStatus = ::RegQueryValueEx(hPathKey, _T("Height"), NULL, &dwtype, (LPBYTE)Height.GetBuffer(MAX_PATH), &nBytes); if (ERROR_SUCCESS == lStatus) { // m_ConnectPortVal.ReleaseBuffer(); } else { dwLastError = GetLastError(); }
cs.cy = _tstoi(Height); / / здесь значение идет 786,и сохраняем его в cs
cs.cx = _tstoi(Width); / / ширина равна 1214
and storing it in cs
if (! CFrameWndEx:: PreCreateWindow(cs) )
но после этой строки executipon значения обновляются, это означает, что здесь, когда я отлаживаю его показ выше avlues(786,1214) не приходит сюда.
не могли бы вы сказать мне, если здесь что-то не так
Richard MacCutchan
Во-первых, почему вы храните целочисленные значения в виде строк? Во-вторых, где этот код на самом деле называется?
Member 13089825
Во первых почему вы храните целочисленные значения в виде строк
В registery мы можем хранить его как строку только так, чтобы из registery я получал это значение (то есть строковый тип) и строчил его в CS
этот код будет вызван в BOOL CMainFrame:: PreCreateWindow(CREATESTRUCT& cs)
{
}
Richard MacCutchan
Нет, вы можете хранить как любой тип в реестре; см. документацию.
Согласно с CWnd:: PreCreateWindow (MFC)[^] в этот момент Вы должны иметь возможность изменить размер окна. вам нужно использовать свой отладчик, чтобы увидеть, что происходит.