资源描述:
《vc实用小知识汇总》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、VC实用小知识汇总(1)如何通过代码获得应用程序主窗口的指针? 主窗口的指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现。 AfxGetMainWnd()->ShowWindow(SW_SHOWMAXMIZED) //使程序最大化.逆风编程精品 (2)确定应用程序的路径 UseGetModuleFileName获得应用程序的路径,然后去掉可执行文件名。 Example: TCHAR exeFullPath[MAX_PATH]//MAX_PATH在API中
2、定义了吧,好象是 128 GetModuleFileName(NULL,exeFullPath,MAX_PATH) (3)如何在程序中获得其他程序的图标? 两种方法: (1)SDK函数SHGetFileInfo或使用ExtractIcon获得图标资源的handle, (2)SDK函数SHGetFileInfo获得有关文件的很多信息,如大小图标,属性,类型等. Example(1): 在程序窗口左上角显示NotePad图标. voidCSampleView: OnDraw(CDC*pDC)
3、{ if(::SHGetFileInfo(_T("c:\pwin95otepad.exe"),0, &stFileInfo,sizeof(stFileInfo),SHGFI_ICON)) { pDC->DrawIcon(10,10,stFileInfo.hIcon) } } Example(2):同样功能,UseExtractIconFunction voidCSampleView::OnDraw(CDC*pDC) { HICONhIcon=::ExtractIcon(AfxGetI
4、nstanceHandle(),_T ("NotePad.exe"),0) if(hIcon&&hIcon!=(HICON)-1) pDC->DrawIcon(10,10,hIcon) } 说明:获得notepad.exe的路径正规上来说用GetWindowsDirectory函数得到,如果是调用win95下的画笔,应该用访问注册表的方法获得其路径,要作成一个比较考究的程序,考虑应该全面点. (4)获得各种目录信息 Windows目录:Use"GetWindowsDirectory" Windo
5、ws下的system目录:Use"GetSystemDirectory" temp目录:Use"GetTempPath" 当前目录:Use"GetCurrentDirectory" 请注意前两个函数的第一个参数为目录变量名,后一个为缓冲区后两个相反. (5)如何自定义消息 1)手工定义消息,可以这么写 #defineWM_MY_MESSAGE(WM_USER+100), MS推荐的至少是WM_USER+100 (2)写消息处理函数,用 WPARAM,LPARAM返回LRESULT. LRES
6、ULTCMainFrame::OnMyMessage(WPARAMwparam,LPARAMlParam) { temp目录:Use"GetTempPath" //加入你的处理函数irectory" } (6)如何改变窗口的图标? 向窗口发送WM_SECTION消息。 Example: HICONhIcon=AfxGetApp()->LoadIcon(IDI_ICON) ASSERT(hIcon) AfxGetMainWnd()->SendMessage(WM_SECTION,TRUE,(L
7、PARAM)hIcon) (7)如何改变窗口的缺省风格? 重载CWnd::PreCreateWindow并修改CREATESTRUCT结构来指定窗口风格和其他创建信息. Example:Delete"Max"ButtonandSet逆@风@者Original Window'sPositionandSize BOOLCMainFrame::PreCreateWindow (CREATESTRUCT&cs) { cs.style&=~WS_MAXINIZEMOX cs.x=cs.y=0 cs.cx
8、=GetSystemMetrics(SM_CXSCREEN/2) cs.cy=GetSystemMetrics(SM_CYSCREEN/2) returnCMDIFramewnd::PreCreateWindow(cs) }8)如何将窗口居中显示? CallFunctionCWnd:: CenterWindows Example(1): CenterWindow()//R