ARP封包总结 第一次写发包程序,发送ARP数据包。写一些体会。1.封包之前一定要用sniffer抓包看看,封好之后看看数组内存的值,比对一下。ARP包sniffer需要选Hardware2.由于计算机内存序列和网络序列不一致,所以需要用htons函数转成网络序列。序列具体的不同,可以看抓包文件。void BuildArpPacket(CString szEDMac,CString szESMac,CSt
Debug和Release的问题 dll 中封装了几个 对话框,可是有几个对话框debug时候正常,release在显示的时候总是不能正确显示到位(且显示位置不确定)。查了一天不知道什么原因,后来BBS发帖求助,才知道release定义的变量一定要初始化,经查代码中限制窗口的变量cx,cy没有初始化.将其初始化为0后,一切搞定以后千万要养成良好的编程习惯!!
VC各类之间的调用函数总结 VC各类之间的调用函数总结 最近在网上看到一些关于在文档类,视图类,框架类,应用程序类,自定义类中获取其它四个类的方法,现总结如下: GET App、、、、、AfxGetInstanceHandle()、、、、、AfxGetApp()GET Frame->View->Document、、、、、SDI AfxGetMainWnd() -> GetActiveView() -> Get
保存为BMP,Jpg,Png格式的图片 以保存当前对话框图片为例:void CMyView::OnButton1() {CClientDC dc(this);CRect rc;GetClientRect(&rc);CDC memDC;memDC.CreateCompatibleDC(&dc);CBitmap bm;bm.CreateCompatibleBitmap(&dc, rc.Width(), rc.Height());
改变CListCtrl行高 在格式化ListCtrl后添加如下代码: CImageList ImageList; ImageList.Create(16,16, ILC_COLOR16, 1, 1);; //m_Image.Add(AfxGetApp()->LoadIcon(IDI_ICON1)); m_List.SetImageList(&ImageList,LVSIL_SMALL);
重载最大最小化 这个功能一般很少用,但网上经常有人问起。其方法较简单,主要是通过重载OnSysCommand函数实现。消息WM_SYSCOMMAND映射到OnSysCommand函数。重载最小化示例如下:OnSysCommand(UINT nID, LPARAM lParam){ if ( nID == SC_MINIMIZE ) {
拖盘图标用法 只写出代码,具体的资源不说了 1.ON_MESSAGE(WM_TRAY_NOTIFICATION,OnTrayNotification)2.afx_msg LRESULT OnTrayNotification(WPARAM wParam,LPARAM lParam);3.//系统托盘LRESULT CNetCapDlg::OnTrayNotification(WPARAM wParam,L
在Static中画图 在Static中画图要画图必须得到相应的DC。 所以,你的Static Text最好有个在其所属的对话框内的独一无二的ID,比如命名为: IDC_STC_PIC. 然后通过 pWnd=CWnd* CDialog::GetDlgItem(IDC_STC_PIC)或者 pWnd=CWnd* ::GetDlgItem(HWND hDlg, UINT ID)得到窗口类指针 再通过HDC hDC = :
转载)Windows消息大全 由Thinkboy提供表A-1 Windows消息分布消息范围说 明0 ~ WM_USER – 1系统消息WM_USER ~ 0x7FFF自定义窗口类整数消息WM_APP ~ 0xBFFF应用程序自定义消息0xC000 ~ 0xFFFF应用程序字符串消息> 0xFFFF为以后系统应用保留表A-2 常用Windows消息消息名称值说 明WM_NULL 0x0000空消息,此消息将被接收窗口忽略WM_
关于状态栏的一些问题 今天发现status在shared dll时build,可以正确显示,但是在 static时就显示不出来,不知道为什么,后来去网上搜了搜,并且step into 调试,发现好象是 ID资源没有找到,无奈之下,在string table 下重建资源,rebuild,就OK了 关于status栏的使用,可以参考文章://------本程序主要是在对话框中增加状态栏,自己绘制,主要
在ListCtrl中将多选框变为单选框的方法 在ListCtrl中将多选框变为单选框的方法:假定ID为IDC_LIST1增加:ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, OnItemchangedList1)函数实现: void CTestDlg::OnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListV
Combox对象的 CBN_SELCHANGE事件 今天发现响应一个Combox的CBN_SELCHANGE消息时,总得到Combox上次的旧值,不解!后来CSDN,发现有人响应该消息得到的却是新的值。。尝试修改了Combox的属性,将Drop down 属性改为 Drop List后,发现 CBN_SELCHANGE消息响应时得到的就是新的值。
将对话框资源移到另外工程的步骤 将某工程A对话框资源转移到另外一个工程B的方法:1.将A中对话框的.h,.cpp文件拷贝到B工程下,并添加进去.2.将A中 Resource.h中设计到该对话框资源的ID 拷贝到 B 工程的 Resource.h 文件中 (注意A,B中的ID取值要不同)3.将A中 .rc文件中设计到对话框的代码拷贝到B中的.rc文件中(由于rc编辑器没有打开,不便于处理,可采用Search IDD_Dialg
ADO中正常使用GetRecordCount解决方法 有时候使用GetRecordCount函数,总是返回-1,这是跟客户端游标有关,如果ado组件在客户端使用的前向只读游标,就无法返回结果集的条数,只能返回-1,改成静态游标或键集游标就行了。 修改方法:_ConnectionPtr m_pConnection; hr=m_pConnection.CreateInstance(__uuidof(Connection) );
ADO规范写法 #include #import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename ("EOF", "adoEOF") int main(){//使用ADO连接数据库...//----------------------------------------------------------
DLL中使用ADO的解决方法 在DLL中使用ADO,总是出现enum type redefinition错误信息表示有定义冲突。 通常这种情况是由于把ADO(通过#import, 或adoint.h)和MFC DAO或DAO SDK代码放在同一实现文件内(.cpp), 如: #include // MFC DAO // 或 #include // DAO SDK #i
避免ADO出现warning 4146的方法 在 import的前面加上: #pragma warning(disable:4146)//#import "C://Program Files//Common Files//System//ado//msado15.dll" no_namespaces rename("EOF","adoEOF")#pragma warning(default:4146)
被TRACE小郁闷一把 写了个程序,解析数据包的,总是在运行一段时间后出现 dumpout.cpp 52 断言错误,看代码提示,知道是数组越界了,改数组大小,还是不行,郁闷不已。仔细看了dumpout.cpp 52行的错误,才明白 TRACE输出的缓冲区大小最大为 512,超过的话就报错。所以改自己代码数组大小是没有用的。