拜托各位大神看看,我的MFC程序 在子对话框中调用SetDlgItem()后没有在EDIT CONTROL 控件上显示出内容

rookieprogra 2018-01-16 08:21:57
str += _T("未精确匹配指纹库,进行模糊匹配 !");
SetDlgItemText(IDC_EDIT1, str);
SendMessage(WM_UPDATEDATA, FALSE);

本人刚学MFC,很多东西都不懂,在做OS探测时,要在edit control 控件上显示内容时,程序运行的没有异常,但内容无法显示。不知道为什么,求各位大神帮忙看看,谢谢!下面是我在子对话框上的部分相关代码:
IMPLEMENT_DYNAMIC(CJiemianDlg, CDialogEx)

CJiemianDlg::CJiemianDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(IDD_JM_DIALOG, pParent)
{

}

CJiemianDlg::~CJiemianDlg()
{
}

void CJiemianDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_EDIT1, m_edit1);
}


BEGIN_MESSAGE_MAP(CJiemianDlg, CDialogEx)
ON_BN_CLICKED(IDC_BUTTON2, &CJiemianDlg::OnBnClickedButton2)
ON_BN_CLICKED(IDC_BUTTON1, &CJiemianDlg::OnBnClickedButton1)
ON_BN_CLICKED(IDC_BUTTON7, &CJiemianDlg::OnBnClickedButton7)
ON_BN_CLICKED(IDC_BUTTON6, &CJiemianDlg::OnBnClickedButton6)
END_MESSAGE_MAP()


// CJiemianDlg 消息处理程序


void CJiemianDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
CAdpDlg adpDlg;
if (adpDlg.DoModal() == IDOK)
{
m_pDevice = adpDlg.returnd();
}
}


BOOL CJiemianDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();

// TODO: 在此添加额外的初始化

m_tcpCount = 0;
m_udpCount = 0;
m_arpCount = 0;
m_icmpCount = 0;
m_igmpCount = 0;
m_totalCount = 0;
m_httpCount = 0;
m_dnsCount = 0;
m_wangCount = 0;
m_qqCount = 0;
m_msnCount = 0;




return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}


void CJiemianDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CIPDlg ipDlg;
if (ipDlg.DoModal() == IDOK)
{
strIP2 = ipDlg.returnstr();
}
}
void CJiemianDlg::Compare(u_short tlen, u_char ttl, u_short flag, u_short winsize)
{
u_short xtlen,xflag,xwinsize;
u_char xttl;
xtlen = tlen;
xttl = ttl;
xflag = flag;
xwinsize = winsize;
char TTLmin, TTLmax;
int flbel = 0;
CString str;
switch (flag)
{
case 0:
case 1:
case 4:
case 5:DF = 0; break;
case 2:
case 3:
case 6:
case 7:DF = 1; break;
}
if (ttl >0x23 && ttl <= 0x45)
{
TTLmin = 0x3B;
TTLmax = 0x45;
}
if (ttl > 0x45 && ttl <= 0x85)
{
TTLmin = 0x7B;
TTLmax = 0x85;
}
if (ttl >0 && ttl <= 0x23)
{
TTLmin = 0x19;
TTLmax = 0x23;
}
char OS[20];
//char win[] = { winsize };
int right, left;
right = winsize & 0x00ff;
left = winsize >> 8;
char finger1[30];
char finger2[30];
finger1[0] = DF;
finger1[1] = ':';
finger1[2] = TTLmin;
finger1[3] = ':';
finger1[4] = TTLmax;
finger1[5] = ':';
finger1[6] = left;
finger1[7] = right;
finger1[8] = ':';
finger1[9] = static_cast<unsigned char>(tlen);
int hang, lie, ka;
for (hang = 0; hang<20; hang++)
{
for (lie = 0; fingerDB[hang][lie] != ':'; lie++)
{
OS[lie] = fingerDB[hang][lie];
}
for (ka = lie + 1; fingerDB[hang][ka] != '*'; ka++)
{
if (fingerDB[hang][ka] == '*')
break;
finger2[ka - (lie + 1)] = fingerDB[hang][ka];
}
// int nLen = WideCharToMultiByte(CP_ACP, 0, finger1, -1, NULL, 0, NULL, NULL);
// char* finger3 = new char[nLen];
// WideCharToMultiByte(CP_ACP, 0, finger1, -1, finger3, nLen, NULL, NULL);
if (strcmp(finger2, finger1) == 0)
{
//HWND hwnd = GetDlgItem(Csniffer2Dlg, IDC_EDIT3);
str.Format(_T("该操作系统可能为:%s"), *OS);
this->SetDlgItemText(IDC_EDIT1, str);
flbel = 1;
exit(0);
}
}
if (flbel == 0)
{
//CWnd *editwnd= GetDlgItem(IDC_EDIT1);
str += _T("未精确匹配指纹库,进行模糊匹配 !");
SetDlgItemText(IDC_EDIT1, str);
SendMessage(WM_UPDATEDATA, FALSE);
if (xtlen==12288)
c_totallength = 'c';
else
c_totallength = 'n';
if (xttl <= 64)
c_ttl = 'l';
else if (64 < ttl <= 128)
c_ttl = 'w';
else
c_ttl = 'u';
switch (xwinsize)
{
case 0x0020:
{
const char* cpc = "v";
c_win = new char[strlen(cpc) + 1];
strcpy(c_win, cpc);
break;
}
case 0xffff:
{
const char* cpc = "x";
c_win = new char[strlen(cpc) + 1];
strcpy(c_win, cpc);
break;
}
case 0x7044:
{
const char* cpc = "p";
c_win = new char[strlen(cpc) + 1];
strcpy(c_win, cpc);
break;
}
case 0x4000:
{
const char* cpc = "3";
c_win = new char[strlen(cpc) + 1];
strcpy(c_win, cpc);
break;
}
case 0xFC00:
{
const char* cpc = "3";
c_win = new char[strlen(cpc) + 1];
strcpy(c_win, cpc);
break;
}
case 0x2000:
{
const char* cpc = "7810";
c_win = new char[strlen(cpc) + 1];
strcpy(c_win, cpc);
break;
}
case 0x4470:
{
const char* cpc = "0sp1";
c_win = new char[strlen(cpc) + 1];
strcpy(c_win, cpc);
break;
}
case 0x4264:
{
const char* cpc = "0sp2";
c_win = new char[strlen(cpc) + 1];
strcpy(c_win, cpc);
break;
}
case 0x2238:
{
const char* cpc = "98";
c_win = new char[strlen(cpc) + 1];
strcpy(c_win, cpc);
break;
}
case 0x1000:
{
const char* cpc = "ix";
c_win = new char[strlen(cpc) + 1];
strcpy(c_win, cpc);
break;
}
case 0x60F4:
{
const char* cpc = "ix";
c_win = new char[strlen(cpc) + 1];
strcpy(c_win, cpc);
break;
}
case 0x16D0:
{
const char* cpc = "nux";
c_win = new char[strlen(cpc) + 1];
strcpy(c_win, cpc);
break;
}
case 0x7fff:
{
const char* cpc = "nux";
c_win = new char[strlen(cpc) + 1];
strcpy(c_win, cpc);
break;
}
default:
{
const char* cpc = "uk";
c_win = new char[strlen(cpc) + 1];
strcpy(c_win, cpc);
break;
}
}
switch (xflag)
{
case 0:
case 1:
case 4:
case 5:DF = 0; break;
case 2:
case 3:
case 6:
case 7:DF = 1; break;
}
if (c_ttl == 'w')
{
switch (*c_win)
{
case 'x':SetDlgItemText(IDC_EDIT1, _T("该操作系统可能为windows xp!")); break;
case 'p':SetDlgItemText(IDC_EDIT1, _T("该操作系统可能为windows xp professional !")); break;
case '3':SetDlgItemText(IDC_EDIT1,_T("该操作系统可能为windows 2003 !")); break;
case '7810':SetDlgItemText(IDC_EDIT1, _T("该操作系统可能为windows 7/8/10 !")); break;
case '0sp1':SetDlgItemText(IDC_EDIT1, _T("该操作系统可能为windows 2000 sp1 !")); break;
case '0sp2':SetDlgItemText(IDC_EDIT1, _T("该操作系统可能为windows 2000 sp2 !"));break;
default:SetDlgItemText(IDC_EDIT1, _T("该操作系统可能为windows系列 !")); break;
}
}
if (c_ttl == 'l')
{
switch (*c_win)
{
case 'nux':SetDlgItemText(IDC_EDIT1, _T("该操作系统可能为linux !")); break;
default:
{
str = _T("该操作系统可能为linux系列 !");
SetDlgItemText(IDC_EDIT1, str);
SendMessage(WM_UPDATEDATA, FALSE);
break;
}
}
}
if (c_ttl == 'n')
{
switch (*c_win)
{
case 'ix':SetDlgItemText(IDC_EDIT1, _T("该操作系统可能为UNIX !"));
default:SetDlgItemText(IDC_EDIT1, _T("该操作系统可能为UNIX 系列 !")); break;
}
}
}
}
...全文
393 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2018-01-17
  • 打赏
  • 举报
回复
void CJiemianDlg::Compare(u_short tlen, u_char ttl, u_short flag, u_short winsize) 在哪里调用?
zgl7903 2018-01-17
  • 打赏
  • 举报
回复
设置断点调试运行, 查看代码是否被调用到? 获取系统版本信息推荐 GetVersionEx

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧