搞清了两个问题: 查询TCP端口状态 以及 如何弹出右键菜单

本文介绍如何在VC++环境下使用GetTcpTable函数查询端口状态,包括添加必要的库文件、设置右键菜单及处理函数的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查询端口状态用VC有点麻烦, 搞不好还要安装WindowsSDK, 又因为版本问题搞得东一榔头西一斧子, 还不如直接下载IPHLPAPI.LIB和Iphlpapi.h, 链到工程里就能用了, 虽然是2003年的, 不过期就行, 管它呢.

其实主要就是为了使用函数GetTcpTable, 绕这么一大圈子, 真麻烦.

 

右键菜单的步骤:

1. 在资源里添加一个菜单资源;

2. 添加子菜单 --- 以前一直以为第一排就可以作为菜单项, 后来发现在右键菜单里是不行的, 好不容易才在优快云上看见有人说了一嘴, 其它的帖子都没说清楚 --- 在第一排菜单里再添加子菜单才能用右键弹出是很滑稽的事, 这么简单的概念MS都不仔细说清楚, 让初学者兜圈子, CD. 去饭店吃过饭都知道菜单是什么意思. 玩概念很没意思.

3.

void CServerDlg::OnContextMenu(CWnd* pWnd, CPoint point)
{
 // TODO: Add your message handler code here
 CMenu menu; //定义CMenu类对象
 CMenu *ptrMenu;
 BOOL ret = menu.LoadMenu((IDR_MENU_POPUP)); //装入刚建立的菜单IDC_POPMENU
 ptrMenu = menu.GetSubMenu(0);//弹出主菜单第一项的子菜单
 ptrMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this, NULL);
}

4. 用类向导或手动添加消息处理函数:

BEGIN_MESSAGE_MAP(CAuthServerMonitorDlg, CDialog)
 //{{AFX_MSG_MAP(CAuthServerMonitorDlg)
 ON_WM_SYSCOMMAND()
 ON_WM_PAINT()
 ON_WM_QUERYDRAGICON()
 ON_WM_TIMER()
 ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
 ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
 ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
 ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
 ON_BN_CLICKED(IDC_BTN_OPTION, OnBtnOption)
 ON_WM_CONTEXTMENU()
 ON_COMMAND(ID_MENUITEM_ABOUT, OnMenuitemAbout)    //就是这个
 //}}AFX_MSG_MAP
END_MESSAGE_MAP()

void CServerDlg::OnMenuitemAbout()
{
 // TODO: Add your command handler code here
 CAboutDlg dlg;
 dlg.DoModal();
}

在头文件里添加定义:

protected: // Generated message map functions
 //{{AFX_MSG(CAuthServerMonitorDlg)
 virtual BOOL OnInitDialog();
 afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
 afx_msg void OnPaint();
 afx_msg HCURSOR OnQueryDragIcon();
 afx_msg void OnTimer(UINT nIDEvent);
 virtual void OnOK();
 virtual void OnCancel();
 afx_msg void OnButton1();
 afx_msg void OnButton2();
 afx_msg void OnButton3();
 afx_msg void OnButton4();
 afx_msg void OnBtnOption();
 afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
 afx_msg void OnMenuitemAbout();        //还得是受保护的
 //}}AFX_MSG
 DECLARE_MESSAGE_MAP()

 

然后就可以想干什么干什么了.

 

好像有个地方比较危险, 主对话框响应了这个消息, 其它的就别再响应了, 否则会崩溃? 以后再说.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值