谁能给我解答或给我个成功的例子

时间:2021-01-07 05:10:19
实现文件里:
BOOL CWorkDlg::OnInitDialog()//窗口初始化
{
  。。。。。。。。
  。。。。。。。
  ks.bo=true;
  ks.hwnd=this->m_hWnd;
  m_thread=AfxBeginThread(threadproc,&ks);
  return true;
}
UINT CWorkDlg::threadproc(LPVOID param) //线程处理函数

    SBlei *zhen=(SBlei*)param; 
    while(zhen->bo) 
    {
          ::PostMessage(zhen->hwnd,WM_SEND,0,0); 
          Sleep(1000); 
    }
        return 0; 
}
void CWorkDlg::onsend()//消息处理函数
{
    什么也不处理
}

头文件里:
#define WM_SEND WM_USER+101
class CWorkDlg : public CDialog
{
   static UINT threadproc(LPVOID param);
   public:
   struct SBlei
   {    
 HWND hwnd;
 bool bo;
   }ks;
 。。。。。。。。。。。。
 。。。。。。。。。。。。。。 
   afx_msg void onsend();
 。。。。。。。。。。。。。。 
}

我这样做有错?在调试模式什么错也没有,在发布模式运行线程一发送消息,程序就出错关掉。
消息函数是有响应的。
我用了UI线程试了下循环发送消息,结果在发布模式下也死掉了。
定时器也是线程来的吧,我用它循环发送消息也一样死掉?
高手帮帮忙啊。
谁有成功的例子,给我发下好不。
我做了很多实验,发了很多贴,都没法解决。
350955605@qq.com

7 个解决方案

#1


怎么没人理我啊,我是新手来的啊,对工具也不怎么熟悉。
在调试模式中实现可以就认为行了,没想学习打包的时候就遇到这问题了,现在真的不知道怎么办了?

#2


ks不能是局部变量.

#3


如楼上所说 
你没必要把那个结构题定义在类里面 直接写成全局的
然后在需要的地方开堆内存试试
SBlei *ks=new SBlei;

#4


afx_msg void onsend(); 
-->
afx_msg LRESULT onsend(WPARAM wParam, LPARAM lParam);

#5


结构对齐有问题?

#6


afx_msg void onsend(); 
改为
onsend(WPARAM wParam, LPARAM lParam)//
头文件和CPP里面都改,我这里就好了。

很神奇吧。

楼主用的VC6,要不升2008吧,这个错会被揪出来.

#7


ligeqiang

太感动了,太感谢你了。
原来是这样。

#1


怎么没人理我啊,我是新手来的啊,对工具也不怎么熟悉。
在调试模式中实现可以就认为行了,没想学习打包的时候就遇到这问题了,现在真的不知道怎么办了?

#2


ks不能是局部变量.

#3


如楼上所说 
你没必要把那个结构题定义在类里面 直接写成全局的
然后在需要的地方开堆内存试试
SBlei *ks=new SBlei;

#4


afx_msg void onsend(); 
-->
afx_msg LRESULT onsend(WPARAM wParam, LPARAM lParam);

#5


结构对齐有问题?

#6


afx_msg void onsend(); 
改为
onsend(WPARAM wParam, LPARAM lParam)//
头文件和CPP里面都改,我这里就好了。

很神奇吧。

楼主用的VC6,要不升2008吧,这个错会被揪出来.

#7


ligeqiang

太感动了,太感谢你了。
原来是这样。