以下代码是在回调函数中
hfilemap=OpenFileMapping(FILE_MAP_ALL_ACCESS,false,"buttonmem");
int* buffer=(int*)MapViewOfFile(hfilemap,FILE_MAP_ALL_ACCESS,0,0,100*sizeof(int));
memcpy(buffer+1, (char *) &m_reshui, sizeof (BOOL));
if(*(buffer+1)==1)
{
Afxmessagebox("1");
}m_reshui关联的是一个布尔控件,按下时为1.但是实际运行时,即使按下也没有显示1,这是怎么回事??

解决方案 »

  1.   

    上面的m_reshui已经定义为全局变量了
      

  2.   

    如何关联 是控件型变量吗 用GetCheck获取状态试试
      

  3.   

    设个断点,看一下拷贝完后buffer的值是什么?
      

  4.   

    (char *) &m_reshui这是什么控件?还有这样用的?
      

  5.   

    在memcpy(buffer+1, (char *) &m_reshui, sizeof (BOOL));前后都加上buffer+1的打印,确定赋值是成功的并且值是1,然后再解决其他问题。
      

  6.   

    m_reshui是一个BOOL值,你把他赋值到文件的内存地址里,这么看似乎是对的
    你的回调函数是怎么写的?执行这段代码的时候用TRACE把m_reshui的值打印出来看看
      

  7.   

    我是把labview里面的按钮控件拿来用
      

  8.   

    我回调函数中的内容
    ((CChatClientDlg*)(AfxGetApp()->m_pMainWnd))->m_system3.UpdateData(TRUE);
    /*发送按钮信息至共享内存*/
    hfilemap=OpenFileMapping(FILE_MAP_ALL_ACCESS,false,"buttonmem");
    int* buffer=(int*)MapViewOfFile(hfilemap,FILE_MAP_ALL_ACCESS,0,0,100*sizeof(int));
    memcpy(buffer+1, (char *) &m_reshui, sizeof (BOOL));
    下面这句是在一个线程里面写的
    nID=::timeSetEvent (10,1,callback,0,TIME_PERIODIC);问题应该就在于点按钮时候程序似乎接收不到按钮的值变化