资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 软件开发 >
Advertisement
文章正文

问一个SENDMESSAGE的问题

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   

SENDMESSAGE函数不是立即返回的,那如果有多个线程同时向一个窗体发消息(用SENDMESSAGE),会不会造成这些线程的阻死?

网友回答:

发表者:DentistryDoctor

有可能,应该用PostMessage.

发表者:happyparrot

SendMessage会造成堵塞。因为每个线程都在等待答复。但响应只能逐个处理,不能并发

发表者:huwei001982

线程中发消息一般用   PostMessage

发表者:zfive5

响应只能逐个处理  
  对  
  是串行执行的!  
   
  这个做过试验,

发表者:lixiaosan

最好用postmessage

发表者:goodsmaker

全局的可以,不是全局的也可以.  
   
  你上面说的:  
  些时系统会报错,好像m_strinfo的地址无效了,那如何处理这个问题呢,因为m_strinfo是局部变量,所以线程一退出m_strinfo就不再有效,那如何保证消息的处理函数可以得到正确的值呢,不是用全局量吧.  
   
  是因为那个hwnd是ListCtrl,如果是Edit或Static就不会有这个问题,你试试看.  
   
  如果是,就有解决办法.

发表者:Phourm

threadfunc(...)  
  {  
      cstring   m_strInfo;  
       
      ....  
      ...  
   
      CString   *pstrinfo   =   new   CString();  
      *pstrinfo   =   "test   info";  
      ::postmessage(xxx.m_hwnd,mymessage,0,(LPARAM)pstrinfo);  
       
      return   1;  
  }  
   
   
  onxxxxx(wparam   wparam   lparam   lparam)  
      {  
            CString   *pInfo   =   (CString   *)lparam;  
             
            lstXXX.insertitem(....);  
            ....  
            delete   pInfo;  
      }  
 

发表者:LongLongAgoImBoy

代码没有测试,仅供参考!  
  threadfunc(...)  
  {  
      cstring   m_strInfo;  
       
      ....  
      ...  
       
      m_strinfo   =   "test   info";  
      char   *pNewStr   =   new   char[m_strInfo.GetLength()+1];  
      //new   出来的内存只有调用delete时才会释放  
      strcpy(pNewStr,   m_strinfo.GetBuffer(0));  
      ::postmessage(xxx.m_hwnd,mymessage,0,(LPARAM)&pNewStr);  
       
      return   1;  
  }  
  接收消息:  
  char   *p   =   (char*)lParam;  
  TRACE("Message:   %s",   p);  
  delete   []p;  
 


 

 
热门推荐笔记本: IBM笔记本
相关文章:
webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
©2007 popbb.net All Rights Reserved