「CASE」を含む日記 RSS

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

2019-04-18

Privacy Policy

ABW Coin built the MathX for Math Learner app as a Free app. This APP is provided by ABW Coin at no cost and is intended for use as is.

This page is used to inform app visitors regarding our policies with the collection, use, and disclosure of Personal Information if anyone decided to use our App.

If you choose to use our App, then you agree to the collection and use of information in relation to this policy.

Information Collection and Use

When using the APP, it only collects anonymous usage information to operate, improve and personalize the products. The APP does not collect any Personally Identifiable Information (PII) about you, nor does it match collected anonymous usage data with any 3rd party PII information.

Log Data

We want to inform you that whenever you use our App, in a case of an error in the app we collect data and information (through third party products) on your phone called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilizing our App, the time and date of your use of the App, and other statistics. If you use our app to read or post information on our app, we don't collect any information about your identity. If you identify yourself by sending us an e-mail containing personal information, then the information collected will be solely used to respond to your message. In addition to other information described in this policy, we may collect and share precise location information including the presence of connected devices via bluetooth, through methods such as partner mobile “SDKs”. This information may be used by itself, aggregated, or combined with mobile identifiers (such as IDFAs and Android IDs), and shared with other parties, for purposes related to advertising, attribution (e.g., measuring ad performance), analytics and research. You can remove your consent to having your location data collected by changing the settings on your device (but certain services may lose functionality as a result). You can also control options through your device’s opt-out settings which will: (i) tell advertisers to not use your in-app information from that device to gather information about your interests to target interest-based ads and (ii) inform some partners to halt further data collection and sharing from that device.

Service Providers

We may employ third-party companies and individuals due to the following reasons:

To facilitate our App;

To provide the App on our behalf;

To perform App-related services; or

To assist us in analyzing how our App is used.

We want to inform users of this App that these third parties have access to your Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.

Security

We value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and we cannot guarantee its absolute security.

Links to Other Apps or Websites

This App may contain links to other Apps or Websites. If you click on a third-party link, you will be directed to that app or website. Note that these external apps or sites are not operated by us. Therefore, we strongly advise you to review the Privacy Policy of these apps or websites. We have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party apps or websites or services.

Changes to This Privacy Policy

We may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. We will notify you of any changes by posting the new Privacy Policy on this page. These changes are effective immediately after they are posted on this page.

Contact Us

If you have any questions or suggestions about our Privacy Policy, do not hesitate to contact us

2019-02-20

anond:20190220105759

差別偏見増長になるので積極開示しないだけで、犯罪者になりやすい傾向、犯罪者になりやすい生育環境 ってのはある

例えば、発達障がい、中でもアスペCU特性(Callous-Unemotional Traits:無感覚感情的特徴)など

異常に親権の強い日本でも検査などは一応やってはい

ただ強制じゃないので、親の意識が相当高くないと、大学国立病院に足を運ぼうとはならないと思う

そもそも、親がこれだけ意識が高ければ、子が犯罪者になるとは考えにくい

犯罪者環境(特に親)+生まれつきの性質から

なお、犯罪者にならないサイコパス成功したサイコパスといい、

CEO外科医弁護士警察官シェフ などに多いそう

なおワイはサイコパス心拍数が低いのは顕著な傾向だと無批判に思ってきたが(例えばこういうの↓)

Am I a psychopath? You asked Googlehere’s the answer

If you’re not an athlete, and your heart rate is lower than average, you may be interested to discover that bradycardia, as it’s known, is more strongly correlated with psychopathy than smoking is with lung cancer.

That doesn’t mean everyone with a slow heart rate is a psychopath, but a very high percentage of psychopaths have slow heart rates.Why on earth would that be the case?

It turns out that there are a number of physiological traits strongly linked to psychopathy, including tell-tale patterns of activation in the brain and autonomic nervous system.

One theory is that psychopaths inherit a set of genes that make it harder to experience fear or excitement.

適当

Googleサイコパス のことを聞いてみた結果

心拍数が低い=サイコパスではないが、アスリートでもないのに心拍数が低いのはサイコパスの傾向が高いよ

脳と自律神経の働き方に特徴があり、恐怖や興奮などの刺激が感じにくいのではと考えられているよ

今日、改めてググってみたら、

今までの研究サンプル数が少ないのでやり直してみたら、サイコパス特別心拍数が低い とか無かったよってあったわ

ほえ〜

Resting heart rate and psychopathy: Findings from the Add Health Survey

引用元https://www.biorxiv.org/content/10.1101/205005v3


Despite the prior linkages of low resting heart rate to antisocial behavior broadly defined, less work has been done examining possible associations between heart rate to psychopathic traits.

(中略)

No significant relationship between heart rate and psychopathic traits, or heart rate and a measure of cold heartedness, was found after controlling for age, sex, and race.

2019-01-31

Privacy Policy

FY Creation LLC. built the CLX for Craigslist app as a Free app. This APP is provided by FY Creation LLC at no cost and is intended for use as is.

This page is used to inform app visitors regarding our policies with the collection, use, and disclosure of Personal Information if anyone decided to use our App.

If you choose to use our App, then you agree to the collection and use of information in relation to this policy.

Information Collection and Use

When using the APP, it only collects anonymous usage information to operate, improve and personalize the products. The APP does not collect any Personally Identifiable Information (PII) about you, nor does it match collected anonymous usage data with any 3rd party PII information.

Log Data

We want to inform you that whenever you use our App, in a case of an error in the app we collect data and information (through third party products) on your phone called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilizing our App, the time and date of your use of the App, and other statistics. If you use our app to read or post information on our app, we don't collect any information about your identity. If you identify yourself by sending us an e-mail containing personal information, then the information collected will be solely used to respond to your message. In addition to other information described in this policy, we may collect and share precise location information including the presence of connected devices via bluetooth, through methods such as partner mobile “SDKs”. This information may be used by itself, aggregated, or combined with mobile identifiers (such as IDFAs and Android IDs), and shared with other parties, for purposes related to advertising, attribution (e.g., measuring ad performance), analytics and research. You can remove your consent to having your location data collected by changing the settings on your device (but certain services may lose functionality as a result). You can also control options through your device’s opt-out settings which will: (i) tell advertisers to not use your in-app information from that device to gather information about your interests to target interest-based ads and (ii) inform some partners to halt further data collection and sharing from that device.

Service Providers

We may employ third-party companies and individuals due to the following reasons:

To facilitate our App;

To provide the App on our behalf;

To perform App-related services; or

To assist us in analyzing how our App is used.

We want to inform users of this App that these third parties have access to your Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.

Security

We value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and we cannot guarantee its absolute security.

Links to Other Apps or Websites

This App may contain links to other Apps or Websites. If you click on a third-party link, you will be directed to that app or website. Note that these external apps or sites are not operated by us. Therefore, we strongly advise you to review the Privacy Policy of these apps or websites. We have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party apps or websites or services.

Changes to This Privacy Policy

We may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. We will notify you of any changes by posting the new Privacy Policy on this page. These changes are effective immediately after they are posted on this page.

Contact Us

If you have any questions or suggestions about our Privacy Policy, do not hesitate to contact us

This app has no affiliation with Craigslist. Craigslist is a registered trademark of Craigslist, Inc. Please visit Craigslist's privacy policy to better understand their data collection practices and controls that they make available to you.

2019-01-21

Maybe, is it as expected by the Korean government?

About the radar irradiation problem, at the beginning, I was amazed at the response to the Korean side.

But, if we think carefully, is not the series of Korean side responses successful in the sense of earning time? It came to be interested.

In this case, the Korean side has not shown the intention to solve the problem at all.

If we apologized at the beginning of the first place, this problem could have been solved.

Nonetheless, the South Korean side only takes action to make the situation muddy.

In other words, is not it the purpose of the South Korean government itself to make the situation muddy?

From the beginning, is not it intentionally irradiated the radar wave to P-1 in order to create the current rude situation?

For what do the Korean government want to earn? I do not know.

Based on the verdict of the reprocessing work problem, it may take time to prepare its assets (at least in Korea) to legally acquire assets.

Alternatively, underwater negotiations towards the establishment of a unified government with North Korea are proceeding, from which we may want to miss the eyes of countries such as Japan and the United States.

Perhaps it may be waiting for diplomatic cards to be ready for the Japanese side to head down, such as the victims of abductions.

If there is no clear speculation in particular, if the Japanese side gets tired and giving up, it may be a Korean diplomatic victory.

Perhaps there is a secret ball of the Korean government that can not be thought of as an amateur.

 

2019-01-03

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: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:20190101162044

解説

この部分でfindを呼んで ペアのthis関数を見つけて

グローバル関数からクラスメソッドを呼び出す

実質このtargetがthisポインタ相当になって

this->OnPaintと呼ぶのと同じ効果を出してくれる

これがグローバル関数からクラスメソッド基本的呼び方になる

    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hWnd, &ps);

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


            // TODO: HDC を使用する描画コードをここに追加してください...
            EndPaint(hWnd, &ps);
        }

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システムは基本 グローバル関数なので

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

ブリッジ関数を書いた

2018-12-31

anond:20181228211250

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


class MyWindow
{
public:

	HWND hWnd;

	MyWindow()
		:hWnd(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;

	}



};


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);
            // 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;
}

こんなかんじ。クラス化した

2018-09-28

2005年から2010年までのライトノベルサイト杯上位10作品

2005年
ある日、爆弾が落ちてきて15票
わたしたちの田村くん111
海の底9票
戦う司書と恋する爆弾9票
円環少女18票
荒野の恋17票
白い花の舞い散る時間7票
終わりのクロニクル77票
戯言シリーズ ネコソギラジカル6票
ウィザーズ・ブレイン5下6票
古典部シリーズ クドリャフカの順番6票
紅16票
ディバイデッド・フロント36票
2006年上半期
狼と香辛料216 票
小市民シリーズ 夏期限定トロピカルパフェ事件14票
“文学少女”と死にたがりの道化13票
とらドラ!110
荒野の恋210
侵略する少女と嘘の庭8票
トリックスターズD7票
薔薇のマリア57票
抗いし者たちの系譜17票
ミッションスクール6票
お・り・が・み66票
さよならいもうと6票
永遠のフローズンチョコレート6票
2006年下半期
新作部門既存部門
ラジオガールウィズジャミング16票“文学少女”と繋がれた愚者30票
空とタマ15票化物語15票
クジラの空14票銀盤カレイドスコープ915票
煌夜祭12狼と香辛料314票
銀月のソルトレージュ19票空ノ鐘の響く惑星で1211
TOY JOY POP9票GOSICK 610
暗闇にヤギを探して19票カーリー210
赤朽葉家の伝説8票円環少女49票
ヤクザガールミサイルハート8票図書館戦争シリーズ 図書館内乱9票
ボトルネック8票BLACK BLOOD BROTHERS S38票
とらドラ!38票
2007年上半期
新作部門既存部門
人類は衰退しました128黄昏色の詠使い216票
ミミズクと夜の王24バカとテストと召喚獣216票
声で魅せてよベイビー19票BLACK BLOOD BROTHERS 715票
冬の巨人17トリックスターズC PART213票
DDD 116票神様のメモ帳213票
嘘つきみーくんと壊れたまーちゃん113票フルメタル・パニック!913票
リフレキス神話・Good by12とらドラスピンオフ!112
樹海人魚12扉の外212
麗しのシャーロットに捧ぐ9票レジンキャストミルク712
零式9票“文学少女”と穢名の天使12
カナスピカ9票
2007年下半期
新作部門既存部門
時載りリンネ!231“文学少女”と月花を孕く水妖34票
さよならピアノソナタ125票とらドラ!629票
暴風ガールズファイト224クジラのソラ420
アストロノト!120バカとテストと召喚獣319票
DOORS 119票人類は衰退しました216票
ドラゴンキラー売ります14票Fate/Zero416票
鉄球姫エミリー213票古典部シリーズ 遠まわりする雛15票
カッティング ~Case of Tomoe~13票円環少女614票
幽霊列車とこんぺい糖12流血女神伝813票
ギャルゴ!!!!! 111図書館戦争シリーズ 図書館革命12
狼と香辛料612
2008年上半期
新作部門既存部門
ベン・トー243票バカとテストと召喚獣426票
とある飛空士への追憶41票とらドラ!722票
生徒会の二心 碧陽学園生徒会議事録233スプライトシュピーゲル421票
SH@PPLE―しゃっぷる―230票傷物語17
君のための物語20神様のメモ帳317
龍盤七朝 DRAGONBUSTER 116票“文学少女”と神に臨む作家13票
ミスマルカ興国物語214票人類は衰退しました312
ロミオの災難13票BLACK BLOOD BROTHERS 912
旅に出よう、滅びゆく世界の果てまで。11さよならピアノソナタ211
ある夏のお見合いと、あるいは空を泳ぐアネモイと。11アストロノト!311
ぶよぶよカルテット11ダブルブリッド1011
オイレンシュピーゲル411
円環少女811
2008年下半期
新作部門既存部門
AURA ~魔竜院光牙最後の闘い~45票さよならピアノソナタ448票
俺の妹がこんなに可愛いわけがない234票“文学少女”と恋する挿話集143票
境界線上のホライゾン1下32票とらドラ!929票
ラノベ部127票生徒会の日常 碧陽学園生徒会黙示録119票
プリンセス・ビター・マイ・スウィート24偽物語19票
ばけらの!123時載りリンネ!417
迷宮街クロニクル119票バカとテストと召喚獣517
銀色ふわり14票アンゲルゼ416票
放課後の魔術師213票円環少女915票
Gunning for Nosferatus 112ANGEL+DIVE 314票
2009年上半期
新作部門既存部門
ソードアート・オンライン146票とらドラ!1035票
ロウきゅーぶ!240票小市民シリーズ 秋期限定栗きんとん事件31
電波女と青春男227票ベン・トー328
サクラダリセット125票偽物語24
星図詠のリー20BLACK BLOOD BROTHERS 1122票
アクセル・ワールド220ラノベ部219票
這いよれ! ニャル子さん119票“文学少女”見習いの、初戀。18票
原点回帰ウォーカーズ218票鉄球姫エミリー518票
耳刈ネルリと奪われた七人の花婿18票戦闘城塞マスラヲ517
プシュケの涙17迷宮街クロニクル217
2009年下半期
新作部門既存部門
紫色のクオリア49票さよならピアノソナタ encore pieces34票
僕は友達が少ない242票ソードアート・オンライン325票
クロノ×セクス×コンプレックス127票ベン・トー422票
龍盤七朝 ケルベロス127票耳刈ネルリと十一人の一年十一組22票
15×24 618票テスタメントシュピーゲル120
ぷりるん。16票ラノベ部315票
ピクシー・ワークス15票バカとテストと召喚獣715票
[映]アムリタ15票境界線上のホライゾン2下14票
シュガーダーク14票戦う司書絶望魔王14票
鷲見ヶ原うぐいすの論証13票円環少女1013票
神様のメモ帳413票
とある飛空士への恋歌313票
2010年上半期
新作部門既存部門
空色パンデミック238票ベン・トー5.546票
ココロコネクト235票戦う司書世界の力20
さくら荘のペットな彼女231僕は友達が少ない320
東京レイヴンズ129票ソードアート・オンライン420
なれる!SE 118票サクラダリセット219票
うちのメイドは不定形15票神様のメモ帳519票
神明解ろーどぐらす215票境界線上のホライゾン3上17
絶望同盟12人類は衰退しました515票
シュガーアップルフェアリーテイル112迷宮街クロニクル415票
羽月莉音の帝国212ミスマルカ興国物語715票
七花、時跳び!12

2018-09-22

anond:20180922125410

In case you actually didn't understand... You likely do not have a point of an argument and not arguing, or having differing opinions, to your selected opponents. You could point out irrelevant details to feel or pretend you have one, but if there isn't the opponent has no benefit to respond to. As for what I meant by calling it a validation, that's that process of your simply echoing back what's in your sight and demanding random explanations.

2018-08-25

anond:20180825011027

お互いに交換が成立するという事は、価値が等しいという事なのでは

でも例えお金が紙同然になったとしても性交渉価値暴落しない good

格差が広がると需要に対して供給が増え、お金価値に対して性交渉価値は目減りする bad

その場のニーズに応じて個人毎の価値上下する case by case

総じて性交渉安定的で、イケている資産であると言えると思う

ただし、すり減ったメンタルは買い戻せない

病気リスクプライスレス

やっぱり、元気と健康いちばん

2018-08-15

anond:20180815104212

エビデンスいっぱいあるで

Hirai T et al. Adverse effects of human papilloma virus vaccination on central nervous system: Neuro-endocrinological disorders of hypothalamo-pituitary axis. The Autonomic Nervous System 53: 49 -64, 2016

Matsudaira T, et al. Cognitive dysfunction and regional cerebral blood flow changes in Japanese females after human papillomavirus vaccination. Neurology and Clinical Neuroscience. 4: 220–227, 2016

Takahashi Y, et al. Immunological studies of cerebrospinal fluid from patients with CNS symptoms after human papillomavirus vaccination. Journal of Neuroimmunology. 298: 71-78, 2016

Aratani S, et al. Murine hypothalamic destruction with vascular cell apoptosis subsequent to combined administration of human papilloma virus vaccine and pertussis toxin. Scientific Reports 6: Article number: 36943 (2016)

Beppu H et al. Lessons learnt in Japan from adverse reactions to the HPV vaccine: a medical ethics perspective. Indian J Med Ethics. 2: 82-88, 2017.

Ozawa, K., Hineno, A., Kinoshita, T. et al. Suspected adverse effects after human papillomavirus vaccination: A temporal relationship between vaccine administration and the appearance of symptoms in Japan. Drug Saf 40: 1219, 2017.

Maki Y et al. Differential Diagnosis of Immune-Mediated Encephalopathies: “Neurological Symptoms of Diffuse Brain Damage”: A New Concept. Brain Nerve 69: 1131-1141

Kuroiwa Y et al. Pathophysiological hypothesis for neurological disorders occurring after human papillomavirus vaccination. Neurol Med (Tokyo) 85: 567-5821, 2016

Kinoshita T, et al. Peripheral sympathetic nerve dysfunction in adolescent Japanese girls following immunization with the human papillomavirus vaccine. Intern Med. 2014; 53:2185-2200.

Martínez-Lavín M. Hypothesis. Human papillomavirus vaccination syndrome — small fiber neuropathy and dysautonomia could be its underlying pathogenesis. Clin Rheumatol. 2015; 34:1165-1169.

Inbar R et al: Behavioral abnormalities in female mice following administration of aluminum adjuvants and the human papillomavirus (HPV) vaccine Gardasil. Immunol Res (2016). doi:10.1007/s12026-016-8826-6

Geier DA, Geier MR. Quadrivalent human papillomavirus vaccine and autoimmune adverse events: a case-control assessment of the vaccine adverse event reporting system (VAERS) database. Immunol Res. 2016. doi:10.1007/s12026-016-8815-9.

Geier DA, Geier MR. Quadrivalent human papillomavirus vaccine and autoimmune adverse events: a case-control assessment of the vaccine adverse event reporting system (VAERS) database. Immunol Res. 2016. doi:10.1007/s12026-016-8815-9.

2018-08-12

プログラミングを手伝ってくださいと言われて

手伝っているけど、俺がかわりに全部やるんじゃなくて、ちゃんと本人に理解させてほしいといわれた。

それで説明しながらやってるけど、プログラミング言語の、if や switch理解してるというからSQLCASE説明したら理解できないと言われた。

あとSQLSELECT と INSERT はわかるらしい。

それで

INSERT INTO TBL 
  (A,B, C) 
SELECT 
  A, B, C
FROM
 TBL
WHERE ・・・

という書き方を教えたら、これも理解できないらしい。

俺がこの書き方を知ったのがだいぶ前だからあんまり覚えてないけど、たしか見た瞬間に「SELECTの結果を一発でINSERTできるのか。便利じゃん」と理解できたと思う。

SELECT と INSERT がわかってたら、それをくっつけた構文も動作想像できるよな。

コピペプログラマってコード動作をどう認識してるんだろう。

2018-07-05

[]anond:20180624154720

GIMP 2.10.4 Released

2018-07-04

https://www.gimp.org/news/2018/07/04/gimp-2-10-4-released/

Asynchronous Fonts Loading

Loading all available fonts on start-up can take quite a while, because as soon as you add new fonts or remove existing ones, fontconfig (a 3rd party utility GIMP uses) has to rebuild the fonts cache. Windows and macOS users suffered the most from it.

Thanks to Jehan Pagès and Ell, GIMP now performs the loading of fonts in a parallel process, which dramatically improves startup time. The caveat is that in case you need to immediately use the Text tool, you might have to wait till all fonts complete loading. GIMP will notify you of that.

まだサイトトップからダウンロード可能になっていない

2018-07-04

バトルメックのテクノロジー(後半)


原文:

 https://bg.battletech.com/universe/battlemech-technology/

兵装 WEAPONS

 バトルメックが装備できる武装は幅広い。メック搭載の核融合から事実上いつまででもエネルギー供給を受けることができるエネルギー兵器弾薬の補充を必要としない。このため一般的なバトルメックは、荷電粒子兵器もしくはレーザー兵器を主武装として搭載している。加えて、多くは短距離ミサイルや長距離ミサイルの発射システムを持っている。その他、連射型オートキャノンやマシンガンを搭載しているメックも多く、これらは対歩兵、対航空機、対メック戦闘に用いられる。兵器の各分類に関する概観は下記のとおりである

オートキャノン Autocannons

 オートキャノンは高速で連射が可能自動装填兵器であり、高性能炸薬を詰めた徹甲弾の奔流を吐き出す。「通常型」オートキャノンは徹甲弾、フレシェット弾、焼夷弾狙撃弾などの各種弾薬使用可能である。加えて、機能を追加した3種の改良型オートキャノン(LB-Xオートキャノン、ロータリー・オートキャノン、ウルトラオートキャノン)が存在する。オートキャノンの弾薬は、致命的な損傷を受けたりオーバーヒートによる自動発火が発生した際にメックの内部で誘爆を起こす可能性がある。

火炎放射器 Flamers

 メック搭載型の典型的火炎放射器は、核融合炉の発する熱を利用して短射程ながら強力な爆炎を作り出す。発熱が大きいわりに与えるダメージが小さいため、メックに搭載されることはまれであるが、焼夷兵器として有効場合もある。

ガウスライフル Gauss Rifles

 ガウスウライフルはライフル砲身の中に設置された磁石の列によって、標的に向けて弾体を加速する。動作必要な電力は莫大だが、発熱が非常に少ない上、発射時の弾速は他の通常兵器の二倍に達する。ヘビーガウスライフル、通常型ガウスライフル、軽量型ガウスライフルの3種がある。オートキャノンとは異なりガウスライフル弾薬は誘爆しないが、ガウスライフル自体ダメージを受けると爆発する。

ハチェット Hatchet

 中心領域製バトルメックの中には、装甲を切断するための劣化ウランの刃を備えたハチェット(手斧)を装備している機種がある。ハチェットはメックに固定され、標的にダメージを与えるにはターゲットに振り下ろさねばならない。ハチェットの変形としてソード(剣)がある。

レーザー Lasers

 レーザーは狭い範囲に莫大な熱量を集中することで標的にダメージを与える。バトルメック搭載の各種レーザーは射程と威力対応してマイクロレーザー、小型レーザー、中型レーザー、大型レーザーのいずれかに分類される。このほか、射程延長型レーザー、ヘビーレーザーパルスレーザーがある。レーザーダメージを受けても爆発することがなく弾薬不要だが、大量の熱を発する。

マシンガン Machine Guns

 バトルメックが装備することはまれだが、マシンガン機関銃機関砲)は高速で連射することが可能なので、素晴らしい対人兵器となる。マシンガンにはライトマシンガンとヘビーマシンガンがある。

ミサイルランチャー Missile Launchers

 ミサイルランチャーミサイル発射装置)は推進力と誘導装置を持つ弾体を発射し、標的にダメージを与える。非常に多くの種類があり、長距離ミサイルに始まって中距離ミサイル、短距離ミサイルさらにはクランの改良型戦術ミサイルシステムや〈ストリーク〉短距離ミサイルなどの各種改良型ミサイルまで様々である。その上、「通常型」長距離ミサイルランチャーであっても無数の派生型弾頭を使用できる。たとえばフレア型、分裂型、焼夷型、半誘導型、それに〈サンダー地雷散布ミサイルなどである。オートキャノン同様、ミサイルランチャー弾薬ダメージを受けたりメックが過剰に加熱すると誘爆を起こす可能性がある。

荷電粒子砲(PPC) Particle Projector Cannons (PPC)

 PPCは要するに磁気加速装置であり、高エネルギー陽子もしくはイオンの矢を撃ち出して衝撃と高熱によるダメージを与える。各種PPCはバトルメックが装備可能兵器のうちでは最強クラスだ。PPCには通常型PPCと射程延長型PPC存在する。

その他の装備 Other Equipment

 装甲と兵器に加えて、メックは広範な各種システムを装備可能である。多くは武器の正確性を向上させる電子システムや各種防御手段提供するものだが、各種の防御的機能を持つ純粋機械的システムもいくつか存在する。

アクティブプローブ Active Probe

 動力を切ったユニット偽装されたユニットであっても標準レベル電子戦装備一式より遠距離から探知・識別することができるため、アクティブプローブはあらゆる偵察部隊にとって有効な追加装備となる。

アンチミサイルシステム(AMS) Anti-Missile System

 アンチミサイルシステム(AMS)は連射可能な定点防御用マシンガンである。飛来するミサイルを追跡し、迎撃し、破壊することができる。きわめて効果的ではあるものの、大量の弾薬を消費するのが最大の弱点である

対人攻撃ポッド Anti-Personnel Pods

 対人攻撃ポッド(Aポッド)は要するに指向性地雷である。設置するのはバトルメック脚部の膝から下であり、そこは敵歩兵が繊細な駆動装置に爆発物を仕掛けようとする場合には必ず攻撃せねばならない部位である

アルテミスⅣ〉射撃管制システム Artemis IV Fire Control System

 〈アルテミスⅣ〉射撃管制システムは、通常型ミサイルランチャーによる射撃の正確さを向上させる。

C3コンピューター C3 Computer

 指揮/統制/通信Command/Control/Communications、すなわちC3)コンピューターは中心領域特有システムである複数の機体ーー最大12機ーーが照準データを共有することを可能とし、これによって射撃の精確さは大幅に向上する。このシステムには重大な欠点があり、それは「主要マスターコンピューター群」が破壊もしくはダメージを受けたり、敵の電子対抗手段干渉をうけたりすることで、ネットワーク構成部品が「消えて」しま可能性があることである。改良型のC3コンピューターでは「マスターコンピューター群」が失われることによるネットワーク消失という問題はなくなっているが、合計6ユニットまでしか接続できない。

弾薬収納運搬装備(CASE) Cellular Ammunition Storage Equipment (CASE)

 CASEは機体内部の弾薬誘爆による被害を軽減するダメージコントロール技術である。CASEによって防護された部位に格納された弾薬が誘爆した場合、CASEは特殊設計の外鈑と装甲を通じて爆圧を逃がす作りになっているため、爆発力のほとんどをコクピットエンジンなどバトルメックにとって致命的な部分から逸らすことができる。

CMスイート電子対抗措置装備一式) ECM Suite

 〈ガーディアン〉ECMスイートは広い帯域にわたってジャミングおよび電子対抗措置を行なう装置であり、敵の長距離探査・監視装置の効力を低下させる。

人工筋肉加速信号回路(MASC) Myomer Accelerator Signal Circuitry (MASC)

 MASCはバトルメックに短時間だけ爆発的なスピードを与えるが、繊細な脚部駆動装置を損なう危険もある。MASCの作用は脚部マイアマー(人工筋肉)への信号を増幅し、通常可能なよりも高速で収縮・弛緩を行なわせるというもので、これによってスピードは上がるが、使用時間が伸びると駆動装置と人工筋肉への負荷によって破滅的な事故が発生する可能性がある。

〈ナーク〉ミサイル・ビーコン Narc Missile Beacon

 〈ナーク〉ミサイル・ビーコンは大改造を施したミサイルランチャーであり、「ポッド」と呼ばれる特殊ミサイルを発射する。ポッド磁気を帯びた弾頭とその後ろに搭載される強力なホーミング・ビーコンで構成される。このミサイルは標的に命中すると、〈ナーク〉の信号を受信できる味方のミサイルシステムすべてに向けて追尾信号を発する。〈アルテミスⅣ〉ミサイルシステムと同様に、〈ナーク〉のポッドによって命中するミサイルの数が増える可能性がある。改良型の〈ナーク〉発射装置は通常型よりも射程が増大しているのみならず、以下の特殊ミサイルを発射することもできる。すなわち追尾型、爆裂弾頭型、ECM型、〈ヘイワイヤ〉および〈ネメシスミサイルである

TAG(タグ/照準確定機) Target Acquisition Gear (TAG)

 照準確定装備は観測機によって用いられ、〈アローⅣ〉ミサイル投射システムが発射するホーミングミサイルのため、もしくは長距離ミサイルランチャーが発射する半誘導タイプのLRMによる攻撃のために、標的を指定する。氏族もTAGの軽量化バージョンを用いており、これは軽量ではあるがより短射程である

照準コンピューター Targeting Computer

 氏族は様々なミサイル兵器用の特殊照準システムに加えて先進的な照準システムを開発しており、中心領域でこれに比肩するものが現れたのは最近のことである。照準コンピューターは以下の種類の直射兵器パフォーマンスを向上させる。すなわちレーザーPPCガウスライフル、オートキャノンである

三重強化筋肉 Triple-Strength Myomer

 中心領域科学者特殊タイプマイアマー(人口筋肉)を開発した。これはメックがオーバーヒートした時に極めて強い力を出す。この技術氏族のバトルメックでは使用できない。

※前半はこちら→ https://anond.hatelabo.jp/20180704014245

2018-06-15

anond:20180615183300

目を背けてなんかないんだが…

リンク貼れって言っといて読まないお前まじなんなの?

CRPS and POTS continue to be presented as case reports in association with HPV vaccination, particularly from Denmark and Japan. These were initially assessed by GACVS in 2015.24 These conditions include a spectrum of diverse symptoms, making assessment using administrative health collections challenging. In June 2017, new data from Japan that assessed cases with diverse symptoms, including pain and motor dysfunction, were presented to the Committee. The cases were identified from a nationwide epidemiological survey involving multiple hospital medical departments of various disciplines including pain, neurology, rheumatology, paediatrics and psychiatry/psychosomatic medicine. These complex syndromes manifested in both sexes, although were more common in girls, and occurred in both vaccinated and unvaccinated individuals. The Committee concluded that since their last review, there is still no evidence to suggest a causal association between HPV vaccine and CRPS, POTS or the diverse symptoms that include pain and motor dysfunction.

2018-06-01

日本マンガの巻数順位(50巻以上・シリーズ作品編)

2018年6月1日更新

※元となる作品の続編,前日譚,およびそれに準ずる作品であることをシリーズ定義とする
※総巻数が50巻以上のシリーズ作品について扱い,シリーズ第1作を"作品名"とする
外伝や番外編やスピンオフ,たとえば「ボクは岬太郎」「弱虫ペダル SPARE BIKE」については扱わない。「ヤング編」と銘された作品も,前日譚というよりはスピンオフの要素が強い場合ミナミの帝王等)は含めないものとする
作画者変更によるシリーズ作品,たとえば「蒼天の拳 リジェネシス」「新クレヨンしんちゃん」は参考外とする
※巻数内訳の欄において,第1作は「無印」と表し,2作目以降の作品名は適宜略した
※扱う・扱わないの個別理由は一覧の下に記す
※完結年は連載が終わった時点を指すものとする。また,池沢さとし21世紀の狼」は90年代作品であること以外に確かなことがわからなかった
超人ロック,キャプテン翼作品群については各自で調べられたい

巻数による降順

順位総巻数作品作者原作者開始年完結年巻数内訳
1203巻ドカベン水島新司 1972 無印…48,大甲子園…26,プロ野球…52,スーパースターズ…45,ドリームトーナメント…32
2131グラップラー刃牙板垣恵介 1991 無印…42,バキ…31,範馬刃牙…37,刃牙道…21
3124巻銀牙-流れ星 銀-高橋よしひろ 1983 無印…18,ウィード…60,オリオン…30,THE LAST WARS…16
4121巻ジョジョの奇妙な冒険荒木飛呂彦 1987 無印…63,ストーンオーシャン17,SBR24,ジョジョリオン17
5119巻キン肉マンゆでたまご 1979 無印…62,Ⅱ世…29,Ⅱ世究極の超人タッグ編…28
6114巻超人ロック聖悠紀 1967 鏡の檻(現行)…3,ガイアの牙(現行)…1
7111巻弐十手物語神江里見小池一夫19782012無印110,つるじろう…1
8106巻千里の道も渡辺大原一歩19892014無印…45,新…16,第三章…39,修羅の道…6
9101巻キャプテン翼高橋陽一 1981 無印…37,……,ライジングサン(現行)…8
9101巻あさりちゃん室山まゆみ 19782016無印100,5年2組…1
11100巻コボちゃん植田まさし 1982 無印…60,新…40
1294巻課長島耕作弘兼憲史 1983 課長17,部長…13,取締役…8,常務…6,専務…5,社長…16,会長…9,ヤング…4,主任…4,係長…4,学生…6,就活…2
1294巻コータローまかりとおる!蛭田達也 19822004無印…59,新…27,L…8
1491巻MAJOR満田拓也 1994 無印…78,2nd…13
1585巻スーパードクターK真船一雄 1988 無印…44,Doctor K…10,K231
1682巻浦安鉄筋家族浜岡賢次 1993 無印31,元祖28,毎度…23
1781巻高校鉄拳伝タフ猿渡哲也 19932012無印…42,TOUGH…39
1879巻鉄拳チンミ前川たけし 1983 無印…35,新…20,Legends24
1977巻釣りキチ三平矢口高雄 19732010無印…65,平成版…12
2076巻湘南純愛組!藤沢とおる 1990 無印31,GTO…25,14DAYS…9,パラダイス・ロスト11
2175巻生徒諸君!庄司陽子 1977 無印24,教師編…25,最終章・旅立ち…26
2175巻DEAR BOYS八神ひろき 19892016無印23,EARLY DAYS…1,ACT2…30,ACT3…21
2374巻白竜渡辺みちお天王寺大1996 無印…21,LEGEND…46,HADOU…7
2473巻カバチタレ!東風孝広田島隆1999 無印20,特上カバチ!!…34,カバチ!!!…19
2572巻味いちもんめ倉田よしみあべ善太1986 無印33,新…21,独立編…10,にっぽん食紀行…6,世界の中の和食…2
2572巻かっとび一斗門馬もとき 19852007無印…46,風飛び…26
2770巻金田一少年の事件簿さとうふみや金成陽三郎,天樹征丸1992 無印…27,Case10,2期…14,20周年…5,R…14
2770巻魁!!男塾宮下あきら 1985 無印…34,暁…25,極…8,真…3
2969巻ワイルド7望月三起也 19692014無印…48,新…14,続・新…2,飛葉…2,R…2,W7…1
3067巻工業哀歌バレーボーイズ村田ひろゆき 19892011無印…50,好色哀歌…17
3166巻あずみ小山ゆう 19942014無印…48,AZUMI…18
3166巻JINGI仁義立原あゆみ 19882017無印33,S…19,零…14
3365巻BOYS BE...玉越博幸イタバシマサヒロ1991 無印…32,2nd…20,L…6,pre…1,next…6
3365巻賭博黙示録カイジ福本伸行 1996 無印…13,破戒録…13,堕天録…13,和也10,ワンポーカー…16
3365巻テニスの王子様許斐剛 1999 無印…42,新…23
3664巻パズルゲームはいすくーる野間由紀 1983 無印…34,新…6,X…8,プレステージ…2/トレジャー…4,Pro…3,ラグジュアリー…5,サクシード…2
3664巻彼岸島松本光司 2002 無印33,47日間…16,48日後…15
3863巻怨み屋本舗栗原正尚 2000 無印20,巣来間風介…6,REBOOT…13,REVENGE…11,EVIL HEART…9,WORST…4
3863巻特命係長只野仁柳沢きみお 1998 無印…9,新…20,ファイナル…27,ルーキー…7
4062巻並木橋通りアオバ自転車店宮尾岳 1999 無印20,アオバ自転車店20,ようこそ…20,いこうよ…2
4062巻ザ・シェフ加藤唯史剣名舞19852013無印…41,新章…20,ファイナル…1
4062巻本気!立原あゆみ 19862005無印…50,Ⅱ…5,サンダーナ…7
4360巻クローズ高橋ヒロシ 19902013無印…26,その後…1,WORST33
4360巻変幻退魔夜行 カルラ舞う!永久保貴一 1986 無印…18巻,新…18,真…8,超…5,聖徳太子呪術…3,少年陰陽師…3,葛城古代神…3,湖国幻影城…2
4559巻風雲児たちみなもと太郎 1979 無印…29,幕末編…30
4559巻荒くれKNIGHT吉田聡 1995 無印28,高校暴走11,黒い残響20
4559巻Q.E.D 証明終了加藤元浩 1997 無印…50,iff…9
4559巻ダイヤのA寺嶋裕二 2006 無印…47,act2…12
4957巻湾岸MIDNIGHT楠みちはる 1990 無印…42,C112,銀灰…2,首都高SPL…2
4957巻ダーク・エンジェル風間宏子 1995 無印…22,Ⅱ…13,Ⅲ…12,Ⅳ…8,レジェンド…2
4957巻龍狼伝山原義人 1993 無印…37,中原繚乱…17,王霸立国…3
4957巻カメレオン加瀬あつし 1990 無印…47,くろアゲハ10
4957巻優駿の門やまさき拓味 19952011無印33,GI…13,ピエタ11
4957巻MF動物病院日誌たらさわみち 1994 無印…26,マイフレンド動物病院note…2,おいでよ動物病院!…15,僕とシッポと神楽坂12,しっぽ街のコオ先生…2
5556巻神の雫キモト・シュウ亜樹直2004 無印…44,マリアージュ12
5556巻センゴク宮下英樹 2004 無印…15,天正記…15,一統記…15,権兵衛…11
5556巻キンゾーの上ってなンボ!!叶精作小池一夫19872009無印…8,新…36,新々…12
5556巻空手小公子小日向海流馬場康誌 20002014無印…50,空手小公子…6
5955巻サーキットの狼池沢さとし 1975199X無印…27,モデナの剣…25,21世紀…3
5955巻マンガ日本の歴史石ノ森章太郎 19891995無印…48,現代篇…7
6152巻Dr.タイフーンかざま鋭二高橋三千綱19862000無印…25,JR11,元祖…16
6152巻みどりのマキバオーつの丸 19942017無印…16,たいよう…16,W…20
6351巻王様の仕立て屋サルト・フィニート大河原遁 2003 無印…32,サルトリア・ナポリターナ…13,フィオリ・ディ・ジラソーレ…6
6351巻ドラゴンクエスト列伝ロトの紋章藤原カムイ 1991 無印…21,紋章を継ぐ者達へ…30
6351巻ドラえもん藤子・F・不二雄 19691994無印…45,プラス…6
6351巻なぜか笑介聖日出夫 19822016無印…29,だから…22
6351巻ヤンキー烈風もとはしまさひで 19861998無印28,新…23
6850巻9番目のムサシ高橋由紀 1996 無印…21,ミッションブルー…8,レッドスクランブル12,サイレントブラック…9
6850巻頭文字Dしげの秀一 1995 無印…48,MFゴースト…2
6850巻甘い生活弓月光 1990 無印…40,2nd…10
6850巻包丁無宿たがわ靖之 19822000無印…45,新…5
6850巻キリン東本昌平 19872016無印…39,The Happy Ridder Speedway…11

現在連載中の作品で次にシリーズ通算50巻に到達しそうなのは,計48巻の田中宏BADBOYS」(現在はKIPPOの10巻)。計47巻のよしだみほ馬なり1ハロン劇場」は2019年秋の到達が予想される。計45巻の佐藤タカヒロ「バチバチ」,岡野剛真倉翔地獄先生ぬ~べ~」,波間信子「ハッピー」,これらのシリーズも近い

判断に迷った作品

2018-02-21

ビタミンBについて

ビタミンB2

エビデンスが見当たらない

ビタミンB6PMSに対しての有効性が示唆されている

RCT

・軽度~中程度のアルツハイマー患者409名 (平均76.3±8歳、試験240名、アメリカ) を対象とした二重盲検無作為プラセボ比較試験において、葉酸5 mg/日、ビタミンB6 25 mg/日、ビタミンB12 1 mg/日を18ヶ月間併用させたところ、血中ホモシステイン濃度の低下がみられたが、アルツハイマー認識症状スコア (ADAS-cog) に効果は認められず、抑うつ傾向の増加が認められた (PMID:18854539)

・75歳以上の男性299名 (試験群150名、平均79.3±2.7歳、オーストラリア) を対象とした二重盲検無作為プラセボ比較試験において、ビタミンB6 25 mg/日、ビタミンB12 400μg/日、葉酸2 mg/日を2年間摂取させたところ、BDI (Beck Depression Inventory) スコアによるうつ病評価およびうつ病発症率には変化が認められなかった (PMID:18557664) 。

・経口摂取月経前症候群 (PMS) に対して、有効性が示唆されている。乳房の痛み、圧痛、抑うつなど、PMSの症状を改善するという知見がある。ピリドキシン50 mg/日および酸化マグネシウム200 mg/日、1ヶ月間の摂取により、PMSに付随する不安が軽減した (PMID:10746516) 。1日200~500 mgという高用量のピリドキシン摂取を支持する臨床医もいるが、1日50~100 mg程度の低用量で効果を示すと思われる。PMSに対する効果ビタミンB6の用量に依存しないため、効果のある最低用量で使用するべきである

ビタミンB12

RCT

・軽度~中程度のアルツハイマー患者409名 (平均76.3±8歳、試験240名、アメリカ) を対象とした二重盲検無作為プラセボ比較試験において、5 mg/日の葉酸、25 mg/日のビタミンB6、1 mg/日のビタミンB1218ヶ月間併用させたところ、血中ホモシステイン濃度の低下がみられたが、アルツハイマー認識症状スコア (ADAS-cog) に効果は認められず、抑うつ傾向の増加が認められた (PMID:18854539) 。

・75歳以上の男性299名 (試験群150名、オーストラリア) を対象とした二重盲検無作為プラセボ比較試験において、1日あたりビタミンB6 25 mgビタミンB12 400μg、葉酸2 mgを2年間摂取させたところ、BDI (Beck Depression Inventory) スコアによるうつ病評価およびうつ病発症率には変化が認められなかった (PMID:18557664) 。

抑うつ症状のある成人900名 (60~74歳、試験群447名、オーストラリア) を対象とした二重盲検無作為プラセボ比較試験において、葉酸を400μg/日とビタミンB12を100μg/日、2年間摂取させたところ、抑うつ症状の自己評価 (PHQ-9) に影響は認められず、抗うつ薬の明確な増強作用も認められなかった (PMID:20805005) 。

統合失調症の成人139名 (試験群93名、平均45.3±1.1歳、アメリカ) を対象とした二重盲検無作為プラセボ比較試験において、葉酸2 mg/日+ビタミンB12 400μg/日を16週間摂取させたところ、陰性症状評価尺度 (SANS) 、陽性・陰性症状評価尺度 (PANSS)、Calgaryうつ病評価尺度のいずれも影響は認められなかったが、葉酸吸収に関与する遺伝子型を考慮した場合のみ、陰性症状評価尺度改善が認められた (PMID:23467813) 。

一般情報

・メチルコバラミンは経口摂取で、睡眠相後退症候群 (delayed sleep phase syndrome) の治療に対し、効果がないことが示唆されている。高照度光療法との併用の有無にかかわらず、メチルコバラミン原発概日リズム睡眠障害の人々の助けにはならないようである

ビタミンB12欠乏症でない精神病患者治療に対し、経口摂取でおそらく効果がない。

(PMID:25491145) Med Oncol. 2015 Jan;32(1):434.

(PMID:21867542) J Med Case Rep. 2011 Aug 25;5:413.

(PMID:26740832) Can Geriatr J. 2015 Dec 23;18(4):231-45.

(PMID:26147383) J Hypertens. 2015 Sep;33(9):1897-906; discussion 1906.

(PMID:25805360) Med Sci Monit. 2015 Mar 24;21:875-81.

(PMID:26786311) Ophthalmic Epidemiol. 2016;23(1):32-9.

(PMID:28248558) J Geriatr Psychiatry Neurol. 2017 Jan;30(1):50-59.

出典元:国立健康・栄養研究所健康食品安全性有効情報

ビタミンB2https://hfnet.nih.go.jp/contents/indiv_agreement.html?49

ビタミンB6https://hfnet.nih.go.jp/contents/indiv_agreement.html?48

ビタミンB12https://hfnet.nih.go.jp/contents/indiv_agreement.html?46

anond:20180221105635

2018-01-23

SELECT GENGOU CASE WHEN YMD >= TO_DATE(‘1989/01/08’, ‘YYYY/MM/DD’) THEN ‘平成’ ELSE ‘昭和’ END FROM SEIREKI

こんなのがそこらにある弊社社内システム

WAREKI = SEIREKI - 1988

とかな

元号対応死ねばいいのに

2017-12-21

[]12月21日

○朝食:なし

○昼食:味噌カツ定食

○夕食:ご飯、納豆サラダ、卵

○間食:みかんチップスターサプリメントマルチビタミンミネラル)二粒

調子

はややー。

仕事しんどい助六寿司が売ってないせいでパワーがでない。

明日行ったら土日はお休みなので、頑張ろう。

3DS

ポケモンサン

ポケカを買ってきてキャンペーンに応募して、マナフィメロエッタフーパをもらった。

フーパフォルムチェンジすると僕の好きな「あくタイプ」になるので、これが目当てだった。

三回前ぐらいの映画は観に行ってたので、フーパはもう持ってるんだけど、好きな幻のポケモンは何匹持ってても嬉しいからね。

ダークライとか、ダイパリメイク何度でも捕獲できるようにならなかなあ……)

ポケとる

キテルグマダグトリオ捕獲

宝石キャンペーンもしてるし課金して、今年中に色イベルタルまで行こうかな。

iPhone

コマスター

キートレボを開ける程度にプレイ

はーーーーーーーーー。

色ギャラ前に準備運動的に頑張ってたけど、なんやこのゲーム

いや、多分一年ぐらいはプレイしてると思うけど、なんやこのゲーム

もういい、ラティアス特攻を繰り返すだけのお手軽のゲームにしよう。

●XboxOne

○PUBG

最近巷で話題の、バトルロワイアルシューター

急に対人戦がしたくなり購入して、今日は二回ほどプレイ

ざっくりいうと、百人のプレイヤーが裸一貫で武器とかが落ちてる謎の島で殺し合いをするゲーム

島はめちゃくちゃ広いので百人いるプレイヤーと中々遭遇しないので、まずは銃や弾を集めていく。

時間経過とともに、島の安全地帯が狭まって行って、安全地帯の外だと徐々にダメージを受けて次第に死んでしまう。

落ちてる武器とか安全地帯の狭まる範囲などはランダムなので、シューター力だけじゃなくてドロップアイテムを拾う運も大事、なのかな?

1回目は、銃を手にいれるまえに肉弾戦で一人倒した後、いまいちルールがわからなくて徐々に狭くなるマップの外に出ててしまって毒? みたいなマップ効果で死亡。

2回目は、同じ轍を踏まないよう安全地帯キワキワのラインを維持しつつ、アイテムを回収。

アサルトライフルっぽいのにショットガンに弾もそれなりにと、かなり装備が充実してきたんだけど、

どうも、この安全地帯キワキワから逃げ込むプレイヤーを狙うハイエナのような賢い人がいたみたいで、ガンガン狙われてあっというまに死亡。

今日は軽く触っただけだけど、百人の中でたった一人の勝者を目指すゲームなので、勝つのはかなり難しそうだなあ。

もともと、TPSFPSも超苦手だからね。

いや、なんで買ったんだよって感じだけどさ。

せめて、一回ぐらいは話題の「ドン勝」ってのを味わって見たいなあ。

デッドライジング3

DLCシナリオ、の前にサイドミッションを一応全部こなしたくて二周目を開始。

1、 CASE:0、2本編、CASE:WESTとこういうやりこみは興味なかったんだけど、3は面白いからやろうと思う。

今日はチャプター2の途中まで攻略レベルも50でMAXになった。

取得できるスキルはまだあるので、強さの限界ではないのだけれど。

2017-12-17

[]12月16日

○朝食:なし

○昼食:そば、カツ丼

○夕食:考え中

○間食:せんべいサプリメントマルチビタミンミネラル)二粒

調子

はややー。

休みなので、洗濯したり買い物行ったり、最近できた御蕎麦屋さんに行ったりしてた。

そのあとはデッドライジング3に熱中してた。

●XboxOne

デッドライジング3

チャプター5の途中。

なんかストーリーは色々あったような気がするけど、単にお使いを頼まれるだけのシナリオだった気もする。

するんだけど、チャプター4の終わりぐらいから、

CASE:WESTで出てきた黒幕的なお婆さんが出てきたり、

フランクさんとチャックさんの偉業を誉め立てる博物館が出てきたりと、

シリーズを通してのエピソードが出てきて、お話も楽しくなってきた。

収集物集めたり、サイドミッションこなしたり、ゾンビ相手無双したりして、

ガンガンレベルが上がって超楽しいレベル45まで育てた。

アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん