如何通过mfc应用程序修改系统时间的菜单选项?就电脑右下角右键点击系统时间时弹出的菜单。。。100分送上

作者&投稿:泰固 (若有异议请与网页底部的电邮联系)
这种问题百度一下到处都是啊。

使用API函数SetLocalTime进行本地时间设置。
先是ParseDateTime,函数原型: BOOL ParseDateTime( LPCTSTR lpszDate, DWORD
dwFlags = 0, LCID lcid = LANG_USER_DEFAULT );
lpszDate就是指定的日期时间了,可以有很多种形式,如: "25 January 1996" "8:30:00" "20:30:00"
"January 25, 1996 8:30:00" "8:30:00 Jan. 25, 1996" "1/25/1996 8:30:00"
dwFlags有三种值,LOCALE_NOUSEROVERRIDE、VAR_TIMEVALUEONLY、
VAR_DATEVALUEONLY。LOCALE_NOUSEROVERRIDE是使用系统默认的方式,VAR_TIMEVALUEONLY是忽略日
期,在该选项下,日期会被设置为0,也就是1899年12月30日,在VAR_DATEVALUEONLY下忽略时间,时间被设置为0,即午夜零点。
至于第三个参数lcid,是指定转换方式,语言支持方面的,MSDN里面有个很详细的表,有兴趣可以去看看。
COleDateTime还提供了获取时间的函数,如GetYear()之类的。
注意一下,如果没有指定日期的话,转换后日期就自动变为0,也就是跑1899年去了,这可很危险啊。本来还想偷个懒不指定呢,谁知道怎么偷懒的告诉我一声啊。
SetLocalTime函数的原型: BOOL SetLocalTime( const SYSTEMTIME
*lpSystemTime );
输入参数lpSystemTime是一个SYSTEMTIME类型的参数,如果设置成功,返回true,本地时间将会变成lpSystemTime所指定
的时间,否则返回false。看一下SYSTEMTIME的格式: typedef struct _SYSTEMTIME { WORD wYear;
WORD wMonth; WORD wDayOfWeek; WORD wDay; WORD wHour; WORD wMinute; WORD
wSecond; WORD wMilliseconds; } SYSTEMTIME, *PSYSTEMTIME; 各成员的含义不用解释了吧。
我们来看一下如何利用SYSTEMTIME结构体和SetLocalTime函数进行本地时间的设置。 SYSTEMTIME st;
st.wYear = 2007; st.wMonth = 11; st.wDay = 24; st.wHour = 3; st.wMinute =
14; st.wSecond = 0; st.wMilliseconds = 0; SetSystemTime(&st);
对比一下SYSTEMTIME结构体,可以发现,除wDayOfWeek成员之外,其它各成员都进行赋值了,甚至连wMilliseconds。使用这种
方式进行系统时间设置时,会忽略wDayOfWeek成员,可以不进行该成员的赋值(即使你赋值了也不会被考虑的),但其它所有成员都必须时行赋值,否则
无法成功地进行时间设置。
如果只想对其中的几项进行设置的话,可以先使用GetLocalTime函数来获取当前本地时间,然后再对相应的项进行修改,如下:
SYSTEMTIME st; GetLocalTime(&st); st.wHour = 3;
SetLocalTime(&st); 这样的方式比上面方便多了。
上面说到的方法都是对每一项单独进行设置,在VC里面,也提供了一次性设置所有项的方法,使用COleDateTime类。
COleDateTime tm; SYSTEMTIME st; tm.ParseDateTime("2007-11-24 8:00:00");
tm.GetAsSystemTime(st); SetLocalTime(&st); 程序应该很好懂吧,不过有几个注意点要说明一下。
SetLocalTime与SetSystemTime的差别
SetSystemTime的用法与SetLocalTime基本相同,不重复了。差点在于SetSystemTime所带的参数指定的是UTC时间(国
际标准时间),也就是说,像我的电脑里指定的是东八区,这样的话,使用SetSystemTime设置之后,系统的时间,会比参数里所设置的时间快8个小
时。
另外,这两个函数设置的时间,都是对本地机各个系统都有效的。本来很好奇windows系统下改了时间,linux下是不是也会跟着改呢。事实证明是这样
的。
使用COleDateTimeSpan类进行时间的加减。 COleDateTime tm; COleDateTimeSpan ts;
tm.ParseDateTime("2007-11-24 8:00:00"); ts.SetDateTimeSpan(0,8,0,-14);
tm+=ts; SYSTEMTIME st; tm.GetAsSystemTime(st); SetLocalTime(&st);
这个程序也很易懂,不说什么了,你只要想清楚了是该加上这个时间差呢还是减去这个时间差就行了,我是经常转不过来啦。
另外,似乎在XP下有权限问题,不是管理员账号的可能不能这样进行修改,这个我没有去试过,谁去试过了跟我说一下吧。
最后补充一句,修改系统时间之后,编译时候容易出问题,最好是每次编译的时候把时间改回来了再重新编译,或者使用rebuild
all,全部重新编译,要不很有可能即使你编译了,而得到的可执行文件还是修改之前的

他问的是修改菜单

士大夫撒范德萨范德萨的发生法士大夫

怎么MFC修改右键弹出菜单显示文字~

如何通过mfc应用程序修改系统时间的菜单选项?就电脑右下角右键点击系统时间时弹出的菜单。。。100分送上这种问题百度一下到处都是啊。使用API函数SetLocalTime...

可以的

穿越火线出现MFC应用程序错误怎么解决?
答:检查系统中是否有木马或病毒。这类程序为了控制系统往往不负责任地修改系统,从而导致操作系统异常。更新操作系统,让操作系统的安装程序重新拷贝正确版本的系统档案、修正系统参数。有时候操作系统本身也会有BUG,要注意安装官方发行的升级程序。尽量使用最新正式版本的应用程序、Beta版、试用版都会有BUG。《...

MFC和C语言是什么关系?具体,不要用术语
答:目前,所有主要的关系数据库管理系统支持某些形式的SQL语言, 大部分数据库打算遵守ANSI SQL89标准。 SQL的优点 SQL广泛地被采用正说明了它的优点。它使全部用户,包括应用程序员、DBA管理员和终端用户受益非浅。 (1) 非过程化语言 SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户...

MFC中如何修改图标
答:方法二:上面这个的工作十分简单,但是如果要在程序中写代码改变我们应用程序的图标,比如有时候我们要在程序中动态改变程序的标题栏、任务栏图标或是托盘的图标,那就要花点功夫了。其实也不是很难,主要用几个函数搞定,如果是MFC主要就是 LoadIcon和 SetIcon。比如我们在OnInitDialog或是OnCreate中加入...

MFC程序用MSCOM串口控件接收数据时,弹到图二界面,是什么原因,要怎么改...
答:1. 硬件连接问题:检查串口是否连接正确,波特率、数据位、停止位、校验等参数是否设置正确。可以使用超级终端等工具对串口进行测试。2. 程序代码问题:检查MFC程序中串口控件的使用方法是否正确,例如是否正确设置了串口号、波特率等参数。可以参考MSCOM串口控件的官方文档和示例代码进行修改。3. 系统权限问题...

vc/mfc 进程消息队列,线程消息队列,和系统消息队列,该如何处理_百度知 ...
答:通常,派生类覆盖OnCmdMsg时 ,要调用基类的被覆盖的OnCmdMsg。 在MFC框架中,一些MFC命令目标类覆盖了OnCmdMsg,如框架窗口类覆盖了该函数,实现了MFC的标准命令消息发送路径。必要的话,应用程序也可以覆盖OnCmdMsg,改变一个或多个类中的发送规定,实现与标准框架发送规定不同的发送路径。例如,在以下情况可以作这样的处理:...

...++写控制系统。但现在的自动化一般都是用PLC,MFC主要用于什么?_百度...
答:MFC主要用于编写各类程序,如控制台程序,windows窗口交互程序等等,可以编写信息处理应用、网络应用,数据库应用等等。我看了一下PLC编程可能更加底层一些,而MFC程序则是运行于windows操作系统之上的应用型程序。不知道我说清楚了没有。

MFC 按键问题 就是WIN7系统自带 的那个计算器的INV键的效果是怎么做的...
答:了解Windows应用程序的结构与DOS程序的不同,掌握应用MFC类库编写Windows应用程序的基本模式。 2.设计内容以简易计算器为例,通过对简单应用软件计算器的设计,编制、调试,实现简单的加,减,乘,除等运算,以学习应用MFC库类编写对话框的原理,加深对C++类的学习及应用。3. 设计思想基于MFC库类对对话框界面的设计,通过...

打印机内存已满怎么办
答:关闭不需要的应用程序有时,一些不必要的应用程序会占用大量的内存空间,你可以关闭它们,以释放更多的内存空间。升级打印机内存如果以上方法都无法解决问题,你可以考虑升级打印机内存,以获得更大的内存空间。注意事项请注意,以上方法仅供参考,具体处理方法可能因打印机型号和操作系统而异。如果以上方法无效,建议...

mfc模拟键盘系统如何写
答:1.创建一个基于对话框的应用程序。2.添加相应的按钮和控件。3.由于虚拟键盘需要多个按钮,如果为每个按钮一一处理单击事件,会很繁琐,因此,在对话框类中添加OnbtnClick方法,处理按钮的单击事件。void CNew24Dlg::OnbtnClick(HWND hButton){CButton *pButton = (CButton*)CButton::FromHandle(h...

如何从MFC应用程序中调用.NET框架
答:如何发送击键到其它应用程序?关于如何通过编程来发送 Ctrl+Alt+Del 击键?如何从 MFC 应用程序中调用 .NET 框架?我想编写一个应用程序,它能通过击键将信息写到另外一个应用程序的窗体中。我是不是应该发送 WM_KEYDOWN 和 WM_KEYUP 消息?有没有更好的办法?发送WM_KEYDOWN 和 WM_KEYUP 消息也许能行得通,但...