1、重写OnOK消息
2、如果本机只有一个网卡比较容易取得地址
结构体解释struct hostent {
char FAR * h_name; //机器名
char FAR * FAR * h_aliases;//机器名(别名)
short h_addrtype;//返回的地址的类型
short h_length;//每个地址的长度是用来表示下面一个参数中每个地址的长度
char FAR * FAR * h_addr_list;//存储地址
};取得IP
GetLocalIp()
{
char szhostname[128];
CString str;
if( gethostname(szhostname,128) == 0 )//取得机器名称
{
struct hostent * phost;
int i;
phost = gethostbyname(szhostname);//取得给定机器的信息
for(i=0;phost!= NULL&&phost->h_addr_list[i]!=NULL;i++ )//到每一个地址结尾
{
int j;
for(j=0;j<4;j++ )//一般情况现在为4如:202.112.2.2
{
CString addr;
if(j>0)
str += ".";
addr.Format("%u", (unsigned int)((unsigned char*)phost->h_addr_list[i])[j]);
str += addr;
}
}
}
else
AfxMessageBox("Can Not Detect Local Ip Address");//造成错误的原因可能是没有初始化或者网络没有配置好
}
2、如果本机只有一个网卡比较容易取得地址
结构体解释struct hostent {
char FAR * h_name; //机器名
char FAR * FAR * h_aliases;//机器名(别名)
short h_addrtype;//返回的地址的类型
short h_length;//每个地址的长度是用来表示下面一个参数中每个地址的长度
char FAR * FAR * h_addr_list;//存储地址
};取得IP
GetLocalIp()
{
char szhostname[128];
CString str;
if( gethostname(szhostname,128) == 0 )//取得机器名称
{
struct hostent * phost;
int i;
phost = gethostbyname(szhostname);//取得给定机器的信息
for(i=0;phost!= NULL&&phost->h_addr_list[i]!=NULL;i++ )//到每一个地址结尾
{
int j;
for(j=0;j<4;j++ )//一般情况现在为4如:202.112.2.2
{
CString addr;
if(j>0)
str += ".";
addr.Format("%u", (unsigned int)((unsigned char*)phost->h_addr_list[i])[j]);
str += addr;
}
}
}
else
AfxMessageBox("Can Not Detect Local Ip Address");//造成错误的原因可能是没有初始化或者网络没有配置好
}
解决方案 »
- 如何通过.ico数据流获取HICON
- 为什么回调函数不能执行 比如下面这两个,,,,
- 求助动态创建DLL中视图!!!!!!!
- #define CONST const 跟 typedef const CONST;有区别吗?区别在什么地方啊?
- 动态生成的CButton和它的点击事件。
- 谁有intel compiler60或者7.1啊?
- 如何固定CListCtrl里面每一列的宽度????
- 我用CoInitializeEx() ;出现内存错误怎么回事?Help
- VC编辑框 怎么统计输入汉字的个数
- 多个问题,请高手赐教
- 一个绝对简单的问题,怎么知道文件的大小?
- 看《深入浅出MFC》中遇到的问题,望高手指点!!求求小弟:)
1、重载WM_GETDLGCODE消息的处理函数,返回值设为DLGC_WANTALLKEYS。
2、重载WM_KEYDOWN消息的处理函数。
CEdit的默认设置是按下回车键时不发送WM_KEYDOWN消息。其它如CComboBox也是如此。
或是在属性的Styles页上选上want_return试一试(我没试过)。
第二个问题:
用gethostname()和gethostbyname()。具体查MSDN吧。
2。
char szHostname[100];
gethostname(szHostname, 100);
HOSTENT * hst = gethostbyname(szHostname);
IN_ADDR * pia = (IN_ADDR *)(hst->h_addr_list[0]);
char infor[256];
wsprintf(infor, "host name: %s\nlocal ip: %d.%d.%d.%d", szHostname, pia->S_un.S_un_b.s_b1,
pia->S_un.S_un_b.s_b2, pia->S_un.S_un_b.s_b3, pia->S_un.S_un_b.s_b4)
AfxMessageBox(infor);