4511|10

68

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求问 应用UI 的问题 [复制链接]

现在遇到一个不知道如何处理的问题

要实现关机
一个全屏的界面,没有按钮 就是一个TEXT 和 图片,而且不能够点击,在界面出现之后调用 关机函数

但是在使用中发现 界面要出现 是在 系统自动发送好几次 WM_NOTIFY 之后才显示这个界面

现在的 问题是 如果直接在 WM_NOTIFY 处理的时候加上关机函数,那么这个界面就不会出现

但是如不在这个消息中 添加这个函数,那又不知道在哪个消息中添加 关机函数


而且好像发送WM_NOTIFY的次数 并不同  

如何让这个界面先出现 然后就调用 关机函数呢?

请问我该如何处理呢?
谢谢

最新回复

CDialog::OnTimer(nIDEvent); 直接用TIMER控制时间,到时间触发关机事件就是呀。  详情 回复 发表于 2008-9-2 16:51
点赞 关注

回复
举报

77

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
不知道lz在说什么?
全屏的界面是系统的还是lz的应用程序的? 是怎么出现?
系统自动发送好几次 WM_NOTIFY 之后才显示这个界面 --- WM_NOTIFY 是怎么来的呀
看的我一脑子浆糊
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
引用 1 楼 Reallyu 的回复:
不知道lz在说什么?
全屏的界面是系统的还是lz的应用程序的? 是怎么出现?
系统自动发送好几次 WM_NOTIFY 之后才显示这个界面 --- WM_NOTIFY 是怎么来的呀
看的我一脑子浆糊


全屏的界面的我自己定义的界面 这个界面什么按钮都没有  因为这里不能用按钮

就是实现一个关机的画面,画面打开后 然后就关机 不需要用户去触摸

而在wce显示这个界面之前界面自动会向系统发出三个WM_NOTIFY  然后才显示出来

 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

4
 
这个界面是怎么出来的呢? CreateWindow 一个全屏的窗口,或者直接在 WM_PAINT 里面画的?
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

5
 
不是CreateWindow的

算了 现在就用了个笨方法 自己建一个定时器  


对了 MessageBox()弹出的窗口可以自己CreateWindow() 的把?

我发现CreateWindow() 好难用 经常CreateWindow()不成功 真是晕死
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

6
 
不会把,应该是你弄错什么地方了
MessageBox这种窗口用创建窗口的方法来做是比较麻烦的,因为他是模态的窗口,一旦出现,后台的窗口就都收不到消息了.
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

7
 

感觉很简单的东西,

怎么lz搞的很复杂。

你把显示图片的代码贴出来,要不详细说明你的思路。
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

8
 

呵呵 确实是感到挺麻烦 不知道如何解决 所以不得以用了一个定时器

就是实现关机时,会出现一个图画,画面全面遮盖住屏幕 关机了当然用户不会去点击了 也就不会发出消息了
所以我的关机函数 需要在画面全部显示的时候才处理


本来以为WM_INITDIALOG 之后就能把这个画面全部显示出来了 但是发现不是这么一回事

所以关机函数就不知道放在什么地方才处理了

不知道是否清楚明白了?



 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

9
 
你是想用户按了休眠键后,出现一个全屏图,然后再休眠??

这个应该放在os中实现。
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

10
 
听你描述也是用软件实现硬件关机或睡眠时, 让应用程序出现提示画面再关机吧?
应用程序也能实现啊.
一:就用你楼主说的定时器,出现提示画面.
二:在定时器函数响应时,先关闭屏幕. 然后再关机呀.
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);
}

我是这样实现的. 不知道有没有其它更简单的方法.

 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

11
 
CDialog::OnTimer(nIDEvent);
直接用TIMER控制时间,到时间触发关机事件就是呀。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表