现在遇到一个不知道如何处理的问题
要实现关机
一个全屏的界面,没有按钮 就是一个TEXT 和 图片,而且不能够点击,在界面出现之后调用 关机函数
但是在使用中发现 界面要出现 是在 系统自动发送好几次 WM_NOTIFY 之后才显示这个界面
现在的 问题是 如果直接在 WM_NOTIFY 处理的时候加上关机函数,那么这个界面就不会出现
但是如不在这个消息中 添加这个函数,那又不知道在哪个消息中添加 关机函数
而且好像发送WM_NOTIFY的次数 并不同
如何让这个界面先出现 然后就调用 关机函数呢?
请问我该如何处理呢?
谢谢
不知道lz在说什么?
全屏的界面是系统的还是lz的应用程序的? 是怎么出现?
系统自动发送好几次 WM_NOTIFY 之后才显示这个界面 --- WM_NOTIFY 是怎么来的呀
看的我一脑子浆糊
引用: 引用 1 楼 Reallyu 的回复:
不知道lz在说什么?
全屏的界面是系统的还是lz的应用程序的? 是怎么出现?
系统自动发送好几次 WM_NOTIFY 之后才显示这个界面 --- WM_NOTIFY 是怎么来的呀
看的我一脑子浆糊
全屏的界面的我自己定义的界面 这个界面什么按钮都没有 因为这里不能用按钮
就是实现一个关机的画面,画面打开后 然后就关机 不需要用户去触摸
而在wce显示这个界面之前界面自动会向系统发出三个WM_NOTIFY 然后才显示出来
这个界面是怎么出来的呢? CreateWindow 一个全屏的窗口,或者直接在 WM_PAINT 里面画的?
不是CreateWindow的
算了 现在就用了个笨方法 自己建一个定时器
对了 MessageBox()弹出的窗口可以自己CreateWindow() 的把?
我发现CreateWindow() 好难用 经常CreateWindow()不成功 真是晕死
不会把,应该是你弄错什么地方了
MessageBox这种窗口用创建窗口的方法来做是比较麻烦的,因为他是模态的窗口,一旦出现,后台的窗口就都收不到消息了.
感觉很简单的东西,
怎么lz搞的很复杂。
你把显示图片的代码贴出来,要不详细说明你的思路。
呵呵 确实是感到挺麻烦 不知道如何解决 所以不得以用了一个定时器
就是实现关机时,会出现一个图画,画面全面遮盖住屏幕 关机了当然用户不会去点击了 也就不会发出消息了
所以我的关机函数 需要在画面全部显示的时候才处理
本来以为WM_INITDIALOG 之后就能把这个画面全部显示出来了 但是发现不是这么一回事
所以关机函数就不知道放在什么地方才处理了
不知道是否清楚明白了?
你是想用户按了休眠键后,出现一个全屏图,然后再休眠??
这个应该放在os中实现。
听你描述也是用软件实现硬件关机或睡眠时, 让应用程序出现提示画面再关机吧?
应用程序也能实现啊.
一:就用你楼主说的定时器,出现提示画面.
二:在定时器函数响应时,先关闭屏幕. 然后再关机呀.
void CPowerOffDlg::OnTimer(UINT nIDEvent)
{
一://进入睡眠或关机之前关闭背光
DWORD BytesReturned;
DWORD g_LightLevel = 0;
DeviceIoControl(背光设备, IOCTL_BAK_IN_SET_LIGHT, &g_LightLevel, sizeof(g_LightLevel),
NULL, 0, &BytesReturned, (LPOVERLAPPED)NULL);
二:隐藏窗口
ShowWindow(SW_HIDE);
三:关机或睡眠
SetSystemPowerState(NULL, POWER_STATE_SUSPEND(POWER_STATE_OFF关机), POWER_FORCE);
四:窗口退出
OnOK();
CDialog::OnTimer(nIDEvent);
}
我是这样实现的. 不知道有没有其它更简单的方法.
CDialog::OnTimer(nIDEvent);
直接用TIMER控制时间,到时间触发关机事件就是呀。