本人对于DeviceIoControl有一定的了解,但是,我打算在MFC中使用时出现问题,我想实现从硬盘中接受的数据能够在对话框中显示,于是我使用了SetWindowText使其在静态文本框中出现,但是出现下面错误我的代码如下:
请教各位大神此问题怎么解决,还有通过USB接口读取MCU中寄存器的数据也可以这样用么

解决方案 »

  1.   

    pdg指向的内容是一个DISK_GEOMETRY的结构体,怎么能用来当字符串使用设置给Window呢...
      

  2.   

    那在MFC中通过USB接口读取单片机寄存器里面的数据,代码该怎么写呢
      

  3.   


    将数据进行字符串格式化成文本,再输出显示就行了...
    typedef struct _DISK_GEOMETRY {
      LARGE_INTEGER Cylinders;
      MEDIA_TYPE    MediaType;
      DWORD         TracksPerCylinder;
      DWORD         SectorsPerTrack;
      DWORD         BytesPerSector;
    } DISK_GEOMETRY;
    char data_str[MAX_PATH];
    sprintf(data_str, "Cylinders: %I64d, Media Type:%d", pdg->Cylinders.QuadPart, pdg->MediaType);
    ...SetWindowText(data_str);其他数据类型需要的话再补上去就行了...这里就举个例子...
      

  4.   


    DISK_GEOMETRY的定义不用写,我只是告诉你里面有什么变量...代码有冲突自己根据错误提示去掉不就行了....
    哎...就是进行字符串格式化处理下就行了...
      

  5.   

    错误消除了,但是在获取数据在编辑框显示的时候,显示不出来,而且对话框会弹出关闭EXE的窗口
      

  6.   


    又仔细看了下你的代码,DISK_GEOMETRY的用法不对,你不会是抄了这里的代码吧?http://www.aiseminar.cn/bbs/forum.php?mod=viewthread&tid=1716人家代码里的DISK_GEOMETRY是外部传进来,有足够的Buffer大小的,你都没认真看人家的代码。
    DISK_GEOMETRY* pdg,这只是个指针而已...
    首先改为DISK_GEOMETRY pdg;
    然后DeviceIoControl的pdg的地方改为...&pdg, sizeof(DISK_GEOMETRY)我就只能帮你到这里了,再有错误,请自己找原因解决...