如何获取应用程序的实例句柄

上传人:时间****91 文档编号:124585991 上传时间:2022-07-25 格式:DOCX 页数:5 大小:13.36KB
返回 下载 相关 举报
如何获取应用程序的实例句柄_第1页
第1页 / 共5页
如何获取应用程序的实例句柄_第2页
第2页 / 共5页
如何获取应用程序的实例句柄_第3页
第3页 / 共5页
点击查看更多>>
资源描述
如何获取应用程序的实例句柄?应用程序的实例句柄保存在CWinAppIm_hInstance 中,可以这样调用AfxGetInstancdHandle获得句柄.Example: HANDLE hInstance=AfxGetInstanceHandle();2. 如何通过代码获得应用程序主窗口的指针?主窗口的 指针保存在CWinThread:m_pMainWnd中,调用 AfxGetMainWnd实现。AfxGetMainWnd() -ShowWindow(SW_SHOWMAXMIZED); /使程序最大化.3. 如何在程序中获得其她程序的图标?两种措施: (1) SDK函数 SHGetFileInfo 或使用 ExtractIcon获得图标资源的 handle, (2) SDK函数 SHGetFileInfo获得有关文献的 诸多信息,如大小图标,属性, 类型等.Example(1): 在程序窗口左上角显示NotePad图标.void CSampleView: OnDraw(CDC * pDC)if( : SHGetFileInfo(_T(c:pwin95notepad.exe),0,&stFileInfo,sizeof(stFileInfo),SHGFI_ICON)pDC -DrawIcon(10,10,stFileInfo.hIcon);Example(2):同样功能,Use ExtractIcon Functionvoid CSampleView: OnDraw(CDC *pDC)HICON hIcon=: ExtractIcon(AfxGetInstanceHandle(),_T(NotePad.exe),0);if (hIcon &hIcon!=(HICON)-1)pDC-DrawIcon(10,10,hIcon);阐明: 获得notepad.exe的途径正规上来说用GetWindowsDirectory 函数得到,如果是调用 win95下的画笔,应当用访问注册表的措施获得其途径,要作成一种比较讲究的程序,考虑应当全面点.4. 如何编程结束应用程序?如何编程控制windows的重新引导?这是个很简朴又是编程中常常要遇到的问题.第一问,向窗口发送 WM_CLOSE消息,调用 CWnd:OnClose成员函数.容许对顾客提示与否保存修改正的数据.Example: AfxGetMainWindow()-SendMessage(WM_CLOSE);还可以创立一种自定义的函数 Terminate Windowvoid Terminate Window(LPCSTR pCaption)CWnd *pWnd=Cwnd:FindWindow(NULL,pCaption);if (pWnd)pWnd -SendMessage(WM_CLOSE);阐明: FindWindow函数不是倡导的做法,由于它无法解决标题栏自动变化,例如我们要检测 Notepad是不是已运营而事先不懂得Notepad的标题栏,这时 FindWindow就无能为力了,可以通过枚举 windows任务列表的措施来实现。 在机械出版社Windows 95 API开发人员指南一书有比较具体的简介,这里就不再多说乐。第二问,Use ExitWindowsEx Function函数控制系统是重新引导,还是重启windows. 前面已有人讲过乐,就不再提了。5.如何加载其她的应用程序?我记得这好象是出场频度很高的问题。三个SDK函数 winexec, shellexecute,createprocess可以使用。WinExec最简朴,两个参数,前一种指定途径,后一种指定显示方式.后一种参数值得说一下,例如泥用 SW_SHOWMAXMIZED方式去加栽一种无最大化按钮的 程序,呵呵就是Neterm,calc等等,就不会浮现正常的窗体,但是已经被加到任务列表里了。ShellExecute较 WinExex灵活一点,可以指定工作目录,下面的 Example就是直接打开 c:temp1.txt,而不用加栽与 txt文献关联的应用程序,诸多安装程序完毕后都会打开一种窗口,来显示Readme or Faq,就是这样作的啦.ShellExecute(NULL,NULL,_T(1.txt),NULL,_T(c:temp),SW_SHOWMAXMIZED);CreateProcess最复杂,一共有十个参数,但是大部分都可以用NULL替代,它可以指定进程的安全属性,继承信息,类的优先级等等.来看个很简朴的 Example:STARTUPINFO stinfo; /启动窗口的信息PROCESSINFO procinfo; /进程的信息CreateProcess(NULL,_T(notepad.exe),NULL,NULL.FALSE, NORMAL_PRIORITY_CLASS,NULL,NULL, &stinfo,&procinfo);6. 拟定应用程序的途径前些天好象有人问过这个问题.Use GetModuleFileName 获得应用程序的途径,然后去掉可执行文献名。Example:TCHAR exeFullPathMAX_PATH; / MAX_PATH在API中定义了吧,好象是128 GetModuleFileName(NULL,exeFullPath,MAX_PATH)7. 获得多种目录信息Windows目录: Use GetWindowsDirectory“Windows下的system目录: Use GetSystemDirectorytemp目录: Use GetTempPath 目前目录: Use GetCurrentDirectory请注意前两个函数的第一种参数为 目录变量名,后一种为缓冲区; 后两个相反.8. 如何自定义消息也有人问过的,其实不难。(1) 手工定义消息,可以这样写 #define WM_MY_MESSAGE(WM_USER+100),MS推荐的至少是 WM_USER+100;(2)写消息解决函数,用 WPARAM,LPARAM返回LRESULT.LRESULT CMainFrame:OnMyMessage(WPARAM wparam,LPARAM lParam)/加入你的解决函数(3) 在类的 AFX_MSG处进行声明,也就是常说的宏映射
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!