文档详情

如何通过代码获得应用程序主窗口的.doc

发布:2018-03-21约4.71万字共44页下载文档
文本预览下载声明
1 如何通过代码获得应用程序主窗口的 指针? 主窗口的 指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现。 AfxGetMainWnd - ShowWindow SW_SHOWMAXMIZED //使程序最大化. 2 确定应用程序的路径 Use GetModuleFileName 获得应用程序的路径,然后去掉可执行文件名。 Example: TCHAR exeFullPath[MAX_PATH] // MAX_PATH在API中定义了吧,好象是 128 GetModuleFileName NULL,exeFullPath,MAX_PATH 3 如何在程序中获得其他程序的 图标? 两种方法: 1 SDK函数 SHGetFileInfo 或使用 ExtractIcon获得图标资源的 handle, 2 SDK函数 SHGetFileInfo 获得有关文件的很多信息,如大小图标,属性, 类型等. Example 1 : 在程序窗口左上角显示 NotePad图标. void CSampleView: OnDraw CDC * pDC if :: SHGetFileInfo _T c:\\pwin95\\notepad.exe ,0, stFileInfo,sizeof stFileInfo ,SHGFI_ICON pDC - DrawIcon 10,10,stFileInfo.hIcon Example 2 :同样功能,Use ExtractIcon Function void 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目录: Use GetWindowsDirectory Windows下的system目录: Use GetSystemDirectory temp目录: Use GetTempPath 当前目录: Use GetCurrentDirectory 请注意前两个函数的第一个参数为目录变量名,后一个为缓冲区后两个相反. 5 如何自定义消息 1 手工定义消息,可以这么写 #define WM_MY_MESSAGE WM_USER+100 , MS 推荐的至少是 WM_USER+100 2 写消息处理函数,用 WPARAM,LPARAM返回LRESULT. LRESULT CMainFrame::OnMyMessage WPARAM wparam,LPARAM lParam temp目录: Use GetTempPath //加入你的处理函数 irectory 6 如何改变窗口的图标? 向窗口发送 WM_SECTION消息。 Example: HICON hIcon AfxGetApp - LoadIcon IDI_ICON ASSERT hIcon AfxGetMainWnd - SendMessage WM_SECTION,TRUE, LPARAM hIcon 7 如何改变窗口的缺省风格? 重载 CWnd:: PreCreateWindow 并修改CREATESTRUCT结构来指定窗口风格和其他创建信息. Example: Delete Max Button and Set Original Windows Position and Size BOOL CMainFrame:: PreCreateWindow CREATESTRUCT cs cs.style ~WS_MAXINIZEMOX cs.x cs.y 0 cs.cx GetSystemMetrics SM_CXSCREEN/2 cs.cy GetSystemMetrics SM_CYSCREEN/2 return CMDIFramewnd ::PreCreateWindow cs 8 如何将窗口居中显示? Call Function CWnd:: Center Windows Example 1 : Center Window //Relative to its parent // Relative to Screen Example 2
显示全部
相似文档