在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            詳解WINCE的控制面板

            作者: 時(shí)間:2011-02-25 來(lái)源:網(wǎng)絡(luò) 收藏
            //========================================================================
            //TITLE:
            // 詳解WINCE的控制面板
            //AUTHOR:
            // norains
            //DATE:
            // Tuesday 29-August-2006
            //========================================================================
            曾經(jīng)在我的一篇《控制面板的創(chuàng)建》中介紹過(guò)WinCE控制面板的結(jié)構(gòu),不過(guò)由于那篇文章其目的只在于控制面板如何調(diào)用EXE程序,故對(duì)控制面板也僅是泛泛而談.不過(guò)在這篇文章中,我們將對(duì)WinCE的使用方法來(lái)個(gè)整體的詳解.

            1.控制面板的結(jié)構(gòu)
            控制面板其實(shí)也是個(gè)動(dòng)態(tài)鏈接庫(kù),區(qū)別只在于后綴名為.cpl,以及對(duì)外接口為CPlApplet().
            接口的原型為:
            LONG CALLBACK CPlApplet(HWND hwndCPL,UINT message, LPARAM lParam1, LPARAM lParam2)
            在接口函數(shù)中我們需要實(shí)現(xiàn)特定幾個(gè)消息的響應(yīng),控制面板才能正常運(yùn)作.為方便觀(guān)察,在這里直接貼出消息的響應(yīng)結(jié)構(gòu):

            // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
            // The entry point to the Control Panel application.
            // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
            extern "C" LONG CALLBACK CPlApplet(HWND hwndCPL,UINT message, LPARAM lParam1, LPARAM lParam2)
            {
            switch (message)
            {
            case CPL_INIT:
            // Perform global initializations, especially memory
            // allocations, here.
            // Return 1 for success or 0 for failure.
            // Control Panel does not load if failure is returned.
            return 1;

            case CPL_GETCOUNT:
            // The number of actions supported by this Control
            // Panel application.
            return 1;

            case CPL_NEWINQUIRE:
            {
            // This message is sent once for each dialog box, as
            // determined by the value returned from CPL_GETCOUNT.
            // lParam1 is the 0-based index of the dialog box.
            // lParam2 is a pointer to the NEWCPLINFO structure.
            return 0; //means CPLApplet succeed
            return 1; // Nonzero value means CPlApplet failed.
            }
            case CPL_DBLCLK:
            {
            // The user has double-clicked the icon for the
            // dialog box in lParam1 (zero-based).
            return 0; // CPlApplet succeed.
            return 1; // CPlApplet failed.
            }

            case CPL_STOP:
            // Called once for each dialog box. Used for cleanup.

            case CPL_EXIT:
            // Called only once for the application. Used for cleanup.

            default:
            return 0;
            }

            return 1; // CPlApplet failed.
            } // CPlApplet

            這幾個(gè)消息的作用分別是:
            CPL_INIT:初始化,可以在這分配內(nèi)存等等.
            CPL_GETCOUNT:返回控制面板程序的個(gè)數(shù).因?yàn)橐粋€(gè).cpl文件中,可能包含多個(gè)Applets.
            CPL_NEWINQUIRE:返回包含程序名和圖標(biāo)信息的NEWCPLINFO結(jié)構(gòu)
            CPL_DBLCLK:雙擊時(shí)響應(yīng)
            CPL_STOP:單個(gè)組件退出時(shí)響應(yīng),用來(lái)清除資源內(nèi)存等
            CPL_EXIT:退出整個(gè)cpl程序時(shí)響應(yīng)
            這些消息的定義可以在cpl.h中找到


            2.在explorer中使用
            如果定制的系統(tǒng)中帶有explorer UI,只要把編譯好的文件放進(jìn)"windows",然后再打開(kāi)"控制面板"就可以看到.


            3.如何調(diào)用.cpl
            就像PC機(jī)中.dll文件不能直接運(yùn)行,需要借助rundll32.exe來(lái)運(yùn)行一樣,WinCE下的.cpl也需要相應(yīng)的程序來(lái)調(diào)用,這個(gè)程序就是:"ctlpnl.exe".
            比如我們需要調(diào)用系統(tǒng)自帶的cplmain.cpl的"電源管理",只要在開(kāi)始菜單的運(yùn)行中輸入:"ctlpnl.exe windowscplmain.cpl,5".在路徑后面緊跟的"5"只是因?yàn)?電源管理"在cplmain.cpl中輸入第五個(gè)Applet而已.
            由此我們不難得出在程序中運(yùn)用ShellExecuteEx()函數(shù)調(diào)用控制面板的Applet的方法.以下這段代碼,效果和在命令行中輸入命令一樣,也是調(diào)用"電源管理".
            SHELLEXECUTEINFO info;
            TCHAR szControlPanelCmdLine[ 200 ];
            swprintf( szControlPanelCmdLine, L"\windows\cplmain.cpl,5");
            info.cbSize = sizeof( info );
            info.fMask = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_FLAG_NO_UI;
            info.lpVerb = NULL;
            info.lpFile = TEXT("ctlpnl.exe");
            info.lpParameters = szControlPanelCmdLine;
            info.lpDirectory = NULL;
            info.nShow = SW_SHOW;
            info.hInstApp = NULL;
            ShellExecuteEx( info );

            如果想調(diào)用cplmain.cpl的其它Applet,只要把數(shù)字改為相對(duì)應(yīng)的即可.
            以下所列的第一項(xiàng)序號(hào)為0,接下的為1,其后的繼續(xù)遞增.
            0 CPL_Comm
            1 CPL_Dialing
            2 CPL_Keyboard
            3 CPL_Password
            4 CPL_Owner
            5 CPL_Power
            6 CPL_System
            7 CPL_Screen
            8 CPL_Mouse
            9 CPL_Stylus
            10 CPL_Sounds
            11 CPL_SIP"
            12 CPL_Remove
            13 CPL_DateTime
            14 CPL_Certs
            15 CPL_Accessib


            4.系統(tǒng)自帶控制面板的代碼
            微軟對(duì)控制面板的代碼是完全公開(kāi)的,如果安裝的是PB4.2,代碼可以在"PUBLICWCESHELLFEOAKCTLPNL"中找到.
            CTLPNL文件夾中有九個(gè)文件夾,分別對(duì)應(yīng)不同的CPL文件:
            ADVBACKLIGHT:高級(jí)背光燈管理
            BTHPNL:藍(lán)牙
            CONNPNL:撥號(hào)網(wǎng)絡(luò)
            CONTROL:主控制臺(tái),我們?cè)趀xplorer中看到的"控制面板"應(yīng)該就是這個(gè)
            CPLMAIN:會(huì)生成cplmain.cpl,控制面板的大多數(shù)選項(xiàng)均源自于此
            CTLPNL:和CONTROL相關(guān)聯(lián)的
            DMPNL:沒(méi)使用過(guò),不太清楚.不過(guò)查看rc文件應(yīng)該是設(shè)置上網(wǎng)的.
            INTL2:區(qū)域和語(yǔ)言設(shè)置
            STGUI:存儲(chǔ)器管理

            linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)


            評(píng)論


            相關(guān)推薦

            技術(shù)專(zhuān)區(qū)

            關(guān)閉