用vc.net实现记录开关机时间的程序
2007-03-16 21:56:21 来源:WEB开发网核心提示: 这里又带来一个问题:既然需要本程序的绝对路径,那么怎么得到它呢?总不能指定一个值吧,用vc.net实现记录开关机时间的程序(2),那么当本程序的路径改变时就又要修改程序,太麻烦了,它与模式对话框不同,是用Create方法Create出来的,可以用这个封装的函数来实现://得到程序文件本身的
这里又带来一个问题:既然需要本程序的绝对路径,那么怎么得到它呢?总不能指定一个值吧,那么当本程序的路径改变时就又要修改程序,太麻烦了。可以用这个封装的函数来实现:
//得到程序文件本身的路径(包括文件名)
CString GetMyPath()
{
CString strPath;
GetModuleFileName(NULL,strPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
strPath.ReleaseBuffer();
return strPath;
}
其中GetModuleFileName()是一个得到路径的API函数。本函数将这个API函数封装在其中,为的是简化调用的目的。
当执行这个函数时,返回本程序所在的绝对路径,包括本程序的文件名。
好了,得到本程序的路径,然后将它加载到注册表中,下次系统启动时,我们的程序就能自动随之启动了。
2、实现运行时自动隐藏
这是一个很有趣很古老的话题,csdn上经常有人为此讨论不休,提出不少方案,比如在对话框的OnInitDialog()中添加一句:ShowWindow(SW_HIDE);,或者在对话框属性框中去掉对话框的Visible属性;或者将对话框移到桌面以外的地方去;或者首先将对话框最小化,然后实现最小化时隐藏……有趣的是这些很容易想到的常规方法都不能解决这个问题,或者说解决的不够好。我通过查找相关文章和多次修改代码,找出了真正解决这个问题的办法。
之所以用ShowWindow()函数失效,我认为可能是对话框的DoModal()在作怪,这么一来就只能绕开DoModal(),那么就自然想到可以把对话框变成一个无模式对话框。无模式对话框平时我们用到的不多,它与模式对话框不同,是用Create方法Create出来的,而不是DoModal()创建的。
更多精彩
赞助商链接