VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 809|回复: 14

运行程序时这个错误不知道怎么解决了

[复制链接]
32_avatar_middle
最佳答案
0 
在线会员 发表于 2020-1-9 17:44:17 | 显示全部楼层 |阅读模式
求大神帮帮我~~~

看不懂不知道该怎么解决 帮忙解决一下 谢谢了

看不懂不知道该怎么解决 帮忙解决一下 谢谢了




上一篇:关于数组作参数传入函数的问题
下一篇:win7旗舰版系统下vc++6.0和vs2010并存,编译vc++6.0错误
58_avatar_middle
最佳答案
43 
online_vip 发表于 2020-1-9 18:01:16 | 显示全部楼层
能传一份源码吗?
32_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-1-9 19:18:55 | 显示全部楼层

// FileFinderDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "FileFinder.h"
#include "FileFinderDlg.h"
#include "afxdialogex.h"
#include"resource.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

LONG g_FindCount;
LONG g_ThreadNum;
BOOL g_bFinding = FALSE;

// 用于应用程序“关于”菜单项的 CAboutDlg 对话框

class CAboutDlg : public CDialogEx
{
public:
        CAboutDlg();

// 对话框数据
#ifdef AFX_DESIGN_TIME
        enum { IDD = IDD_ABOUTBOX };
#endif

        protected:
        virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

// 实现
protected:
        DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX)
{
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
        CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()


// CFileFinderDlg 对话框



CFileFinderDlg::CFileFinderDlg(CWnd* pParent /*=NULL*/)
        : CDialogEx(IDD_FILEFINDER_DIALOG, pParent)
{
        m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CFileFinderDlg::DoDataExchange(CDataExchange* pDX)
{
        CDialogEx::DoDataExchange(pDX);
        DDX_Control(pDX, IDC_LIST1, m_Resultlist);
}

BEGIN_MESSAGE_MAP(CFileFinderDlg, CDialogEx)
        ON_WM_SYSCOMMAND()
        ON_WM_PAINT()
        ON_WM_QUERYDRAGICON()
        ON_BN_CLICKED(IDC_BTN_CHECK, &CFileFinderDlg::OnBnClickedBtnCheck)
        ON_BN_CLICKED(IDC_BTN_SLOOK, &CFileFinderDlg::OnBnClickedBtnSlook)
        ON_MESSAGE(WM_MYMESSAGE,&CFileFinderDlg::OnAddItem)
        ON_BN_CLICKED(IDC_BTN_STOP, &CFileFinderDlg::OnBnClickedBtnStop)
        ON_WM_TIMER()
END_MESSAGE_MAP()


// CFileFinderDlg 消息处理程序

BOOL CFileFinderDlg::OnInitDialog()
{
        CDialogEx::OnInitDialog();

        // 将“关于...”菜单项添加到系统菜单中。

        // IDM_ABOUTBOX 必须在系统命令范围内。
        ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
        ASSERT(IDM_ABOUTBOX < 0xF000);

        CMenu* pSysMenu = GetSystemMenu(FALSE);
        if (pSysMenu != NULL)
        {
                BOOL bNameValid;
                CString strAboutMenu;
                bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
                ASSERT(bNameValid);
                if (!strAboutMenu.IsEmpty())
                {
                        pSysMenu->AppendMenu(MF_SEPARATOR);
                        pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
                }
        }

        // 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
        //  执行此操作
        SetIcon(m_hIcon, TRUE);                        // 设置大图标
        SetIcon(m_hIcon, FALSE);                // 设置小图标

        // TODO: 在此添加额外的初始化代码
        m_Resultlist.SetExtendedStyle(m_Resultlist.GetExtendedStyle()|LVS_EX_GRIDLINES| LVS_EX_FULLROWSELECT);
        m_Resultlist.InsertColumn(0,_T("查找结果"), LVCFMT_LEFT,570);
#ifdef _DEBUG
        SetDlgItemText(IDC_EDIT1, _T("D:\\vsstock"));
        SetDlgItemText(IDC_FNAME_EDIT, _T("stdafx.h"));
#endif

        SetTimer(1, 100, NULL);

        return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

void CFileFinderDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
        if ((nID & 0xFFF0) == IDM_ABOUTBOX)
        {
                CAboutDlg dlgAbout;
                dlgAbout.DoModal();
        }
        else
        {
                CDialogEx::OnSysCommand(nID, lParam);
        }
}

// 如果向对话框添加最小化按钮,则需要下面的代码
//  来绘制该图标。  对于使用文档/视图模型的 MFC 应用程序,
//  这将由框架自动完成。

void CFileFinderDlg::OnPaint()
{
        if (IsIconic())
        {
                CPaintDC dc(this); // 用于绘制的设备上下文

                SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

                // 使图标在工作区矩形中居中
                int cxIcon = GetSystemMetrics(SM_CXICON);
                int cyIcon = GetSystemMetrics(SM_CYICON);
                CRect rect;
                GetClientRect(&rect);
                int x = (rect.Width() - cxIcon + 1) / 2;
                int y = (rect.Height() - cyIcon + 1) / 2;

                // 绘制图标
                dc.DrawIcon(x, y, m_hIcon);
        }
        else
        {
                CDialogEx::OnPaint();
        }
}

//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CFileFinderDlg::OnQueryDragIcon()
{
        return static_cast<HCURSOR>(m_hIcon);
}



void CFileFinderDlg::OnBnClickedBtnCheck()
{
        // TODO: 在此添加控件通知处理程序代码
        g_FindCount = 0;
        g_ThreadNum = 0;
        TCHAR szPath[MAX_PATH] = { 0 };
        BROWSEINFO mBroInfo = { 0 };
        mBroInfo.hwndOwner = m_hWnd;
        ITEMIDLIST *pidl = SHBrowseForFolder(&mBroInfo);
        if (SHGetPathFromIDList(pidl, szPath)) {
                SetDlgItemText(IDC_EDIT1, szPath);
        }
                CoTaskMemFree(pidl);
        }

//1:知道在哪查找
//2:知道找什么
//3:查到以后如何返回 有三个参数 就需要声明一个类
UINT __cdecl FindProc(LPVOID pParam)
{
        InterlockedIncrement(&g_ThreadNum);
        CFindItem *pItem = (CFindItem*)pParam;
        CString strRootPath = pItem->m_PathFind;
          if (strRootPath[strRootPath.GetLength() - 1]!= '\\') {
                strRootPath = strRootPath + _T("\\");
        }
        CFileFind mFinder;
        BOOL bFind = mFinder.FindFile(strRootPath + _T("*.*"));
        while (bFind&&g_bFinding) {
                bFind = mFinder.FindFile();
                if (mFinder.IsDots()) {
                        continue;
                }
                else if(mFinder.IsDirectory()){
                        //开启多线程
                        CFindItem *pSubItem = new CFindItem(*pItem);
                        pSubItem->m_PathFind = mFinder.GetFilePath();
                        AfxBeginThread(FindProc, pSubItem);
                }
                else {
                        CString strFileName = mFinder.GetFileName();
                        if (strFileName.CompareNoCase(pItem->m_FName)==0) {
                                CString strPath = mFinder.GetFilePath();
                                SendMessage(pItem->m_hMainDlg, WM_MYMESSAGE,0,(LPARAM)(LPCTSTR)strPath);
                                InterlockedIncrement(&g_FindCount);
                        }
                }
        }
        mFinder.FindFile();

        delete pItem;
        InterlockedDecrement(&g_ThreadNum);
        return 0;
}
void CFileFinderDlg::OnBnClickedBtnSlook()
{
        // TODO: 在此添加控件通知处理程序代码
        g_bFinding = TRUE;
        CFindItem *pItem=new CFindItem();
        GetDlgItemText(IDC_EDIT1,pItem->m_PathFind);
        GetDlgItemText(IDC_FNAME_EDIT, pItem->m_FName);
        pItem->m_hMainDlg = GetSafeHwnd();

        m_Resultlist.DeleteAllItems();//点击一次后清楚当前的查询结果

        AfxBeginThread(FindProc,pItem);

}
LRESULT CFileFinderDlg::OnAddItem(WPARAM wParam, LPARAM lparam) {
        CString strPath = (LPCTSTR)lparam;
        m_Resultlist.InsertItem(m_Resultlist.GetItemCount(), strPath);
        return TRUE;
}


void CFileFinderDlg::OnBnClickedBtnStop()
{
        // TODO: 在此添加控件通知处理程序代码
        g_bFinding = FALSE;

}


void CFileFinderDlg::OnTimer(UINT_PTR nIDEvent)
{
        // TODO: 在此添加消息处理程序代码和/或调用默认值
        if (g_ThreadNum>0) {
                GetDlgItem(IDC_EDIT1)->EnableWindow(FALSE);
                GetDlgItem(IDC_FNAME_EDIT)->EnableWindow(FALSE);
                GetDlgItem(IDC_BTN_SLOOK)->EnableWindow(FALSE);
                GetDlgItem(IDC_BTN_CHECK)->EnableWindow(FALSE);
                GetDlgItem(IDC_BTN_STOP)->EnableWindow(TRUE);

        }
        else {
                GetDlgItem(IDC_EDIT1)->EnableWindow(TRUE);
                GetDlgItem(IDC_FNAME_EDIT)->EnableWindow(TRUE);
                GetDlgItem(IDC_BTN_SLOOK)->EnableWindow(TRUE);
                GetDlgItem(IDC_BTN_CHECK)->EnableWindow(TRUE);
                GetDlgItem(IDC_BTN_STOP)->EnableWindow(FALSE);
        }

        CDialogEx::OnTimer(nIDEvent);
}
32_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-1-9 19:23:53 | 显示全部楼层

// FileFinderDlg.h : 头文件
//

#pragma once
#include "afxcmn.h"
#define WM_MYMESSAGE (WM_USER + 100)

class CFindItem {
public:
        CString m_PathFind;
        CString m_FName;
        HWND m_hMainDlg;
        CFindItem() {
                m_PathFind.Empty();
                m_FName.Empty();
                m_hMainDlg = NULL;
        }
        CFindItem(CFindItem &tItem) {
                m_PathFind=tItem.m_PathFind;
                m_FName = tItem.m_FName;
                m_hMainDlg = tItem.m_hMainDlg;
        }
};



// CFileFinderDlg 对话框
class CFileFinderDlg : public CDialogEx
{
// 构造
public:
        CFileFinderDlg(CWnd* pParent = NULL);        // 标准构造函数

// 对话框数据
#ifdef AFX_DESIGN_TIME
        enum { IDD = IDD_FILEFINDER_DIALOG };
#endif

        protected:
        virtual void DoDataExchange(CDataExchange* pDX);        // DDX/DDV 支持


// 实现
protected:
        HICON m_hIcon;

        // 生成的消息映射函数
        virtual BOOL OnInitDialog();
        afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
        afx_msg void OnPaint();
        afx_msg HCURSOR OnQueryDragIcon();
        DECLARE_MESSAGE_MAP()
public:
        afx_msg void OnBnClickedBtnCheck();
        afx_msg void OnBnClickedBtnSlook();
        CListCtrl m_Resultlist;
        afx_msg LRESULT OnAddItem(WPARAM wParam, LPARAM lparam);
        afx_msg void OnBnClickedBtnStop();
        afx_msg void OnTimer(UINT_PTR nIDEvent);
};
75_avatar_middle
最佳答案
18 
online_supermod 发表于 2020-1-9 20:26:41 | 显示全部楼层
thzzl 发表于 2020-1-9 18:01
能传一份源码吗?

我笑出了  杀猪般的嚎叫
58_avatar_middle
最佳答案
43 
online_vip 发表于 2020-1-9 21:06:29 | 显示全部楼层
老铁,删除没用的临时文件,发项目我们大家才好帮着调试呀。
https://www.cctry.com/thread-298798-1-1.html
46_avatar_middle
最佳答案
0 
在线会员 发表于 2020-1-9 22:15:33 | 显示全部楼层
可以尝试安装对应的运行库.http://www.pc6.com/softview/SoftView_104246.html
32_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-1-9 22:15:49 | 显示全部楼层
如何将项目发出去呢
32_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-1-9 22:26:15 | 显示全部楼层
下载了  还是报同样的错误
58_avatar_middle
最佳答案
43 
online_vip 发表于 2020-1-9 23:13:27 | 显示全部楼层
我没幼稚完 发表于 2020-1-9 22:26
下载了  还是报同样的错误

上传附件,老铁只发代码,我们还得去增加资源太麻烦了,这样也不好帮你一起调试,要不先跳过算了。
32_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-1-10 08:35:28 | 显示全部楼层
thzzl 发表于 2020-1-9 23:13
上传附件,老铁只发代码,我们还得去增加资源太麻烦了,这样也不好帮你一起调试,要不先跳过算了。

我Q时365541401 加一下 我发您吧 谢谢 附件好像发不上去我的文件
32_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-1-10 09:06:04 | 显示全部楼层
thzzl 发表于 2020-1-9 23:13
上传附件,老铁只发代码,我们还得去增加资源太麻烦了,这样也不好帮你一起调试,要不先跳过算了。

它触发了一个断点   说我定义的CFileFind mFinder  无可用信息怎么解决呢
32_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-1-10 09:34:33 | 显示全部楼层
我没幼稚完 发表于 2020-1-10 09:06
它触发了一个断点   说我定义的CFileFind mFinder  无可用信息怎么解决呢

C:\Users\nrx\Desktop
51_avatar_middle
最佳答案
82 
online_admins 发表于 2020-1-10 12:30:04 | 显示全部楼层
工程压缩下传上来吧,附件大小不够的话直接网盘
32_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-1-11 10:41:52 | 显示全部楼层
已经解决了 谢谢各位
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-10-29 00:47

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表