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;
........
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);
也是不行的。是我放的位置有问题吗?
在startui.rc里把开机密码对话框大小,内容位置改了
全编译后出来的还是原始的样子,怪怪
帮你确认了一下,是没有问题的。
修改C:\WINCE500\PUBLIC\COMMON\OAK\DRIVERS\STARTUI\startui.cpp文件
在450行前后,添加SipShowIM(SIPF_ON);
到命令行中浏览到目录C:\WINCE500\PUBLIC\COMMON\OAK\DRIVERS\STARTUI>下,执行build,
最后重新Sysgen即可。
检查一下该文件最终应该生成在哪个库或EXE文件中,然后看Release目录下面有没有更新
其实找出来后也方便自己写Sources文件来生成,这样可以每次只编译一下当前工程,拷贝到Release目录下面Makeimage就可以了
public 目录下面的东西编译后会生成 DLL 文件,查看 DLL 文件的日期确认是不是刚刚编译生成的,没有问题的话把这个 DLL 文件复制到你 NK.bin 那个目录下面,然后再重修 make image 生成 NK.bin 就行了。
要是编译后生成的是 lib 文件的话就麻烦了,要再用 lib 生成 DLL 才行,具体怎么做忘记了,晚上好像有方法。
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);
即可!
还要在case WM_CLOSE:中
添加:SipShowIM(SIPF_OFF);
到这里看看,应该可以。
[url=http://www.cnblogs.com/we-hjb/archive/2009/02/16/1391984.html][/url]
引用: 引用 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);
原因还是不知道,继续郁闷...
最新发现,在按ok按钮的处理中加SipShowIM(SIPF_ON);
软建盘能蹦出来
好不容易在WM_LBUTTONDOWN消息处理中调SipShowIM用把软键盘显示出来了
结果开机完成后再显示的软键盘显示不全,少了一半。
我改点东西怎么就这么难:(
有可能是屏幕分辨率的问题,
或者是有什么地方被你改成这样的。
我也觉得是vga,qvga屏混乱导致的。输开机密码时好象WinCE认为是vga屏,进入系统后是qvga屏。
我还发现了,要是在开机密码处不关闭sip到explorer里再关闭的话,软件盘显示是全的。
另外,有什么设置可以让startui默认为qvga屏呢?