wince下编程需要IP地址控件咋办?

红牛哥110 2016-03-03 11:47:46
加精
好像默认控件栏里面没有IP Address Control。
我用的是MFC,以前都是用几个文本框拼起来实现的。
Wince系统内的网络属性中是有这样的控件的,有知道怎么调用IP Address Control的吗?
...全文
1281 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
UP,wince版块好冷清!
tcmakebest 2016-03-14
  • 打赏
  • 举报
回复
IP V4地址规则也不是很复杂,找不到就现写一个也不难,这个控件就是把其他几个标准控件组合一下.
  • 打赏
  • 举报
回复
#pragma once


// CIPEdit

class CIPEdit : public CEdit
{
	DECLARE_DYNAMIC(CIPEdit)

public:
	CIPEdit();
	virtual ~CIPEdit();

protected:
	DECLARE_MESSAGE_MAP()

public:
	afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);

};


// IPEdit.cpp : implementation file
//

#include "stdafx.h"
#include "Client.h"
#include "IPEdit.h"


// CIPEdit

IMPLEMENT_DYNAMIC(CIPEdit, CEdit)

CIPEdit::CIPEdit()
{

}

CIPEdit::~CIPEdit()
{
}


BEGIN_MESSAGE_MAP(CIPEdit, CEdit)
	ON_WM_CHAR()
END_MESSAGE_MAP()



// CIPEdit message handlers
void CIPEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
	CString Str, tok, rightStr;
	int iStart = 0, loop = 0;
	int lastDotPos;
	this->GetWindowTextW(Str);
	lastDotPos = Str.ReverseFind((TCHAR)'.');
	if(nChar >= '0' && nChar <= '9')
	{
		if(lastDotPos != -1)
		{
			rightStr = Str.Right(Str.GetLength() - lastDotPos - 1);
		}
		else
		{
			rightStr = Str;
		}
		rightStr.AppendChar((TCHAR)nChar);
		if(_tstoi(rightStr) >= 0 && _tstoi(rightStr) <= 255)
		{
			CEdit::OnChar(nChar, nRepCnt, nFlags);
		}
	}
	if(nChar == '.')
	{
		if(lastDotPos == Str.GetLength() - 1)
			return;
		tok = Str.Tokenize(_T("."), iStart);
		while(tok != _T(""))
		{
			loop++;
			tok = Str.Tokenize(_T("."), iStart);
		}
		if(loop < 4)
			CEdit::OnChar(nChar, nRepCnt, nFlags);
		return;
	}
	if(nChar == VK_RETURN || nChar == VK_TAB || nChar == VK_BACK)
	{
		CEdit::OnChar(nChar, nRepCnt, nFlags);
	}
}
  • 打赏
  • 举报
回复
我之前弄过一次,自己写的。
91program 2016-03-04
  • 打赏
  • 举报
回复
引用 9 楼 alien75 的回复:
基本上没有用过MFC或WIN32API中的控件,都是自行开发的UI库实现的(自绘)控件
确实,一般 WinCE 的项目,是不可能使用系统的UI的。 自绘制UI库是必须的。 但是如果只是做测试程序,就可以使用系统的UI。
alien75 2016-03-04
  • 打赏
  • 举报
回复
基本上没有用过MFC或WIN32API中的控件,都是自行开发的UI库实现的(自绘)控件
  • 打赏
  • 举报
回复
不清楚,wince没看到有这个控件,但是这个控件本身就是用了4个CEdit,然后控制tab和"."切换焦点,以及每个Edit的值。 你可以看看windows上的代码。 另外,wince上一般都没有键盘,真的有这个ip控件也不好用。我都是自己写控件,方便输入和控制。
91program 2016-03-03
  • 打赏
  • 举报
回复
Win10 中的中是 4 个 Edit 控件,所以这个还真可能是 IP Address 控件。但是不知道要怎么才能使用它!
91program 2016-03-03
  • 打赏
  • 举报
回复
假的,看到的是4个Edit控件,如下:
91program 2016-03-03
  • 打赏
  • 举报
回复
引用 2 楼 jiess 的回复:
但是CE系统网络属性中,看到MS用到了这个控件。我猜想,MS都能调用,我们应当也是有办法的吧。
系统的属性中,确实有类似的,只是不知道是不是真的是这个控件。可以考虑通过 “远程监视”工具查看确认一下!
红牛哥110 2016-03-03
  • 打赏
  • 举报
回复
但是CE系统网络属性中,看到MS用到了这个控件。我猜想,MS都能调用,我们应当也是有办法的吧。
91program 2016-03-03
  • 打赏
  • 举报
回复
WinCE 下确实是没有 IP Address 的控件,只能自己实现。
91program 2016-03-03
  • 打赏
  • 举报
回复
引用 6 楼 jiess 的回复:
[quote=引用 5 楼 91program 的回复:] Win10 中的中是 4 个 Edit 控件,所以这个还真可能是 IP Address 控件。但是不知道要怎么才能使用它!
嗯,我有空找一找BSP包中的源码看看,希望能找到调用方法。[/quote] 你可以看看如下两个目录: C:\WINCE700\public\common\oak\drivers\netui C:\WINCE700\public\common\oak\drivers\netsamp\connmc 中的 ipaddr.cpp 文件,说明为:ipaddr.cpp - TCP/IP Address custom control
红牛哥110 2016-03-03
  • 打赏
  • 举报
回复
引用 5 楼 91program 的回复:
Win10 中的中是 4 个 Edit 控件,所以这个还真可能是 IP Address 控件。但是不知道要怎么才能使用它!
嗯,我有空找一找BSP包中的源码看看,希望能找到调用方法。

19,500

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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