Win32ティプス

再起動時にファイル削除

Windowsの再起動時にファイルを削除するには,MoveFileEx()関数を使う:

MoveFileEx(<filename>, NULL, MOVEFILE_DELAY_UNTIL_REBOOT);

<filename>には,このコードを実行する実行ファイル(自分自身)を指定することも可能。

ウィンドウのフルスクリーン化

DEVMODE temp;

#ifdef __STDC__
BOOL fullscreen(HWND hWnd);
#else
BOOL fullscreen();
#endif

BOOL
fullscreen(hWnd)
HWND hWnd;
{
  DEVMODE devmode;
  HDC hDC = GetDC(0);

  temp.dmSize = sizeof(DEVMODE);
  temp.dmPelsWidth  = GetDeviceCaps(hDC, HORZRES);
  temp.dmPelsHeight = GetDeviceCaps(hDC, VERTRES);
  temp.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;

  if ((GetVersion() & 0x80000000) == 0)
  {
    temp.dmFields |= DM_DISPLAYFREQUENCY;
    temp.dmDisplayFrequency = GetDeviceCaps(hDC, VREFRESH);
  }

  ReleaseDC(0, hDC);

  /* main */
  devmode = temp;
  devmode.dmPelsWidth = 640;
  devmode.dmPelsHeight = 480;
  devmode.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;

  if (SetWindowLong(hWnd, GWL_STYLE, WS_VISIBLE))
  {
    if (ChangeDisplaySettings(&devmode, CDS_FULLSCREEN) == DISP_CHANGE_SUCCESSFUL)
    {
      if (SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 640, 480, SWP_SHOWWINDOW))
      {
        return(TRUE);
      }
    }
  }

  return(FALSE);
}

fullscreen()関数にウィンドウ・ハンドルを引数として渡せばフルスクリーン化される。プログラムを終了するときに:

ChangeDisplaySettings(&temp, 0);

をコールしてフルスクリーン状態を解除する必要がある。