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);
                :
                :