zoukankan      html  css  js  c++  java
  • MFC/HALCON混合编程系列三_CFielDialog打开文件对话框

    目的:在系列二的基础上,添加从文件中打开一幅图像的按钮。点击该按钮可以选择从文件或者当前目录下打开一幅图像。
     
    按钮的事件响应函数如下:
        
    void CHalconMFCDlg::OnBnClickedReadimage()
    {
        // TODO: Add your control notification handler code here
        // HDevelop default window handle 
        char ReadImageModel = 0;
        if (1 == ReadImageModel)
        {
            open_framegrabber("File"110000"default"-1"default"-1"default"
                 """default"-1-1&AcqHandle);
            grab_image(&Image, AcqHandle);
            get_image_pointer1(Image, &Pointer, &Type, &Width, &Height);
            set_window_attr("background_color","black");
            set_part(WindowHandle,0,0,Height-1,Width-1);
            disp_obj(Image, WindowHandle);    
        }
        else
        {
            CFileDialog dlg(TRUE, NULL,NULL, OFN_HIDEREADONLY,_T("JPEG|*.jpg|All files|*||"));//OFN_ALLOWMULTISELECT打开多文档选项。
            if (dlg.DoModal()==IDOK) //如果返回为确定,获得选择的文件名
            {
                //获取文件路径,读取图像。
                CString pathname=dlg.GetPathName( ); //
                char* Filename = pathname.GetBuffer(pathname.GetLength()+1); 
                read_image(&Image,Filename);
                get_image_pointer1(Image, &Pointer, &Type, &Width, &Height);
                
                set_part(WindowHandle,0,0,Height-1,Width-1);
                disp_obj(Image, WindowHandle);
            }
        }
    }
     
        问题一:通过dlg.GetPathName( )获得的文件路径是CString类型,而Halcon中的read_image需要的类型为HTuple,而这两种数据结构之间似乎不能进行类型转换。
        解决办法:由于对read_image不熟悉,不知道它可以使用char *类型的传入参数。因此只要把CString转换为char*类型作为传入参数。
     
        问题二,由dlg.GetPathName( )读取的路径类似下列 "C: est.jpg",而Halcon需要的路径却是类似"C:/test.jpg"。如果使用的话,还需要进行一次转换。
        解决办法:将CString类型装换为char*类型后,似乎没有这个问题了。
     
    参考资料:
     
  • 相关阅读:
    Java排序算法之堆排序
    servlet学习总结(一)——HttpServletRequest(转载)
    servlet学习总结(一)——初识Servlet
    Java排序算法之快速排序
    Java排序算法之直接选择排序
    第八课、泛型编程简介
    第六课、算法效率的度量
    第四课、程序灵魂的审判
    第三课、初识程序的灵魂------------------------狄泰软件学院
    用solidity语言开发代币智能合约
  • 原文地址:https://www.cnblogs.com/HappyEDay/p/7661207.html
Copyright © 2011-2022 走看看