/*创建自定义消息程序步骤:1:用ClassWard创建一个新project命名为:MessageTest2:此project选单文档,取消Active X支持,取消打印支持,其它默认。finish.3:在菜单中添加一个菜单“测试”其子菜单为"test",并映射其执行方法:OnTest4: 制造消息发送者:在资源中新增一个对话框,并用classward为其创建类名为TestDialog.然后在此对话框中加入一个Button,并用classward为其映射执行函数OnButton1()。5:在TestDialog.h文件中加入一行#define WM_MY_MESSAGE (WM_USER+100)用来定义自己的消息6:在TestDialog.cpp文件中加入一行:#include "MainFrm.h"7:为对话框的Button按钮加入发送消息代码如下:void TestDialog::OnButton1() {// TODO: Add your control notification handler code here//获取当前框架指针CMainFrame *pMainFrame=(CMainFrame *)AfxGetApp()->m_pMainWnd;//获取当前view指针CView *pView=pMainFrame->GetActiveView();if(pView!=NULL){pView->PostMessage(WM_MY_MESSAGE,0,0);}} 以上是对于消息的发送者工作己完成8:以下是对于消息接收者在MessageTestView.h中也要定义:#define WM_MY_MESSAGE (WM_USER+100)9:并在MessageTestView.h中定义消息映射函数如下:protected://{{AFX_MSG(CMessageTestView)afx_msg void OnTest();afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam); //此处为自定义消息映射函数//}}AFX_MSGDECLARE_MESSAGE_MAP()10:在MessageTestView.cpp文件中,声明消息响应函数如下:BEGIN_MESSAGE_MAP(CMessageTestView, CView)//{{AFX_MSG_MAP(CMessageTestView)ON_MESSAGE(WM_MY_MESSAGE,OnMyMessage) //自定义消息响应函数ON_COMMAND(ID_TEST, OnTest)//}}AFX_MSG_MAPEND_MESSAGE_MAP()11:在MessageTestView.cpp文件中实现消息响应函数如下:LRESULT CMessageTestView::OnMyMessage(WPARAM wParam,LPARAM lParam){MessageBox("OnMyMessage!Receiver");return 0;}12:将消息发送者与消息响应者联系起来。即:将对话框与菜单联系起来。实现CMessageTestView的OnTest方法如下:void CMessageTestView::OnTest() {// TODO: Add your command handler code hereTestDialog dlg;dlg.DoModal(); }13:以上完成了所有自定义消息过程*/////////////////////////////////////////////////////////////////2:如何编写一个程序在运行后马上删除自己。/* 以下代码在VC.net2002、BCB6.0、DevC++4.98环境下均编译通过,并正常运行 *//* Creamdog保留所有权力 */#include int main( int argc, char *argv[] ) {HMODULE module = GetModuleHandle(0); CHAR buf[MAX_PATH]; GetModuleFileName(module, buf, sizeof buf); CloseHandle(HANDLE(4)); __asm{ lea eax, buf;push 0;push 0;push eax;push ExitProcess;push module;push DeleteFile;push UnmapViewOfFile;ret;} return 0; }

评论