108条vc编程技巧知识.pdf
《108条vc编程技巧知识.pdf》由会员分享,可在线阅读,更多相关《108条vc编程技巧知识.pdf(123页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、108 条 vc 编程技巧知识学习各种高级外挂制作技术,马上去百度搜索(魔鬼作坊),点击第一个站进入,快速成为做挂达人。(1 1 1 1)如何通过代码获得应用程序主窗口的指针如何通过代码获得应用程序主窗口的指针?主窗口的主窗口的 指针保存在指针保存在 CWinThread:m_pMainWndCWinThread:m_pMainWndCWinThread:m_pMainWndCWinThread:m_pMainWnd 中中,调用调用 AfxGetMainWndAfxGetMainWndAfxGetMainWndAfxGetMainWnd 实现。实现。AfxGetMainWnd()AfxGetM
2、ainWnd()AfxGetMainWnd()AfxGetMainWnd()-ShowWindow(SW_SHOWMAXMIZED)-ShowWindow(SW_SHOWMAXMIZED)-ShowWindow(SW_SHOWMAXMIZED)-ShowWindow(SW_SHOWMAXMIZED)/使程序最大化使程序最大化.(2 2 2 2)确定应用程序的路径确定应用程序的路径UseUseUseUse GetModuleFileNameGetModuleFileNameGetModuleFileNameGetModuleFileName 获得应用程序的路径,然后去掉可执行文件名。获得应用程序
3、的路径,然后去掉可执行文件名。Example:Example:Example:Example:TCHARTCHARTCHARTCHARexeFullPathMAX_PATHexeFullPathMAX_PATHexeFullPathMAX_PATHexeFullPathMAX_PATH/MAX_PATHMAX_PATHMAX_PATHMAX_PATH 在在 APIAPIAPIAPI 中定义了吧,好象是中定义了吧,好象是128128128128GetModuleFileName(NULL,exeFullPath,MAX_PATH)GetModuleFileName(NULL,exeFullPat
4、h,MAX_PATH)GetModuleFileName(NULL,exeFullPath,MAX_PATH)GetModuleFileName(NULL,exeFullPath,MAX_PATH)(3 3 3 3)如何在程序中获得其他程序的图标如何在程序中获得其他程序的图标?两种方法两种方法:(1)(1)(1)(1)SDKSDKSDKSDK 函数函数 SHGetFileInfoSHGetFileInfoSHGetFileInfoSHGetFileInfo 或使用或使用 ExtractIconExtractIconExtractIconExtractIcon 获得图标资源的获得图标资源的 ha
5、ndle,handle,handle,handle,(2)(2)(2)(2)SDKSDKSDKSDK 函数函数 SHGetFileInfoSHGetFileInfoSHGetFileInfoSHGetFileInfo 获得有关文件的很多信息获得有关文件的很多信息,如大小图标如大小图标,属性属性,类型等类型等.Example(1):Example(1):Example(1):Example(1):在程序窗口左上角显示在程序窗口左上角显示 NotePadNotePadNotePadNotePad 图标图标.voidvoidvoidvoid CSampleView:CSampleView:CSamp
6、leView:CSampleView:OnDraw(CDCOnDraw(CDCOnDraw(CDCOnDraw(CDC*pDC)pDC)pDC)pDC)if(if(if(if(:SHGetFileInfo(_T(c:pwin95notepad.exe),0,SHGetFileInfo(_T(c:pwin95notepad.exe),0,SHGetFileInfo(_T(c:pwin95notepad.exe),0,SHGetFileInfo(_T(c:pwin95notepad.exe),0,&stFileInfo,sizeof(stFileInfo),SHGFI_ICON)&stFileIn
7、fo,sizeof(stFileInfo),SHGFI_ICON)&stFileInfo,sizeof(stFileInfo),SHGFI_ICON)&stFileInfo,sizeof(stFileInfo),SHGFI_ICON)pDCpDCpDCpDC-DrawIcon(10,10,stFileInfo.hIcon)-DrawIcon(10,10,stFileInfo.hIcon)-DrawIcon(10,10,stFileInfo.hIcon)-DrawIcon(10,10,stFileInfo.hIcon)Example(2):Example(2):Example(2):Exampl
8、e(2):同样功能同样功能,Use,Use,Use,Use ExtractIconExtractIconExtractIconExtractIcon FunctionFunctionFunctionFunctionvoidvoidvoidvoid CSampleView:CSampleView:CSampleView:CSampleView:OnDraw(CDCOnDraw(CDCOnDraw(CDCOnDraw(CDC*pDC)*pDC)*pDC)*pDC)HICONHICONHICONHICON hIcon=:hIcon=:hIcon=:hIcon=:ExtractIcon(AfxGetI
9、nstanceHandle(),_TExtractIcon(AfxGetInstanceHandle(),_TExtractIcon(AfxGetInstanceHandle(),_TExtractIcon(AfxGetInstanceHandle(),_T(NotePad.exe),0)(NotePad.exe),0)(NotePad.exe),0)(NotePad.exe),0)if if if if(hIcon(hIcon(hIcon(hIcon&hIcon!=(HICON)-1)&hIcon!=(HICON)-1)&hIcon!=(HICON)-1)&hIcon!=(HICON)-1)
10、pDC-DrawIcon(10,10,hIcon)pDC-DrawIcon(10,10,hIcon)pDC-DrawIcon(10,10,hIcon)pDC-DrawIcon(10,10,hIcon)说明说明:获得获得 notepad.exenotepad.exenotepad.exenotepad.exe 的路径正规上来说用的路径正规上来说用 GetWindowsDirectoryGetWindowsDirectoryGetWindowsDirectoryGetWindowsDirectory 函数得到函数得到,如果是如果是调用调用 win95win95win95win95 下的画笔,应该用
11、访问注册表的方法获得其路径,要作成一个比较考究的程序下的画笔,应该用访问注册表的方法获得其路径,要作成一个比较考究的程序,考考虑应该全面点虑应该全面点.(4 4 4 4)获得各种目录信息获得各种目录信息WindowsWindowsWindowsWindows 目录目录:UseUseUseUse GetWindowsDirectoryGetWindowsDirectoryGetWindowsDirectoryGetWindowsDirectoryWindowsWindowsWindowsWindows 下的下的 systemsystemsystemsystem 目录目录:UseUseUseUse
12、 GetSystemDirectoryGetSystemDirectoryGetSystemDirectoryGetSystemDirectorytemptemptemptemp 目录目录:UseUseUseUse GetTempPathGetTempPathGetTempPathGetTempPath当前目录当前目录:UseUseUseUse GetCurrentDirectoryGetCurrentDirectoryGetCurrentDirectoryGetCurrentDirectory请注意前两个函数的第一个参数为目录变量名,后一个为缓冲区后两个相反请注意前两个函数的第一个参数为目录
13、变量名,后一个为缓冲区后两个相反.(5 5 5 5)如何自定义消息如何自定义消息1)1)1)1)手工定义消息,可以这么写手工定义消息,可以这么写#define#define#define#define WM_MY_MESSAGE(WM_USER+100),WM_MY_MESSAGE(WM_USER+100),WM_MY_MESSAGE(WM_USER+100),WM_MY_MESSAGE(WM_USER+100),MSMSMSMS 推荐的至少是推荐的至少是 WM_USER+100WM_USER+100WM_USER+100WM_USER+100(2)(2)(2)(2)写消息处理函数写消息处理函
14、数,用用WPARAM,LPARAMWPARAM,LPARAMWPARAM,LPARAMWPARAM,LPARAM 返回返回 LRESULT.LRESULT.LRESULT.LRESULT.LRESULTLRESULTLRESULTLRESULT CMainFrame:OnMyMessage(WPARAMCMainFrame:OnMyMessage(WPARAMCMainFrame:OnMyMessage(WPARAMCMainFrame:OnMyMessage(WPARAM wparam,LPARAMwparam,LPARAMwparam,LPARAMwparam,LPARAM lParam)
15、lParam)lParam)lParam)temptemptemptemp 目录目录:UseUseUseUse GetTempPathGetTempPathGetTempPathGetTempPath/加入你的处理函数加入你的处理函数 irectoryirectoryirectoryirectory (6 6 6 6)如何改变窗口的图标如何改变窗口的图标?向窗口发送向窗口发送 WM_SECTIONWM_SECTIONWM_SECTIONWM_SECTION 消息。消息。Example:Example:Example:Example:HICONHICONHICONHICON hIcon=AfxG
16、etApp()hIcon=AfxGetApp()hIcon=AfxGetApp()hIcon=AfxGetApp()-LoadIcon(IDI_ICON)-LoadIcon(IDI_ICON)-LoadIcon(IDI_ICON)-LoadIcon(IDI_ICON)ASSERT(hIcon)ASSERT(hIcon)ASSERT(hIcon)ASSERT(hIcon)AfxGetMainWnd()AfxGetMainWnd()AfxGetMainWnd()AfxGetMainWnd()-SendMessage(WM_SECTION,TRUE,(LPARAM)hIcon)-SendMessag
17、e(WM_SECTION,TRUE,(LPARAM)hIcon)-SendMessage(WM_SECTION,TRUE,(LPARAM)hIcon)-SendMessage(WM_SECTION,TRUE,(LPARAM)hIcon)(7 7 7 7)如何改变窗口的缺省风格如何改变窗口的缺省风格?重载重载 CWnd:CWnd:CWnd:CWnd:PreCreateWindowPreCreateWindowPreCreateWindowPreCreateWindow 并修并修改改CREATESTRUCCREATESTRUCCREATESTRUCCREATESTRUCT T T T结构来指定窗口
18、风格和其他创建结构来指定窗口风格和其他创建信息信息.Example:Example:Example:Example:DeleteDeleteDeleteDelete MaxMaxMaxMax ButtonButtonButtonButton andandandand SetSetSetSet OriginalOriginalOriginalOriginalWindowsWindowsWindowsWindows PositionPositionPositionPosition andandandand SizeSizeSizeSizeBOOLBOOLBOOLBOOL CMainFrame:CM
19、ainFrame:CMainFrame:CMainFrame:PreCreateWindowPreCreateWindowPreCreateWindowPreCreateWindow(CREATESTRUCT(CREATESTRUCT(CREATESTRUCT(CREATESTRUCT&cs)&cs)&cs)&cs)cs.stylecs.stylecs.stylecs.style&=WS_MAXINIZEMOX&=WS_MAXINIZEMOX&=WS_MAXINIZEMOX&=WS_MAXINIZEMOXcs.x=cs.y=0cs.x=cs.y=0cs.x=cs.y=0cs.x=cs.y=0c
20、s.cx=GetSystemMetrics(SM_CXSCREEN/2)cs.cx=GetSystemMetrics(SM_CXSCREEN/2)cs.cx=GetSystemMetrics(SM_CXSCREEN/2)cs.cx=GetSystemMetrics(SM_CXSCREEN/2)cs.cy=GetSystemMetrics(SM_CYSCREEN/2)cs.cy=GetSystemMetrics(SM_CYSCREEN/2)cs.cy=GetSystemMetrics(SM_CYSCREEN/2)cs.cy=GetSystemMetrics(SM_CYSCREEN/2)retur
21、nreturnreturnreturn CMDIFramewndCMDIFramewndCMDIFramewndCMDIFramewnd:PreCreateWindow(cs):PreCreateWindow(cs):PreCreateWindow(cs):PreCreateWindow(cs)(8 8 8 8)如何将窗口居中显示如何将窗口居中显示?CallCallCallCall FunctionFunctionFunctionFunction CWnd:CWnd:CWnd:CWnd:CenterCenterCenterCenter WindowsWindowsWindowsWindowsE
22、xample(1):Example(1):Example(1):Example(1):CenterCenterCenterCenter Window(Window(Window(Window()/Relative/Relative/Relative/Relative totototo itsitsitsits parentparentparentparent/RelativeRelativeRelativeRelativetotototo ScreenScreenScreenScreenExample(2):Example(2):Example(2):Example(2):CenterCent
23、erCenterCenter Window(CWnd:Window(CWnd:Window(CWnd:Window(CWnd:GetDesktopWindow(GetDesktopWindow(GetDesktopWindow(GetDesktopWindow()/Relative/Relative/Relative/Relative totototoApplicationsApplicationsApplicationsApplications MainWindowMainWindowMainWindowMainWindowAfxGetMainWnd(AfxGetMainWnd(AfxGet
24、MainWnd(AfxGetMainWnd()-CenterCenterCenterCenter Window(Window(Window(Window()(9 9 9 9)如何让窗口和如何让窗口和 MDIMDIMDIMDI 窗口一启动就最大化和最小化窗口一启动就最大化和最小化?先说窗口。先说窗口。在在 InitStanceInitStanceInitStanceInitStance 函数中设定函数中设定 m_nCmdShowm_nCmdShowm_nCmdShowm_nCmdShow 的取值的取值.m_nCmdShow=SW_SHOWMAXMIZEDm_nCmdShow=SW_SHOWMAX
25、MIZEDm_nCmdShow=SW_SHOWMAXMIZEDm_nCmdShow=SW_SHOWMAXMIZED/最大化最大化m_nCmdShow=SW_SHOWMINMIZEDm_nCmdShow=SW_SHOWMINMIZEDm_nCmdShow=SW_SHOWMINMIZEDm_nCmdShow=SW_SHOWMINMIZED/最小化最小化m_nCmdShow=SW_SHOWNORMALm_nCmdShow=SW_SHOWNORMALm_nCmdShow=SW_SHOWNORMALm_nCmdShow=SW_SHOWNORMAL/正常方式正常方式MDIMDIMDIMDI 窗口窗口:如果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 108 vc 编程 技巧 知识
限制150内