สอบถามท่านผู้รู้หน่อยครับ ทำไมผมถึงเรียกใช้ OpenFileDialog ใน C++ ไม่ได้

คือ ผมใช้ MFC Application ในการเขียน GUI แต่ทำไมผมถึงเรียกใช้ OpenFileDialog ไม่ได้อ่ะครับ ใช้ภาษา C++
ผมต้องการใช้ OpenFileDialog ในการให้ User เลือกรูปภาพมาแสดง
ผมต้องการข้อมูลส่วนนี้ไปทำโปรเจ็คจบ  ถ้าใครมาตอบจะขอบพระคุณเป็นอย่างสูง ^^

ส่วนการออกแบบ UI


ส่วนโค้ดที่ต้องการให้ผู้ใช้กดปุ่มเพื่อเลือกรูปภาพและวีดีโอมาแสดง


และนี่เป็นโค้นที่ผมใช้เขียน โค้ดส่วนใหญ่มีมาให้แล้ว

// test2Dlg.cpp : implementation file
//

#include "stdafx.h"
#include "test2.h"
#include "test2Dlg.h"
#include "afxdialogex.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CAboutDlg dialog used for App About

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

// Dialog Data
    enum { IDD = IDD_ABOUTBOX };

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

// Implementation
protected:
    DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
{
}

void CAboutDlg:หัวเราะoDataExchange(CDataExchange* pDX)
{
    CDialogEx:หัวเราะoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()


// Ctest2Dlg dialog



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

void Ctest2Dlg:หัวเราะoDataExchange(CDataExchange* pDX)
{
    CDialogEx:หัวเราะoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(Ctest2Dlg, CDialogEx)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDC_BUTTON1, &Ctest2Dlg:ประหลาดใจnBnClickedButton1)
    ON_BN_CLICKED(IDC_BUTTON2, &Ctest2Dlg:ประหลาดใจnBnClickedButton2)
END_MESSAGE_MAP()


// Ctest2Dlg message handlers

BOOL Ctest2Dlg:ประหลาดใจnInitDialog()
{
    CDialogEx:ประหลาดใจnInitDialog();

    // Add "About..." menu item to system menu.

    // IDM_ABOUTBOX must be in the system command range.
    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);
        }
    }

    // Set the icon for this dialog.  The framework does this automatically
    //  when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE);            // Set big icon
    SetIcon(m_hIcon, FALSE);        // Set small icon

    // TODO: Add extra initialization here

    return TRUE;  // return TRUE  unless you set the focus to a control
}

void Ctest2Dlg:ประหลาดใจnSysCommand(UINT nID, LPARAM lParam)
{
    if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    {
        CAboutDlg dlgAbout;
        dlgAbout.DoModal();
    }
    else
    {
        CDialogEx:ประหลาดใจnSysCommand(nID, lParam);
    }
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void Ctest2Dlg:ประหลาดใจnPaint()
{
    if (IsIconic())
    {
        CPaintDC dc(this); // device context for painting

        SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>ร้องไห้dc.GetSafeHdc()), 0);

        // Center icon in client rectangle
        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;

        // Draw the icon
        dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
        CDialogEx:ประหลาดใจnPaint();
    }
}

// The system calls this function to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR Ctest2Dlg:ประหลาดใจnQueryDragIcon()
{
    return static_cast<HCURSOR>ร้องไห้m_hIcon);
}



void Ctest2Dlg:ประหลาดใจnBnClickedButton1()
{
    // TODO: Add your control notification handler codยิ้ม
    


void Ctest2Dlg:ประหลาดใจnBnClickedButton2()
{
     // TODO: Add your control notification handler codยิ้ม
}
แก้ไขข้อความเมื่อ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่