📄 subject_62498.htm
字号:
<p>
序号:62498 发表者:fiction 发表日期:2003-11-27 09:35:56
<br>主题:有关CFileDialog
<br>内容:打开了一个save as对话框,如果不改变文件的路径,程序可以继续执行下去,但是如果改变了文件的路径程序再点保存之后就退出了,这是怎么回事?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:fiction 回复日期:2003-11-27 09:55:41
<br>内容:有人说是文件的路径没有保存,可是用getpathname得到的路径名该保存在那里呢?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:浪际天涯 回复日期:2003-11-27 09:56:46
<br>内容:代码帖上来,我没出现过这种问题
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:fiction 回复日期:2003-11-27 10:15:56
<br>内容:void CConvertDlg::OnButtonConvert() <BR>{<BR> // TODO: Add your control notification handler code here<BR>// CString ConvertName;<BR> TCHAR szFilters[]=_T("HEX files(*.hex)|*.hex|All files(*.*)|*.*||");<BR> CFileDialog m_Dialog1(FALSE,_T("hex"),_T("*.hex"),OFN_FILEMUSTEXIST|OFN_HIDEREADONLY,szFilters);<BR> m_Dialog1.DoModal();<BR> m_ConvertName=m_Dialog1.GetFileName();<BR>// m_Dialog1.GetPathName();<BR> UpdateData(FALSE);<BR> UpdateData(TRUE);<BR> char str_Convert[40];<BR> char str_File[40];<BR> sprintf(str_Convert,"%s",m_ConvertName); <BR> sprintf(str_File,"%s",m_Filename);<BR> <BR>// void main(int argc, char *argv[])<BR>//{<BR> int argc;<BR> char *argv[2];<BR> argc=2;<BR> //argv[0]="convert"<BR> argv[1]=str_File;<BR> argv[2]=str_Convert;<BR> char ch;<BR> unsigned int fifo_size,SG_INT,int_status;<BR> BYTE volume,tempo;<BR> BYTE playtimer_h=0,playtimer_m=0,playtimer_l=0;<BR> BYTE min=0,sec=0;<BR> BOOL exit_flag=1,mute=0;<BR> unsigned int send_max,send_size;<BR> unsigned char r_data;<BR> unsigned char PlayStatus;<BR><BR> if (argc>1)<BR> {<BR> Fdata = fopen(argv[2],"wb");<BR><BR><BR> if (!GetMIDIData(argv[1])) <BR> {<BR> //printf("Can't Read MIDI File\n");<BR> System_Exit();<BR> exit(1);<BR> }<BR> if (LoadHeaderSMF(smf_data))<BR> { <BR> //printf("Header error\n"); <BR> System_Exit(); <BR> exit(1); <BR> }<BR> if (LoadDataSMF())<BR> {<BR> //printf("Loading Error\n");<BR> System_Exit(); <BR> exit(1); <BR> }<BR><BR> send_max=get_sendbuf_free_size(); <BR> ConvertSMF(&PlayStatus,send_max,0);<BR> fifo_size=255; <BR><BR> if (fifo_size>=data_cnt)<BR> send_size=data_cnt;<BR> else<BR> send_size=fifo_size;<BR> <BR> WriteRegisterTone(send_size);<BR><BR> while(data_cnt>0)<BR> {<BR> send_max=get_sendbuf_free_size();<BR> ConvertSMF(&PlayStatus,send_max,0);<BR> <BR> fifo_size=255; <BR><BR> if (fifo_size>=data_cnt) <BR> send_size=data_cnt; <BR> else <BR> send_size=fifo_size;<BR><BR> WriteRegisterTone(send_size);<BR> }<BR> fclose(Fdata);<BR> }<BR><BR><BR><BR> else<BR> {<BR> ;<BR> //printf("\n***************************************\n");<BR><BR> //printf("Command Format: \nconvert Midi_file Native_Midi_file \n");<BR> //printf("e.g.: \nconvert short1.mid native_data.hex \n");<BR><BR> //printf("***************************************\n\n");<BR><BR> }<BR><BR>}<BR>void WriteRegisterTone(int Count)<BR>{<BR><BR> if (Count==0)<BR> return;<BR> if ((unsigned int)Count>data_cnt)<BR> Count=data_cnt;<BR><BR> for (int i=0;i<Count;i++)<BR> { <BR> if (r_ptr>buf_end)<BR> r_ptr=0;<BR> fwrite(&send_data_buf[r_ptr++],sizeof(unsigned char),1,Fdata);<BR> }<BR> data_cnt-=Count;<BR><BR>}<BR><BR><BR><BR>void System_Exit()<BR>{<BR> fcloseall();<BR> free(send_data);<BR> free(smf_data);<BR>}<BR>int GetMIDIData(char *smf_filename)<BR>{ <BR> FILE *in;<BR> int Length;<BR> if (smf_data)<BR> {<BR> free(smf_data);<BR> smf_data=NULL;<BR> }<BR><BR> if ((in=fopen(smf_filename,"rb"))==NULL)<BR> return FALSE;<BR><BR> fseek(in, 0, SEEK_END);<BR> Length = ftell(in);<BR> fseek(in, 0, SEEK_SET);<BR> if( (smf_data = (unsigned char *)malloc( Length )) == 0 )<BR> {<BR> //printf("out of memory\n");<BR> return FALSE;<BR> }<BR> if( (send_data = (unsigned char *)malloc( Length*2 )) == 0 )<BR> {<BR> //printf("out of memory\n");<BR> return FALSE;<BR> }<BR> fread(smf_data,sizeof(char),Length,in);<BR> fclose(in); <BR> return TRUE;<BR>}<BR><BR>void CConvertDlg::OnButtonConverth() <BR>{<BR> // TODO: Add your control notification handler code here<BR> TCHAR szFilters[]=_T("H files(*.h)|*.h|All files(*.*)|*.*||");<BR> CFileDialog m_Dialog2(FALSE,_T("h"),_T("*.h"),OFN_FILEMUSTEXIST|OFN_HIDEREADONLY,szFilters);<BR> m_Dialog2.DoModal();<BR> m_Head=m_Dialog2.GetFileName();<BR> UpdateData(FALSE); <BR> <BR> UpdateData(TRUE);<BR> char str_Convert[40];<BR> char str_Head[40];<BR> sprintf(str_Convert,"%s",m_ConvertName); <BR> sprintf(str_Head,"%s",m_Head);<BR><BR> FILE *fpw,*fpr;<BR> char str[]={"code unsigned char midi_data["};<BR> char str1[]={"] = \n"};<BR> char c='{';<BR>// char tmp1=',';<BR> char tmp2='\n';<BR> unsigned char data;<BR> int i=0;<BR> double j=0;<BR> int k=0;<BR> <BR> fpw = fopen(str_Head,"wb");<BR> fpr = fopen(str_Convert,"rb");<BR> <BR><BR> fwrite(str,sizeof(str),1,fpw);<BR><BR> <BR> <BR> while( !feof( fpr ) )<BR> {<BR> fread(&data,sizeof(unsigned char),1,fpr); <BR> k++;<BR> }<BR> fprintf( fpw, "%d", k );<BR> fclose(fpr);<BR> fopen(str_Convert,"rb");<BR> <BR> <BR> fwrite(str1,sizeof(str1),1,fpw);<BR> fwrite(&c,sizeof(char),1,fpw);<BR> fwrite(&tmp2,sizeof(char),1,fpw);<BR><BR> while(!feof(fpr))<BR>// while(j<0x7530)<BR> {<BR> fread(&data,sizeof(unsigned char),1,fpr);<BR> fprintf(fpw,"0x%x,",data);<BR> i++;<BR> if (i%20==0) <BR> {<BR>// fread(&data,sizeof(unsigned char),1,fpr);<BR><BR>// fprintf(fpw,"0x%x,",data);<BR>// fprintf(fpw,"\n DB ");<BR> fprintf(fpw,"\n");<BR><BR> i++;<BR> j++;<BR> }<BR> j++;<BR> <BR><BR><BR> }<BR><BR> c = '}';<BR> fwrite(&c,sizeof(char),1,fpw);<BR> c = ';';<BR> fwrite(&c,sizeof(char),1,fpw);<BR> <BR> <BR><BR> fclose(fpw);<BR> fclose(fpr);<BR><BR> <BR><BR><BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:fiction 回复日期:2003-11-27 10:20:07
<br>内容:这是一个将dos程序加一个界面的程序,里面有很多语句都被我注释掉了,可以不用管的
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:浪际天涯 回复日期:2003-11-27 10:24:18
<br>内容:CString m_ConvertName;<BR>TCHAR szFilters[]=_T("HEX files(*.hex)|*.hex|All files(*.*)|*.*||");<BR>CFileDialog m_Dialog1(FALSE,_T("hex"),_T("*.hex"),OFN_FILEMUSTEXIST|OFN_HIDEREADONLY,szFilters);<BR>if(m_Dialog1.DoModal()==IDOK)<BR>{<BR> m_ConvertName=m_Dialog1.GetPathName(); <BR> .....<BR>}<BR>这样写吧,在打开文件时要带路径的,使用它m_ConvertName,还有就是DoModal时要判断是点了保存还是取消,你上面的程序,只要点了取消肯定出错
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:fiction 回复日期:2003-11-27 10:27:29
<br>内容:对啊对啊,取消就出错,可是我还要将文件名保存在编辑框啊,怎么办?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:fiction 回复日期:2003-11-27 10:30:36
<br>内容:另外m_ConvertName是我的编辑框的变量
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:浪际天涯 回复日期:2003-11-27 10:31:31
<br>内容:给你的编辑框映射一个变量,如m_edit,然后这样写<BR>TCHAR szFilters[]=_T("HEX files(*.hex)|*.hex|All files(*.*)|*.*||");<BR>CFileDialog m_Dialog1(FALSE,_T("hex"),_T("*.hex"),OFN_FILEMUSTEXIST|OFN_HIDEREADONLY,szFilters);<BR>if(m_Dialog1.DoModal()==IDOK)<BR>{<BR> m_edit=m_Dialog1.GetPathName();<BR> UpdateData(false);<BR> .....<BR>}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:fiction 回复日期:2003-11-27 10:39:35
<br>内容:为什么加了那个if语句之后会出现错误?错误指向这一行:<BR>m_ConvertName=m_Dialog1.GetPathName(); <BR>原因如下:<BR>error C2018: unknown character '0xa1'
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:浪际天涯 回复日期:2003-11-27 10:48:16
<br>内容:有全角字符,有可能是全角的空格或;号之类的
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -