不用MFC,编写从对话框中打开一文件,为什么打不开?高手帮忙看看 15

caseID_FI://功能介绍Functioninformation按下按钮后,执行此段函数{FILE*fp;TCHARch;if((fp=fopen("file.tx... case ID_FI: // 功能介绍 Function information 按下按钮后,执行此段函数
{
FILE *fp;
TCHAR ch;
if((fp=fopen("file.txt","rb"))==NULL)
{
MessageBox(hwnd,TEXT("功能文件不存在,请联系开发者"),TEXT("错误"),MB_OK);
return;
}
ch=fgetc(fp);
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
}
break;

通过编译,但在按下按钮后,文件没有打开?请高手指点一下?
请说明一下。我用C语言编的,没有用MFC的。
展开
 我来答
shengleiliyu
2011-02-18 · TA获得超过418个赞
知道答主
回答量:185
采纳率:0%
帮助的人:85.3万
展开全部
ShellExecute函数原型及参数含义如下: ShellExecute( hWnd: HWND; {指定父窗口句柄} Operation: PChar; {指定动作, 譬如: open、print} FileName: PChar; {指定要打开的文件或程序} Parameters: PChar; {给要打开的程序指定参数; 如果打开的是文件这里应该是 nil} Directory: PChar; {缺省目录} ShowCmd: Integer {打开选项} ): HINST; {执行成功会返回应用程序句柄; 如果这个值 <= 32, 表示执行错误} //返回值可能的错误有: = 0 {内存不足} ERROR_FILE_NOT_FOUND = 2; {文件名错误} ERROR_PATH_NOT_FOUND = 3; {路径名错误} ERROR_BAD_FORMAT = 11; {EXE 文件无效} SE_ERR_SHARE = 26; {发生共享错误} SE_ERR_ASSOCINCOMPLETE = 27; {文件名不完全或无效} SE_ERR_DDETIMEOUT = 28; {超时} SE_ERR_DDEFAIL = 29; {DDE 事务失败} SE_ERR_DDEBUSY = 30; {正在处理其他 DDE 事务而不能完成该 DDE 事务} SE_ERR_NOASSOC = 31; {没有相关联的应用程序} //ShowCmd 参数可选值:SW_HIDE = 0; {隐藏} SW_SHOWNORMAL = 1; {用最近的大小和位置显示, 激活} SW_NORMAL = 1; {同 SW_SHOWNORMAL} SW_SHOWMINIMIZED = 2; {最小化, 激活} SW_SHOWMAXIMIZED = 3; {最大化, 激活} SW_MAXIMIZE = 3; {同 SW_SHOWMAXIMIZED} SW_SHOWNOACTIVATE = 4; {用最近的大小和位置显示, 不激活} SW_SHOW = 5; {同 SW_SHOWNORMAL} SW_MINIMIZE = 6; {最小化, 不激活} SW_SHOWMINNOACTIVE = 7; {同 SW_MINIMIZE} SW_SHOWNA = 8; {同 SW_SHOWNOACTIVATE} SW_RESTORE = 9; {同 SW_SHOWNORMAL} SW_SHOWDEFAULT = 10; {同 SW_SHOWNORMAL} SW_MAX = 10; {同 SW_SHOWNORMAL}
编辑本段例子
//调用计算器 ShellExecute(NULL,"open","calc.exe",NULL,NULL,SW_SHOWNORMAL); //调用记事本 ShellExecute(NULL,"open","NOTEPAD.EXE",NULL,NULL,SW_SHOWNORMAL); ●hWnd:用于指定父窗口句柄。当函数调用过程出现错误时,它将作为Windows消息窗口的父窗口。例如,可以将其设置为应用程序主窗口句柄,即Application.Handle,也可以将其设置为桌面窗口句柄(用GetDesktopWindow函数获得)。 ●Operation:用于指定要进行的操作。其中“open”操作表示执行由FileName参数指定的程序,或打开由FileName参数指定的文件或文件夹;“print”操作表示打印由FileName参数指定的文件;“explore”操作表示浏览由FileName参数指定的文件夹。当参数设为nil时,表示执行默认操作“open”。 ●FileName:用于指定要打开的文件名、要执行的程序文件名或要浏览的文件夹名。 ●Parameters:若FileName参数是一个可执行程序,则此参数指定命令行参数,否则此参数应为nil或PChar(0)。 ●Directory:用于指定默认目录。 ●ShowCmd:若FileName参数是一个可执行程序,则此参数指定程序窗口的初始显示方式,否则此参数应设置为0。 若ShellExecute函数调用成功,则返回值为被执行程序的实例句柄。若返回值小于32,则表示出现错误。 上述仅仅是ShellExecute函数的标准用法,下面将介绍它的特殊用法。
望穿秋水待伊人
2011-02-09 · TA获得超过644个赞
知道小有建树答主
回答量:708
采纳率:100%
帮助的人:804万
展开全部
fopen只是返回文件的指针,对程序来说是打开了,但这种打开并不是我们双击的那种打开,想要双击的那种打开可以这样,
ShellExecute(NULL,"open","abc.txt",NULL,NULL,SW_SHOW);
具体参数说明请参照MSDN
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5803c9a
2011-02-10 · TA获得超过2162个赞
知道小有建树答主
回答量:891
采纳率:0%
帮助的人:1239万
展开全部
VS调试的时候与运行的时候路径是不同的,调试的时候这个文件要放在代码的目录下,直接双击运行的时候文件与exe在同一目录下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zyl102600
2011-02-09 · TA获得超过678个赞
知道小有建树答主
回答量:702
采纳率:100%
帮助的人:720万
展开全部
估计是这里的问题:ch=fgetc(fp);// 文件内容如果为空,这里就直接是EOF了,
后面
while(ch!=EOF)
中的
{
putchar(ch);
ch=fgetc(fp);
}
就不会执行了.你看看是这个原因吧.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
明月楼高5
2011-02-11 · TA获得超过403个赞
知道小有建树答主
回答量:129
采纳率:0%
帮助的人:187万
展开全部
关键的问题是:你依据什么判断“文件没有打开”?

因为 putchar(ch) 没有输出?那可能是因为在对话框界面时,这种控制台的输出根本不可见。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式