はてなキーワード: Windowsとは
じーちゃんばーちゃんにiPadかWindowsタブレット渡す。
・悩まないように使うアプリだけホーム画面(デスクトップ)におく
・使い方を絵付きで大きな文で紙に書いておく
・自身が出張する手間に比べたら大した額じゃないのでケチらず大手キャリアかメーカーで買ってなんでもサポートつけとく
・その上で遠隔ソフト(TeamViewerでもなんでもいい)入れとく。ネットワーク死なない限り大体なんとかなる
例)
1. タブレットに Wi-Fi の マークは出ているか? Wi-Fi の マークが出ていない場合はルータを再起動する。それでもWi-Fiのマークが出ない場合はルータを子か孫へセンドバック
2. タブレットに Wi-Fi の マークは出ているがネットが繋がらない場合は、まず、 IPが192.168.〜が取れているか確認する。取れていない場合はルータを再起動してからもう一度確認する。それでもダメな場合は子か孫へルータをセンドバック
3. Wi-Fiタブレットに Wi-Fi の マークは出ていてIPも192.168〜が取れている場合、プロバイダのなんでもサポートへ電話
https://visualstudio.microsoft.com/ja/free-developer-offers/
Visual Studio Community
Windows 10のIMEでは「ー」から変換しても「~」から変換しても全角チルダ~が出てくる。〜を出したいときは「なみだっしゅ」と打つか「から」から変換して後のほうの候補で[機種依存]と書かれているものを選ぶ必要がある。
Linux上のmozc(2.23.2815.102+24.2.oss)では「ー」から変換しても「~」から変換しても波ダッシュ〜が出てくる。チルダから変換して全角チルダが出ないのはよろしくない気がする。全角チルダを出したいときは「ちるだ」と打って変換する必要がある。
// 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(&amp;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(&amp;msg, NULL, 0, 0, PM_REMOVE)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &amp;msg)) { TranslateMessage(&amp;msg); DispatchMessage(&amp;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, &amp;ps); this->OnPaint(ps); EndPaint(hWnd, &amp;ps); ::UpdateWindow(hWnd); RECT Rect2 = { 0,0,48*9,48 * 100 }; InvalidateRect(hWnd, &amp;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, &amp;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, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.left += width; Rect.right += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;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, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.left += width; Rect.right += width; ret = FillRect(hdc, &amp;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, &amp;Rect, hBrush); //Rect.left += width; //Rect.right += width; Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;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 &amp;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, &amp;ps); MyWindow *target = MyWindow::find(hWnd); target->OnPaint(ps); // TODO: HDC を使用する描画コードをここに追加してください... EndPaint(hWnd, &amp;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; }
テトリス風
落ちてくるブロックの描き方
まずはブロックの種類は3種類
の違いをよく見比べて
自力で違いがわかれば
プログラマーにはなれるとおもう
とはいえ、コレを自力でわかるならもっと儲かる仕事あるとはおもうけどな
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(&amp;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(&amp;msg, NULL, 0, 0, PM_REMOVE)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &amp;msg)) { TranslateMessage(&amp;msg); DispatchMessage(&amp;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, &amp;ps); this->OnPaint(ps); EndPaint(hWnd, &amp;ps); ::UpdateWindow(hWnd); RECT Rect2 = { 0,0,48*9,48 * 8 }; InvalidateRect(hWnd, &amp;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, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.left += width; Rect.right += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;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, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.left += width; Rect.right += width; ret = FillRect(hdc, &amp;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, &amp;Rect, hBrush); //Rect.left += width; //Rect.right += width; Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); DeleteObject(hBrush); return TRUE; } BOOL OnPaint(PAINTSTRUCT &amp;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, &amp;ps); MyWindow *target = MyWindow::find(hWnd); target->OnPaint(ps); // TODO: HDC を使用する描画コードをここに追加してください... EndPaint(hWnd, &amp;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; }
https://anond.hatelabo.jp/20190103154644
だいたい一式 せつめいもついてる
いまなら、Q&Aがあるていど 無料でついてくる(w)
それDLしてうちこみゃいい
第何回だろうな
まだ、何を押してもブロックが右に移動するだけ(右端にいくと左にワープ)
// 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(&amp;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(&amp;msg, NULL, 0, 0, PM_REMOVE)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &amp;msg)) { TranslateMessage(&amp;msg); DispatchMessage(&amp;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, &amp;ps); this->OnPaint(ps); EndPaint(hWnd, &amp;ps); ::UpdateWindow(hWnd); RECT Rect2 = { 0,0,48*9,48 * 8 }; InvalidateRect(hWnd, &amp;Rect2, TRUE); } else if (obj == WAIT_FAILED) { rc = GetLastError(); } else { } } return TRUE; } BOOL OnPaint(PAINTSTRUCT &amp;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, &amp;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, &amp;ps); MyWindow *target = MyWindow::find(hWnd); target->OnPaint(ps); // TODO: HDC を使用する描画コードをここに追加してください... EndPaint(hWnd, &amp;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; }
// 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(&amp;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(&amp;msg, NULL, 0, 0, PM_REMOVE)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &amp;msg)) { TranslateMessage(&amp;msg); DispatchMessage(&amp;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, &amp;ps); this->OnPaint(ps); EndPaint(hWnd, &amp;ps); ::UpdateWindow(hWnd); RECT Rect2 = { 0,0,48,48 * 8 }; InvalidateRect(hWnd, &amp;Rect2, TRUE); } else if (obj == WAIT_FAILED) { rc = GetLastError(); } else { } } return TRUE; } BOOL OnPaint(PAINTSTRUCT &amp;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, &amp;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, &amp;ps); MyWindow *target = MyWindow::find(hWnd); target->OnPaint(ps); // TODO: HDC を使用する描画コードをここに追加してください... EndPaint(hWnd, &amp;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; }
青い■を表示するだけ
// 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(&amp;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(&amp;msg, nullptr, 0, 0)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &amp;msg)) { TranslateMessage(&amp;msg); DispatchMessage(&amp;msg); } } return TRUE; } BOOL OnPaint(PAINTSTRUCT &amp;ps) { HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246)); RECT Rect = { 0,0,48,48 }; BOOL ret = FillRect(ps.hdc, &amp;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, &amp;ps); MyWindow *target = MyWindow::find(hWnd); target->OnPaint(ps); // TODO: HDC を使用する描画コードをここに追加してください... EndPaint(hWnd, &amp;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; }
次の解説
staticキーワードを付けることで
これでHWNDを通して
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; }
解説を入れておくと
std::list&lt; MyWindow *&gt; windows; class MyWindow { public: HWND hWnd; MyWindow() :hWnd(NULL) { windows.push_back(this); } virtual ~MyWindow() { std::list&lt; MyWindow *&gt;::iterator it; for (it = windows.begin(); it != windows.end(); it++) { if (*it == this) { windows.erase(it); break; } } }
// 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(&amp;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(&amp;msg, nullptr, 0, 0)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &amp;msg)) { TranslateMessage(&amp;msg); DispatchMessage(&amp;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, &amp;ps); MyWindow *target = MyWindow::find(hWnd); target->OnPaint(); // TODO: HDC を使用する描画コードをここに追加してください... EndPaint(hWnd, &amp;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; }
時間 | 記事数 | 文字数 | 文字数平均 | 文字数中央値 |
---|---|---|---|---|
00 | 109 | 11946 | 109.6 | 31 |
01 | 47 | 3793 | 80.7 | 29 |
02 | 36 | 4647 | 129.1 | 41 |
03 | 21 | 1794 | 85.4 | 58 |
04 | 11 | 1612 | 146.5 | 37 |
05 | 14 | 1111 | 79.4 | 52.5 |
06 | 22 | 1625 | 73.9 | 49 |
07 | 29 | 5101 | 175.9 | 107 |
08 | 92 | 6264 | 68.1 | 32 |
09 | 137 | 8464 | 61.8 | 29 |
10 | 134 | 11660 | 87.0 | 45 |
11 | 129 | 10298 | 79.8 | 44 |
12 | 83 | 4978 | 60.0 | 31 |
13 | 61 | 4313 | 70.7 | 26 |
14 | 105 | 7931 | 75.5 | 37 |
15 | 106 | 11987 | 113.1 | 37 |
16 | 65 | 5188 | 79.8 | 39 |
17 | 64 | 7034 | 109.9 | 39 |
18 | 154 | 12097 | 78.6 | 38 |
19 | 87 | 13293 | 152.8 | 40 |
20 | 138 | 12254 | 88.8 | 45 |
21 | 117 | 9576 | 81.8 | 35 |
22 | 113 | 6811 | 60.3 | 34 |
23 | 97 | 7750 | 79.9 | 31 |
1日 | 1971 | 171527 | 87.0 | 37 |
人(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), ■anond:20181231223224 /20181231223549(4), ■ /20181231212735(4), ■増田は増田を殺す /20181231205749(4), ■ /20181231112934(4), ■ /20181231140514(4), ■ブクマが少ない /20181230195431(4), ■anond:20181231123557 /20181231152309(4), ■ /20181231204403(4), ■オタクの選民意識がきもちわるい /20181231014714(4), ■俺「アレクサ、醤油とって」アレクサ「すみません できません」 /20181229234536(4)
5915769(3400)
王様の耳はロバの耳!
社内の枠から離れた対応する人々を書いてみる。対処法の知見があれば教えてほしい。
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.セキュリティおばさん
静かにしてれば無害なのだが、ネットニュースでウィルスや脆弱性のを見つけると、全社へ通達メール、サバ管が気が付いていないのを発見報告してあげたアピールが始まる。うんざり。
大体はtwitterとか海外ブログ辺りで2,3日前に話題になったやつで、対応策を関係者報告/検討済。たまに突発的なのもあるけど。
では、対応お願いしますと、依頼してみると、そんなのは自分の仕事では無い、君達は自分の職責を押し付けるのか!?と激昂。。
問題は、適当な事を行って歩くので、事後フォローとチームメンバーの士気ダウン。
対応:自部署から先んじて周知展開を行うようにしたら、大人しくなった、、と思いきや、パブコメ段階の法律を周知するように。法務部門が手を焼いている模様。
通信内容まで見てないが、かなり書き込み処理(addとかがURLにあるの)してるみたい。お役人様、申し訳ねえ。。webへの書き込みは禁止令出して、go.jpを書き込み禁止設定に。
4.縦社会部長
グループウェアのユーザー一覧、メールアドレス帳がabc順なのは何を考えているのか?と殴り込みに来る。
上に相談すると、まあやってあげたら?と言う事で役職コードを付けて、表示順変更。
社内からは、探しにくくなった!とクレーム多数も、事情を説明したら、皆引き下がる。
しばらくして、その部署の取締役に一周り若い人が着任。自分の上に、その名前があるのが気に要らないのか、やっぱり使いにくいから、表示を元に戻してと。。
皆も慣れてきた頃だったのに。。
反省:安易に受けすぎないようにしよう。とは言え、断る材料を用意する工数≫対応工数 だったから、つい。
モニター横に常時加湿器。錆びたりしないかなーと不安になるも、空気乾いてて〜と笑顔でかわされる(DTちゃ、ちゃうわ)
春先に給水タンクを倒して、acタップ付近が水浸しに。同じacタップ使ってたPCの電源が落ちる。
対応:オフィスに加湿器常設(一人暮らし用冷蔵庫サイズ)、cドライブの一部をオンラインストレージに自動同期するように展開。
反省:錆びるより前に、水を倒すとは。。考えが足りなかった。下手したら火事とかあり得たかも。。
6.アトピーおじさん
皮膚をかいて、キーボードに粉が付いてるのを見たくないと複数のクレーム。
そんなん、どうしょうもないやん??と思うも、毎週キーボード交換。
費用的には、1000円位だし、同梱されてて使ってないの沢山あったから問題なかったが。本人へね。。
毎週用意したものの、伝えるのは困難だね。
実は私も昔アトピーあった。血が出るくらいかいて、黄色い汁まで出てたよ〜、失礼な言い方になるかも知らんけども、掃除してもらえんやろか?とスライム上の吸着剤と、水洗いできるキーボードに交換。
なんだかんだで、その人と飲みに行く友達になる。
反省:これ私の仕事??担当部署の上長に投げたほうが良かったのかも。たまたま理解してくれる人やったからよかったが、下手したら、パワハラ的になってしまってたかも?
「正しいことをしたければ偉くなれ」って事ですかね。。和久さん。。
0円にして誰でも参入できるようにすると質の最低値が下がる
すべてを審査なんてできない以上、費用をもって「足切り」するのは現実的な回答だ
まあ、詐欺的な意味でのアプリは小金払っても割に合うからこれでは排除できないんだけどな
ワイはWindows使ってるけどな
時間 | 記事数 | 文字数 | 文字数平均 | 文字数中央値 |
---|---|---|---|---|
00 | 63 | 12077 | 191.7 | 42 |
01 | 55 | 5866 | 106.7 | 47 |
02 | 33 | 9835 | 298.0 | 42 |
03 | 17 | 1245 | 73.2 | 61 |
04 | 11 | 3081 | 280.1 | 25 |
05 | 16 | 2036 | 127.3 | 88 |
06 | 19 | 1315 | 69.2 | 25 |
07 | 55 | 5253 | 95.5 | 43 |
08 | 36 | 4001 | 111.1 | 46 |
09 | 65 | 10227 | 157.3 | 29 |
10 | 104 | 6319 | 60.8 | 36 |
11 | 48 | 5420 | 112.9 | 92.5 |
12 | 54 | 9321 | 172.6 | 51 |
13 | 70 | 6558 | 93.7 | 39 |
14 | 76 | 6587 | 86.7 | 51.5 |
15 | 67 | 10983 | 163.9 | 57 |
16 | 77 | 6567 | 85.3 | 33 |
17 | 96 | 7043 | 73.4 | 46.5 |
18 | 60 | 4649 | 77.5 | 51 |
19 | 103 | 5740 | 55.7 | 27 |
20 | 91 | 10609 | 116.6 | 41 |
21 | 133 | 11799 | 88.7 | 36 |
22 | 192 | 14240 | 74.2 | 33.5 |
23 | 77 | 7100 | 92.2 | 31 |
1日 | 1618 | 167871 | 103.8 | 39 |
人(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), ■anond:20181229100431 /20181229101144(4), ■anond:20181229143426 /20181229143905(4)
東京オリンピックまでにまともに対策してたら初詣いけてたのにな。懐かしい。神社廃止だしな。クリスマスも好きだったのに。ただ春節も悪くない。中国人が街から減るのはありがたい。昔の日本の旧正月ブームも来そうな感じ。それにしても沖縄取られてからあっという間だった。増田にこんなこと書いたぐらいで連れてかれることはないけど。ただニュースにならないけど富士山の矯正施設は相当厳しいらしい。アメリカ基地反対や沖縄独立の活動家が一番先に矯正施設送りになったのは驚いたね。アメリカ追い出して領土取られて元の日本人が50%切ったらもうそりゃね。韓国が自滅して北朝鮮に吸収されたと思ったらすぐ朝鮮省になったし。パスポートなしで行けてもうれしくも何ともない。今年はやっぱり朝鮮トンネル工事の大事故かな。建国100周年記念と言ってもあれは無理だって。あういうの造れるって思うのは単なる懐古主義。工事再開できるのか怪しいしたぶんまたやらかす。いくらメンツと言っても金かかりすぎ。簡体字奨励期間もあと2年しかない。そのうち平仮名も禁止になったらめんどくさい。ハングル即廃止になった朝鮮よりも恵まれてはいるが。あと独自OS義務化はやめてほしい。日本語の認識甘すぎる。中国語でしか使えない。こういうの政府主導でやっても時間かかりすぎる。軍に任せるべき。Macがlenovoに吸収されて使えなくなってせっかくWindowsに慣れたのに。tronって元々日本のなんだけどな。来年は北方領土問題解決しろ!
マイクロソフト日本語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://support.microsoft.com/ja-jp/help/4462244/microsoft-ime
[半角/全角]キー不要に? WindowsのIME切り替えがMac方式に ITMedia
http://www.itmedia.co.jp/news/articles/1812/26/news094.html
日本のニュースサイトはどういう主義か知らないけれど、頑なに情報ソースにリンクを張ろうとしない。ITmediaが言及したのは上のブログエントリだと思うのだけど、違うかもしれない。上のエントリだと画像では変換キー=IMEオン、無変換キー=IMEオフになってはいるが、本文中にデフォルト動作をそう変更するという記述は見当たらない。
今年もいろいろ買ったね。
定価20000円前後のところAmazonのタイムセールで14000円くらい。
主にスプラトゥーン2のプレイを録画して自分の立ち回りを省みる用途に使っている。
PCゲームはGeforce Experience(NVIDIA製GPUの付属ソフト)で録画できるし、PS4は本体に録画機能があるので苦労していないが、Nintendo Switchに関してはその辺が期待できないので購入。
付属ソフトのGame Capture for Windowsは録画する分には設定も簡単で動作も安定しており機械オンチにはありがたい。配信や実況動画を撮るとなるともう少し勉強が要りそうだが。(for Macもあるよ ※USB3.0必須)
パススルー機能も付いているのでスプラトゥーン2のようなシューターも問題なく録画できる。そもそもの遅延もさほど大きくないのでADVやSLGならそのままでも。
自分のプレイングをX上位勢の動画と見比べて改善したらS+の数字が安定して増えるようになった。目指せウデマエX
自分の粗がよく分かるけど味方の粗もそれなりに分かるのでもどかしさが更に募る。
ゲーム内スタッツも本体の録画機能も貧弱なのでそりゃ野良プレイヤーのレベルは上がらんわなと改めて思った。
ソフトウェアエンコード方式なのでそこそこつよつよPCが必要。よわよわPCの人はハードウェアエンコード方式のものを買おう。
元々音楽が好きでiPod classic 120GBをずっと愛用してきたが、生産終了を機に10年間にわたる酷使から解放してあげようと思った次第。
ストレージはどのみちmicroSDで拡張するので本体16GBで十分。
Bluetoothレシーバー機能が搭載されているので、手元にない音源をストリーミングサービス経由でiPhoneにダウンロードして、iPhone→ウォークマン→イヤホン・ヘッドホンというルートでiPhone内の音楽を聴けるのが便利。
あの忌々しい変換アダプタを持ち歩く手間を省きながらイヤホン・ヘッドホン選択の自由度を担保できる。有線/無線ありきでオーディオ選びたくないんですよね。
SONY純正の音楽管理・転送アプリケーションMusic Center for PCがクソ。
数百円で売ってるので何でもいい
買いもしない(買えない)建売住宅やら怪しいセミナーやらのチラシを毎日のように入れられてさすがにうんざりしたので購入。なんで今までやらなかったんだろうレベルで郵便受けがすっきりした。
PC用に使っていた古スピーカーが限界を迎えていたので5000円弱で購入。
この価格帯にしてはなかなか良い音で鳴る。1000~2000円台のスピーカーや内蔵スピーカーからの乗り換えなら明確に違いが分かると思われる。
良く言えばコストパフォーマンスが高く、非オーディオマニアには十分な性能
見た目に高級感はないが、さほど安っぽさもない
悪く言えば値段なりの音
低音がややこもる
最安値ではなかった
下手の横好きで将棋が趣味なのだが、安い駒しか持ってなかったのでせっかくならと某フリマアプリで中古の黄楊駒を購入。15000円ほど。
将棋の駒は主に材質と彫り方の組み合わせで値段が変わる。
安価← | →高価 | ||
---|---|---|---|
プラスチック | カエデ・ツバキetc | シャム黄楊 | 本黄楊 |
書き駒 | 彫り駒 | 彫り埋め駒 | 盛り上げ駒 |
これに加えて書体の違いがあって、これは好み。楷書体の他に錦旗、水無瀬、巻菱湖、源兵衛清安などなど。
更に美しい木目が入っていたり著名な駒師の号が入っていたりすると値段が跳ね上がる。プロのタイトル戦で使われるような駒は付加価値もあってかマジで高い。
今回は無銘・本黄楊の彫り駒という高級駒へのエントリーモデル的なポジションのものを購入。これは豆知識なんですけど指す時にプロ棋士の手つきを真似ると超ハッタリかませますよ。私はこれで大会全敗しました。
いい音がする
見た目が美しい
気分がアガる
将棋はうまくならない
Razer社のゲーミングヘッドセット。
締め付けがさほど強くなく、イヤークッションも大きく柔らかいので眼鏡常用者におすすめ。眼鏡をかけたまま長時間プレイしてもこめかみが殆ど痛くならない。
サウンドも十分ゲームプレイの向上に寄与してくれるが、エイジングしないとやや高音が痛いかも。マイクの性能については分かりません。なぜなら通話する友達がいないので…
自他共に認めるインドア派なのでアウトドアブランドには興味がなかったのだが、アウトドア使用に堪えるものが街中で無能なわけがない!と思いいろいろ手を出してみたところ完全にハマッた。
モンベルのアンダーウェア。L.W.(ライトウエイト)・M.W.(ミドルウエイト)・EXP.(エクスペディション)の順に厚く暖かくなる。
都市部ならL.W.で十分暖かい。屋内に入って多少汗ばんでもすぐ乾くので汗冷えしにくくて良い。
いわゆるインナーダウンというやつ。こんな薄っぺらいダウンで何ができる!あと見た目だせえ!と思ったがアウター下に着込んだらまあ暖かいこと。
あまり嵩張らないので暖かい日はくるっと丸めて鞄に入れておけばいい。(こういうことができるのもアウトドア用だからこそやなという気がする)
本当はユニクロのインナーダウンを買おうとしたのだが、「悪いこと言わんからもう4000円出してモンベルの買え」というディープウェブの声に従って購入。
古着屋で購入。オムニヒートというアルミニウムがプリントされた裏地に遮熱効果がある…らしい。そう言われてみると暖かい…ような気がしないでもない。
防風性能はそこそこあるのでこの下にインナーダウンやニットを着込めば都会の冬は結構いける。見た目も良いしね。
今話題のワークマンにも似たような加工のジャケットあるからファッションに拘りがなければそっちでもいいかも。
いろいろ見て回った結果、mont-bellやColumbiaあたりは比較的安価で手が出しやすいな~という印象。でもそのうち雪山全然関係ない東京の電車でMAMMUTやArc'teryxを着てイキり倒してみたいね。冗談です。
あったけえ…
高垣楓を、いやアイドルマスターを愛する人は皆これを購入するべきだ。
我々はこのようなクオリティのフィギュアを2000円以下で購入できる世界に生きているのだから。
良い
無い
漫画家・弐瓶勉氏の作品にスターシステム的に登場する巨大企業・東亜重工が開発した合成人間…という設定のフィギュア。
自分は元々弐瓶ファンだが、Twitterで検索すると弐瓶作品を知らない人もデッサン人形的に購入しているらしい。それほどまでに可動域が広く、自立能力も高いので動かしているだけで楽しい良いフィギュア。正座もできるよ!
品薄気味
御託は不要。
良い
あまりにも良すぎて体調崩した
・
東京オリンピックまでにまともに対策してたら初詣いけてたのにな。懐かしい。神社廃止だしな。クリスマスも好きだったのに。ただ春節も悪くない。中国人が街から減るのはありがたい。昔の日本の旧正月ブームも来そうな感じ。それにしても沖縄取られてからあっという間だった。増田にこんなこと書いたぐらいで連れてかれることがないけど。ただニュースにならないけど富士山の矯正施設は相当厳しいらしい。アメリカ基地反対や沖縄独立の活動家が一番先に矯正施設送りになったのは驚いたね。アメリカ追い出して領土取られて元の日本人が50%切ったらもうそりゃね。韓国が自滅して北朝鮮に吸収されたと思ったらすぐ朝鮮省になったし。パスポートなしで行けてもうれしくも何ともない。今年はやっぱり朝鮮トンネル工事の大事故かな。あれは無理だって。あういうの造れるって思うのは単なる懐古主義。工事再開できるのか怪しいしたぶんまたやらかす。いくらメンツと言っても金かかりすぎ。簡体字奨励期間もあと2年しかない。そのうち平仮名も禁止になったらめんどくさい。ハングル即廃止になった朝鮮よりも恵まれてはいるが。あと独自OS義務化はやめてほしい。日本語の認識甘すぎる。中国語でしか使えない。こういうの政府主導でやっても時間かかりすぎる。軍に任せるべき。Macがlenovoに吸収されて使えなくなってせっかくWindowsに慣れたのに。tronって元々日本のなんだけどな。来年は北方領土問題解決しろ!