[Windows Mobile] 전체 화면 대화 상자
1.
OnInitDialog() :
m_bFullScreen = FALSE;
CDialog::OnInitDialog();
//Call SHInitDialog with flags for full screen. SHINITDLGINFO shidi;
shidi.dwMask = SHIDIM_FLAGS; shidi.dwFlags = SHIDIF_FULLSCREENNOMENUBAR; shidi.hDlg = m_hWnd; ::SHInitDialog(&shidi);
//TODO: Add extra initialization here. //::CommandBar_Show(m_pWndEmptyCB->m_hWnd, FALSE);
//SHFullScreen fails if dialog box is not foreground. SetForegroundWindow(); SHFullScreen(m_hWnd, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON);
//Resize the window over the taskbar area.#define MENU_HEIGHT 26 RECT rect; GetWindowRect(&rect); rect.top -= MENU_HEIGHT; MoveWindow(&rect, TRUE);위의 코드는 전체 화면을 실현할 수 있지만, 내가 사용하는 과정에서 대화상자의 제목 표시줄이 사라진 것을 발견하였다.왠지...2. 클라이언트 전체 화면 CHikConfigDlg configDlg;
CRect rc;
SetRect( &rc, 0, 0, GetSystemMetrics( SM_CXSCREEN ), GetSystemMetrics( SM_CYSCREEN ) );//메뉴 표시줄 숨기기
//HWND hCommandBarWnd =::FindWindowW( _T("menu_worker"), NULL );
//::CommandBar_Show(hCommandBarWnd, FALSE);
::SHFullScreen( configDlg.m_hWnd, SHFS_HIDETASKBAR | SHFS_HIDESTARTICON | SHFS_HIDESIPBUTTON );
::MoveWindow( configDlg.m_hWnd, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, FALSE );
INT_PTR nResponse = configDlg.DoModal();
if ( nResponse == IDOK ) {
} 위의 코드를 호출합니다. 생성된 CHikConfig Dlg 대화상자는 클라이언트 구역 내 전체 화면입니다.
3.
최근에 제가 만든 것은camera 응용 프로그램입니다. 프로그램이 시작된 후에 전체 화면화 효과를 실현해야 하기 때문에 인터넷과 MSDN에서 찾아봤는데 다음과 같은 코드를 제시했습니다.
DWORD dwState = ( SHFS_HIDETASKBAR | SHFS_HIDESTARTICON | SHFS_HIDESIPBUTTON );
SHFullScreen( m_hWnd, dwState );
CRect rc;
SetRect( &rc, 0, 0, GetSystemMetrics( SM_CXSCREEN ),
GetSystemMetrics( SM_CYSCREEN ) );
SetWindowPos( &wndTopMost, 0, 0, rc.Width(), rc.Height(), SWP_SHOWWINDOW );
테스트를 할 때 이 코드는 전체 화면화 효과를 완전히 실현할 수 없고 화면 밑에 있는 입력 표시줄은 항상 제거할 수 없다는 것을 발견했다.spy를 통해 관찰한 결과, 일부 난간은 유형이 menu 인 것을 발견하였다.워크맨의 창은 화면에 있는 모든 요소가 하나의 창이기 때문에 이 창을 숨기는 방법으로 진정한 전체 화면화를 실현하고 프로그램을 종료할 때 이 창을 다시 표시합니다.
CWnd* pWndSIP = FindWindow( _T("menu_worker"), 0 );
if ( pWndSIP )
{
//pWndSIP->SetWindowPos(&wndBottom , 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
pWndSIP->ShowWindow(SW_HIDE);
}
주의해야 할 것은 윈도우즈 모바일 5.0에서 하나의 유형이 menu 가 아니라는 것이다worker의 창입니다. 따라서 Enum Windows 방법을 사용하여 모든 창을 찾은 다음 숨겨야 합니다.프로그램을 종료할 때 모든 창을 다시 복원합니다
기사 출처: 피노망(www.firnow.com):http://dev.firnow.com/course/3_program/jdkf/20071028/80792.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
제한된 크기의 디렉토리를 만드는 방법오늘 저는 장치에 공간이 없을 때 백업 중에 응용 프로그램이 어떻게 작동하는지 테스트(및 수정)하는 작업이 있습니다. 결과적으로 "남은 공간 없음"오류로 백업이 실패하면 새 파일이 없어야 합니다. 지금까지 문제를 재...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.