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)
回想到,上周,在调用他的组件时,当密码不对,窗体会因某某内存不能读而崩溃掉。
今天看到源代码后,明白了,他在密码出错的处理代码中,认为用户总是会输正确的密码,而不会提前关掉对话框!