12681|42

62

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

开机密码时startui.cpp加了ipShowIM(SIPF_ON)软键盘为什么还不出来? [复制链接]

Startup_DlgProc()
{

        switch (message)
                {
                case WM_INITDIALOG:
                        //        Load and display the background bitmap.
                        hbm = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_WINDOWSCE));
                        SendMessage(
                                GetDlgItem(hDlg, IDC_STATIC_PICT),
                                STM_SETIMAGE,
                                (WPARAM)IMAGE_BITMAP,
                                (LPARAM) hbm);

                        //        Misc other info for the dialog.
                        LoadGlobalStrings();
#ifndef USE_LASS_AUTH
                        hwndPass = GetDlgItem(hDlg, IDC_PASS);
#endif

                        //        Set the font size of the various parts of the dialog.
                        memset(&lFont, 0, sizeof(LOGFONT));
                        hDlgFont = (HFONT)SendMessage(hDlg, WM_GETFONT, 0, 0L);
                        if ( !hDlgFont )
                                {
                                hDlgFont = (HFONT)GetStockObject(SYSTEM_FONT);
                                }
                        GetObject(hDlgFont, sizeof(LOGFONT), &lFont);

                        if (hDlgFont && lFont.lfHeight)
                                {
                                lFont.lfWeight =  FW_BOLD;

                                lFont.lfHeight = 13;
                                hDlgFont = CreateFontIndirect(&lFont);
                                if ( hDlgFont )
                                        {
                                        SendMessage(GetDlgItem(hDlg, IDC_STATIC_PASS),   WM_SETFONT, (WPARAM)hDlgFont, 0L);
                                        SendMessage(GetDlgItem(hDlg, IDC_COMPANY), WM_SETFONT, (WPARAM)hDlgFont, 0L);
                                        SendMessage(GetDlgItem(hDlg, IDC_ADDRESS), WM_SETFONT, (WPARAM)hDlgFont, 0L);
                                        SendMessage(GetDlgItem(hDlg, IDC_WORK_PHONE), WM_SETFONT, (WPARAM)hDlgFont, 0L);
                                        SendMessage(GetDlgItem(hDlg, IDC_HOME_PHONE), WM_SETFONT, (WPARAM)hDlgFont, 0L);               
                                        }

                                lFont.lfHeight = -16;
                                hDlgFont1 = CreateFontIndirect(&lFont);
                                if ( hDlgFont1 )
                                        {
                                        SendMessage(GetDlgItem(hDlg, IDC_STATIC_DAY), WM_SETFONT, (WPARAM)hDlgFont1, 0L);
                                        SendDlgItemMessage(hDlg, IDC_NAME , WM_SETFONT, (WPARAM)hDlgFont1, 0L);
                                        }

                                _tcscpy(lFont.lfFaceName, g_szStartupTimeFontName);
                                lFont.lfHeight = -20;
                                hDlgFont2 = CreateFontIndirect(&lFont);
                                if ( hDlgFont2 )
                                        {
                                        SendMessage(GetDlgItem(hDlg, IDC_STATIC_TIME),  WM_SETFONT, (WPARAM)hDlgFont2, 0L);
                                        }
                                }
                       

                       
                        // Set focus to the dialog itself, so WM_CHAR's are received.
                        // If we're not using LASS and we requireAuth we'll switch the
                        // focus to the password field.
            SetFocus(hDlg);                               
                        if(        isAuthRequired() )
                                {
                                EnableMenuItem(GetSystemMenu(hDlg, FALSE), SC_CLOSE, MF_BYCOMMAND | MF_GRAYED);        // disable close button
#ifndef USE_LASS_AUTH
                                ShowWindow(hwndPass, SW_SHOW);
                                ShowWindow(GetDlgItem(hDlg, IDC_STATIC_PASS), SW_SHOW);
                                SendMessage(hwndPass, EM_LIMITTEXT, PASSWORD_LENGTH, 0L);
                                SetFocus(hwndPass);
                //add soft keypad, begin<<
                RECT rcDefault;
                SystemParametersInfo(SPI_GETWORKAREA, 0, &rcDefault, FALSE);
                rcDefault.left =
                rcDefault.top =
                rcDefault.top =
                rcDefault.top = rcDefault.bottom - 80;
                SipSetDefaultRect(&rcDefault);
                ipShowIM(SIPF_ON);       
                //add soft keypad, end>>
                               
#endif
                }

                        i = 0;
                        if ( g_pOwnerNotes->NotesPowerUp )
                                {
                                i += SetAndShow(hDlg, IDC_NOTES, g_pOwnerNotes->Notes);
                                }

                        if ( !i)
                                {
                                ShowWindow(GetDlgItem(hDlg, IDC_NOTES),SW_HIDE);
                                }


                        i = 0;
                        if ( g_pOwnerProfile->IDPowerUp )
                                {
                                i += SetAndShow(hDlg,        IDC_NAME,                g_pOwnerProfile->szName);
                                i += SetAndShow(hDlg,        IDC_COMPANY,        g_pOwnerProfile->szCompany);
                                i += SetAndShow(hDlg,        IDC_ADDRESS,        g_pOwnerProfile->szAdd);

                                _tcscpy(szText, g_szStartupWork);
                                AddString(szText,        g_pOwnerProfile->szWCC);
                                AddString(szText,        g_pOwnerProfile->szWAC);
                                AddString(szText,        g_pOwnerProfile->szWPhone);

                                if ( _tcscmp(szText, g_szStartupWork) )
                                        {
                                        i += SetAndShow(hDlg, IDC_WORK_PHONE,szText);
                                        }

                                _tcscpy(szText, g_szStartupHome);
                                AddString(szText,        g_pOwnerProfile->szHCC);
                                AddString(szText,        g_pOwnerProfile->szHAC);
                                AddString(szText,        g_pOwnerProfile->szHPhone);

                                if ( _tcscmp(szText, g_szStartupHome) )
                                        {
                                        i += SetAndShow(hDlg, IDC_HOME_PHONE, szText);
                                        }
                                }

                        //        Show picture if there is no user data.
                        if ( !i )
                                {
                                ShowWindow(GetDlgItem(hDlg, IDC_STATIC_PICT), SW_SHOW);
                                }


                        oldEditCtlProc = (WNDPROC) GetWindowLong(GetDlgItem(hDlg,IDC_NOTES), GWL_WNDPROC);
                        SetWindowLong(GetDlgItem(hDlg,IDC_NOTES),        GWL_WNDPROC,        (LONG)EditCtlProc);
                        SetWindowLong(GetDlgItem(hDlg,IDC_ADDRESS),        GWL_WNDPROC,        (LONG)EditCtlProc);
                        HideCaret(GetDlgItem(hDlg,IDC_NOTES));

                        idTimer = SetTimer(hDlg, 1, 1000, NULL);
                        return FALSE;
........       

最新回复

学习了  详情 回复 发表于 2010-6-2 15:04
点赞 关注

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                RECT rcDefault;
                SystemParametersInfo(SPI_GETWORKAREA, 0, &rcDefault, FALSE);
                rcDefault.left =
                rcDefault.top =
                rcDefault.top =
                rcDefault.top = rcDefault.bottom - 80;
                SipSetDefaultRect(&rcDefault);
                                SipShowIM(SIPF_ON);       

改成只有
                                SipShowIM(SIPF_ON);

也是不行的。是我放的位置有问题吗?
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
在startui.rc里把开机密码对话框大小,内容位置改了
全编译后出来的还是原始的样子,怪怪
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

4
 
有两种可能,一是没改对地方,二是没正确编译进去。
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

5
 
帮你确认了一下,是没有问题的。
修改C:\WINCE500\PUBLIC\COMMON\OAK\DRIVERS\STARTUI\startui.cpp文件
在450行前后,添加SipShowIM(SIPF_ON);
到命令行中浏览到目录C:\WINCE500\PUBLIC\COMMON\OAK\DRIVERS\STARTUI>下,执行build,
最后重新Sysgen即可。
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

6
 
组件有没进NK?
 
 
 

回复

53

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 4 楼 sunrain_hjb 的回复:
帮你确认了一下,是没有问题的。
修改C:\WINCE500\PUBLIC\COMMON\OAK\DRIVERS\STARTUI\startui.cpp文件
在450行前后,添加SipShowIM(SIPF_ON);
到命令行中浏览到目录C:\WINCE500\PUBLIC\COMMON\OAK\DRIVERS\STARTUI>下,执行build,
最后重新Sysgen即可。


按你的编译步骤编了次,还是不行:(

 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 5 楼 xqhrs232 的回复:
组件有没进NK?

好象确实有这个问题
怎样才能确保编进nk?
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

9
 
检查一下该文件最终应该生成在哪个库或EXE文件中,然后看Release目录下面有没有更新
其实找出来后也方便自己写Sources文件来生成,这样可以每次只编译一下当前工程,拷贝到Release目录下面Makeimage就可以了
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

10
 
public 目录下面的东西编译后会生成 DLL 文件,查看 DLL 文件的日期确认是不是刚刚编译生成的,没有问题的话把这个 DLL 文件复制到你 NK.bin 那个目录下面,然后再重修 make image 生成 NK.bin 就行了。
要是编译后生成的是 lib 文件的话就麻烦了,要再用 lib 生成 DLL 才行,具体怎么做忘记了,晚上好像有方法。
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

11
 
case WM_INITDIALOG:
                        //        Load and display the background bitmap.
                        hbm = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_WINDOWSCE));
                        SendMessage(
                                GetDlgItem(hDlg, IDC_STATIC_PICT),
                                STM_SETIMAGE,
                                (WPARAM)IMAGE_BITMAP,
                                (LPARAM) hbm);
             SipShowIM(SIPF_ON);
即可!
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

12
 
还要在case WM_CLOSE:中
  添加:SipShowIM(SIPF_OFF);
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

13
 
mark
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

14
 
到这里看看,应该可以。
[url=http://www.cnblogs.com/we-hjb/archive/2009/02/16/1391984.html][/url]
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

15
 
引用 13 楼 sunrain_hjb 的回复:
到这里看看,应该可以。
http://www.cnblogs.com/we-hjb/archive/2009/02/16/1391984.html


哈哈,我从网上找到过你的文章了

我加了log,确定SipShowIM(SIPF_OFF); 是被调用了。不过软键盘就是不出来。
关机时倒是看到软键盘一闪而过

我的屏是240X320的,怀疑显示软键盘的位置不对,于是加了:
                RECT rcDefault;
                rcDefault.left = 0;
                rcDefault.top = 0;
                rcDefault.right = 240;
                rcDefault.bottom = 80;
                SipSetDefaultRect(&rcDefault);
Log2File(L"left=%d, top=%d, right=%d, bottom=%d\n", rcDefault.left,rcDefault.top,rcDefault.right, rcDefault.bottom);
                                SipShowIM(SIPF_ON);

原因还是不知道,继续郁闷...
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

16
 
最新发现,在按ok按钮的处理中加SipShowIM(SIPF_ON);
软建盘能蹦出来
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

17
 
up   
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

18
 
好不容易在WM_LBUTTONDOWN消息处理中调SipShowIM用把软键盘显示出来了

结果开机完成后再显示的软键盘显示不全,少了一半。

我改点东西怎么就这么难:(
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

19
 
有可能是屏幕分辨率的问题,
或者是有什么地方被你改成这样的。
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

20
 

我也觉得是vga,qvga屏混乱导致的。输开机密码时好象WinCE认为是vga屏,进入系统后是qvga屏。
我还发现了,要是在开机密码处不关闭sip到explorer里再关闭的话,软件盘显示是全的。

另外,有什么设置可以让startui默认为qvga屏呢?
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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