我有个问题,我编写好了一个基于对话框的应用程序,可是我现在要为这个程序弄一个登陆对话框,在输入密码和帐号正确的时候则开始运行应用程序,我的要求不高,不需要注册用户和,帐号密码可以在程序中固定死,请问我该怎么实现,哪位高人指点一下,具体点好吗?!!!或者介绍点资料给我看看!写写了
1.如何获取应用程序的 实例句柄?
应用程序的实例句柄保存在CWinApp m_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:\\pwin95\\notepad.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.如何编程结束应用程序?
这是个很简单又是编程中经常要遇到的问题.向窗口发送 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开发人员指南"一书有比较详细的介绍,这里就不再多说乐。