1)
void CLEDErrInfoDlg::SaveTo()
{
TCHAR szFilter[MAX_PATH],szFile[MAX_PATH],szDefExt[]=_T(".rrpb"),*pChr;
TCHAR szBuf[MAX_PATH];
OPENFILENAME ofn;
HANDLE hfile;
// RGBQUAD rgb[256];
DWORD size;
if(m_pShowData==NULL)
return;
//if(QueryINIText(_T("LEDSETUP"),_T("FILEBRIGHTREVISE"),szFilter,MAX_PATH)<=0)
lstrcpy(szFilter,_T("save repotr(*.txt)|*.txt|"));
while((pChr=_tcsrchr(szFilter,'|')))
*pChr=0;///使过滤器的字符串,是以零结尾的。
szFile[0]=0;
ZeroMemory(&ofn,sizeof(ofn));
ofn.lStructSize=sizeof(ofn);
ofn.hwndOwner=m_hWnd;
ofn.lpstrFile=szFile;
ofn.nMaxFile=MAX_PATH;
ofn.lpstrFilter=szFilter;
ofn.lpstrDefExt=szDefExt;
ofn.nFilterIndex=1;
ofn.Flags=OFN_EXPLORER|OFN_OVERWRITEPROMPT|OFN_EXTENSIONDIFFERENT;
if(GetSaveFileName(&ofn)!=TRUE)
return ;
hfile=CreateFile(szFile,GENERIC_READ|GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,(HANDLE)NULL);
if(hfile==INVALID_HANDLE_VALUE){
if(QueryINIText(_T("LEDREDDATA"),_T("ERRORSAVEFILE"),szBuf,MAX_PATH)<=0)
lstrcpy(szBuf,_T("Failed to save!"));
MessageBox(m_hWnd,szBuf,_T(""),MB_OK|MB_ICONEXCLAMATION);
return ;
}
WriteFile(hfile,m_pShowData,strlen(m_pShowData),&size,NULL);
CloseHandle(hfile);
}
2)SendDlgItemMessage, 发送消息到对话框上的指定控件。
SendMessage()与其的区别是什么?
3)LVITEM.state=0x1000意味着什么?
4)
回想到,上周,在调用他的组件时,当密码不对,窗体会因某某内存不能读而崩溃掉。
今天看到源代码后,明白了,他在密码出错的处理代码中,认为用户总是会输正确的密码,而不会提前关掉对话框!