「Windows」を含む日記 RSS

はてなキーワード: Windowsとは

2019-01-05

anond:20190105102848

じーちゃんばーちゃんiPadWindowsタブレット渡す。

使い方

・悩まないように使うアプリだけホーム画面(デスクトップ)におく
・使い方を絵付きで大きな文で紙に書いておく

端末のトラブル

自身出張する手間に比べたら大した額じゃないのでケチらず大手キャリアメーカーで買ってなんでもサポートつけとく
・その上で遠隔ソフト(TeamViewerでもなんでもいい)入れとく。ネットワーク死なない限り大体なんとかなる

ネットワークトラブル

自身出張する手間に比べたら大した額じゃないので大手プロバイダケチらず契約する>費用負担する
ルータパスワードSSIDルータに大きく書いて貼っておく
ルータの機種名を大きくルビ書いて貼っておく
ネットが出来なくなったらすることを大きな字で紙に書いておく

例)

 1. タブレットWi-Fiマークは出ているか? Wi-Fiマークが出ていない場合ルータ再起動する。それでもWi-Fiマークが出ない場合ルータを子か孫へセンドバック

 2. タブレットWi-Fiマークは出ているがネットが繋がらない場合は、まず、 IPが192.168.〜が取れているか確認する。取れていない場合ルータ再起動してからもう一度確認する。それでもダメ場合は子か孫へルータをセンドバック

 3. Wi-FiタブレットWi-Fiマークは出ていてIPも192.168〜が取れている場合プロバイダのなんでもサポート電話

2019-01-04

anond:20190104004632

逆だよ

プログラマとして働く場合、多くの場合Linux上でJAVA程度の知識がありゃイケるのに、メインフレームCOBOLとかWindowsパワーシェルプログラムとか、ぜ~んぶ覚えないとプログラマになれない、とかそっちの方が厳しくて死ぬ

更に言えば「次の案件は◯◯の●●ですよ」と言われたら、その仕事が始まる前までにそれらの基本を一通りマスターしとくのがプログラマであって、逆に仕事もなしで全部覚えるなんてプロセス踏んでいられない、というかそんなのしたら死ぬ

2019-01-03

anond:20190103200943

Windows 10IMEでは「ー」から変換しても「~」から変換しても全角チルダ~が出てくる。〜を出したいときは「なみだっしゅ」と打つか「からから変換して後のほうの候補で[機種依存]と書かれているものを選ぶ必要がある。

Linux上のmozc(2.23.2815.102+24.2.oss)では「ー」から変換しても「~」から変換しても波ダッシュ〜が出てくる。チルダから変換して全角チルダが出ないのはよろしくない気がする。全角チルダを出したいときは「ちるだ」と打って変換する必要がある。

WindowsLinuxを混在させる時は注意が必要

anond:20190103184241

// WindowsProject7.cpp: アプリケーションエントリ ポイント定義します。
//

#include "stdafx.h"
#include "WindowsProject7.h"

#define MAX_LOADSTRING 100

// グローバル変数:
HINSTANCE hInst;                                // 現在インターフェイス
WCHAR szTitle[MAX_LOADSTRING];                  // タイトル バーテキスト
WCHAR szWindowClass[MAX_LOADSTRING];            // メイン ウィンドウ クラス名

// このコード モジュールに含まれ関数宣言転送します:
//ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);

#include <list>

class MyWindow;
	
std::list< MyWindow *> windows;

class MyWindow
{
public:

	HWND hWnd;



	MyWindow()
		:hWnd(NULL)
	{
		windows.push_back(this);
	}

	virtual ~MyWindow()
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			if (*it == this)
			{
				windows.erase(it);
				break;
			}
		}
	}

	static MyWindow * find(HWND key)
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			MyWindow *target = *it;

			if (target->hWnd == key)
			{
				return target;
			}

		}

		return NULL;
	}



	//
	//  関数: MyRegisterClass()
	//
	//  目的: ウィンドウ クラス登録します。
	//
	ATOM MyRegisterClass(HINSTANCE hInstance)
	{
		WNDCLASSEXW wcex;

		wcex.cbSize = sizeof(WNDCLASSEX);

		wcex.style = CS_HREDRAW | CS_VREDRAW;
		wcex.lpfnWndProc = WndProc;
		wcex.cbClsExtra = 0;
		wcex.cbWndExtra = 0;
		wcex.hInstance = hInstance;
		wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT7));
		wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
		wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
		wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT7);
		wcex.lpszClassName = szWindowClass;
		wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

		return RegisterClassExW(&wcex);
	}

	//
	//   関数: InitInstance(HINSTANCE, int)
	//
	//   目的: インスタンス ハンドルを保存して、メイン ウィンドウ作成します。
	//
	//   コメント:
	//
	//        この関数で、グローバル変数インスタンス ハンドルを保存し、
	//        メイン プログラム ウィンドウ作成および表示します。
	//

	int blocks[100][100];

	BOOL InitInstance()
	{
		hInst = hInstance; // グローバル変数インスタンス処理を格納します。

		ATOM c = MyRegisterClass(hInstance);
		x = 0;
		y = 0;
		boxType = 0;

		hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
			CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);

		for(int x = 0 ; x < 100 ; x++)
		{
			for (int y = 0; y < 100; y++)
			{
				blocks[y][x] = 0;
			}
		}

		if (!hWnd)
		{
			return FALSE;
		}

		return TRUE;
	}

	BOOL ShowWindow()
	{
		BOOL ret;
		ret = ::ShowWindow(hWnd, SW_SHOW);
		::UpdateWindow(hWnd);

		return ret;
	}


	HINSTANCE hInstance;
	MSG msg;
	BOOL run;
	int x;
	int y;
	BOOL Main()
	{

		HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT7));
		run = true;
		int rc;
		// メイン メッセージ ループ:
		while (run)
		{
			DWORD obj = MsgWaitForMultipleObjectsEx(0, NULL,  100 , QS_PAINT| QS_ALLEVENTS,0);
			if (obj <= WAIT_OBJECT_0)
			{
				while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
				{
					if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
					{
						TranslateMessage(&msg);
						DispatchMessage(&msg);
					}
					if (msg.message == WM_QUIT) {
						run = FALSE;
					}
					if (msg.message == WM_CLOSE) {
						run = FALSE;
					}

				}
			}
			else if (obj == WAIT_TIMEOUT)
			{
				y++;
				PAINTSTRUCT ps;
				HDC hdc = BeginPaint(hWnd, &ps);
				this->OnPaint(ps);
				EndPaint(hWnd, &ps);
				::UpdateWindow(hWnd);
				RECT Rect2 = { 0,0,48*9,48 * 100 };
				InvalidateRect(hWnd, &Rect2, TRUE);
			}
			else if (obj == WAIT_FAILED)
			{
				rc = GetLastError();
			}
			else {

			}
		}


		return TRUE;

	}

	int boxType;

	BOOL WriteBoxOLDBox()
	{
		int width = 24;

		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 48));
		for (int y = 0; y < 30; y++)
		{
			for (int x = 0; x < 8; x++)
			{
				if (blocks[y][x] == 0)
				{
					continue;
				}

				RECT Rect = { 0,0,48,48 };
				BOOL ret;

				Rect.left = width * x + 1;
				Rect.right = width * (x + 1) - 1;
				Rect.top = width * y + 1;
				Rect.bottom = width * (y + 1) - 1;

				ret = FillRect(hdc, &Rect, hBrush);


			}
		}

		DeleteObject(hBrush);

		return FALSE;
	}


	BOOL WriteBox()
	{
		WriteBoxOLDBox();

		switch (boxType)
		{
		case 0:
			return WriteBoxI();
		case 1:
			return WriteBoxL();
		case 2:
			return WriteBoxZ();

		}

		return TRUE;
	}

	BOOL WriteBoxZ()
	{
		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246));

		int width = 24;

		RECT Rect = { 0,0,48,48 };
		BOOL ret;

		Rect.left = width * x + 1;
		Rect.right = width * (x + 1) - 1;
		Rect.top = width * y + 1;
		Rect.bottom = width * (y + 1) - 1;

		ret = FillRect(hdc, &Rect, hBrush);


		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.left += width;
		Rect.right += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);


		DeleteObject(hBrush);

		return TRUE;
	}


	BOOL WriteBoxL()
	{
		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 246 , 48));

		int width = 24;

		RECT Rect = { 0,0,48,48 };
		BOOL ret;

		Rect.left = width * x + 1;
		Rect.right = width * (x + 1) -1 ;
		Rect.top = width * y + 1;
		Rect.bottom = width * (y + 1) -1;

		ret = FillRect(hdc, &Rect, hBrush);


		Rect.top    += width; 
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.left   += width;
		Rect.right  += width;
		ret = FillRect(hdc, &Rect, hBrush);

		DeleteObject(hBrush);

		return TRUE;
	}

	BOOL WriteBoxI()
	{
		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB( 246 , 48 , 48));

		int width = 24;

		RECT Rect = { 0,0,48,48 };
		BOOL ret;

		Rect.left = width * x + 1;
		Rect.right = width * (x + 1) - 1;
		Rect.top = width * y + 1;
		Rect.bottom = width * (y + 1) - 1;

		ret = FillRect(hdc, &Rect, hBrush);


		//Rect.left   += width;
		//Rect.right  += width;
		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		DeleteObject(hBrush);

		return TRUE;
	}

	BOOL SaveBoxI()
	{
		blocks[y  ][x] = 1;
		blocks[y+1][x] = 1;
		blocks[y+2][x] = 1;
		blocks[y+3][x] = 1;
		return TRUE;
	}


	BOOL OnPaint(PAINTSTRUCT &ps)
	{
		if (x > 8) {
			x = 0;
		}
		if (x <0) {
			x = 8;
		}
		if (y > 20) {
			switch (boxType)
			{
			case 0:
				SaveBoxI();
				break;
			case 1:
				break;
			case 2:
				break;
			}

			y = 0;
			boxType++;
			if (boxType > 2)
			{
				boxType = 0;
			}
		}

		this->WriteBox();

		return TRUE;
	}



	BOOL OnKey(WPARAM wParam)
	{
		if (wParam == VK_LEFT)
		{
			x++;
		}
		if (wParam == VK_RIGHT)
		{
			x--;
		}
		return TRUE;
	}


};


int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPWSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    // TODO: ここにコードを挿入してください。

    // グローバル文字列初期化しています。
    LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadStringW(hInstance, IDC_WINDOWSPROJECT7, szWindowClass, MAX_LOADSTRING);
    //MyRegisterClass(hInstance);



	MyWindow win;



	win.hInstance = hInstance;

	// アプリケーション初期化を実行します:
	if (!win.InitInstance())
	{
		return FALSE;
	}

	BOOL ret;

	win.ShowWindow();

	ret = win.Main();

	if (ret)
	{
		return 0;
	}else {
		return (int)win.msg.wParam;
	}



}






//
//  関数: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  目的:    メイン ウィンドウメッセージを処理します。
//
//  WM_COMMAND  - アプリケーション メニューの処理
//  WM_PAINT    - メイン ウィンドウの描画
//  WM_DESTROY  - 中止メッセージを表示して戻る
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // 選択されたメニューの解析:
            switch (wmId)
            {
            case IDM_ABOUT:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                break;
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
            default:
                return DefWindowProc(hWnd, message, wParam, lParam);
            }
        }
		break;
	case WM_KEYDOWN:
		{
			MyWindow *target = MyWindow::find(hWnd);
			target->OnKey(wParam);
		}
	break;
    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hWnd, &ps);

			MyWindow *target = MyWindow::find(hWnd);
			target->OnPaint(ps);


            // TODO: HDC を使用する描画コードをここに追加してください...
            EndPaint(hWnd, &ps);
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

// バージョン情報ボックスメッセージ ハンドラーです。
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}

anond:20190103170543

テトリス

落ちてくるブロックの描き方

わかりやす関数化してみた

まずはブロックの種類は3種類

 

WriteBoxLとWriteBoxIとWriteBoxZ

の違いをよく見比べて

自力で違いがわかれば

プログラマーにはなれるとおもう

とはいえ、コレを自力でわかるならもっと儲かる仕事あるとはおもうけどな

 

	BOOL WriteBox()
	{
		switch (boxType)
		{
		case 0:
			return WriteBoxI();
		case 1:
			return WriteBoxL();
		case 2:
			return WriteBoxZ();

		}
	}
// WindowsProject7.cpp: アプリケーションエントリ ポイント定義します。
//

#include "stdafx.h"
#include "WindowsProject7.h"

#define MAX_LOADSTRING 100

// グローバル変数:
HINSTANCE hInst;                                // 現在インターフェイス
WCHAR szTitle[MAX_LOADSTRING];                  // タイトル バーテキスト
WCHAR szWindowClass[MAX_LOADSTRING];            // メイン ウィンドウ クラス名

// このコード モジュールに含まれ関数宣言転送します:
//ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);

#include <list>

class MyWindow;
	
std::list< MyWindow *> windows;

class MyWindow
{
public:

	HWND hWnd;



	MyWindow()
		:hWnd(NULL)
	{
		windows.push_back(this);
	}

	virtual ~MyWindow()
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			if (*it == this)
			{
				windows.erase(it);
				break;
			}
		}
	}

	static MyWindow * find(HWND key)
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			MyWindow *target = *it;

			if (target->hWnd == key)
			{
				return target;
			}

		}

		return NULL;
	}



	//
	//  関数: MyRegisterClass()
	//
	//  目的: ウィンドウ クラス登録します。
	//
	ATOM MyRegisterClass(HINSTANCE hInstance)
	{
		WNDCLASSEXW wcex;

		wcex.cbSize = sizeof(WNDCLASSEX);

		wcex.style = CS_HREDRAW | CS_VREDRAW;
		wcex.lpfnWndProc = WndProc;
		wcex.cbClsExtra = 0;
		wcex.cbWndExtra = 0;
		wcex.hInstance = hInstance;
		wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT7));
		wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
		wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
		wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT7);
		wcex.lpszClassName = szWindowClass;
		wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

		return RegisterClassExW(&wcex);
	}

	//
	//   関数: InitInstance(HINSTANCE, int)
	//
	//   目的: インスタンス ハンドルを保存して、メイン ウィンドウ作成します。
	//
	//   コメント:
	//
	//        この関数で、グローバル変数インスタンス ハンドルを保存し、
	//        メイン プログラム ウィンドウ作成および表示します。
	//
	BOOL InitInstance()
	{
		hInst = hInstance; // グローバル変数インスタンス処理を格納します。

		ATOM c = MyRegisterClass(hInstance);
		x = 0;
		y = 0;
		boxType = 0;

		hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
			CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);

		if (!hWnd)
		{
			return FALSE;
		}

		return TRUE;
	}

	BOOL ShowWindow()
	{
		BOOL ret;
		ret = ::ShowWindow(hWnd, SW_SHOW);
		::UpdateWindow(hWnd);

		return ret;
	}


	HINSTANCE hInstance;
	MSG msg;
	BOOL run;
	int x;
	int y;
	BOOL Main()
	{

		HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT7));
		run = true;
		int rc;
		// メイン メッセージ ループ:
		while (run)
		{
			DWORD obj = MsgWaitForMultipleObjectsEx(0, NULL,  100 , QS_PAINT| QS_ALLEVENTS,0);
			if (obj <= WAIT_OBJECT_0)
			{
				while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
				{
					if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
					{
						TranslateMessage(&msg);
						DispatchMessage(&msg);
					}
					if (msg.message == WM_QUIT) {
						run = FALSE;
					}
					if (msg.message == WM_CLOSE) {
						run = FALSE;
					}

				}
			}
			else if (obj == WAIT_TIMEOUT)
			{
				y++;
				PAINTSTRUCT ps;
				HDC hdc = BeginPaint(hWnd, &ps);
				this->OnPaint(ps);
				EndPaint(hWnd, &ps);
				::UpdateWindow(hWnd);
				RECT Rect2 = { 0,0,48*9,48 * 8 };
				InvalidateRect(hWnd, &Rect2, TRUE);
			}
			else if (obj == WAIT_FAILED)
			{
				rc = GetLastError();
			}
			else {

			}
		}


		return TRUE;

	}

	int boxType;

	BOOL WriteBox()
	{
		switch (boxType)
		{
		case 0:
			return WriteBoxI();
		case 1:
			return WriteBoxL();
		case 2:
			return WriteBoxZ();

		}
	}

	BOOL WriteBoxZ()
	{
		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246));

		int width = 24;

		RECT Rect = { 0,0,48,48 };
		BOOL ret;

		Rect.left = width * x + 1;
		Rect.right = width * (x + 1) - 1;
		Rect.top = width * y + 1;
		Rect.bottom = width * (y + 1) - 1;

		ret = FillRect(hdc, &Rect, hBrush);


		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.left += width;
		Rect.right += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);


		DeleteObject(hBrush);

		return TRUE;
	}


	BOOL WriteBoxL()
	{
		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246));

		int width = 24;

		RECT Rect = { 0,0,48,48 };
		BOOL ret;

		Rect.left = width * x + 1;
		Rect.right = width * (x + 1) -1 ;
		Rect.top = width * y + 1;
		Rect.bottom = width * (y + 1) -1;

		ret = FillRect(hdc, &Rect, hBrush);


		Rect.top    += width; 
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.left   += width;
		Rect.right  += width;
		ret = FillRect(hdc, &Rect, hBrush);

		DeleteObject(hBrush);

		return TRUE;
	}

	BOOL WriteBoxI()
	{
		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246));

		int width = 24;

		RECT Rect = { 0,0,48,48 };
		BOOL ret;

		Rect.left = width * x + 1;
		Rect.right = width * (x + 1) - 1;
		Rect.top = width * y + 1;
		Rect.bottom = width * (y + 1) - 1;

		ret = FillRect(hdc, &Rect, hBrush);


		//Rect.left   += width;
		//Rect.right  += width;
		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		DeleteObject(hBrush);

		return TRUE;
	}


	BOOL OnPaint(PAINTSTRUCT &ps)
	{
		if (x > 8) {
			x = 0;
		}
		if (x <0) {
			x = 8;
		}
		if (y > 8) {
			y = 0;
			boxType++;
			if (boxType > 2)
			{
				boxType = 0;
			}
		}

		this->WriteBox();

		return TRUE;
	}



	BOOL OnKey()
	{
		x++;
		return TRUE;
	}


};


int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPWSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    // TODO: ここにコードを挿入してください。

    // グローバル文字列初期化しています。
    LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadStringW(hInstance, IDC_WINDOWSPROJECT7, szWindowClass, MAX_LOADSTRING);
    //MyRegisterClass(hInstance);



	MyWindow win;



	win.hInstance = hInstance;

	// アプリケーション初期化を実行します:
	if (!win.InitInstance())
	{
		return FALSE;
	}

	BOOL ret;

	win.ShowWindow();

	ret = win.Main();

	if (ret)
	{
		return 0;
	}else {
		return (int)win.msg.wParam;
	}



}






//
//  関数: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  目的:    メイン ウィンドウメッセージを処理します。
//
//  WM_COMMAND  - アプリケーション メニューの処理
//  WM_PAINT    - メイン ウィンドウの描画
//  WM_DESTROY  - 中止メッセージを表示して戻る
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // 選択されたメニューの解析:
            switch (wmId)
            {
            case IDM_ABOUT:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                break;
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
            default:
                return DefWindowProc(hWnd, message, wParam, lParam);
            }
        }
		break;
	case WM_KEYDOWN:
		{
			MyWindow *target = MyWindow::find(hWnd);
			target->OnKey();
		}
	break;
    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hWnd, &ps);

			MyWindow *target = MyWindow::find(hWnd);
			target->OnPaint(ps);


            // TODO: HDC を使用する描画コードをここに追加してください...
            EndPaint(hWnd, &ps);
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

// バージョン情報ボックスメッセージ ハンドラーです。
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}

anond:20190103151128

https://anond.hatelabo.jp/20190103154644

 

だいたい一式 せつめいもついてる

いまなら、Q&Aがあるていど 無料でついてくる(w)

><が <とかに置き換わってるけど

一番最初に 無料の 環境DLの仕方が書いてあるから

それDLしてうちこみゃいい

Windows PCもってなければごめん

anond:20190101175055

テトリス風?プログラムに向けて

第何回だろうな

キー入力を追加した

まだ、何を押してもブロックが右に移動するだけ(右端にいくと左にワープ

タイマー自動落下

 

でもまぁ ここまでサンプルがあるとほぼテトリスは見えてきた

// WindowsProject7.cpp: アプリケーションエントリ ポイント定義します。
//

#include "stdafx.h"
#include "WindowsProject7.h"

#define MAX_LOADSTRING 100

// グローバル変数:
HINSTANCE hInst;                                // 現在インターフェイス
WCHAR szTitle[MAX_LOADSTRING];                  // タイトル バーテキスト
WCHAR szWindowClass[MAX_LOADSTRING];            // メイン ウィンドウ クラス名

// このコード モジュールに含まれ関数宣言転送します:
//ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);

#include <list>

class MyWindow;
	
std::list< MyWindow *> windows;

class MyWindow
{
public:

	HWND hWnd;



	MyWindow()
		:hWnd(NULL)
	{
		windows.push_back(this);
	}

	virtual ~MyWindow()
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			if (*it == this)
			{
				windows.erase(it);
				break;
			}
		}
	}

	static MyWindow * find(HWND key)
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			MyWindow *target = *it;

			if (target->hWnd == key)
			{
				return target;
			}

		}

		return NULL;
	}



	//
	//  関数: MyRegisterClass()
	//
	//  目的: ウィンドウ クラス登録します。
	//
	ATOM MyRegisterClass(HINSTANCE hInstance)
	{
		WNDCLASSEXW wcex;

		wcex.cbSize = sizeof(WNDCLASSEX);

		wcex.style = CS_HREDRAW | CS_VREDRAW;
		wcex.lpfnWndProc = WndProc;
		wcex.cbClsExtra = 0;
		wcex.cbWndExtra = 0;
		wcex.hInstance = hInstance;
		wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT7));
		wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
		wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
		wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT7);
		wcex.lpszClassName = szWindowClass;
		wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

		return RegisterClassExW(&wcex);
	}

	//
	//   関数: InitInstance(HINSTANCE, int)
	//
	//   目的: インスタンス ハンドルを保存して、メイン ウィンドウ作成します。
	//
	//   コメント:
	//
	//        この関数で、グローバル変数インスタンス ハンドルを保存し、
	//        メイン プログラム ウィンドウ作成および表示します。
	//
	BOOL InitInstance()
	{
		hInst = hInstance; // グローバル変数インスタンス処理を格納します。

		ATOM c = MyRegisterClass(hInstance);
		x = 0;
		y = 0;

		hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
			CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);

		if (!hWnd)
		{
			return FALSE;
		}

		return TRUE;
	}

	BOOL ShowWindow()
	{
		BOOL ret;
		ret = ::ShowWindow(hWnd, SW_SHOW);
		::UpdateWindow(hWnd);

		return ret;
	}


	HINSTANCE hInstance;
	MSG msg;
	BOOL run;
	int x;
	int y;
	BOOL Main()
	{

		HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT7));
		run = true;
		int rc;
		// メイン メッセージ ループ:
		while (run)
		{
			DWORD obj = MsgWaitForMultipleObjectsEx(0, NULL,  100 , QS_PAINT| QS_ALLEVENTS,0);
			if (obj <= WAIT_OBJECT_0)
			{
				while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
				{
					if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
					{
						TranslateMessage(&msg);
						DispatchMessage(&msg);
					}
					if (msg.message == WM_QUIT) {
						run = FALSE;
					}
					if (msg.message == WM_CLOSE) {
						run = FALSE;
					}

				}
			}
			else if (obj == WAIT_TIMEOUT)
			{
				y++;
				PAINTSTRUCT ps;
				HDC hdc = BeginPaint(hWnd, &ps);
				this->OnPaint(ps);
				EndPaint(hWnd, &ps);
				::UpdateWindow(hWnd);
				RECT Rect2 = { 0,0,48*9,48 * 8 };
				InvalidateRect(hWnd, &Rect2, TRUE);
			}
			else if (obj == WAIT_FAILED)
			{
				rc = GetLastError();
			}
			else {

			}
		}


		return TRUE;

	}

	BOOL OnPaint(PAINTSTRUCT &ps)
	{
		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246));
		RECT Rect = { 0,0,48,48 };
		Rect.left = 48 * x;
		Rect.right = 48 * (x+1);
		Rect.top = 48 * y;
		Rect.bottom = 48 * (y+1);
		if (x > 8) {
			x = 0;
		}
		if (x <0) {
			x = 8;
		}
		if (y > 8) {
			y = 0;
		}
		BOOL ret = FillRect(ps.hdc, &Rect, hBrush);
		DeleteObject(hBrush);

		return TRUE;
	}

	BOOL OnKey()
	{
		x++;
		return TRUE;
	}


};


int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPWSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    // TODO: ここにコードを挿入してください。

    // グローバル文字列初期化しています。
    LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadStringW(hInstance, IDC_WINDOWSPROJECT7, szWindowClass, MAX_LOADSTRING);
    //MyRegisterClass(hInstance);



	MyWindow win;



	win.hInstance = hInstance;

	// アプリケーション初期化を実行します:
	if (!win.InitInstance())
	{
		return FALSE;
	}

	BOOL ret;

	win.ShowWindow();

	ret = win.Main();

	if (ret)
	{
		return 0;
	}else {
		return (int)win.msg.wParam;
	}



}






//
//  関数: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  目的:    メイン ウィンドウメッセージを処理します。
//
//  WM_COMMAND  - アプリケーション メニューの処理
//  WM_PAINT    - メイン ウィンドウの描画
//  WM_DESTROY  - 中止メッセージを表示して戻る
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // 選択されたメニューの解析:
            switch (wmId)
            {
            case IDM_ABOUT:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                break;
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
            default:
                return DefWindowProc(hWnd, message, wParam, lParam);
            }
        }
		break;
	case WM_KEYDOWN:
		{
			MyWindow *target = MyWindow::find(hWnd);
			target->OnKey();
		}
	break;
    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hWnd, &ps);

			MyWindow *target = MyWindow::find(hWnd);
			target->OnPaint(ps);


            // TODO: HDC を使用する描画コードをここに追加してください...
            EndPaint(hWnd, &ps);
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

// バージョン情報ボックスメッセージ ハンドラーです。
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}

2019-01-01

anond:20190101172100

タイマーを使ったアニメーションを付けた

// WindowsProject7.cpp: アプリケーションエントリ ポイント定義します。
//

#include "stdafx.h"
#include "WindowsProject7.h"

#define MAX_LOADSTRING 100

// グローバル変数:
HINSTANCE hInst;                                // 現在インターフェイス
WCHAR szTitle[MAX_LOADSTRING];                  // タイトル バーテキスト
WCHAR szWindowClass[MAX_LOADSTRING];            // メイン ウィンドウ クラス名

// このコード モジュールに含まれ関数宣言転送します:
//ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);

#include <list>

class MyWindow;
	
std::list< MyWindow *> windows;

class MyWindow
{
public:

	HWND hWnd;



	MyWindow()
		:hWnd(NULL)
	{
		windows.push_back(this);
	}

	virtual ~MyWindow()
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			if (*it == this)
			{
				windows.erase(it);
				break;
			}
		}
	}

	static MyWindow * find(HWND key)
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			MyWindow *target = *it;

			if (target->hWnd == key)
			{
				return target;
			}

		}

		return NULL;
	}



	//
	//  関数: MyRegisterClass()
	//
	//  目的: ウィンドウ クラス登録します。
	//
	ATOM MyRegisterClass(HINSTANCE hInstance)
	{
		WNDCLASSEXW wcex;

		wcex.cbSize = sizeof(WNDCLASSEX);

		wcex.style = CS_HREDRAW | CS_VREDRAW;
		wcex.lpfnWndProc = WndProc;
		wcex.cbClsExtra = 0;
		wcex.cbWndExtra = 0;
		wcex.hInstance = hInstance;
		wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT7));
		wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
		wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
		wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT7);
		wcex.lpszClassName = szWindowClass;
		wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

		return RegisterClassExW(&wcex);
	}

	//
	//   関数: InitInstance(HINSTANCE, int)
	//
	//   目的: インスタンス ハンドルを保存して、メイン ウィンドウ作成します。
	//
	//   コメント:
	//
	//        この関数で、グローバル変数インスタンス ハンドルを保存し、
	//        メイン プログラム ウィンドウ作成および表示します。
	//
	BOOL InitInstance()
	{
		hInst = hInstance; // グローバル変数インスタンス処理を格納します。

		ATOM c = MyRegisterClass(hInstance);
		y = 0;

		hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
			CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);

		if (!hWnd)
		{
			return FALSE;
		}

		return TRUE;
	}

	BOOL ShowWindow()
	{
		BOOL ret;
		ret = ::ShowWindow(hWnd, SW_SHOW);
		::UpdateWindow(hWnd);

		return ret;
	}


	HINSTANCE hInstance;
	MSG msg;
	BOOL run;
	int y;
	BOOL Main()
	{

		HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT7));
		run = true;
		int rc;
		// メイン メッセージ ループ:
		while (run)
		{
			DWORD obj = MsgWaitForMultipleObjectsEx(0, NULL,  100 , QS_PAINT| QS_ALLEVENTS,0);
			if (obj <= WAIT_OBJECT_0)
			{
				while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
				{
					if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
					{
						TranslateMessage(&msg);
						DispatchMessage(&msg);
					}
					if (msg.message == WM_QUIT) {
						run = FALSE;
					}
					if (msg.message == WM_CLOSE) {
						run = FALSE;
					}

				}
			}
			else if (obj == WAIT_TIMEOUT)
			{
				y++;
				PAINTSTRUCT ps;
				HDC hdc = BeginPaint(hWnd, &ps);
				this->OnPaint(ps);
				EndPaint(hWnd, &ps);
				::UpdateWindow(hWnd);
				RECT Rect2 = { 0,0,48,48 * 8 };
				InvalidateRect(hWnd, &Rect2, TRUE);
			}
			else if (obj == WAIT_FAILED)
			{
				rc = GetLastError();
			}
			else {

			}
		}


		return TRUE;

	}

	BOOL OnPaint(PAINTSTRUCT &ps)
	{
		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246));
		RECT Rect = { 0,0,48,48 };
		Rect.top = 48 * y;
		Rect.bottom = 48 * (y+1);
		if (y > 8) {
			y = 0;
		}
		BOOL ret = FillRect(ps.hdc, &Rect, hBrush);
		DeleteObject(hBrush);

		return TRUE;
	}


};


int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPWSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    // TODO: ここにコードを挿入してください。

    // グローバル文字列初期化しています。
    LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadStringW(hInstance, IDC_WINDOWSPROJECT7, szWindowClass, MAX_LOADSTRING);
    //MyRegisterClass(hInstance);



	MyWindow win;



	win.hInstance = hInstance;

	// アプリケーション初期化を実行します:
	if (!win.InitInstance())
	{
		return FALSE;
	}

	BOOL ret;

	win.ShowWindow();

	ret = win.Main();

	if (ret)
	{
		return 0;
	}else {
		return (int)win.msg.wParam;
	}



}






//
//  関数: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  目的:    メイン ウィンドウメッセージを処理します。
//
//  WM_COMMAND  - アプリケーション メニューの処理
//  WM_PAINT    - メイン ウィンドウの描画
//  WM_DESTROY  - 中止メッセージを表示して戻る
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // 選択されたメニューの解析:
            switch (wmId)
            {
            case IDM_ABOUT:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                break;
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
            default:
                return DefWindowProc(hWnd, message, wParam, lParam);
            }
        }
        break;
    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hWnd, &ps);

			MyWindow *target = MyWindow::find(hWnd);
			target->OnPaint(ps);


            // TODO: HDC を使用する描画コードをここに追加してください...
            EndPaint(hWnd, &ps);
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

// バージョン情報ボックスメッセージ ハンドラーです。
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}

anond:20190101162210

やすいように フルソー

青い■を表示するだけ

// WindowsProject7.cpp: アプリケーションエントリ ポイント定義します。
//

#include "stdafx.h"
#include "WindowsProject7.h"

#define MAX_LOADSTRING 100

// グローバル変数:
HINSTANCE hInst;                                // 現在インターフェイス
WCHAR szTitle[MAX_LOADSTRING];                  // タイトル バーテキスト
WCHAR szWindowClass[MAX_LOADSTRING];            // メイン ウィンドウ クラス名

// このコード モジュールに含まれ関数宣言転送します:
//ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);

#include <list>

class MyWindow;
	
std::list< MyWindow *> windows;

class MyWindow
{
public:

	HWND hWnd;



	MyWindow()
		:hWnd(NULL)
	{
		windows.push_back(this);
	}

	virtual ~MyWindow()
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			if (*it == this)
			{
				windows.erase(it);
				break;
			}
		}
	}

	static MyWindow * find(HWND key)
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			MyWindow *target = *it;

			if (target->hWnd == key)
			{
				return target;
			}

		}

		return NULL;
	}



	//
	//  関数: MyRegisterClass()
	//
	//  目的: ウィンドウ クラス登録します。
	//
	ATOM MyRegisterClass(HINSTANCE hInstance)
	{
		WNDCLASSEXW wcex;

		wcex.cbSize = sizeof(WNDCLASSEX);

		wcex.style = CS_HREDRAW | CS_VREDRAW;
		wcex.lpfnWndProc = WndProc;
		wcex.cbClsExtra = 0;
		wcex.cbWndExtra = 0;
		wcex.hInstance = hInstance;
		wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT7));
		wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
		wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
		wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT7);
		wcex.lpszClassName = szWindowClass;
		wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

		return RegisterClassExW(&wcex);
	}

	//
	//   関数: InitInstance(HINSTANCE, int)
	//
	//   目的: インスタンス ハンドルを保存して、メイン ウィンドウ作成します。
	//
	//   コメント:
	//
	//        この関数で、グローバル変数インスタンス ハンドルを保存し、
	//        メイン プログラム ウィンドウ作成および表示します。
	//
	BOOL InitInstance()
	{
		hInst = hInstance; // グローバル変数インスタンス処理を格納します。

		ATOM c = MyRegisterClass(hInstance);


		hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
			CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);

		if (!hWnd)
		{
			return FALSE;
		}

		return TRUE;
	}

	BOOL ShowWindow()
	{
		BOOL ret;
		ret = ::ShowWindow(hWnd, SW_SHOW);
		::UpdateWindow(hWnd);

		return ret;
	}


	HINSTANCE hInstance;
	MSG msg;

	BOOL Main()
	{

		HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT7));

		// メイン メッセージ ループ:
		while (GetMessage(&msg, nullptr, 0, 0))
		{
			if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
			{
				TranslateMessage(&msg);
				DispatchMessage(&msg);
			}
		}


		return TRUE;

	}

	BOOL OnPaint(PAINTSTRUCT &ps)
	{
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246));
		RECT Rect = { 0,0,48,48 };
		BOOL ret = FillRect(ps.hdc, &Rect, hBrush);
		DeleteObject(hBrush);

		return TRUE;
	}


};


int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPWSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    // TODO: ここにコードを挿入してください。

    // グローバル文字列初期化しています。
    LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadStringW(hInstance, IDC_WINDOWSPROJECT7, szWindowClass, MAX_LOADSTRING);
    //MyRegisterClass(hInstance);



	MyWindow win;



	win.hInstance = hInstance;

	// アプリケーション初期化を実行します:
	if (!win.InitInstance())
	{
		return FALSE;
	}

	BOOL ret;

	win.ShowWindow();

	ret = win.Main();

	if (ret)
	{
		return 0;
	}else {
		return (int)win.msg.wParam;
	}



}






//
//  関数: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  目的:    メイン ウィンドウメッセージを処理します。
//
//  WM_COMMAND  - アプリケーション メニューの処理
//  WM_PAINT    - メイン ウィンドウの描画
//  WM_DESTROY  - 中止メッセージを表示して戻る
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // 選択されたメニューの解析:
            switch (wmId)
            {
            case IDM_ABOUT:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                break;
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
            default:
                return DefWindowProc(hWnd, message, wParam, lParam);
            }
        }
        break;
    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hWnd, &ps);

			MyWindow *target = MyWindow::find(hWnd);
			target->OnPaint(ps);


            // TODO: HDC を使用する描画コードをここに追加してください...
            EndPaint(hWnd, &ps);
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

// バージョン情報ボックスメッセージ ハンドラーです。
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}

anond:20190101161939

次の解説

staticキーワードを付けることで

クラス内にグローバル関数から呼べる関数を作る

これでHWNDを通して

グローバル関数にthisポインタを伝える

	static MyWindow * find(HWND key)
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			MyWindow *target = *it;

			if (target->hWnd == key)
			{
				return target;
			}

		}

		return NULL;
	}

anond:20190101161818

解説を入れておくと

グローバル関数リスト

自分自身コンストラクタ登録

デストラクタで削除する簡単システムを作る

商業だとこんな雑ではダメだけど

テストならこれでOK

std::list< MyWindow *> windows;

class MyWindow
{
public:

	HWND hWnd;



	MyWindow()
		:hWnd(NULL)
	{
		windows.push_back(this);
	}

	virtual ~MyWindow()
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			if (*it == this)
			{
				windows.erase(it);
				break;
			}
		}
	}

anond:20181231104029

// WindowsProject7.cpp: アプリケーションエントリ ポイント定義します。
//

#include "stdafx.h"
#include "WindowsProject7.h"

#define MAX_LOADSTRING 100

// グローバル変数:
HINSTANCE hInst;                                // 現在インターフェイス
WCHAR szTitle[MAX_LOADSTRING];                  // タイトル バーテキスト
WCHAR szWindowClass[MAX_LOADSTRING];            // メイン ウィンドウ クラス名

// このコード モジュールに含まれ関数宣言転送します:
//ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);

#include <list>

class MyWindow;
	
std::list< MyWindow *> windows;

class MyWindow
{
public:

	HWND hWnd;



	MyWindow()
		:hWnd(NULL)
	{
		windows.push_back(this);
	}

	virtual ~MyWindow()
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			if (*it == this)
			{
				windows.erase(it);
				break;
			}
		}
	}

	static MyWindow * find(HWND key)
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			MyWindow *target = *it;

			if (target->hWnd == key)
			{
				return target;
			}

		}

		return NULL;
	}



	//
	//  関数: MyRegisterClass()
	//
	//  目的: ウィンドウ クラス登録します。
	//
	ATOM MyRegisterClass(HINSTANCE hInstance)
	{
		WNDCLASSEXW wcex;

		wcex.cbSize = sizeof(WNDCLASSEX);

		wcex.style = CS_HREDRAW | CS_VREDRAW;
		wcex.lpfnWndProc = WndProc;
		wcex.cbClsExtra = 0;
		wcex.cbWndExtra = 0;
		wcex.hInstance = hInstance;
		wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT7));
		wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
		wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
		wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT7);
		wcex.lpszClassName = szWindowClass;
		wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

		return RegisterClassExW(&wcex);
	}

	//
	//   関数: InitInstance(HINSTANCE, int)
	//
	//   目的: インスタンス ハンドルを保存して、メイン ウィンドウ作成します。
	//
	//   コメント:
	//
	//        この関数で、グローバル変数インスタンス ハンドルを保存し、
	//        メイン プログラム ウィンドウ作成および表示します。
	//
	BOOL InitInstance()
	{
		hInst = hInstance; // グローバル変数インスタンス処理を格納します。

		ATOM c = MyRegisterClass(hInstance);


		hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
			CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);

		if (!hWnd)
		{
			return FALSE;
		}

		return TRUE;
	}

	BOOL ShowWindow()
	{
		BOOL ret;
		ret = ::ShowWindow(hWnd, SW_SHOW);
		::UpdateWindow(hWnd);

		return ret;
	}


	HINSTANCE hInstance;
	MSG msg;

	BOOL Main()
	{

		HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT7));

		// メイン メッセージ ループ:
		while (GetMessage(&msg, nullptr, 0, 0))
		{
			if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
			{
				TranslateMessage(&msg);
				DispatchMessage(&msg);
			}
		}


		return TRUE;

	}

	BOOL OnPaint()
	{
		return TRUE;
	}


};


int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPWSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    // TODO: ここにコードを挿入してください。

    // グローバル文字列初期化しています。
    LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadStringW(hInstance, IDC_WINDOWSPROJECT7, szWindowClass, MAX_LOADSTRING);
    //MyRegisterClass(hInstance);



	MyWindow win;



	win.hInstance = hInstance;

	// アプリケーション初期化を実行します:
	if (!win.InitInstance())
	{
		return FALSE;
	}

	BOOL ret;

	win.ShowWindow();

	ret = win.Main();

	if (ret)
	{
		return 0;
	}else {
		return (int)win.msg.wParam;
	}



}






//
//  関数: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  目的:    メイン ウィンドウメッセージを処理します。
//
//  WM_COMMAND  - アプリケーション メニューの処理
//  WM_PAINT    - メイン ウィンドウの描画
//  WM_DESTROY  - 中止メッセージを表示して戻る
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // 選択されたメニューの解析:
            switch (wmId)
            {
            case IDM_ABOUT:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                break;
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
            default:
                return DefWindowProc(hWnd, message, wParam, lParam);
            }
        }
        break;
    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hWnd, &ps);

			MyWindow *target = MyWindow::find(hWnd);
			target->OnPaint();


            // TODO: HDC を使用する描画コードをここに追加してください...
            EndPaint(hWnd, &ps);
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

// バージョン情報ボックスメッセージ ハンドラーです。
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}


Windowsシステムは基本 グローバル関数なので

グローバル関数<>クラス化されたメソッド

ブリッジ関数を書いた

去年ずっとWindowsタスクバーに日付が表示されなくて(時間だけ表示されてた)謎だったんだけど、年越したら表示されるようになった。

これもしかして表示幅が足りてなかったってことか。くそわろた。

[]2018年12月31日月曜日増田

時間記事文字数文字数平均文字数中央値
0010911946109.631
0147379380.729
02364647129.141
0321179485.458
04111612146.537
0514111179.452.5
0622162573.949
07295101175.9107
0892626468.132
09137846461.829
101341166087.045
111291029879.844
1283497860.031
1361431370.726
14105793175.537
1510611987113.137
1665518879.839
17647034109.939
181541209778.638
198713293152.840
201381225488.845
21117957681.835
22113681160.334
2397775079.931
1日197117152787.037

頻出名詞 ()内の数字単語が含まれ記事

人(147), 自分(112), ワイ(110), 増田(92), 今(63), 仕事(61), 好き(58), 人間(57), 話(56), 日本(53), 前(49), 今年(49), あと(43), 感じ(43), ー(42), 問題(40), 金(37), 普通(36), 意味(36), 必要(33), 女(32), 気持ち(32), 男(32), 手(31), 人生(30), 子供(30), 顔(30), 今日(29), オタク(29), 時間(28), 最近(28), 嫌(28), 関係(27), 結局(27), 絶対(26), 無理(26), 会社(26), 気(26), 理由(26), 当たり前(25), 可能性(25), 言葉(25), 他(24), 目(24), 他人(23), じゃなくて(23), 紅白(22), 子(22), ゲーム(22), 結婚(21), 相手(21), ネット(21), 場合(21), 全部(21), 友人(21), 頭(21), いや(21), レベル(21), 一人(20), 結果(20), 嫌い(20), 韓国(20), 店(20), 日本人(20), 周り(20), 2018年(20), 年(19), 昔(19), 人たち(19), 来年(19), 家族(19), 一番(19), 一緒(18), 正直(18), 年末(18), 東京(18), 理解(18), テレビ(18), 横(18), 程度(18), イケメン(18), 全て(18), 時点(18), 別(18), 上司(17), 差別(17), 声(17), 全員(17), 存在(17), 先(17), 勝手(17), ブス(17), 都合(17), 設定(17), LGBT(16), 評価(16), 確か(16), 変態(16), 状況(16), 興味(16), 最初(16), 本人(16), 価値(16)

頻出固有名詞 ()内の数字単語が含まれ記事

ワイ(110), 増田(92), 日本(53), 可能性(25), じゃなくて(23), 韓国(20), 2018年(20), イケメン(18), 東京(18), LGBT(16), コミケ(14), わからん(14), KKO(14), なんだろう(12), 元増田(12), 自己肯定感(12), ファミレス(11), おせち(11), キモい(11), サブカル(11), ブコメ(11), 2019年(11), PC(11), キモ(10), スマホ(10), ワイちゃん(10), BL(10), ツイッター(9), 食べ放題(9), ADHD(9), 知らんけど(9), ガチ(9), マジで(9), 平成最後(8), レーダー照射(8), hatena(8), 一年(8), クライアント(8), …。(7), ポリコレ(7), 個人的(7), はてサ(7), いない(6), ちんこ(6), モテ(6), VTuber(6), 良いお年を(6), 何度(6), 3日(6), なのか(6), アプリ(6), アシッドアタック(6), どんだけ(6), 10年(6), いいね(6), s(6), -1(6), ブクマ(6), 価値観(6), あけおめ(5), アメリカ(5), なんや(5), ー(5), キリスト(5), 一日(5), ぶっちゃけ(5), 被害者(5), 自分自身(5), is(5), 平成(5), 大掃除(5), 涙(5), ブログ(5), 1日(5), ありません(5), NHK(5), メインストリーム(5), スマートスピーカー(5), 関西人(5), 好きだから(5), はてブ(5), アレクサ(5), Twitter(5), 中国(5), キチガイ(5), twitter(5), 労働者(5), A(5), VR(5), Windows(5), ふるさと納税(5), Google(5), 異世界(5), Vtuber(5), ゴーン(5), t(4), 視聴者(4), IT(4), チコ(4), 北朝鮮(4), アベベ(4), PZN(4), 韓国人(4), 娘(4), 社会人(4), SNS(4), コスパ(4), 欧米(4), デスクトップ(4), ハードモード(4), アレ(4), ガンダム(4), 下方婚(4), 視聴率(4), ネトウヨ(4), ジオング(4), 女子供(4), 基本的(4), 自己責任(4), プレイ(4), 2年(4), とはいえ(4), 普通に(4), vtuber(4), ニート(4), 竹島(4), どん兵衛(4), 経営者(4), いいんじゃない(4), 1枚(4), ゾンビランドサガ(4), 年越しそば(4), RENA(4), リアル(4), 低能先生(4), アイコン(4), RIZIN(4), 腐女子(4), メルカリ(4), お気持ち(4), マイノリティ(4), USA(4), youtube(4), n(4), 好きな人(4), クソ女(4), かよ(4), 外国語(4)

本日の注目単語 ()内の数字単語が含まれ記事

アシッドアタック(6), あけおめ(5), ジオング(4), RIZIN(4), シャンパン(10), 大晦日(11), 除夜の鐘(5), 良いお年を(6), ポケットマネー(3), 年越しそば(4), あけましておめでとうございます(3), 松坂(3), 明石焼き(3), ミサワ(3), 女のこ(3), 2019年(11), 蕎麦(10), 正月(13), ワイ(110), 平成最後(8), 年末年始(8), エスカレーター(13), サブカル(11), 年末(18), 自己肯定感(12), 変態(16), ADHD(9), 不細工(7), 来年(19), ファミレス(11), 今年(49), コミケ(14), 食う(18), 寒い(12), 毎年(12), 親戚(9), メンバー(9), 2018年(20)

頻出トラックバック先(簡易)

■どうして美人イケメンが好きなのですか? /20181230180125(20), ■40代後半の独身男性。ひとりで過ごす連休しんどい /20181231110904(15), ■寒いと机で作業出来ない /20181230185040(13), ■はてサって何なの? /20181231133400(11), ■田舎者には理解できないエスカレーター問題 /20181231101621(9), ■スマートスピーカーについてそろそろみんな気づいてること /20181228113422(8), ■日本映画で主人公キリストっぽい作品ってあるの? /20181231080641(7), ■年越しそばどん兵衛の人 /20181231153841(6), ■《急募》貰った高いシャンパンの使い道 /20181231210334(5), ■自分から積極的になる恋愛ってなんか違う /20181231175012(5), ■鼻毛を綺麗に切れるアイテムを求めている /20181227133324(5), ■ケチな男ってどうやって生み出されるの? /20181231072118(5), ■新プリキュアに黒ギャルがいるけど何故いまさらギャル? /20181228092938(5), ■負の連鎖は断ち切れないっぽい /20181231185851(4), ■2018年でベストだった漫画を一人一つ教えてくれ /20181231171314(4), ■anond20181231223224 /20181231223549(4), ■ /20181231212735(4), ■増田増田を殺す /20181231205749(4), ■ /20181231112934(4), ■ /20181231140514(4), ■ブクマが少ない /20181230195431(4), ■anond20181231123557 /20181231152309(4), ■ /20181231204403(4), ■オタク選民意識きもちわるい /20181231014714(4), ■俺「アレクサ、醤油とって」アレクサ「すみません できません」 /20181229234536(4)

増田合計ブックマーク数 ()内の数字は1日の増減

5915769(3400)

2018-12-31

2018年社内で困った人 大賞

王様の耳はロバの耳!

社内SEPCサーバー買ったり作ったりしてる。

社内の枠から離れた対応する人々を書いてみる。対処法の知見があれば教えてほしい。

1.デフラグおじさん

午前中はデフラグ完了するまで進捗を眺めて、時折考え事をしてるかのようにノートに何かを書くおじさん。

配布pcは、core i5(Skylake、Kaby Lake)、メモリ8GBか16GB、SSD256GBかSSD512GBとHDD1TBという感じ。配布時期によって異なる。

頑張って予算は確保した(人件費に比べりゃ安いもん、社内の化石PCと処理時間比較効率化を見せたり)ので、文句が出るようなスペックではないかなと思う。

一部にwin7が残っていて、このおじさんが含まれる。VBアプリ改修とoffice程度なのに、何故かデフラグ

担当リーダーからPC問題があるなんとかしてくれと言われたので聞いてみたら、テストデータ100MBのcsvがあるから速度向上の為と申してる。

対応:DドライブHDDからSSD1TBに変更したのを発注納期ながかったー

数秒でデフラグ完了するようになったのでメデタシメデタシ?ただ今も毎日やってるらしい。

2.最新型おじさん

異動や中途が、毎年ざっくりなのでPC予算だけ確保し、足りなくなったら発注としている。

ノートPCで、新しい型番や機種が導入されるのを知ると、何故か故障して交換を申請してくるオジサン

起動しなくなった

windows/system32配下が消えてた。システム修復で治る。

角の部分が割れてたり

カーボン素材のをどうやって割ったのか。。仕方なく新品交換(これが失敗の始まり。味をしめたと思われる)

如何に自分仕事が大変で最新スペック必要としているかを2時間に渡って説明してくる

→直近2weeksのcpuメモリ使用率をグラフ出力(作成は数分)して、5%も使ってませんよと説明。矛先がチームメンバー若い子へ行き、チームタスク消化率が半減する

対応:いつの間にか退職してた(ホッ

反省故障という例外パターンまで考えてなかった。不意の故障は双方の時間短縮の為に安易に交換としていた。まさかルール悪用?する人が居るとは考えも及ばなかった。。

3.セキュリティおばさん

1日中ネット見てるおばさん。

かにしてれば無害なのだが、ネットニュースでウィルス脆弱性のを見つけると、全社へ通達メールサバ管が気が付いていないのを発見報告してあげたアピールが始まる。うんざり

大体はtwitterとか海外ブログ辺りで2,3日前に話題になったやつで、対応策を関係者報告/検討済。たまに突発的なのもあるけど。

では、対応お願いしますと、依頼してみると、そんなのは自分仕事では無い、君達は自分の職責を押し付けるのか!?と激昂。。

問題は、適当な事を行って歩くので、事後フォローとチームメンバー士気ダウン。

対応:自部署から先んじて周知展開を行うようにしたら、大人しくなった、、と思いきや、パブコメ段階の法律を周知するように。法務部門が手を焼いている模様。

通信内容まで見てないが、かなり書き込み処理(addとかがURLにあるの)してるみたい。お役人様、申し訳ねえ。。webへの書き込み禁止令出して、go.jp書き込み禁止設定に。

4.縦社会部

社歴10年を超える大御所

グループウェアユーザー一覧、メールアドレス帳がabcなのは何を考えているのか?と殴り込みに来る。

上に相談すると、まあやってあげたら?と言う事で役職コードを付けて、表示順変更。

社内からは、探しにくくなった!とクレーム多数も、事情説明したら、皆引き下がる。

しばらくして、その部署取締役に一周り若い人が着任。自分の上に、その名前があるのが気に要らないのか、やっぱり使いにくいから、表示を元に戻してと。。

皆も慣れてきた頃だったのに。。

対応:長いものには巻かれた

反省安易に受けすぎないようにしよう。とは言え、断る材料を用意する工数対応工数 だったから、つい。

5.加湿器オネイサン

モニター横に常時加湿器。錆びたりしないかなーと不安になるも、空気乾いてて〜と笑顔でかわされる(DTちゃ、ちゃうわ)

春先に給水タンクを倒して、acタップ付近水浸しに。同じacタップ使ってたPCの電源が落ちる。

半日分の作業がパァ〜だよ!と喧嘩

対応オフィス加湿器常設(一人暮らし冷蔵庫サイズ)、cドライブの一部をオンラインストレージ自動同期するように展開。

反省:錆びるより前に、水を倒すとは。。考えが足りなかった。下手したら火事とかあり得たかも。。

6.アトピーおじさん

皮膚をかいて、キーボードに粉が付いてるのを見たくないと複数クレーム

そんなん、どうしょうもないやん??と思うも、毎週キーボード交換。

費用的には、1000円位だし、同梱されてて使ってないの沢山あったか問題なかったが。本人へね。。

毎週用意したものの、伝えるのは困難だね。

実は私も昔アトピーあった。血が出るくらいかいて、黄色い汁まで出てたよ〜、失礼な言い方になるかも知らんけども、掃除してもらえんやろか?とスライム上の吸着剤と、水洗いできるキーボードに交換。

なんだかんだで、その人と飲みに行く友達になる。

反省:これ私の仕事??担当部署上長に投げたほうが良かったのかも。たまたま理解してくれる人やったからよかったが、下手したら、パワハラ的になってしまってたかも?

「正しいことをしたければ偉くなれ」って事ですかね。。和久さん。。

anond:20181231091656

0円にして誰でも参入できるようにすると質の最低値が下がる

すべてを審査なんてできない以上、費用をもって「足切り」するのは現実的な回答だ


まあ、詐欺的な意味でのアプリ小金払っても割に合うからこれでは排除できないんだけどな

ゴミみたいな品質アプリの混入を、0円なら入ってきうる優秀アプリ可能性を潰してでも確保したいという感じだ

WindowsAndroid魑魅魍魎自己責任をみるに、一応アリかなという気はするのだ

anond:20181231075738

iMacVR対応した事で、VTuberブ-ムと一緒にVRが本格的に普及するか、と思っていたのに

結局VRは普及するタイミングを逃したように思う。

原因は明らかで、VRChatやバーチャルキャストといった一見魅力的に見えるアプリに限って

なぜかMaciOS対応していないから。

というか、もはや誰も使っていないと思われるWindowsしか対応しなかった。

CPUGPUもまともに使えないし、無駄ファンが回るし

全く安定せず、何かの理由で30分に一度は再起動必要Windowsばかり。

まともな技術者なら、こんなOS真っ先に捨てちゃうのに。

VR技術者偏屈だったせいで、普及しなかった。

VTuberVR可能性も、ここで途絶えてしまった。

2018-12-30

anond:20181230230613

ImAC液晶の画質がいいスピーカーの音がいいデザインがいい

windowsImAC4K5Kと同じ構成ってどこで買えるかといえばどこでも買えない

[]2018年12月29日土曜日増田

時間記事文字数文字数平均文字数中央値
006312077191.742
01555866106.747
02339835298.042
0317124573.261
04113081280.125
05162036127.388
0619131569.225
0755525395.543
08364001111.146
096510227157.329
10104631960.836
11485420112.992.5
12549321172.651
1370655893.739
1476658786.751.5
156710983163.957
1677656785.333
1796704373.446.5
1860464977.551
19103574055.727
209110609116.641
211331179988.736
221921424074.233.5
2377710092.231
1日1618167871103.839

頻出名詞 ()内の数字単語が含まれ記事

人(134), 自分(99), 日本(83), 話(66), 増田(63), 今(63), 韓国(53), あと(44), ー(43), 女(43), 前(40), 好き(38), 気(38), 相手(38), 結婚(36), 仕事(35), 最近(35), 感じ(35), 関係(35), 男(34), 人間(33), 頭(30), 問題(29), 今日(28), 手(28), ワイ(26), レベル(26), 普通(25), 昔(25), 他(25), 必要(25), アメリカ(24), 場合(23), 結局(23), 結果(23), 一番(23), 中国(23), 目(23), 国(22), 意味(22), 無理(21), 理由(21), バカ(21), 日本人(21), 言葉(20), 最初(20), 内容(20), 気持ち(20), 時間(20), 作品(20), 逆(19), しない(19), じゃなくて(19), 理解(19), 絶対(18), 金(18), 今年(18), 明らか(18), 年末(18), 子供(18), 声(18), 意見(18), 世界(18), 開発(17), ゲーム(17), レーダー照射(17), 記事(17), 誰か(17), 毎日(16), 女性(16), 北朝鮮(16), 程度(16), ネトウヨ(16), 間違い(16), 社会(16), 簡単(16), 全部(16), 動画(16), 英語(16), 一つ(16), 職場(16), 名前(15), サービス(15), 別(15), 主張(15), 興味(15), 家(15), 可能性(15), 批判(15), 勝手(15), 戦争(15), 一般(15), 童貞(15), アニメ(15), 政治(15), キャラ(15), レーダー(14), 大変(14), アホ(14), 本(14), 会社(14), 立場(14), 方法(14), 公開(14), 完全(14), 一緒(14), しよう(14), 対応(14), 自体(14)

頻出固有名詞 ()内の数字単語が含まれ記事

日本(83), 増田(63), 韓国(53), ワイ(26), アメリカ(24), 中国(23), じゃなくて(19), レーダー照射(17), 北朝鮮(16), ネトウヨ(16), 可能性(15), ブコメ(11), IQ(11), いない(11), ニート(10), KKO(10), 2018年(9), なのか(9), マジで(9), アプリ(9), 低脳(9), ツイッター(8), w(8), 資本論(8), ドメイン名(8), 下方婚(8), 安倍(8), なんの(8), 韓国軍(8), PC(7), イケメン(7), 毎日(7), 10年(7), パヨク(7), hatena(7), AI(7), 東京(7), IT(7), 個人的(7), はてサ(6), わからん(6), 自衛隊(6), ガチ(6), ぶっちゃけ(6), 日韓(6), 朝鮮(6), ロックオン(6), 沖縄(6), 社会人(6), 1人(6), 娘(6), メロンパン(6), 哨戒機(6), Windows(6), twitter(6), 2019年(6), ja(5), なんや(5), アレ(5), マルクス(5), ここに(5), お客さん(5), 5分(5), wwww(5), OK(5), 仕事納め(5), s(5), なんだろう(5), …。(5), にも(5), スタバ(5), 二次創作(5), 悪いこと(5), 労働者(5), 一般的(5), 何度(5), いいんじゃない(5), 孤独死(4), iPhone(4), 就活(4), 落合陽一(4), 金(4), Twitter(4), 国際法(4), 婚活(4), 1日(4), オチ(4), ブクマ(4), ブクマカ(4), 5年(4), Amazon(4), 大掃除(4), 積極的(4), 12月(4), Webサービス(4), 韓国人(4), 一週間(4), キモ(4), detail(4), いいね(4), gt(4), 2年(4), 被害者(4), コミケ(4), とはいえ(4), プレイ(4), 一緒に(4), 普通に(4), 具体的(4), 韓国側(4), である(4), 安倍総理(4), グラブル(4), Mac(4), 世界観(4), 1年(4), Google(4), 匿名掲示板(4), 一日(4), 消費税(4), 何回(4), 従業員(4), 元増田(4), 九州(4), 何それ(4), 米軍(4), wikipedia(4), クオリティ(4)

本日の注目単語 ()内の数字単語が含まれ記事

ドメイン名(8), 資本論(8), メロンパン(6), プロトタイプ(5), 哨戒機(6), 悪天候(3), レーダー(14), 縦書き(3), 寒いね(3), 照射(12), 同盟国(3), 横書き(3), 年末(18), 対等(12), 北朝鮮(16), 低脳(9), 雪(6), wwww(8), マルクス(5), 韓国(53), 帰省(7), 匿名掲示板(4), IQ(11), 飼っ(7), 革命(7), クリスマス(10), ワイ(26), 寒い(10), www(12), 政権(8), 開発(17), 来年(8), 修正(8), 思い出(9)

頻出トラックバック先(簡易)

■42歳無職乳首を開発したよ /20181229160059(13), ■韓国レーダー照射に関する整理 /20181229020553(12), ■[開発]今更だけど1週間で消える匿名掲示板とかあったら需要あるかな? /20181229113056(7), ■どうして『ゲーミングパーツ』や『ハイスペックパーツ』はやたらパリピみたいな事してるんだ /20181229165700(7), ■iPhone持ちのnanacoの取り扱いについて、知恵を貸してください /20181229193648(7), ■家で風呂入るとついついおしっこしたくなる現象 /20181229003111(6), ■韓国の話がしにくい /20181229104923(6), ■ /20181228180457(6), ■ /20181227002831(5), ■2019年冬季開始の新作アニメ備忘録 /20181229204529(5), ■ちょっとくらい言葉喋れる動物いても良くない? /20181229210659(5), ■三大間違って覚えてた歌詞 /20181228120346(5), ■人類はもうやり尽くした感ある /20181229230627(5), ■ミステリー小説の何がおもしろいのかわからない /20181229230453(5), ■インフルエンザで涙が止まらない /20181229164118(5), ■私が皇帝となって素晴らしい政治しますので /20181229073609(4), ■書店とか図書館いくとネトウヨ本ばかり /20181229205507(4), ■ゆかりを抱いて寝る /20181227195430(4), ■ /20181229095709(4), ■不動産が高い /20181229215620(4), ■うつ病 /20181229131001(4), ■悪の組織に女幹部がいる違和感 /20181227203520(4), ■銭湯に行ったら俺を見て黒人オッサン勃起しだしたんだが /20181228175913(4), ■年上社会人女性と年下学生男性カップルだとどっちが多めに負担するとかあるの? /20181229162042(4), ■anond20181229100431 /20181229101144(4), ■anond20181229143426 /20181229143905(4)

増田合計ブックマーク数 ()内の数字は1日の増減

5912369(1024)

2018-12-29

2048年も終わろうとしている

東京オリンピックまでにまともに対策してたら初詣いけてたのにな。懐かしい。神社廃止だしな。クリスマスも好きだったのに。ただ春節も悪くない。中国人が街から減るのはありがたい。昔の日本旧正月ブームも来そうな感じ。それにしても沖縄取られてからあっという間だった。増田にこんなこと書いたぐらいで連れてかれることはないけど。ただニュースにならないけど富士山矯正施設は相当厳しいらしい。アメリカ基地反対や沖縄独立活動家が一番先に矯正施設送りになったのは驚いたね。アメリカ追い出して領土取られて元の日本人が50%切ったらもうそりゃね。韓国が自滅して北朝鮮に吸収されたと思ったらすぐ朝鮮省になったし。パスポートなしで行けてもうれしくも何ともない。今年はやっぱり朝鮮トンネル工事大事故かな。建国100周年記念と言ってもあれは無理だって。あういうの造れるって思うのは単なる懐古主義工事再開できるのか怪しいしたぶんまたやらかす。いくらメンツと言っても金かかりすぎ。簡体字奨励期間もあと2年しかない。そのうち平仮名禁止になったらめんどくさい。ハングル廃止になった朝鮮よりも恵まれはいるが。あと独自OS義務化はやめてほしい。日本語の認識甘すぎる。中国語しか使えない。こういうの政府主導でやっても時間かかりすぎる。軍に任せるべき。Maclenovoに吸収されて使えなくなってせっかくWindowsに慣れたのに。tronって元々日本のなんだけどな。来年北方領土問題解決しろ

マイクロソフト日本語IMEキー定義はどう変わる?

マイクロソフト日本語IMEオンオフ方法が変わるという記事をここ数日何本か見かけた。

現在はどうなっているのだろうと注意して触ってみたが、英数キーひらがなキーの設定はしばらく意識してない間に変わっている気がする。

例えばAlt+ひらがなローマ字入力、カナ入力が切り換えられた気がするのだが、切り替えられなくなった気がする。

10月に配布された現行バージョンキー定義サポートサイトに書かれている次期バージョンキー定義を見比べてみると、

キーバージョン1809次期バージョン
全角/半角IMEオンオフ(トグル)IMEオンオフ(トグル)
英数かな英数(かなと英数をトグル、直接入力モードならIMEオン)IMEオンオフ?
無変換かな切替(直接入力モードでは何も起きない)IMEオフ(オプション扱い)
変換再変換(直接入力モードならIMEオン)IMEオン(オプション扱い)
ひらがなひらがなキー(IMEオンと同じ動作をした)?
Ctrl+Space未割当IMEオンオフ
Alt+~未割当IMEオンオフ(USキーボード)
Ctrl+変換メニュー表示(アイコン右クリック時と同じもの)?

ニュースを読んで全角/半角キー機能が無くなると思っている人がいるが、この操作は引き続き使えるようだ。

一方変換キーIMEオン、無変換キーIMEオフデフォルト設定ではなさそうな記述である現在との違いは設定変更メニューが目立つところに来るという程度なのではないか

サポートページの記述あいまいなので、実物を触ってみないとどうなってるのか分からないけれど。

参考にしたページ

Announcing Windows 10 Insider Preview Build 18305 | Microsoft Windows Blog

https://blogs.windows.com/windowsexperience/2018/12/19/announcing-windows-10-insider-preview-build-18305/

日本語IME | マイクロソフトサポート

https://support.microsoft.com/ja-jp/help/4462244/microsoft-ime

[半角/全角]キー不要に? WindowsIME切り替えがMac方式ITMedia

http://www.itmedia.co.jp/news/articles/1812/26/news094.html

日本ニュースサイトはどういう主義か知らないけれど、頑なに情報ソースリンクを張ろうとしない。ITmedia言及したのは上のブログエントリだと思うのだけど、違うかもしれない。上のエントリだと画像では変換キー=IMEオン、無変換キー=IMEオフになってはいるが、本文中にデフォルト動作をそう変更するという記述は見当たらない。

買ってよかったもの2018

今年もいろいろ買ったね。

Elgato Game Capture HD60 S(キャプチャーボード

定価20000円前後のところAmazonタイムセールで14000円くらい。

主にスプラトゥーン2プレイを録画して自分の立ち回りを省みる用途に使っている。

PCゲームGeforce Experience(NVIDIAGPU付属ソフト)で録画できるし、PS4本体に録画機能があるので苦労していないが、Nintendo Switchに関してはその辺が期待できないので購入。

付属ソフトのGame Capture for Windowsは録画する分には設定も簡単動作も安定しており機械オンチにはありがたい。配信や実況動画を撮るとなるともう少し勉強が要りそうだが。(for Macもあるよ ※USB3.0必須

パススルー機能も付いているのでスプラトゥーン2のようなシューター問題なく録画できる。そもそもの遅延もさほど大きくないのでADVSLGならそのままでも。

良かった点

自分プレイングをX上位勢の動画と見比べて改善したらS+の数字が安定して増えるようになった。目指せウデマエX

あと単純に自分プレイングを見返すのは楽しい

悪かった点

自分の粗がよく分かるけど味方の粗もそれなりに分かるのでもどかしさが更に募る。

ゲーム内スタッツも本体の録画機能も貧弱なのでそりゃ野良プレイヤーのレベルは上がらんわなと改めて思った。

注意点

ソフトウェアエンコード方式なのでそこそこつよつよPC必要。よわよわPCの人はハードウェアエンコード方式のものを買おう。

SONY ウォークマン NW-A55 (16GB)

元々音楽が好きでiPod classic 120GBをずっと愛用してきたが、生産終了を機に10年間にわたる酷使から解放してあげようと思った次第。

ストレージはどのみちmicroSD拡張するので本体16GBで十分。

良かった点

Bluetoothレシーバー機能が搭載されているので、手元にない音源ストリーミングサービス経由でiPhoneダウンロードして、iPhoneウォークマンイヤホンヘッドホンというルートiPhone内の音楽を聴けるのが便利。

あの忌々しい変換アダプタを持ち歩く手間を省きながらイヤホンヘッドホン選択の自由度を担保できる。有線/無線ありきでオーディオ選びたくないんですよね。

悪かった点

SONY純正音楽管理転送アプリケーションMusic Center for PCがクソ。

ただしiTunesも大概クソなのでいい勝負

チラシ投函お断りステッカー

数百円で売ってるので何でもいい

買いもしない(買えない)建売住宅やら怪しいセミナーやらのチラシを毎日のように入れられてさすがにうんざりしたので購入。なんで今までやらなかったんだろうレベル郵便受けがすっきりした。

良かった点

大事郵便物が埋もれない

悪かった点

ぶっちゃけちょっとさみしい

Creative Inspire T10 R3(スピーカー

PC用に使っていた古スピーカー限界を迎えていたので5000円弱で購入。

この価格帯にしてはなかなか良い音で鳴る。1000~2000円台のスピーカーや内蔵スピーカーからの乗り換えなら明確に違いが分かると思われる。

良かった点

良く言えばコストパフォーマンスが高く、非オーディオマニアには十分な性能

見た目に高級感はないが、さほど安っぽさもない

自動電源ON/OFF機能が地味に便利

悪かった点

悪く言えば値段なりの音

低音がややこもる

最安値ではなかった

黄楊の将棋

下手の横好きで将棋趣味なのだが、安い駒しか持ってなかったのでせっかくならと某フリマアプリ中古の黄楊駒を購入。15000円ほど。

将棋の駒は主に材質と彫り方の組み合わせで値段が変わる。

安価→高価
プラスチックカエデツバキetcシャム黄楊本黄楊
書き駒彫り駒彫り埋め駒盛り上げ駒

これに加えて書体の違いがあって、これは好み。楷書体の他に錦旗、水無瀬巻菱湖、源兵衛清安などなど。

更に美しい木目が入っていたり著名な駒師の号が入っていたりすると値段が跳ね上がる。プロタイトル戦で使われるような駒は付加価値もあってかマジで高い。

今回は無銘・本黄楊の彫り駒という高級駒へのエントリーモデル的なポジションのものを購入。これは豆知識なんですけど指す時にプロ棋士の手つきを真似ると超ハッタリかませますよ。私はこれで大会全敗しました。

良かった点

いい音がする

見た目が美しい

気分がアガる

悪かった点

将棋はうまくならない

Razer Kraken Pro V2

Razer社のゲーミングヘッドセット

締め付けがさほど強くなく、イヤークッションも大きく柔らかいので眼鏡常用者におすすめ眼鏡をかけたまま長時間プレイしてもこめかみが殆ど痛くならない。

サウンドも十分ゲームプレイの向上に寄与してくれるが、エイジングしないとやや高音が痛いかも。マイクの性能については分かりません。なぜなら通話する友達がいないので…

良かった点

快適なゲームプレイ環境形成

悪かった点

通話する友達がいない

アウトドア用のアパレル各種

自他共に認めるインドア派なのでアウトドアブランドには興味がなかったのだが、アウトドア使用に堪えるものが街中で無能なわけがない!と思いいろいろ手を出してみたところ完全にハマッた。

以下、買って良かったアウトドアグッズ(抜粋

mont-bell ジオライン L.W. ラウンドネックシャツタイツ

モンベルアンダーウェア。L.W.(ライトウエイト)・M.W.(ミドルウエイト)・EXP.(エクスペディション)の順に厚く暖かくなる。

都市部ならL.W.で十分暖かい。屋内に入って多少汗ばんでもすぐ乾くので汗冷えしにくくて良い。

mont-bell スペリオダウン ラウンドネックジャケット

いわゆるインナーダウンというやつ。こんな薄っぺらいダウンで何ができる!あと見た目だせえ!と思ったがアウター下に着込んだらまあ暖かいこと。

まり嵩張らないので暖かい日はくるっと丸めて鞄に入れておけばいい。(こういうことができるのもアウトドア用だからこそやなという気がする)

本当はユニクロインナーダウンを買おうとしたのだが、「悪いこと言わんからもう4000円出してモンベルの買え」というディープウェブの声に従って購入。

Columbiaクルーズサミットジャケット

古着屋で購入。オムニヒートというアルミニウムプリントされた裏地に遮熱効果がある…らしい。そう言われてみると暖かい…ような気がしないでもない。

防風性能はそこそこあるのでこの下にインナーダウンやニットを着込めば都会の冬は結構いける。見た目も良いしね。

話題ワークマンにも似たような加工のジャケットあるからファッションに拘りがなければそっちでもいいかも。

いろいろ見て回った結果、mont-bellColumbiaあたりは比較安価で手が出しやすいな~という印象。でもそのうち雪山全然関係ない東京電車でMAMMUTやArc'teryxを着てイキり倒してみたいね冗談です。

良かった点

あったけえ…

悪かった点

アウトドアに打って出る行動力は身につかない

アイドルマスター シンデレラガールズ EXQ フィギュア~ 高垣 楓~

高垣楓を、いやアイドルマスター愛する人は皆これを購入するべきだ。

我々はこのようなクオリティフィギュアを2000円以下で購入できる世界に生きているのだから

良かった点

良い

悪かった点

無い

東亜重工第三次生産 合成人間

漫画家弐瓶勉氏の作品スターシステム的に登場する巨大企業東亜重工が開発した合成人間…という設定のフィギュア

自分は元々弐瓶ファンだが、Twitter検索すると弐瓶作品を知らない人もデッサン人形的に購入しているらしい。それほどまでに可動域が広く、自立能力も高いので動かしているだけで楽しい良いフィギュア正座もできるよ!

霧亥のフィギュアも買ったけど原作再現度高くて良かった。

良かった点

ポーズ自由度が高い

かわいい大事

悪かった点

品薄気味

リズと青い鳥 台本初回限定Blu-ray(描き下ろし絵柄仕様三方背ケース付き)

御託は不要

良かった点

良い

悪かった点

まりにも良すぎて体調崩した

以上です。来年も消費活動やっていきましょう。よいお年をお迎えください。

2018-12-28

2038年も終わろうとしている

東京オリンピックまでにまともに対策してたら初詣いけてたのにな。懐かしい。神社廃止だしな。クリスマスも好きだったのに。ただ春節も悪くない。中国人が街から減るのはありがたい。昔の日本旧正月ブームも来そうな感じ。それにしても沖縄取られてからあっという間だった。増田にこんなこと書いたぐらいで連れてかれることがないけど。ただニュースにならないけど富士山矯正施設は相当厳しいらしい。アメリカ基地反対や沖縄独立活動家が一番先に矯正施設送りになったのは驚いたね。アメリカ追い出して領土取られて元の日本人が50%切ったらもうそりゃね。韓国が自滅して北朝鮮に吸収されたと思ったらすぐ朝鮮省になったし。パスポートなしで行けてもうれしくも何ともない。今年はやっぱり朝鮮トンネル工事大事故かな。あれは無理だって。あういうの造れるって思うのは単なる懐古主義工事再開できるのか怪しいしたぶんまたやらかす。いくらメンツと言っても金かかりすぎ。簡体字奨励期間もあと2年しかない。そのうち平仮名禁止になったらめんどくさい。ハングル廃止になった朝鮮よりも恵まれはいるが。あと独自OS義務化はやめてほしい。日本語の認識甘すぎる。中国語しか使えない。こういうの政府主導でやっても時間かかりすぎる。軍に任せるべき。Maclenovoに吸収されて使えなくなってせっかくWindowsに慣れたのに。tronって元々日本のなんだけどな。来年北方領土問題解決しろ

ログイン ユーザー登録
ようこそ ゲスト さん