我对C#较为熟悉,MDL不太熟,如果只能由C++调用的话,请各位老师给出方法哈!
C#调用主要采用P/invoke的方式。如V8i下:
[DllImport("stdmdlbltin.dll", CharSet = CharSet.Ansi)] public extern static IntPtr mdlDialog_openCompletionBar(string messageText); [DllImport("stdmdlbltin.dll", CharSet = CharSet.Ansi)] public extern static void mdlDialog_completionBarUpdate(IntPtr dialog, string messageText, int percent); [DllImport("stdmdlbltin.dll", CharSet = CharSet.Ansi)] public extern static void mdlDialog_completionBarClose(IntPtr dialog);
具体调用:IntPtr dialog = mdlDialog_openCompletionBar(message);.....................//中间更新进度值
mdlDialog_completionBarUpdate(dialog, message, 百分比);//结束关掉窗口
mdlDialog_completionBarClose(dialog);
---------------------------------------------------------------
中国市政工程西北设计研究院有限公司武汉分院
Answer Verified By: Yongan.Fu
补充一下,CE的进度条该渡河调用呢?谢谢老师。
符老师,您好,经过逐个查找,在ustation.dll中找到了进度条的函数,基于郑岗郑老师的回复,将stdmdlbltin.dll更改为ustation.dll后就可以了。谢谢符老师。
Answer Verified By: cao li
感谢你的分享!看起来CE把这几个函数变更了位置。
谢谢分享
可否请郑老师指导下何时调用,怎么调用呢?
给你一段MDL调用这几个函数的代码供你参考。在C#中也类似调用即可:
DialogBox *cmplDbP = mdlDialog_completionBarOpen ("Reading ASC DEM DataFile ...");
mdlDialog_completionBarUpdate (cmplDbP, NULL, 0);
for (i=0; i<13; i++)
{
//做一些费时的工作,根据工作进度计算一个完成的百分比percent (0~100之间)
mdlDialog_completionBarUpdate (cmplDbP, NULL, percent);
}
mdlDialog_completionBarClose (cmplDbP);