第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

C# 和 C++ MFC:使用文件夾文件計(jì)數(shù)和順序創(chuàng)建書頁(yè)

C# 和 C++ MFC:使用文件夾文件計(jì)數(shù)和順序創(chuàng)建書頁(yè)

C#
慕容3067478 2021-08-22 15:31:31
我想開發(fā)一個(gè)執(zhí)行分頁(yè)功能的模塊,以便可以像電子書一樣查看任意文件夾中的圖片。我正在嘗試使用C #and實(shí)現(xiàn)接口和功能C++ MFC。界面:文件總數(shù)不固定。示例:+Folder : images|_  image_01.jpg  |_  image_02.jpg  |_  image_03.jpg  Total page : 3 (If an image is created in the folder:"images", Total page will be 4.)   Current page : 2 (image_02.jpg)  如果我按<<PREV( NEXT>>),應(yīng)用程序?qū)@示image_01.jpg( image_03.jpg)。不幸的是我不知道。我該如何實(shí)施?我無(wú)法描述代碼,因?yàn)槲以诨ヂ?lián)網(wǎng)上找不到解決方案。請(qǐng)不要投票反對(duì)并教我如何做。提前謝謝你。如果你解決了任何一個(gè)C # Windows Form Application和C ++ MFC Application solutions,我肯定會(huì)投票。如果您能同時(shí)發(fā)布兩個(gè)解決方案,我將不勝感激。
查看完整描述

1 回答

?
明月笑刀無(wú)情

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊

C++ MFC Windows 應(yīng)用程序?qū)崿F(xiàn):


項(xiàng)目名稱: CImagePreview


DWORD ev_page_current, ev_page_total;

WCHAR ev_current_file[MAX_PATH];


void CImagePreview::OnPressPrevButton()

{

    // TODO: Add your control notification handler code here

    ev_page_total = GetTotalPages(IMAGE_PATH);

    WCHAR wszPath[MAX_PATH] = {0};

    GetPrevImagePathW(IMAGE_PATH, ev_current_file, wszPath);

    DisplayImages(wszPath);


    ev_page_current > 1 ? ev_page_current-- : ev_page_current = 1;

    SetPageNumber();

}


void CImagePreview::OnPressNextButton()

{

    // TODO: Add your control notification handler code here

    ev_page_total = GetTotalPages(IMAGE_PATH);


    WCHAR wszPath[MAX_PATH] = {0};

    GetNextImagePathW(IMAGE_PATH, ev_current_file, wszPath);

    DisplayImages(wszPath);


    ev_page_current < ev_page_total ? ev_page_current++ : ev_page_current = ev_page_total;

    SetPageNumber();

}


DWORD CImagePreview::DisplayImage(_In_ WCHAR* wszFilepath)

{

    // You can display image with path.

    return 0;

}


DWORD CImagePreview::GetNextImagePathW(_In_ WCHAR* wszFolderpath, _In_ WCHAR* wszFilename, _Out_ WCHAR* wszFilepath)

{return GetImagePathW(wszFolderpath, wszFilename, wszFilepath, NEXT);}


DWORD CImagePreview::GetPrevImagePathW(_In_ WCHAR* wszFolderpath, _In_ WCHAR* wszFilename, _Out_ WCHAR* wszFilepath)

{return GetImagePathW(wszFolderpath, wszFilename, wszFilepath, PREV);}


DWORD CImagePreview::GetImagePathW(_In_ WCHAR* wszFolderpath, _In_ WCHAR* wszInputFilename,  _Out_ WCHAR* wszOutputFilepath, _In_ DWORD dwFlag)

{

    WIN32_FIND_DATA t = {0};

    HANDLE hFindFile = NULL;

    BOOL blBreak = FALSE;


    WCHAR wszFilename[MAX_PATH] = {0};

    WCHAR wszFindpath[MAX_PATH] = {0};

    WCHAR* wszFindname = NULL;


    if (wszInputFilename)

    {

        if (NULL != wcsstr(wszInputFilename, L"\\"))

        {

            wszFindname = wcsrchr(wszInputFilename, L'\\');

            wszFindname++;

        }

    }


    // First set folder path.

    wcscpy_s(wszOutputFilepath, MAX_PATH, wszFolderpath);


    wcscpy_s(wszFindpath, MAX_PATH, wszFolderpath);

    wcscat_s(wszFindpath, MAX_PATH, L"*.jpg");


    hFindFile = FindFirstFileW(wszFindpath, &t); if (hFindFile == INVALID_HANDLE_VALUE){return GetLastError();}

    wcscpy_s(wszFilename, MAX_PATH, t.cFileName);


    if( hFindFile != INVALID_HANDLE_VALUE )

    {

        do 

        {

            if (t.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){}

            else

            {

                if (NULL != wszFindname && !wcsicmp(wszFindname, t.cFileName))

                {

                    if (PREV == dwFlag) break;

                    if (NEXT == dwFlag) {blBreak = TRUE; continue;}

                    if (0 == dwFlag){wcscpy_s(wszFilename, MAX_PATH, t.cFileName); break;}

                }


                if (blBreak) break;


                if(0 == wcslen(wszInputFilename)) {wcscpy_s(wszFilename, MAX_PATH, t.cFileName); break;}


                wcscpy_s(wszFilename, MAX_PATH, t.cFileName);

            }

        } while (FindNextFileW(hFindFile, &t));

    }

    if (blBreak && NEXT == dwFlag) wcscpy_s(wszFilename, MAX_PATH, t.cFileName);


    FindClose(hFindFile);

    wcscat_s(wszOutputFilepath, MAX_PATH, wszFilename);


    return GetLastError();

}


INT CImagePreview::GetTotalPages(_In_ WCHAR* wszFolderpath)

{

    INT nTotalPage = 0;

    WIN32_FIND_DATA t = {0};

    HANDLE hFindFile = NULL;

    WCHAR wszFindpath[MAX_PATH] = {0};


    wcscpy_s(wszFindpath, MAX_PATH, wszFolderpath);

    wcscat_s(wszFindpath, MAX_PATH, L"*.jpg");


    hFindFile = FindFirstFileW(wszFindpath, &t); if (hFindFile == INVALID_HANDLE_VALUE){return GetLastError();}


    if( hFindFile != INVALID_HANDLE_VALUE )

    {

        do {

            if (t.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){}

            else{nTotalPage++;}

        } while (FindNextFileW(hFindFile, &t));

    }

    FindClose(hFindFile);


    return nTotalPage;

}


VOID CImagePreview::SetPageNumber(void)

{

    CString cstrPage;

    cstrPage.Format(_T("%d/%d"), ev_page_total, ev_page_current);

    m_edit_page.SetWindowTextW((LPTSTR)(LPCTSTR)cstrPage);


    return VOID();

}

文件的順序DIR_PATH可以幫助您。我也測(cè)試了我的答案,它運(yùn)行良好。因?yàn)槟?,我剛剛制作了一個(gè)電子圖片預(yù)覽器。


我認(rèn)為您不需要更多C #相關(guān)的解決方案。我認(rèn)為它與MFC解決方案相同......怎么樣?


查看完整回答
反對(duì) 回復(fù) 2021-08-22
  • 1 回答
  • 0 關(guān)注
  • 249 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)