norains的专栏

只专注于WINCE开发

用户操作
[即时聊天] [发私信] [加为好友]
norainsID:norains
130924次访问,排名642(-1)好友0人,关注者27
代码其实是一种乐趣
norains的文章
原创 186 篇
翻译 0 篇
转载 10 篇
评论 258 篇
norains的公告
联系方式请看置顶文章
最近评论
zhli6:如果我们想令该PIN作为GPIO并输出high,那么代码如下:
REG_HW_PINCTRL_MUXSEL0_SET(BF_PINCTRL_MUXSEL0_BANK0_PIN08(3));
REG_HW_PINCTRL_DOUT0_CLR(1 << 8);
REG_HW_PINCTRL_DOE0_SET(1 << 8);……
晴天:請問一下:
如果要寫成Watchdog timer 納在這這要如何實現呢?
hustpanda:电子书看不了呢?
bobo:“耍大牌”...... 你就该直接拉黑
bulrush:你好,首先先感谢一下。我看了你的音量控制,自己也去实现了一下,但是我个人感觉“AudioUpdateFromRegistry”没有依据注册表的设置来更新控制面板的音量。没有马上更新,我重启系统后才看到更新的结果。也就是说这种方法是可行,但是必须要重启,显然这不合理。上面的兄弟说:引用了这两个类后不起作用
如:
void CSoundDlg::OnSoft()
……
文章分类
收藏
    相册
    动漫
    文章图片
    程序交流
    xumercury的BLOG
    狗友们的博客
    清蒸石斑鱼
    美女如刀锋
    茁茁的BLOG
    魅力老姐的窝
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 说说WinCE的WS_EX_TOPMOST和窗口置顶显示收藏

    新一篇: 漫谈WinCE输入法的编写(五)--以DLL替代CIMWnd | 旧一篇: 谢谢bobo!

    //========================================================================
    //TITLE:
    //    说说WinCE的WS_EX_TOPMOST和窗口置顶显示
    //AUTHOR:
    //    norains
    //DATE:
    //    Tuesday  18-September-2007
    //Environment:
    //        EVC4.0 + Windows CE 5.0 Standard SDK
    //========================================================================
        常写代码的朋友对WS_EX_TOPMOST和SetForegroundWindow()应该都不会陌生,前者在CreateWindowEx时设置窗口属性为置顶,后者是将某个窗口提至Z轴最前.如果有一个窗口A属性是WS_EX_TOPMOST(本文称之为TOPMOST窗口),窗口B不具备WS_EX_TOPMOST属性(本文称之为NOTOPMOST窗口),那么用SetForegroundWindow()提升窗口B的位置会是何种情况?答案是窗口B永远不可能在窗口A前显示!
       
        为简便叙述,以列表形式说明

       
        不过需要注意的是,在有子窗口的情形下,如果子窗口没有设置WS_EX_TOPMOST,即使父窗口设置了,该窗口也不属于TOPMOST窗口,而是比TOPMOST低一级别(本文称之HALFTOPMOST窗口):调用SetForegroundWindow()后,它可以在显示在NOTOPMOST窗口之前,却而无法在TOPMOST窗口前显示.换句话说,HALFTOPMOST窗口和NOTOPMOST窗口一起时,表现类似于TOPMOST窗口;而和TOPMOST窗口一起时,则更接近于NOTOPMOST.
       
        这是一个典型的创建HALFTOPMOST的例子代码:

       
        
    //主窗口
            HWND hWnd = CreateWindowEx(WS_EX_TOPMOST ,
                    WND_CLASS,
                    WND_TITLE,
                    WS_VISIBLE,
                    
    0,
                    
    0,
                    
    320,
                    
    240,
                    NULL,
                    NULL,
                    hInstance,
                    NULL
                    );

            InitCommonControls();
       
        
    //子窗口
        HWND hWndLst = CreateWindowEx(0,    //如果需要整個窗口為TOPMOST,則這里必須要設置為WS_EX_TOPMOST
                                WC_LISTVIEW,
                                TEXT(
    ""),
                                LVS_REPORT 
    | LVS_SINGLESEL | LVS_NOCOLUMNHEADER | WS_VISIBLE | WS_CHILD | WS_VSCROLL  ,
                                
    1,
                                
    1,
                                
    100,
                                
    100,
                                hWnd,
                                NULL,
                                hInstance,
                                NULL); 

                               
            如果想让该窗口成为TOPMOST,只需要在创建子窗口时令其具备WS_EX_TOPMOST属性即可.
           
           
            虽然本文之前一直是以CreateWindowEx来创建不同层次的窗口,但其实我们也可以在创建之后更改其属性.方法很简单,只要调用SetWindowPos函数即可:
           
            //将窗口更改为TOPMOST
            SetWindowPos(hWnd,HWND_TOPMOST,0,0,800,480,SWP_SHOWWINDOW);
            

           
            如果需要更改包含子窗口的主窗口,稍微有一些麻烦,因为在WinCE下不支持FindWindowEx()函数,不过所幸我们尚有GetWindow替代.以下代码展示了如何更改只包含一个子窗口的主窗口的层次属性(如果是包含多个子窗口,只需要循环判断即可):
           

        HWND hWndParent 
    = FindWindow(MAIN_WND_NAME,MAIN_WND_CLASS);
        
    if(hWndParent != NULL)
        {
            HWND hWndChild 
    = GetWindow(hWndParent,GW_CHILD);
            
    if(hWndChild != NULL)
            {
                SetWindowPos(hWndChild,HWND_TOPMOST,
    0,0,800,480,SWP_SHOWWINDOW);
            }
            SetWindowPos(hWndParent,HWND_TOPMOST,
    0,0,800,480,SWP_SHOWWINDOW);   
        }

                                

    发表于 @ 2007年09月18日 23:59:00|评论(loading...)|编辑

    新一篇: 漫谈WinCE输入法的编写(五)--以DLL替代CIMWnd | 旧一篇: 谢谢bobo!

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © norains