首页 > 其他 > 详细

20150420

时间:2015-04-20 16:33:40      阅读:165      评论:0      收藏:0      [点我收藏+]

问题1:osg如何支持中文文件路径文件名?

修改osgDB代码块fstream.cpp文件中的源代码

1 #ifdef OSG_USE_UTF8_FILENAME
2 #define OSGDB_CONVERT_UTF8_FILENAME(s) convertUTF8toUTF16(s).c_str()
3 #else
4 #define OSGDB_CONVERT_UTF8_FILENAME(s) s
5 #endif

修改为:

#ifdef OSG_USE_UTF8_FILENAME
#define OSGDB_CONVERT_UTF8_FILENAME(s) convertUTF8toUTF16(s).c_str()
#else
#define OSGDB_CONVERT_UTF8_FILENAME(s) convertUTF8toUTF16(convertStringFromCurrentCodePageToUTF8(s)).c_str()
#endif

同时CMAKE的时候不要定义OSG_USE_UTF8_FILENAME宏

 

问题2:C#工程如何调试C++dll?
技术分享

1、设置工作目录

2、勾选:启动非托管代码调试

 

问题3:遍历文件夹,然后初始化到TreeView

        /// <summary>
        ///使用relateTreeView函数时 path 路径使用本地路径,或经过Server.MapPath("服务器的文件路径")解析过的路径;
        ///例如:relateTreeView(TreeView1, "D:\\Download");
        /// </summary>
        /// <param name="tv">TreeView</param>
        /// <param name="path">遍历路径</param>
        private void relateTreeView(TreeView tv, string path)
        {
            tv.Nodes.Clear(); //清空TreeView
            tv.Nodes.Add(new TreeNode()); //添加新节点
            string[] pathinfo = Path.GetFullPath(path.Trim()).Split(char.Parse("\\")); //得到文件路径数组
            tv.Nodes[0].Text = pathinfo[pathinfo.Length - 1]; //得到文件夹名
            tv.Nodes[0].Name = path; //得到文件夹的详细本地路径
            tv.Nodes[0].Expand(); //展开根节点
           // tv.Nodes[0].ImageIndex = 0; //根节点图片
            TraversingCatalog(tv.Nodes[0], path); //调用函数
        }

        /// <summary>
        /// 遍历根节点下的所有文件夹及文件
        /// </summary>
        /// <param name="tn">根节点</param>
        /// <param name="path">根节点路径</param>
        /// <returns></returns>
        private bool TraversingCatalog(TreeNode tn, string path) //遍历文件夹
        {
            if (Directory.Exists(path) == false) { return false; }
            DirectoryInfo dirInfo = new DirectoryInfo(path);

            int allNum = dirInfo.GetDirectories().Length + dirInfo.GetFiles("*.*").Length;
            if (allNum == 0) //没有任何文件夹和文件就建立"(空白)"节点并返回false
            {
                TreeNode empty = new TreeNode();
                empty.Text = "(空白)"; //得到文件名
                empty.Name = ""; //得到文件的详细本地路径
                empty.ImageIndex = 0; //节点图片
                //empty.Expanded = false; //折叠节点
                tn.Nodes.Add(empty); //添加新节点
                return false;
            }

            //循环文件夹(避免混乱,先循环文件夹)
            int folderIndex = -1; //文件夹索引
            foreach (DirectoryInfo folder in dirInfo.GetDirectories())
            {
                folderIndex++;
                TreeNode folderNode = new TreeNode();
                folderNode.Text = folder.Name; //得到文件夹名
                folderNode.Name = folder.FullName; //得到文件夹的详细本地路径
                folderNode.ToolTipText = folder.Name; //得到文件夹名
                folderNode.Expand(); //折叠节点
                folderNode.ImageIndex = 0; //节点图片
                tn.Nodes.Add(folderNode); //添加新节点
                TraversingCatalog(tn.Nodes[folderIndex], path + "/" + folder.Name); //递归遍历其它文件夹
            }

            //循环文件
            foreach (FileInfo file in dirInfo.GetFiles("*.*")) //循环扩展名为*.*的文件
            {
                TreeNode fileNode = new TreeNode();
                fileNode.Text = file.Name; //得到文件名
                fileNode.Name = file.FullName; //得到文件的详细本地路径
                fileNode.ToolTipText = file.Name; //得到文件名
                fileNode.Expand(); //折叠节点
                fileNode.ImageIndex = 1; //节点图片
                fileNode.SelectedImageIndex = 1;
                tn.Nodes.Add(fileNode); //添加新节点
            }
            return true;
        }

 

20150420

原文:http://www.cnblogs.com/wuhanchild/p/4441678.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!