【原创】VC实现文件选择对话框并且排除afxwin1.inl line22错误

#include <afxdlgs.h>    //文件选在对话框的头文件
#include <stdio.h>
int main()
{
      AfxSetResourceHandle(GetModuleHandle(NULL));       //这一句要是不加你就会碰上afxwin1.inl line22错误
      CString filter_str = "All Files(*.*)|*.*|";
        //打开的文件类型,格式为  a(*.a)|*.a|||b(*.b)|*.b|
      CFileDialog filedlg(TRUE,NULL,NULL,NULL,filter_str,NULL);          //初始化
      /*
               第一个参数如果为false则出现文件保存对话框,为true是文件打开对话框
               第二个参数是在对话框显示的文件的文件扩展名,具体什么格式我就不知道了
               第三个参数百度百科上说是“指定默认的文件名”
               第四个参数指定一些风格,
               第五个参数指定扩展名,就是我们刚才定义的字符串
               第六个参数指定父窗口指针,搞不懂,不填吧。反正网上没人填这个参数,都写NULL
      */
      filedlg.DoModal();     //显示窗口
      printf("文件路径:%s\n",filedlg.GetPathName());
      printf("文件名(加扩展名):%s\n",filedlg.GetFileName());
      printf("扩 展 名 :%s\n",filedlg.GetFileExt());              //百度百科上说是GetExtName(),但实际上是GetFileExt
      printf("文件名(不加扩展名):%s\n",filedlg.GetFileTitle());
      return 0;
}

注意:本程序在VC6下编译通过,运行时出现错误:
--------------------Configuration: 临时 - Win32 Debug--------------------
Linking...
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
Debug/临时.exe : fatal error LNK1120: 2 unresolved externals
执行 link.exe 时出错.

临时.exe - 1 error(s), 0 warning(s)

解决方法:如图修改。
【原创】VC实现文件选择对话框并且排除afxwin1.inl line22错误 - sunnysab - 开心最重要
 
 点击工程---设置----C/C++------分类后面改成【原创】VC实现文件选择对话框并且排除afxwin1.inl line22错误 - sunnysab - 开心最重要
 将use run-time library后面的选项选择multithreaded即可。
### MFC 富文本编辑框 `afxwin2.inl` 文件第 215 行错误解决方案 当遇到 `afxwin2.inl` 文件中的特定行数报错时,通常意味着存在底层框架调用或资源管理方面的问题。对于富文本编辑框(Rich Edit Control)引发的此类问题,可能的原因包括但不限于控件初始化不当、字符集不匹配以及未正确释放资源。 针对 `afxwin2.inl` 的第 215 行错误,在分析具体原因之前可以考虑以下几个方向来排查并解决问题: #### 字符编码一致性检查 确保项目设置中所有模块使用的字符集一致。如果应用程序使用的是 Unicode 编译选项,则所有的字符串常量也应采用宽字符形式定义[^1]。例如,创建窗口时传递给 `Create()` 函数的参数应当为 L-prefixed 宽字符串字面量,像这样: ```cpp richEditCtrl.Create(WS_CHILD | WS_VISIBLE | ES_MULTILINE, rect, pParentWnd, IDC_RICHEDIT); // 应改为: richEditCtrl.Create(WS_CHILD | WS_VISIBLE | ES_MULTILINE, rect, pParentWnd, MAKEINTRESOURCE(IDC_RICHEDIT)); ``` #### 控制句柄的有效性验证 在访问任何 Windows API 或者 MFC 封装类的方法前,务必确认所操作的对象已经成功创建并且返回有效的句柄。可以通过断言或其他调试手段检验对象状态。 #### 资源清理机制完善 为了避免潜在的内存泄漏和其他运行期异常,建议重写控件所属对话框或父窗口的消息映射函数 `OnDestroy` 来显式地清除定时器等动态分配的资源[^4]: ```cpp void CRichEditTextDlg::OnDestroy() { CDialogEx::OnDestroy(); // 清除计时器防止泄露 if (m_nTimerID != 0) KillTimer(m_nTimerID); // 如果有其他需要释放的资源同样在这里处理... } ``` 通过上述措施应该能够有效减少因字符集差异引起的兼容性问题,并且提高程序稳定性。当然,实际开发过程中还需要结合具体的上下文环境进一步诊断和调整代码逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值