叶帆工作室

嵌入式开发爱好者(十年开发经验,精通C/C++/VC/VB/C#...)

用户操作
[即时聊天] [发私信] [加为好友]
叶帆ID:yefanqiu
536437次访问,排名80好友0人,关注者224
微软MVP / CSDN 2008十大MVB/MSDN中文技术论坛版主
yefanqiu的文章
原创 218 篇
翻译 0 篇
转载 3 篇
评论 1099 篇
叶帆的公告
本博客原创文章,作者保留一切权利,需经作者同意后方可转载,转载时 请注明[叶帆工作室]及文章链接。yefan@vip.sina.com
【简介】叶帆[微软MVP]
【文章】叶帆文章列表
【软件】叶帆共享软件列表
最近评论
BinYu:我用的是vista home basic sp1,但vs2005强行装不上去,请帮忙分析一下,qq:811344767,先谢谢了
wjh6877:算法想好了吗?

没有就是空话
一生好人:其实我也想来正版,但生活逼人,没办法啊
fox23:something like java card;-)
wwqqha:不错不错
文章分类
收藏
    相册
    叶帆照片
    【叶帆软件】
    [01]VB源码之友(V2.1.548)
    [02]API浏览器.net(V5.0)
    [03]叶帆成语词典(V2.0.8)
    [04]叶帆密码库(V1.2.8)
    【叶帆资源】
    DAO 2.0引擎
    叶帆快速通道
    MSDN-MVP
    Windows Embedded 专题
    中文MSDN
    叶帆圈子--工业自动化
    叶帆工作室(博客园)
    叶帆工控--工业自动化
    叶帆群组--工业应用开发
    微软中文技术论坛
    微软硬件创新中心(HIC)
    瑞康社区论坛
    叶帆友情链接
    张欣
    枕善居
    莫依
    葛涵涛
    郑建
    陈辉
    马宁
    马骐
    魏涛序
    黎波
    存档
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 DLL(MFC)通过Window消息向C#程序传递数据收藏

    新一篇: 同样指令bmp.LockBits不同平台(Windows/WinCE)获取位图的数据不同 | 旧一篇: 用拖拉实现设备驱动配置(EsayHMI最新驱动配置方式)

          这是我在用C#开发IOServer遇到的一个问题,该程序需要用到原先用MFC开发的DLL,最大问题是该dll运行过程中的一些信息,通过window消息向指定的hwnd(窗体句柄)发送数据。数据的指针放在WParam参数里,LParam参数是数据的类型信息。

         C#提供  m.GetLParam()函数,可惜我的数据放在WParam参数里(这个还不能修改,否则原有程序就无法运行了,修改的代价太高),所以这个函数不能用。

        下面经过多次测试,终于获取数据成功。

       MFC DLL中的相关代码:

       TCHAR cMessage[255];
      SYSTEMTIME stime;
         GetLocalTime(&stime);
       swprintf(cMessage,_T("%04d-%02d-%02d %02d:%02d:%02d [%-16s #%03d] - %s "),stime.wYear,stime.wMonth,stime.wDay,stime.wHour,stime.wMinute,stime.wSecond,strSource,lngNO,strMessage);
            if (G_IOMRun.lngMsgFlag==0)
      {
          SendMessage(G_IOMRun.Hwnd, WM_USER+7722,(long)cMessage,lngType); //
      }

      在C#中需要重载窗体的消息处理函数,相关代码如下:

          [DllImport("kernel32", EntryPoint = "CopyMemory")]
            public static extern void CopyMemory(StringBuilder Destination,IntPtr Source,int Length);
            /// <summary>
            /// 重载窗口函数
            /// </summary>
            /// <param name="m"></param>
            protected override void WndProc(ref Message m)
            {
                //---------------------
                if(m.Msg == 0x0400 + 7722)
                {             
                   StringBuilder strData = new StringBuilder(255);
                   CopyMemory(strData, m.WParam, 255);
                   ShowInfo((int)m.LParam,strData.ToString());
                }
                //---------------------
                base.WndProc(ref m);
            }

    注意:CopyMemory函数的声明需要自己修改(原声明如下),一定要去掉“ref” 关键字,否则会获取不正确。

    [DllImport("kernel32", EntryPoint="CopyMemory")]
    public static extern void CopyMemory (
            ref int Destination,
            ref int Source,
            int Length
    );

     

     

    发表于 @ 2007年01月07日 22:12:00|评论(loading...)|编辑

    新一篇: 同样指令bmp.LockBits不同平台(Windows/WinCE)获取位图的数据不同 | 旧一篇: 用拖拉实现设备驱动配置(EsayHMI最新驱动配置方式)

    评论

    #jinfayang 发表于2007-02-01 16:39:48  IP: 219.133.95.*
    我看过您之前写的一篇关于ActiveSync根VS上的模拟器连接的文章 。你在ActiveSync的连接设置里面提到要选择MDA端口 可是我安装了ActiveSync之后只有COM1 这个端口没有其他的选择项。怎么解决这个问题?
    #jinfayang 发表于2007-02-01 16:40:30  IP: 219.133.95.*
    希望您能帮帮我,很急切的等您的答复
    #yefanqiu 发表于2007-02-02 11:11:38  IP: 222.130.241.*
    这方面我也了解不是很深,我安装的ActiveSync是最新版本的,安装后就有,你可以重新安装最新版本试试!

    此外这类问题,你可以到“马宁的Windows Mobile开发研究”http://groups.csdn.net/aawolf_Mobile 去问问!
    #jinfayang 发表于2007-02-06 10:56:36  IP: 219.133.95.*
    好的 谢谢老师了
    #jinfayang 发表于2007-02-06 11:05:28  IP:
    我用VS2005开发PPC的应用程序,我开发式在VS上用什么数据库呢。比如说是用SQL SEVER还是用SQL SEVER CE呢?
    如果是直接用SQL SEVER那我要是把程序(不知道是直接部署还是打包下载再安装,这点也请老师帮帮忙,我是刚刚开始涉及这方面。)下载到PDA上的时候是不时要转换成SQL SEVER CE呢。
    还有我看网上有好多高手说要做成什么.cab文件时什么意思。
    呵呵 问题够多的,实在是无奈!!!
    请老师帮帮学生!
    #jinfayang 发表于2007-02-06 11:13:16  IP:
    一不小心,就发了那么多 不好意思。马老师的博客我也去的,只不过他太忙了。有时有一个月才回复大家的问题。公司给我开发的时间不多阿。所以只好打搅了哈哈。
    #yefanqiu 发表于2007-02-06 14:27:16  IP: 222.130.249.*
    在PPC上当然要用SQL Server CE,可以同上位机SQL 2005 进行数据同步(具体的SQL应用我也没有做过,道听途说而已)
    .cab 是ppc上的安装文件包,专门有一个程序提供.cab的安装支持,有些程序也可以在上位机做安装程序,通过同步程序对PPC进行远程安装
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 叶帆