mfc关机程序
mfc 代码关闭当前多文档的子窗口

MFC(Microsoft Foundation Class)是微软公司开发的用于Windows评台的C++类库,用于简化Windows应用程序的开发。
在MFC中,关闭当前多文档的子窗口可以通过以下步骤实现:1. 获取当前活动的文档视图需要获取到当前处于活动状态的文档视图,可以通过以下代码实现:```cppCWnd* pActiveWnd = AfxGetM本人nWnd(); CMDIChildWnd* pChild = (CMDIChildWnd*)pActiveWnd; CView* pView = pChild->GetActiveView();```2. 关闭子窗口有了当前活动的文档视图之后,可以通过以下代码关闭子窗口:```cpppChild->MDIDestroy();```在这段代码中,`MDIDestroy` 函数用于关闭当前子窗口。
3. 整合关闭子窗口的代码将以上两个步骤整合在一起,完整的代码如下所示:```cppCWnd* pActiveWnd = AfxGetM本人nWnd(); CMDIChildWnd* pChild = (CMDIChildWnd*)pActiveWnd; CView* pView = pChild->GetActiveView();pChild->MDIDestroy();```这样,就可以在MFC中关闭当前多文档的子窗口了。
以上代码基于MFC类库,在多文档程序框架下实现了关闭当前子窗口的功能。
在实际开发中,可以根据具体的需求和程序结构进行适当的修改和扩展。
总结起来,关闭当前多文档的子窗口在MFC中实现并不复杂,通过获取当前活动的文档视图并调用相应的函数即可完成这一操作。
希望本文对MFC开发者能有所帮助。
初步思考:续写部分将围绕MFC中关闭子窗口的方法展开,涉及到MFC开发中更广泛的内容,包括MFC文档视图架构、消息处理机制等。
兄弟mfc J2320打印机说明书

10 接收传真 .......................... 30
接收模式 .................................. 30 使用接收模式 ........................... 31 接收模式设置 ........................... 32 振铃次数................................ 32
/registration
Brother 联系方式
重要事项
为获得技术和操作上的帮助,请致电中国大陆的呼叫中心。 若要搜索常见问题解答 (FAQ)/ 维修站 / 驱动程序 / 手册等,请访问我们的服务和 技术支持网站:
6
扫描到计算机 .................. 22
扫描前 ...................................... 22 如何使用 ControlCenter4 将文档扫描成 PDF 文件 (Windows®).............................. 22 如何使用触摸屏 将文档扫描成 PDF 文件 ........... 23
互联网支持 /Brother 应用程序
直接从本设备扫描并上传图像和文件 到常用的网络服务。无需使用计算机, 直接从本设备捕捉和转换信息。 (uu /m anuals 上的互联网支持指南 )
1 250
2
1
打印
1 纸盒 - - - 250 张 / 最大为 A3 或 Ledger 2 手动进纸槽 - - - - 1 张
v
A
日常维护 .......................... 33
如何清洁和检查设备 ................ 33 清洁平板扫描器 .................... 33 检查打印质量 ........................ 33 检查打印对齐 ........................ 35
mfc7360无法打印关闭电源然后重新打开

【知识文章】MFC7360无法打印:关闭电源然后重新打开的解决办法在日常办公中,我们经常会遇到打印机无法正常工作的情况。
其中一种常见的问题是打印机的电源无法正常关闭,然后重新打开时无法继续打印。
本文将探讨这个问题并提供解决方案,帮助您快速解决MFC7360无法打印的困扰。
1. 问题现象在使用MFC7360打印机时,您可能会遇到以下状况:关闭打印机电源后重新打开,打印机无法继续工作。
这种情况可能导致您无法按时打印所需文件,给工作和生活带来一定程度的不便。
2. 问题原因造成MFC7360无法打印的原因多种多样,常见的包括电源供应异常、打印队列堵塞、硬件故障等。
在本文中,我们将着重探讨电源供应异常所导致的问题。
3. 解决方法针对MFC7360无法打印关闭电源然后重新打开的问题,以下是一些可能的解决方法,供您参考:方法1:检查电源连接确认MFC7360的电源连接是否稳定。
请检查电源线是否插紧,确保电源能够正常供应打印机。
若发现电源连接不良,建议重新插拔电源线,并确保插头接触良好。
方法2:按正确顺序关闭和打开电源关闭打印机电源时,请按照正确的顺序进行操作。
先按下打印机控制面板上的关机按钮,然后再拔掉电源线。
同样,在重新打开电源时,请先插好电源线,再按下控制面板上的开机按钮。
这样的顺序操作可以避免电源异常引起的问题。
方法3:检查打印队列有时候,MFC7360无法打印是因为打印队列堵塞。
打开打印队列窗口,检查是否有未完成的打印任务。
如果有,取消所有未完成的任务,并尝试重新打印。
您还可以尝试清空打印队列,然后重新安排任务。
方法4:联系技术支持如果以上方法无法解决问题,建议您联系MFC7360的技术支持团队。
他们将为您提供专业的帮助和进一步的解决方案。
4. 个人观点和理解在解决MFC7360无法打印关闭电源然后重新打开的问题时,我们应该充分理解打印机的工作原理和电源供应的重要性。
关闭电源后重新打开时,保持正确的操作顺序是非常关键的。
C++让电脑关机,重启,注销

C++让电脑关机,重启,注销不展示了,一运行关机了就代码#include <windows.h>#include <iostream>#include <string.h>using namespace std;//功能实现BOOL ReSetWindows(DWORD dwFlags, BOOL bForce){//检查参数是否正确if (dwFlags != EWX_LOGOFF && dwFlags != EWX_REBOOT && dwFlags != EWX_SHUTDOWN)return FALSE;//获得系统的版本信息,让我们后面确定是否需要提升系统权限OSVERSIONINFO osvi = { 0 };//获得参数的大小,以提供给GetVersionEx来判断这是一个新版本的OSVERSIONINFO,还是旧版本的//新版本是OSVERSIONINFOEX。
扩充版本osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);//if (!GetVersionExA(&osvi))//{// return FALSE;//}//检查操作系统的版本,如果是NT类型的系统,需要提升系统权限if (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT){//EnableShutDownPriv();}//判断是否是强制关机,强制关闭系统进程。
dwFlags |= (bForce != FALSE) ? EWX_FORCE : EWX_FORCEIFHUNG;//调用APIreturn ExitWindowsEx(dwFlags, 0);}//用来提升系统权限//这是一个通用的提升权限函数,如果需要提升其他权限//更改LookupPrivilegeValue的第二个参数SE_SHUTDOWN_NAME,即可BOOL EnableShutDownPriv(){HANDLE hToken = NULL;TOKEN_PRIVILEGES tkp = { 0 };//打开当前程序的权限令牌if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) {return FALSE;}//获得某一特定权限的权限标识LUID,保存在tkp中if (!LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid)){CloseHandle(hT oken);return FALSE;}tkp.PrivilegeCount = 1;tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;//调用AdjustT okenPrivileges来提升我们需要的系统权限if (!AdjustT okenPrivileges(hT oken, FALSE, &tkp, sizeof(TOKEN_PRIVILEGES), NULL, NULL)){CloseHandle(hT oken);return FALSE;}return TRUE;}BOOL Judge(int key){//调用方法:提升软件系统的权限EnableShutDownPriv();switch (key){case 1001://关机ReSetWindows(EWX_SHUTDOWN, true); break;case 1002://重启ReSetWindows(EWX_REBOOT, true); break;case 1003://注销ReSetWindows(EWX_LOGOFF, false); break;}return 0;}int main(int argc, char *argv[]){char *tmp = argv[0];int key = atoi(tmp);Judge(key);}。
mfc常用技巧

mfc常用技巧一、打开CD-ROMmciSendString("Set cdAudio door open wait",NULL,0,NULL);二、关闭CD_ROMmciSendString("Set cdAudio door closed wait",NULL,0,NULL);三、关闭计算机OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);GetVersionEx(&OsVersionInfo); //获取操作系统版本信息if(OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS){//Windows98,调用ExitWindowsEx()函数重新启动计算机DWORD dwReserved;ExitWindowsEx(EWX_REBOOT,dwReserved); //可以改变第一个参数,实现注销用户、//关机、关闭电源等操作// 退出前的一些处理程序}四、重启计算机typedef int (CALLBACK *SHUTDOWNDLG)(int); //显示关机对话框函数的指针HINSTANCE hInst = LoadLibrary("shell32.dll"); //装入shell32.dllSHUTDOWNDLG ShutDownDialog; //指向shell32.dll库中显示关机对话框函数的指针if(hInst != NULL){//获得函数的地址并调用之ShutDownDialog = (SHUTDOWNDLG)GetProcAddress(hInst,(LPSTR)60);(*ShutDownDialog)(0);}五、枚举所有字体LOGFONT lf;lf.lfCharSet = DEFAULT_CHARSET; // Initialize the LOGFONT structurestrcpy(lf.lfFaceName,"");CClientDC dc (this);// Enumerate the font families::EnumFontFamiliesEx((HDC) dc,&lf, (FONTENUMPROC) EnumFontFamProc,(LPARAM) this,0);//枚举函数int CALLBACK EnumFontFamProc(LPENUMLOGFONT lpelf, LPNEWTEXTMETRIC lpntm,DWORD nFontType,long lparam) {// Create a pointer to the dialog windowCDay7Dlg* pWnd = (CDay7Dlg*) lparam;// add the font name to the list boxpWnd ->m_ctlFontList.AddString(lpelf ->elfLogFont.lfFaceName);// Return 1 to continue font enumerationreturn 1;}其中m_ctlFontList是一个列表控件变量六、一次只运行一个程序实例,如果已运行则退出if( FindWindow(NULL,"程序标题")) exit(0);七、得到当前鼠标所在位置CPoint pt;GetCursorPos(&pt); //得到位置八、上下文菜单事件触发事件:OnContextMenu事件九、显示和隐藏程序菜单CWnd *pWnd=AfxGetMainWnd();if(b_m) //隐藏菜单{pWnd->SetMenu(NULL);pWnd->DrawMenuBar();b_m=false;}else{CMenu menu;menu.LoadMenu(IDR_MAINFRAME); ////显示菜单也可改变菜单项pWnd->SetMenu(&menu);pWnd->DrawMenuBar();b_m=true;menu.Detach();}十、获取可执行文件的图标HICONhIcon=::ExtractIcon(AfxGetInstanceHandle(),_T("NotePad.exe"),0);if (hIcon &&hIcon!=(HICON)-1){pDC->DrawIcon(10,10,hIcon);}DestroyIcon(hIcon);十一、窗口自动靠边程序演示BOOL AdjustPos(CRect* lpRect){//自动靠边int iSX=GetSystemMetrics(SM_CXFULLSCREEN);int iSY=GetSystemMetrics(SM_CYFULLSCREEN);RECT rWorkArea;BOOL bResult = SystemParametersInfo(SPI_GETWORKAREA, sizeof(RECT), &rWorkArea, 0);CRect rcWA;if(!bResult){//如果调用不成功就利用GetSystemMetrics获取屏幕面积rcWA=CRect(0,0,iSX,iSY);}elsercWA=rWorkArea;int iX=lpRect->left;int iY=lpRect->top;if(iX < rcW A.left + DETASTEP && iX!=rcW A.left){//调整左//pWnd->SetWindowPos(NULL,rcWA.left,iY,0,0,SWP_NOSIZ E);lpRect->OffsetRect(rcWA.left-iX,0);AdjustPos(lpRect);return TRUE;}if(iY < rcW A.top + DETASTEP && iY!=rcW A.top){//调整上//pWnd->SetWindowPos(NULL ,iX,rcWA.top,0,0,SWP_NOSI ZE);lpRect->OffsetRect(0,rcW A.top-iY);AdjustPos(lpRect);return TRUE;}if(iX + lpRect->Width() > rcWA.right - DETASTEP && iX !=rcW A.right-lpRect->Width()){//调整右//pWnd->SetWindowPos(NULL ,rcWA.right-rcW.Width(),iY,0,0,SWP_NOSIZE); lpRect->OffsetRect(rcWA.right-lpRect->right,0);AdjustPos(lpRect);return TRUE;}if(iY + lpRect->Height() > rcWA.bottom - DETASTEP && iY !=rcW A.bottom-lpRect ->Height()){//调整下//pWnd->SetWindowPos(NULL ,iX,rcWA.bottom-rcW.Height(),0,0,SWP_NOSIZE); lpRect->OffsetRect(0,rcW A.bottom-lpRect->bottom);return TRUE;}return FALSE;}//然后在ONMOVEING事件中使用所下过程调用CRect r=*pRect;AdjustPos(&r);*pRect=(RECT)r;十二、给系统菜单添加一个菜单项给系统菜单添加一个菜单项需要进行下述三个步骤:首先,使用Resource Symbols对话(在View菜单中选择Resource Symbols...可以显示该对话)定义菜单项ID,该ID应大于0x0F而小于0xF000;其次,调用CWnd::GetSystemMenu获取系统菜单的指针并调用CWnd:: Appendmenu将菜单项添加到菜单中。
mfc基本程序

mfc基本程序
MFC(Microsoft Foundation Class)是微软基础类库,是微软公司实现的一个c++类库,主要封装了大部分Windows API函数。
下面是MFC基本程序的步骤:
1. 添加相应的头文件和库文件:在使用API时,需要添加相应的头文件和库文件,例如PlaySound需要头文件mmsystem.h和库文件WINMM.LIB的支持。
2. 设计窗口类:定义一个从CWnd 类继承而来的派生类,负责处理用户交互和绘图等操作。
3. 注册窗口类:使用AfxRegisterClass 函数将窗口类注册到 Windows 系统中。
4. 创建窗口对象:使用CreateWindow 函数创建一个窗口对象,并将其显示在屏幕上。
5. 循环取消息:通过消息循环从Windows 系统接收消息,并将其发送给窗口对象进行处理。
6. 处理消息:在窗口对象的处理函数中,根据接收到的消息类型进行相应的处理。
请注意,上述步骤仅为MFC基本程序的一般性指导,具体的程序编写可能因项目需求和个人喜好而有所不同。
如果你需要更详细的信息或有特定的问题,请提供更多细节以便获得更准确的回复。
c#实现关机,注销,重启源代码
Re:c#实现关机,注销,重启源代码另一份代码using System;using System.Drawing;using System.Collections;using ponentModel;using System.Windows.Forms;using System.Data;using System.Management;using System.Runtime.InteropServices; //加入此名字间是为了引用Windows API来实现关机namespace RebootComputer{public class Form1 : System.Windows.Forms.Form{//---------------这部分都是控件--------private System.Windows.Forms.Button Reboot;private System.Windows.Forms.Button ShutDown;private ponentModel.Container components = null;private System.Windows.Forms.Button Exit;//---------------------------------------------------------private ManagementObjectSearcher obj ;//-----------------程序初始化----------------public Form1(){InitializeComponent();}//-----------------------程序释放----------------------protected override void Dispose( bool disposing ){if( disposing ){if (components != null){components.Dispose();}}base.Dispose( disposing );}//-------------------------初始化----------------------private void InitializeComponent(){this.Reboot = new System.Windows.Forms.Button();this.ShutDown = new System.Windows.Forms.Button();this.Exit = new System.Windows.Forms.Button();this.SuspendLayout();//// Reboot//this.Reboot.Location = new System.Drawing.Point(16, 16); = "Reboot";this.Reboot.TabIndex = 0;this.Reboot.Text = "重启";this.Reboot.Click += new System.EventHandler(this.Reboot_Click);//// ShutDown//this.ShutDown.Location = new System.Drawing.Point(112, 16); = "ShutDown";this.ShutDown.TabIndex = 1;this.ShutDown.Text = "关机";this.ShutDown.Click += new System.EventHandler(this.ShutDown_Click);//// Exit//this.Exit.Location = new System.Drawing.Point(216, 16); = "Exit";this.Exit.TabIndex = 2;this.Exit.Text = "退出";this.Exit.Click += new System.EventHandler(this.Exit_Click);//// Form1//this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);this.ClientSize = new System.Drawing.Size(304, 53);this.Controls.Add(this.Exit);this.Controls.Add(this.ShutDown);this.Controls.Add(this.Reboot); = "Form1";this.Text = "重启、关机";this.ResumeLayout(false);//-----------------主函数,没有此函数可运行不了哦----------[STAThread]static void Main(){Application.Run(new Form1());}//--------------------重启部分程序private void Reboot_Click(object sender, System.EventArgs e){obj = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem");foreach(ManagementObject oc in obj.Get()){DialogResult result = MessageBox.Show("Are you sure want to reboot?","Confirm",MessageBoxB uttons.OKCancel,rmation);//这里为确定用户是否点击“确定”按钮if(DialogResult.OK == result){oc.InvokeMethod("Reboot",null);//点击“确定”按钮后就调用此方法重启机器}}}//---------------关机部分程序------------------------private void ShutDown_Click(object sender, System.EventArgs e){if(DialogResult.OK == MessageBox.Show("Are you sure want to Shut Down?","Confirm",MessageB oxButtons.OKCancel,rmation)) //同上{//主要调用系统API来实现ExitWindowsEx(1,0);}}//这里的[DllImport("user32.dll")]是.net里属性的表达方法,DllImport为引用系统API所在的库" user32.dll"[DllImport("user32.dll")]//主要API是这个,注意:必须声明为static externprivate static extern int ExitWindowsEx(int x,int y);//这个是退出按钮的实现,即实现程序的退出private void Exit_Click(object sender, System.EventArgs e){Application.Exit();}}}c#实现关机,注销,重启源代码一. 设计关闭Windows窗体1. 界面的设计新建一个标准工程,向工程中增加一个Windows窗体并向窗体中添加如下控件,并分别设置其属性:控件名类别 Text 控件名类别TextCheckBox1 CheckBox 自动关机GroupBox1 GroupBox 当前系统时间CheckBox1 CheckBox 倒计时执行操作 GroupBox2 GroupBox 设定时间CheckBox1 CheckBox 定时报警 TxtTime TextBoxButCancle Button 取消 SetupTime DateTimePickerButReOpen Button 重新启动 SetupDate DateTimePickerButClose Button 关机Timer1 Timer 100ButSysInto Button 系统信息 ButReLogin Button 注消Windows窗体界面:将窗体属性中的caption设置为"关闭windows",名称设置为"frmmain"。
c语言自动关机程序代码
c语言自动关机程序代码
1.#include<stdlib.h>和#include<stdio.h>分别是C标准库文件,分别包含了系统函数和输入输出函数。
2. #include <windows.h> 是Windows API的头文件,包含了系统调用的函数和数据类型。
3. int main() 是程序的入口函数。
4. int delay; 定义了一个整型变量 delay。
5. printf('请输入关机延迟时间(单位:秒):'); 输出提示信息,让用户输入延迟时间。
6. scanf('%d', &delay); 从键盘读入一个整数,存放在变量delay 中。
7. printf('%d秒后将自动关机!', delay); 输出提示信息,告诉用户将在多少秒后关机。
8. Sleep(delay * 1000); 延迟指定的时间,此处单位为毫秒,需要将秒转换为毫秒。
9. system('shutdown -s -t 0'); 调用系统命令,执行关机操作。
其中,-s 表示关机,-t 0 表示立即关机。
10. return 0; 结束程序。
- 1 -。
在C#中运用API函数编写多功能关机程序.doc
我用visual C#来编写一个多功能的关机程序。
该程序具有:定时关机、倒计时关机、关机 提醒、系统信息获取等四项功能,可设宦关机时间精确到秒。
并且让你很快掌握Visual C#H' 对API 的操作程序。
编写过程如下: 一、设计关闭Windows 窗体1 •界面的设计:新建一个标准工程,向工程中增加一个Windows 窗体并向窗体中添加如下控件,并分别 设置其属性:控件名类别 Text 控件名类别 TextCheckBox 0动关机 GixwpBox 1 GroupBox 当前系统时间 CheckBox 倒计时执行操作 GroupBox2 GroupBox 设定时间 CheckBox 定时报警 TxtTime TextBoxB utCancle B utton 取消 SetupTime DateTimePicker ButReOpen Button 重新启动 SetupDate DateTimePickerButClose Button 关机 Timer 1 Timer 100ButSyslnto Button 系统信息 ButReLogin BuMon 注消Windows 窗体界面:将窗体属性中的caption 设置为“关闭windows”,名称设置为'Trmmain^o2. 在窗体类屮引用APl|函数API 两数是构筑Windows 应用程序的基石,是Windows 编程的必备利器。
每一种 Windows 应用程序开发工具都提供了间接或直接调用了 Windows API 〔函数的方法,或者是 调用Windows API I®数的接口,也就是说具备调用动态连接库的能力。
VisualC#和其它开 发工具一样也能够调用动态链接库的API 函数。
在Visual C#中调用APl|的基本过程:首先,在调用APl|Z 前,你必须先导入System.Runtime.InteropServices 这个名称空间。
VC++ 实现定时关机或休眠-MFC 对话框应用程序介绍文档
// DDX/DDV support
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) END_MESSAGE_MAP() // CTimePowerOffDlg dialog //以离关机时间多长为主 CTimePowerOffDlg::CTimePowerOffDlg(CWnd* pParent /*=NULL*/)
// CTimePowerOffDlg message handlers
BOOL CTimePowerOffDlg::OnInitDialog() {
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000);
图 1 对话框界面
图 2 界面标注
————福哥之路(SelF Code) ————
TimePowerOffDlg.cpp 的整个文件如下:
// TimePowerOffDlg.cpp : implementation file #include "stdafx.h" #include "TimePowerOff.h" #include "TimePowerOffDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #endif #define MYWM_NOTIFYICON WM_USER+1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件学院大作业任务书
题目:用mfc制作关机程序
专业:计算机软件
班级:112班
姓名和学号:张文斌8000611074
1.作业分析
1.1项目介绍
制作一个自动关机程序,到指定时间可以关机,并且可以有取消操作和显
示当前时间的功能
1.2 功能需求
1.可以显示系统时间及日期
2.选择关机时间,当系统时间和关机时间重合时关机
3.可以有取消操作的功能
4.显示距离关机还有多长时间
2.分析
2.1需要解决的问题
1.添加各个控件并添加相应功能
2.获取系统版本号并获取关机权限
3.如果当前时间大于设定时间,则显示在第二天的设定时间关机2.2程序流程图
否
是
开始
显示系统时间
设置关机时间
关机剩余时间取消关机关机结束
3.程序设计
3.1主要函数
BOOL Main_OnInitDialog(HWND hwnd,HWND hwndFocus,LPARAM lParam);
void Main_OnCommand(HWND hwnd,UINT id,HWND hwndCtr,UINT codeNotify);
void Main_OnClose(HWND hwnd);
3.2主要功能及实现
3.2.1在初始化函数里设置定时器
BOOL Main_OnInitDialog(HWND hwnd,HWND hwndFocus,LPARAM lParam)//初始化函数
{
SetTimer(hwnd,1,1000,ShowTime);//定时器,1000ms 运行一次,1为定时器ID,ShowTime为运行函数
return true;
}
3.2.2定时器代码,显示时间
void CALLBACK ShowTime(HWND hwnd,UINT message,UINT uTimerID,DWORD dwTime)
{
SYSTEMTIME Time;//设置时间结构体
GetLocalTime(&Time);//获得电脑时间
TCHAR time[100];//定义辅助数组
wsprintf(time,"%02d:%02d:%02d %d/%02d/%02d",
Time.wHour,Time.wMinute,Time.wSecond,Time.wYear,Time.wMonth,Time.wDay);//得到时间字符
SetDlgItemText(hwnd,IDC_STATICNOW,time);//将时间字符串显示到
IDC_STATICNOW控件里
3.2.3确定时间的有效性,取得用户确认
case IDC_BUTTON1://"确定关机"按钮的ID
{
if(false == IsClose)
{
UINT Hour ,Min ,Sec;//定义小时,分钟,秒钟变量
TCHAR GetTime[100];//定义辅助字符串
GetDlgItemText(hwnd,IDC_DATETIMEPICKER1,GetTime,sizeof(GetTime));//得到时间选取
sscanf(GetTime,"%d:%d:%d",&Hour,&Min,&Sec);//将字符串里的值分别赋给他们三个
//sscanf是#include<stdio.h>里的函数
//以下是检验时间有效性
SYSTEMTIME Time;
GetLocalTime(&Time);
//LONG NTime,GTime;//定义现在时间和得到的时间总秒数变量
//由于之后的定时器2需要用到GTime变量,所以这里将Gtime变为全局变量
LONG NTime;
GTime=Hour * 3600 + Min * 60 + Sec;
NTime = Time.wHour *3600+ Time.wMinute * 60+Time.wSecond;//现在的时间
if((NTime)>=GTime)
{
UINT i;
i=MessageBox(hwnd,TEXT("所选取的时间为第二天!\n继续请点击Yes,重新选择请点击No"),
TEXT("提示"),MB_YESNO|MB_ICONQUESTION);//的值为所选择的按钮id
if(IDNO==i)
break;
}
3.2.
4.设置全局变量,作为定时器检测关机
IsClose=true;//开始检查时间
3 .2.5时间检测代码
if(true== IsClose)
{
LONG NTime;
NTime = Time.wHour*3600 + Time.wMinute*60+Time.wSecond ;
LONG Remain = (GTime - NTime);//定义变量,得到剩余时间总秒数
if(Remain < 0)
Remain =3600 *24 + Remain;
TCHAR cRemain[100];
wsprintf(cRemain,"距离关机:%02d:%02d:%02d",Remain/3600,(Remain/60)%60,Remain%60);
SetDlgItemText(hwnd,IDC_STATICREMAIN,cRemain);
if(Remain == 0)
{
ShutDown(hwnd);//自定义函数,关机函数
}
}
}
3.2.6.关机代码
void ShutDown(HWND hwnd)
{
OSVERSIONINFO os;
os.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&os);//获取系统版本
if(VER_PLATFORM_WIN32_NT==os.dwPlatformId)//32位操作系统
{
HANDLE handle;
TOKEN_PRIVILEGES tkp;
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_Q UERY,&handle);
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;//one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(handle,FALSE,&tkp , 0 ,(PTOKEN_PRIVILEGES)NULL,0);
if (GetLastError()!= ERROR_SUCCESS)//确定权限正确
{
MessageBox(hwnd,"AdjusTokenPrivileges 权限出错!","error",MB_OK|MB_ICONERROR);
}
}
ExitWindowsEx(EWX_SHUTDOWN,0);//开始关机
4.程序调试及执行4.1程序调试没有错误
4.2 开始页面
4.3 设定关机时间
4.4 退出程序
5.小结
通过日常的学习和练习,较为初步的了解了mfc,并且通过同学的帮助,完成了这次的程序。
还有很多需要改进的地方,希望老师能提出来。