SIPを消そう
■用語はこんな感じみたいです。
なにもしないで、プログラムを作成するとSIPの部分が残ってしまいます。
■SIPを消すプログラム
#include <windows.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); #define PROC_NAME L"ProcSample05" #include <aygshell.h> #pragma comment( lib, "aygshell.lib" ) //---------------------------------------------------------------- int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPreInst, LPWSTR lpszCmdLine, int nCmdShow ) { HWND hwnd; MSG msg; WNDCLASS myProg; if (!hPreInst) { myProg.style = CS_HREDRAW | CS_VREDRAW; myProg.lpfnWndProc = WndProc; myProg.cbClsExtra = 0; myProg.cbWndExtra = 0; myProg.hInstance = hInstance; myProg.hIcon = NULL; myProg.hCursor = NULL; myProg.hbrBackground = (HBRUSH)COLOR_WINDOW; myProg.lpszMenuName = NULL; myProg.lpszClassName = PROC_NAME; if (!RegisterClass( &myProg )){ return FALSE; } } hwnd = CreateWindow( PROC_NAME, L"Sample05", WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); ShowWindow( hwnd, nCmdShow ); UpdateWindow( hwnd ); do{ if(PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE )) { TranslateMessage( &msg ); DispatchMessage( &msg ); } } while(msg.message != WM_QUIT); return (int)( msg.wParam ); } //---------------------------------------------------------------- LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { HDC hdc; PAINTSTRUCT paintSt; switch (msg) { case WM_CREATE: SetForegroundWindow(hwnd); SHFullScreen(hwnd, SHFS_HIDESIPBUTTON ); break; case WM_PAINT: hdc = BeginPaint( hwnd, &paintSt ); EndPaint( hwnd, &paintSt ); break; case WM_DESTROY: PostQuitMessage( 0 ); break; default: return(DefWindowProc( hwnd, msg, wParam, lParam )); } return (0L); }
初期化でSIPを消すように設定するだけです。
case WM_CREATE: SetForegroundWindow(hwnd); SHFullScreen(hwnd, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON | SHFS_HIDESTARTICON); break;
■もうちょっと初期化をいじって
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { SHINITDLGINFO shidi; HDC hdc; PAINTSTRUCT paintSt; switch (msg) { case WM_CREATE: shidi.hDlg = hwnd; shidi.dwMask = SHIDIM_FLAGS; shidi.dwFlags = SHIDIF_FULLSCREENNOMENUBAR; SHInitDialog(&shidi); SetForegroundWindow(hwnd); SHFullScreen(hwnd, SHFS_HIDESIPBUTTON); break; : :
■そしてFULLスクリーン
FULLスクリーンはこれでできるみたいだけど、あまりお勧めできないですね
//---------------------------------------------------------------- LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { #define MENU_HEIGHT 48 SHINITDLGINFO shidi; HDC hdc; PAINTSTRUCT paintSt; RECT rc; switch (msg) { case WM_CREATE: shidi.hDlg = hwnd; shidi.dwMask = SHIDIM_FLAGS; shidi.dwFlags = SHIDIF_FULLSCREENNOMENUBAR; SHInitDialog(&shidi); GetWindowRect( hwnd, &rc); MoveWindow( hwnd, rc.left, rc.top - MENU_HEIGHT, rc.right, rc.bottom + MENU_HEIGHT, TRUE); SetForegroundWindow(hwnd); SHFullScreen(hwnd, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON); : :