| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1124 人关注过本帖
标题:如何得到父窗口句柄
只看楼主 加入收藏
fox2g
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-7-17
收藏
 问题点数:0 回复次数:2 
如何得到父窗口句柄

MFC编程单文档应用程序,编译没有问题,一运行就报错说“访问违例”,调试发现父窗口丢了“hWnd=???”,我用createthread生成了一个线程,是不是跟这个有关啊?不知道怎么解决希望大家给点建议。
代码如下:
// RunDlg.cpp : implementation file
//

#include "stdafx.h"
#include "SPLC.h"
#include "RunDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CRunDlg dialog
HWND hWnd;
CWinThread* pMyThread;
bool isrun;
CString cmd;
CString m_cmd;
CString cmd_t;
CString cmd_i;
UINT i;

//////////////////////////////////////////////////////////////////////////
.......................

/////////////////////////////////////////////////////////////////////////////
// CRunDlg message handlers

void CRunDlg::OnRadio1()
{
// TODO: Add your control notification handler code here
if(1==m_r1.GetCheck())
{
m_r1.SetCheck(0);
I0=0;
}
else
{
m_r1.SetCheck(1);
I0=1;
}

}

void CRunDlg::OnCancelrun()
{
// TODO: Add your control notification handler code here
CWinApp *app;
app=AfxGetApp();

isrun=TRUE;
WaitForSingleObject(pMyThread->m_hThread,INFINITE);
CloseHandle(pMyThread);

}

void CRunDlg::OnStart()
{
// TODO: Add your control notification handler code here

GetDlgItem(IDC_CANCELRUN)->EnableWindow(TRUE);
GetDlgItem(IDC_START)->EnableWindow(FALSE);

isrun=FALSE;

pMyThread=AfxBeginThread(RunProc,hWnd);
}

UINT RunProc( LPVOID pParam )
{
CRunDlg * pRunProc=(CRunDlg *) pParam;

CSPLCApp *app=(CSPLCApp*)AfxGetApp();
cmd=app->cmdtemp;
int len;
int len_t,len_tc;
while(!isrun)
{

len=m_cmd.GetLength();

if(!len)
m_cmd=cmd;

while(len>0)
{
cmd_t=m_cmd.Left(m_cmd.Find('\r'));

len_t=cmd_t.GetLength()+1;
len=len-len_t;
m_cmd=m_cmd.Right(len);
cmd_i=cmd_t.Left(cmd_t.Find(' '));

i=pRunProc->DealwithCmd(cmd_i);
len_tc=cmd_i.GetLength()+1;
cmd_t.Delete(0,len_tc);

pRunProc->Compile();

}

}

return 0;

}


UINT CRunDlg::DealwithCmd(CString str)
{
str.MakeUpper();
if(str=="LD")
return 1;
else
if(str=="OUT")
return 4;
else
{ MessageBox("不识别");
return 0;
}

}

void CRunDlg::Compile()
{
switch(i)
{
case 1:OnLD();break;
case 2:break;
case 3:break;
case 4:OnOUT();break;
}
}

void CRunDlg::OnLD()
{
cmd_t.Remove('.');
int t;
t=atoi(cmd_t);
switch(t)
{
case 0:
value_t=I0;break; ///////////////////调试到此报错!!!
case 1:
break;
case 2:break;
default:
break;
}
}

void CRunDlg::OnOUT()
{

}

BOOL CRunDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// TODO: Add extra initialization here
I0=0;
value_t=0;
m_O0=0;

GetDlgItem(IDC_CANCELRUN)->EnableWindow(FALSE);

UpdateData(FALSE);

return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}

搜索更多相关主题的帖子: 句柄 窗口 
2006-08-04 10:27
zinking
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:35
帖 子:916
专家分:0
注 册:2004-12-5
收藏
得分:0 
GetParent()

http://kongfuziandlife. http://codeanddesign.
2006-08-05 18:56
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 

AfxGetMainWnd

[此贴子已经被作者于2006-8-6 7:33:34编辑过]


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-06 07:33
快速回复:如何得到父窗口句柄
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015608 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved