سؤال

لدي المشكلة التالية:

فتح مربع الحوار فتح SIP لوحة المفاتيح إلى تعبئة النموذج ومن ثم تقليل SIP.ثم عند إغلاق الحوار الحالي والعودة إلى مربع الحوار الرئيسي SIP لوحة المفاتيح يظهر مرة أخرى.لا أحد يعرف كيف يمكنني إظهار/إخفاء SIP لوحة المفاتيح برمجيا أو أفضل ما يمكن عمله لحل المشكلة الموصوفة.بمجرد أن يقوم المستخدم يقلل من لوحة المفاتيح فإنه لا ينبغي أن تظهر على الشاشة في مربع الحوار تحويل.

وذلك بفضل!

هل كانت مفيدة؟

المحلول

ونحن نستخدم SHSipPreference للسيطرة على العرض من SIP في تطبيقاتنا. وأنا أعلم أنه يعمل مع MFC ويقوم بتعيين حالة SIP للنافذة حتى تتمكن من تحديد مرة واحدة وكنت تعرف سيتم استعادة حالة SIP إلى دولة مجموعة في كل مرة يتم عرض نافذة.

وأنا قد سمعت أبدا من SipShowIM لكنني لم أرى في صفحة MSDN المرتبط:

<اقتباس فقرة>   

والطريقة القياسية لإظهار و   إخفاء SIP (SIPShowIM) المعارض   بعض المشاكل في الحوارات MFC.

نصائح أخرى

سوف تحتاج إلى الاتصال SipShowIM() في coredll.انظر هذه المقالة MSDN:

http://msdn.microsoft.com/en-us/library/ms838341.aspx

ويمكنك استخدام عنصر Microsoft.WindowsCE.Forms.InputPanel. يمكنك إظهار / إخفاء SIP برمجيا باستخدام الخاصية Enabled. وهناك عنصر InputPanel في مربع الأدوات.

وهناك أيضا حدث EnabledChanged لInputPanel التي يمكنك التعامل معها. تريد عادة لإظهار SIP في الحدث إحضار التركيز على النص.

هل تستخدم MFC؟

والمشكلة هي الدولة SIP هو في الحوار، وليس في التطبيق. لذلك تحتاج إلى إظهار / إخفاء ذلك داخل كل الحوار بشكل مستقل.

void CAaa::OnActivate( UINT nState, CWnd* pWndOther, BOOL bMinimized )
{
if(nState == WA_ACTIVE || nState == WA_CLICKACTIVE)
{
        SHINITDLGINFO shidi;
            shidi.dwMask = SHIDIM_FLAGS;
            shidi.dwFlags = SHIDIF_FULLSCREENNOMENUBAR|SHIDIF_SIPDOWN | SHFS_HIDETASKBAR;
            shidi.hDlg = m_hWnd;
            SHInitDialog(&shidi);

        SHFullScreen(m_hWnd, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON |SHFS_HIDESTARTICON);
}
}

ويجب إزالة أي مفاتيح ملء الشاشة أو شريط المهام إن لم يكن المطلوبة:)

والشيء الآخر لاستخدام:

 SHSipPreference(m_hWnd,SIP_UP); // SIP_DOWN

وأو حتى:

 HWND hwndCB = ::FindWindow(_T("SipWndClass"),_T(""));
      ::ShowWindow( hwndCB, SW_SHOW);
      hwndCB = ::FindWindow(_T("MS_SIPBUTTON"),NULL);
      ::ShowWindow( hwndCB, SW_SHOW);

ولكن هذا الأخير يمكن أن يكون غير القياسية وذلك :) لا يزال يعمل. محاكمتهم.

<اقتباس فقرة>   

... في بعض الحوار أخرى أريد أن تعيين تخطيط لوحة رقمية،   حتى أضفت السطر التالي في منشئ:   SendMessage (EM_SETINPUTMODE، 0، EIM_NUMBERS)؛ ولكن إذا كنت إزالة هذا   خط I حل قضية واحدة وإنشاء واحد آخر

ويقوم GetlastError () إما 6 (مقبض صالح) أو 120 (غير معتمدة). ويدعم EM_SETINPUTMODE فقط على الهواتف الذكية، والهواتف الذكية لا تملك برامج الاستثمار القطاعي. انظر http://msdn.microsoft.com/en-us/library/bb416452. ASPX .

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top