DIRECT2Dを試す、その4

前回まではWebで見つけたコードを試しに動かしてみる、と言うのをやったのですが、

今回からはちゃんと書籍を買いました。

英語です。

全部理解していなくてもコードを見れば解る(ハズ

というわけで、Windowを作成して、長方形を描画するサンプルコードです。

#include <windows.h>
#include <d2d1.h>
#include <d2d1helper.h>
#pragma comment(lib, "d2d1")

ID2D1Factory* pD2DFactory = NULL;
ID2D1HwndRenderTarget* pRT = NULL;

#define HIBA_00 TEXT("Error:Program initialisation process.")
HINSTANCE hInstGolb;
int SajatiCmdShow;
char szClassName[] = "WindowsApp";
HWND Form1;

LRESULT CALLBACK WndProc0(HWND, UINT, WPARAM, LPARAM);
void D2D_drawing(ID2D1HwndRenderTarget*);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
	static TCHAR szAppName[] = TEXT("StdWinClassName");
	HWND hwnd;
	MSG msg;
	WNDCLASS wndclass0;
	SajatiCmdShow = iCmdShow;
	hInstGolb = hInstance;

	wndclass0.style = CS_HREDRAW | CS_VREDRAW;
	wndclass0.lpfnWndProc = WndProc0;
	wndclass0.cbClsExtra = 0;
	wndclass0.cbWndExtra = 0;
	wndclass0.hInstance = hInstance;
	wndclass0.hIcon = LoadIcon(NULL, IDI_APPLICATION);
	wndclass0.hCursor = LoadCursor(NULL, IDC_ARROW);
	wndclass0.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH);
	wndclass0.lpszMenuName = NULL;
	wndclass0.lpszClassName = TEXT("WIN0");

	if (!RegisterClass(&wndclass0))
	{
		MessageBox(NULL, HIBA_00, TEXT("Program Start"), MB_ICONERROR);
		return 0;
	}

	Form1 = CreateWindow(TEXT("WIN0"),
		TEXT("Form1"),
		(WS_OVERLAPPED | WS_SYSMENU | WS_THICKFRAME | WS_MAXIMIZEBOX | WS_MINIMIZEBOX),
		50,
		50,
		800,
		600,
		NULL,
		NULL,
		hInstance,
		NULL);

	ShowWindow(Form1, SajatiCmdShow);
	UpdateWindow(Form1);

	while (GetMessage(&msg, NULL, 0, 0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

	return msg.wParam;
}

LRESULT CALLBACK WndProc0(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;

	switch (message)
	{
	case WM_CREATE:
		D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &pD2DFactory);
		pD2DFactory->CreateHwndRenderTarget(
			D2D1::RenderTargetProperties(),
			D2D1::HwndRenderTargetProperties(
				hwnd, D2D1::SizeU(800, 600)),
			&pRT);
		return 0;

	case WM_PAINT:
		hdc = BeginPaint(hwnd, &ps);
		EndPaint(hwnd, &ps);
		D2D_drawing(pRT);
		return 0;

	case WM_CLOSE:
		pRT->Release();
		pD2DFactory->Release();
		DestroyWindow(hwnd);
		return 0;

	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}

	return DefWindowProc(hwnd, message, wParam, lParam);
}

void D2D_drawing(ID2D1HwndRenderTarget* pRT)
{
	D2D1_RECT_F myrectangle;
	myrectangle.left = 100;
	myrectangle.top = 100;
	myrectangle.right = 500;
	myrectangle.bottom = 500;
	ID2D1SolidColorBrush* mybrush;
	pRT->CreateSolidColorBrush(
		D2D1::ColorF(D2D1::ColorF::Green, 1.0f),
		&mybrush
	);
	pRT->BeginDraw();
	pRT->Clear(D2D1::ColorF(D2D1::ColorF::Black));
	pRT->FillRectangle(&myrectangle, mybrush);
	pRT->EndDraw();
}

コードがだいぶシンプルになった分、どこで何しているのかがとてもわかりやすいです。

以下の様なmain関数でビルドエラーが出る場合は、プロジェクトのプロパティの設定がおかしい場合があります。

LNK2019	未解決の外部シンボル main が関数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) で参照されました

線で囲った箇所を上の設定に合わせれば解決できるかも。

経済ニュース(02/04)

「サイゼリヤ」青森初出店決定に沸く地元民 ネットでは行列予想も – 弘前経済新聞

イタリアンレストラン「サイゼリヤ」(埼玉県吉川市)が2月1日、ショッピングセンター「ELM(エルム)」(青森県五所川原市)に出店することを発表した。

米雇用統計、「パウエル議長のメッセージを再認識」-市場関係者の見方 – ブルームバーグ

米国では1月の雇用者数が予想以上に増加し、失業率は53年ぶりの水準に低下した。数十年ぶりの積極的な金融引き締めにもかかわらず、労働市場が底堅いことがあらためて浮き彫りになった。

米ISM非製造業総合景況指数、1月は55.2に上昇-市場予想50.5 – ブルームバーグ

米供給管理協会(ISM)が発表した1月の非製造業総合景況指数は、不調だった前月から改善した。消費者の需要が再び活発化し、景気が早期に減速するとの懸念が薄れた。

【速報】ソフトバンク宮川社長「ベア含め5.4%の賃上げで最終調整」と明らかに|TBS NEWS DIG – TBS NEWS DIG Powered by JNN

ソフトバンクの宮川社長は、最近の物価上昇などを受け基本給を一律に引き上げるベースアップを含めて5.4%の賃上げに向け最終調整に入ったと明らかにしました。ソフトバンク 宮川潤一社長「ベアのことについては非常に重く受け止めておりますし、企業は株主さんのためでもありますけれども、従業員のためでもあるということで従業員に…

ドル急伸、対円で一時130円台-米雇用統計が予想上回る強い数字 – ブルームバーグ

3日のニューヨーク外国為替市場ではドルが急伸し、一時131円台を付けた。1月の米雇用統計が予想を上回る強い数字となった上、米供給管理協会(ISM)の非製造業総合景況指数も予想を大きく超え、ドルは上げ幅を拡大した。

アダニ、傘下企業の時価総額半分失う-ドル建て債は3日に反発 – ブルームバーグ

インドの資産家ゴータム・アダニ氏は自身が率いるアダニ・グループの財務健全性を巡る懸念への早急な対応を迫られている。空売り投資家ヒンデンブルグ・リサーチのリポートで不正疑惑が浮上して以来、傘下企業の株価は急落し価値がほぼ半減した。

堀江氏「スシロー」例に 闇バイト使うインサイダー警告 株空売り→闇バイトが迷惑行為→株下落で儲け 詐欺側考えてる – デイリースポーツ

実業家・堀江貴文氏が1日付でユーチューブに動画投稿。回転寿司チェーン「スシロー」が客による迷惑行為及び動画撮影の被害を被った件に関連して、警鐘を発した。 堀江氏は「一番怖いのは」として、被害企業の株価下落だと指摘した。「空売りって行為があって、空売り出して、株価が200円下がったら、その200円分が利益になっちゃう。普通は素人は買いからはいるけど、プロは結構売りから入る」と説明した。

新潟県からの人口流出が止まらない!?『2022年の人口移動報告』発表! – 株式会社ユニークワン

従姉妹が大学を卒業。 新潟に帰ってくると思ったら なんとそのまま東京にステイ。 新潟…戻ってこないんか〜… ってなタイミングで今年も発表! 『人口移動報告』! 2022年の新潟はさて!どうだ!?

商社3社が上方修正 三井物産は初の純利益1兆円超 – 日本経済新聞

三井物産は3日、2023年3月期の連結純利益(国際会計基準)が初めて1兆円を超える見通しだと発表した。同日、三菱商事と丸紅も純利益を上方修正した。資源価格の上昇を受けた総合商社の利益拡大が続いている。積み上がった利益を積極的な株主還元に充てている。ただ資源高には一服感もみられ、景気減速への警戒感も強まっている。住友商事を除く大手4社の22年4〜12月期の連結決算が3日出そろった。三井物産は23

GPIF赤字1.8兆円 10〜12月、債券安で4四半期連続 – 日本経済新聞

公的年金を運用する年金積立金管理運用独立行政法人(GPIF)は3日、2022年10〜12月期の運用実績が1兆8530億円の赤字だったと発表した。22年1〜3月期から4四半期連続の赤字だった。世界的な利上げに伴う金利上昇で債券価格が下落し、22年秋から年末にかけての円高進行で円換算ベースの外国資産額が目減りした。4四半期連続の赤字は米国企業の不正会計が発端の「エンロン・ショック」が響いた02年4

ZHD、LINEのスピードに託す再成長 9000万人生かせず – 日本経済新聞

Zホールディングス(ZHD)はLINEとの経営統合3年目を前に、傘下のヤフーを含む3社合併を決めた。これまで融合が進まず、国内最大のSNS(交流サイト)が抱える9000万人超の顧客基盤を成長に生かせなかった。4月からの新体制では3人の代表取締役のうち2人がLINE出身者となる。チャレンジ精神が宿るという「LINE流」の経営で立て直しを目指す。「成熟したヤフーに対して、LINEはチャレンジが多い

福井県の三国湊に町家ホテル10棟と本格レストラン NTT西日本など観光新会社「アクティベースふくい」 – 福井新聞

NTT西日本、福井新聞社など民間11社が、福井県坂井市三国湊エリアの歴史文化を生かした観光まちづくり事業を推進する新会社「Actibaseふくい(アクティベースふくい)」を共同で設立し2月3日、事業内容を発表した。伝統的家屋「かぐら建て」をリノベーションする「町家ホテル」10棟とレストラン1棟を整備し、世界的なフレンチシェフの料理を提供する。北陸新幹線県内延伸を見据え、誘客拡大とエリア内消費を促し、持続的な地域活性化につなげる。

日銀保有の国債、含み損8兆8000億円…金利上昇で3か月で10倍 – 読売新聞オンライン

日本銀行の黒田 東彦(はるひこ) 総裁は3日の衆院予算委員会で、日銀が保有する国債の含み損が、昨年12月末時点で約8兆8000億円に上っていることを明らかにした。昨年9月末時点では8749億円で、3か月で約10倍に拡大

米ドル/円は本日の米雇用統計で安値を更新しなければ、いずれ131.59円をブレイクすると予想! FOMC後の米ドルの安値更新は、米ドル安のクライマックスだった!? – ザイFX!

米ドル全体に底打ちのタイミングが近づいているとの、大まかな考えは変わっていない。ドルインデックスの「下落ウェッジ」はそろそろ完成するタイミングで、FOMC通過後の安値更新を、中期スパンの視点での米ドル安のクライマックスと位置付けたい。米ドル/円は、本日の米雇用統計で安値を更新しなければ、早晩、1月18日高値の131.59円をブレイクする機運にあると想定する。

魚じゃないのにサカナ?? いま広がる新食材 – nhk.or.jp

大豆など植物由来の原材料を使った「代替シーフード」。続々と登場しています。中には、魚みたいだけど魚じゃないものも。

イーロン・マスクがTwitterAPI有料化に言及―100ドルの月額料金とID認証で物事を整理できる – Game*Spark

バトンタッチは爆音の中で 豊田社長が選んだ佐藤恒治次期社長 – トヨタイムズ

「社長やってくれない?」と内示を受けたのはサーキット。「チーム経営」を掲げるニューリーダーの生放送の7つのシーンを振り返る。 #トヨタイムズ

ソフトバンク宮川社長、KDDIとのデュアルSIM予備回線の料金に「数百円の下のほう」 – ケータイ Watch

3日、ソフトバンクの宮川潤一代表取締役社長は、3月下旬以降に予定するKDDIとのデュアルSIM予備回線サービスについて、「料金は数百円、できるだけ下のほうに(設定)したい」と語った。決算会見で明らかにされたもの。

「ピンクの227系」JR新型通勤車「うらら」初公開 “国鉄型天国”岡山で世代交代へ 座席削減も快適UP? – 乗りものニュース

JR西日本の岡山・備後エリアへ20年ぶりに投入される新型車両、227系500番代「うらら」がお披露目されました。2023年度から順次導入される予定です。

ITニュース(02/04)

2023年リリース予定の無重力FPS『Boundary』2月7日から開催の「Steam Nextフェス」で最新体験版リリース! – Game*Spark

高すぎる折りたたみスマホはもういらない! – GIZMODO JAPAN

なかなかこなかった波が、ついに?折りたたみスマホに、みんな興味がないわけではないでしょう。でもね、やっぱり高いんですよ。もっと普通のスマホに、ちょっとだけ上積みくらいの値段で発売されたら、すぐにでも手を出したい人は多いのでは? そこはメーカー側もわかっているみたいですね。あのOnePlusが折りたたみスマホ?このほど9to5Googleは、中国で特許商標登録などの知的財産権管理を進める国家知識産

<養育ロボット?>【後編】育児放棄&虐待育ちのママ。楽しみだった出産が苦痛に変わったある人の一言 – ママスタセレクト

いつでも、どこでも、ママに寄り添う情報を

330円でPCスタンドデビューしたら、みんなが使う理由がわかった – GIZMODO JAPAN

気づいたら周りの人みんな使っていたPCスタンド。なんかカッコよく見えるし、私も使いたいと思っていたところ3COINSで発見!買ってみたらみんなが使う理由がわかったんです。

核のごみ最終処分 国と原子力関係自治体、協議の場設置へ – 毎日新聞

原発から出る高レベル放射性廃棄物(核のごみ)の最終処分を巡り、政府の基本方針改定案の内容が3日、分かった。国が「原子力と関係が深い自治体」と協議の場を設け、最終処分の実現に向けた課題を議論・検討するとしたほか、「政府の責任で、最終処分に取り組んでいく」と明記した。

誰もが使うべき「YouTube拡張機能」ベスト10 – GIZMODO JAPAN

ライフハッカー[日本版]2022年12月10日掲載の記事より転載YouTubeに拡張機能をダウンロードすることで、視聴体験がググッとアップします。\ Amazonタイムセールで買いたい /編集部おすすめアイテムバッファロー SSD 外付け 1.0TB¥14,379 ¥8,480RORRY 3-in-1ワイヤレス充電器¥4,589 ¥2,871ザバスホエイプロテイン

三井住友が「金融スーパーアプリ」 銀行・クレカ一体に – 日本経済新聞

Comprehensive up-to-date news coverage, aggregated from sources all over the world by Google News.

タスクバーの検索ボックスが横にズレる問題を修正。Windows 11プレビュー版 – PC Watch

Comprehensive up-to-date news coverage, aggregated from sources all over the world by Google News.

ロボット戦術RPG『Phantom Brigade』が3月1日にSteam/EGSで正式リリース!2年の早期アクセスを経て登場 – Game*Spark

Comprehensive up-to-date news coverage, aggregated from sources all over the world by Google News.

iPhone SE2 64GBの未使用品が税込37,800円で明日セール開始 – デイリーガジェット

Comprehensive up-to-date news coverage, aggregated from sources all over the world by Google News.

【本日みつけたお買い得品】1005gの4TB SSD搭載14型ノートが8万円オフ。Amazonセール – PC Watch

Comprehensive up-to-date news coverage, aggregated from sources all over the world by Google News.

AppleとGoogleが「今すぐTikTokをストアから消せ」とアメリカ議会から圧力をかけられる – GIGAZINE(ギガジン)

アメリカのマイケル・ベネット上院議員が、2023年2月2日付でAppleのティム・クックCEOとGoogleのサンダー・ピチャイCEO宛に直々の書簡を送り、アプリストアから直ちにTikTokを削除するよう要求しました。背景には、中国のアプリであるTikTokに対する国家安全保障の懸念があります。

マスクCEO、Twitterの無料API終了は「悪質なbotの排除」と説明 有料APIは月100ドル程度に – ITmedia NEWS

Comprehensive up-to-date news coverage, aggregated from sources all over the world by Google News.

天空、世界最小を謳う6型ゲーミングUMPC「GPD WIN 4」を正規予約開始 – PC Watch

株式会社天空は、深センGPD Technologyが開発した世界最小のRyzen 7 6800U搭載6型ポータブルゲーミングPC「GPD WIN 4 国内正規版 天空オリジナルパッケージ」の正規予約を開始した。予約価格は通常価格から一律4,000円引きとなる。出荷は2023年5月初旬より順次。

手のひらサイズのファンレスミニPC。発売記念で1万6490円 – PC Watch

Comprehensive up-to-date news coverage, aggregated from sources all over the world by Google News.

6万円以下から買える「Steam Deck」にWindows 11を入れてみた(1/2 ページ) – ITmedia PC USER – ITmedia PC USER

Comprehensive up-to-date news coverage, aggregated from sources all over the world by Google News.

経済ニュース(02/03)

ECB、大幅利上げを決定 3月も「0.5%引き上げ」(写真=ロイター) – 日本経済新聞

【フランクフルト=南毅郎】欧州中央銀行(ECB)は2日の理事会で、2会合連続となる0.5%の大幅利上げを決めた。声明文で次回3月も「0.5%の利上げをするつもりだ」と盛り込み、保有資産の削減に向けた具体策を協議した。ユーロ圏はサービスや食品の値上げ圧力が強い。物価安定へ粘り強く利上げを進める。ECBは主要政策金利を3.00%、銀行が中央銀行に預ける際の金利(中銀預金金利)を2.50%に8日から

NYダウ反落で始まる ハイテク買いでナスダック大幅高(写真=ロイター) – 日本経済新聞

【NQNニューヨーク=川上純平】2日の米株式市場でダウ工業株30種平均は3日ぶりに反落して始まり、午前9時45分現在は前日比260ドル57セント安の3万3832ドル39セントで推移している。決算期待で大手ハイテク株が買われる半面、ヘルスケアなどディフェンシブ株が売られる資金シフトが起きている。ディフェンシブ株の比重が大きいダウ平均の重荷になっている。ダウ平均とは裏腹に、ハイテク株が多いナスダッ

Galaxy Unpacked 2023で発表されたものすべて – GIZMODO JAPAN

順当進化のGalaxy S23シリーズに、新Galaxy Book。今年もSamsungのフラッグシップスマホ発表イベント、Samsung Unpackedがやってきました。発表されたGalaxy S23は細かく順当なアップデートのみでしたが、それでも完成度は期待できそうです。Galaxy S23、S23+は若干デザインも変わり、背面カメラレンズを収めてた長方形のパーツがついになくなりました。あ

インド財閥アダニ、時価総額13兆円消失 株価下落続く(写真=ロイター) – 日本経済新聞

【ムンバイ=花田亮輔】米投資会社に不正疑惑を提起されたインド新興財閥アダニ・グループの株価下落が続いている。地元メディアによると、グループの時価総額はおよそ1週間で8兆3000億ルピー(約13兆円)減った。公募増資を撤回した中核会社アダニ・エンタープライゼズの株価はムンバイ証券取引所で2日の終値が1564ルピーと、前日比26.5%の大幅安となった。アダニを巡っては米投資会社のヒンデンブルグ・リ

市場、米金利低下・ドル安観測強まる 1ドル120円台も(写真=ロイター) – 日本経済新聞

1日まで開いた米連邦公開市場委員会(FOMC)を受けて、市場関係者の間ではこの先、米長期金利の低下やドル安を予想する見方が広がっている。米連邦準備理事会(FRB)のパウエル議長が金融引き締めに積極的な「タカ派」姿勢を想定ほどみせず、年後半に利下げに転じるとの観測が強まったためだ。もっとも市場の想定が外れることになれば波乱に見舞われる恐れもある。同日の会見でパウエル氏は「もしインフレ率が(想定よ

日産が次世代EV披露 本社に展示、販売予定なし – 産経ニュース

日産自動車は2日、次世代の電気自動車(EV)の試作車を報道陣に公開した。2人乗りのスポーツカーで、車高を低く抑えてすっきりした外観に仕上げた。4日から3月1日…

愛車の履歴書──Vol14. 岸谷五朗さん(後編) – GQ JAPAN

愛車を見せてもらえば、その人の人生が見えてくる。気になる人のクルマに隠されたエピソードをたずねるシリーズ第14回の後編。俳優の岸谷五朗さんが、クルマに対する思いを語る。

ANA純利益600億円に上振れ 23年3月期、JALは下方修正 – 日本経済新聞

ANAホールディングス(HD)は2日、2023年3月期の連結最終損益が600億円の黒字(前期は1436億円の赤字)になりそうだと発表した。従来予想から200億円上方修正した。水際対策の緩和で国際線の需要が回復し、燃料費などのコストが計画を下回る。日本航空(JAL)は国内線を中心にANAよりも強気に見ていた旅客需要の想定を引き下げ、業績予想を下方修正した。ANAHDは連結売上高の見通しを前期比6

障害者雇用の助成金減額、厚労省 一定人数を超えた場合 – 日本経済新聞

厚生労働省は2日、民間企業に法律で義務付けている障害者の雇用割合(法定雇用率)を達成した上で、さらに多く雇う企業に対する助成金について、2024年度から減額を検討していると明らかにした。労働政策審議会(厚労相の諮問機関)の分科会に案を示した。企業で働く障害者が増え、支給額が膨らんでいることが理由。3月の審議会で決まる見通し。現在の法定雇用率は2.3%。従業員100人超の企業の場合、雇用率を超え

羽田保安検査の大型案内、JALは廃止せず 4カ所継続使用 – Aviation Wire

ホンダ、次世代燃料電池システムのモックアップを初公開 2020年代半ばに年間2000基の販売を想定 – Car Watch

本田技研工業は2月2日、東京都港区にある青山本社にて「水素事業説明会」を実施するとともに、「次世代燃料電池システム」のモックアップを初公開した。説明会に登壇したのは、本田技研工業 取締役 執行役専務 青山真二氏、事業開発本部 事業開発統括部 統括部長 一瀬新氏、事業開発本部 事業開発統括部 水素事業開発部部長 長谷部哲也氏の3名。

マツダ『CX-90』、340馬力ターボに後輪駆動が基本のAWD[詳細写真] – レスポンス

マツダの米国部門は1月31日、新型最上位SUV『CX-90』(Mazda CX-90)を発表した。

架空取り引き繰り返し約10億円詐取か 映像制作会社役員ら逮捕 – nhk.or.jp

東京の映像制作会社の役員らが、架空の取り引きを繰り返す循環取引の手口で、放送事業者からおよそ10億円をだまし取ったとして…

【速報】Zホールディングスと子会社のヤフー、LINEが合併方針 2023年度中めど(2023年2月2日) – ANNnewsCH

ヤフーとLINEの親会社のZホールディングスが2023年度中をめどに合併します。 ヤフーやLINEを傘下に持つZホールディングスは2022年度後半から広告収益が悪化したほか、グループ内でサービスが重複しているなどと指摘されてきました。 ヤフーやLINEなどの間で経営陣による意思決定が複雑になったとしています。 合…

視覚障害者が駅無人化でJR九州を提訴 – 産経ニュース

JR九州による駅の無人化は、憲法が保障した移動の自由を侵害しているとして、視覚障害がある大分市の女性が2日、同社に11万円の損害賠償を求め大分地裁に提訴した。…

米ドル/円は、来週あたりにいったん反発か? パウエルFRB議長は今後、さらに複数回の利上げが適切になるとの認識を示唆、年末の利下げを織り込むのは時期尚早! – ザイFX!

2月1日、FOMCは0.25bpの利上げを決定した。利上げ幅は2会合連続で縮小したが、パウエルFRB議長は今後、さらに複数回の利上げが適切になるとの認識も示している。しかし、金利先物市場はあと1回強の利上げを織り込んでいるだけで、さらに11月から来年1月にかけて、2回の利下げを織り込んでいる。インフレが徐々に沈静化するのはわかるが、ここから連続利下げをしなければいけないほど景気が悪化することを織り込むのは、さすがに時期尚早だろう。これらを考慮すると、米ドル/円は来週あたりに、いったん反発しそうだ。

データサイエンス系学部、1900人増 17大学で23年新設 – 日本経済新聞

データを活用し課題解決策を探る「データサイエンス」系学部の新設が相次ぐ。72年ぶりに新学部を設ける一橋大学を含め2023年春に少なくとも17大学で誕生し、全国の定員は約1900人増える見通しだ。デジタル人材の育成は海外から遅れ、30年に79万人不足すると推計される。実践力が高い人材を輩出できるか大学の指導力が問われる。23年度にデータサイエンスや情報系学部・学科を開設するとして、少なくとも17

富士見町の事業所が雇用調整助成金6600万円余を不正受給|NHK 長野県のニュース – nhk.or.jp

【NHK】長野労働局は、富士見町にある事業所が新型コロナウイルスの影響で従業員を休ませているとうその申告をして、雇用調整助成金6600万円余りを不正…

ITニュース(02/03)

“究極のVRレースゲーム”現る。PS VR2版「グランツーリスモ7」体験レポート F1カーで駆け抜ける東京は“鳥肌モノ”! 「GT7」×VRだけの体験がここに – GAME Watch

全てのレースゲームファンに“普段味わえない体験”を提供してくれる「グランツーリスモ7」。シリーズ25年の集大成として2022年3月に発売され、1年が経とうとしている今、最大規模のアップデートが到来しようとしている。それが「PlayStation VR2」への対応アップデートだ。

すんごいスピードで動く2つの見えない星、発見。 – GIZMODO JAPAN

新たに、非常に低温で可視光を発しない2つの矮星(主系列星)が特徴的な連星系が見つかりました。しかもこの連星系は、互いの軌道を一周するのに1日もかからないほど非常に接近していることがわかりました。この連星系は「LP 413-53AB」と呼ばれ、米ノースウェスタン大学と米カリフォルニア大学サンディエゴ校の研究者チームによって同定されました。この2つの主系列星は「超低温矮星」と呼ばれ、あまりにも低温の

EUの「チャット規制法」でLinuxなどのオープンソースOSが違法化してしまう可能性大 – GIGAZINE(ギガジン)

欧州議会では、メールやチャットサービスの提供者に通信内容の監視を義務付ける「チャット規制法」が議論されています。このチャット規制法について「規制対象がオープンソースOSのパッケージ管理システムにも及んでおり、既存のOSが違法状態になる可能性がある」という懸念が指摘されています。

PS5,Discordボイスチャットや1440p解像度での可変リフレッシュレートへの対応が明らかに。β版システムソフトウェアを配信開始 – 4Gamer.net

ソニー・インタラクティブエンタテインメントは本日,PS5向けβ版システムソフトウェアの配信を開始した。β版では,ユーザーの要望が多かったDiscordボイスチャットへの対応が行われており,これに合わせる形でDiscordも,PS5でDiscordボイスチャットを使用する詳しい方法などを発表している。

呪文を打ち込むとSVGでイラスト生成するAIサービスが登場 – GIZMODO JAPAN

新しく始まったサービス「Illustroke」は、テキストから生成した画像をSVG(スケーラブル・ベクター・グラフィックス)でダウンロードが可能です。

結局このガジェットポーチに落ち着いちゃうんだよな – GIZMODO JAPAN

容量、サイズ、使い勝手、どれをとってもちょうどいい感じのガジェットポーチ、コクヨのハコビズがAmazonでタイムセール中。35%オフです。

データサイエンス系学部、1900人増 17大学で23年新設 – 日本経済新聞

データを活用し課題解決策を探る「データサイエンス」系学部の新設が相次ぐ。72年ぶりに新学部を設ける一橋大学を含め2023年春に少なくとも17大学で誕生し、全国の定員は約1900人増える見通しだ。デジタル人材の育成は海外から遅れ、30年に79万人不足すると推計される。実践力が高い人材を輩出できるか大学の指導力が問われる。23年度にデータサイエンスや情報系学部・学科を開設するとして、少なくとも17

昭和レトロな経営SLG「下町ドリーム~心に染みる人情物語」事前予約をスタート。高度経済成長期にタイムスリップして社長業に励む – 4Gamer.net

37GAMESは本日(2023年2月2日),新作スマホゲーム「下町ドリーム〜心に染みる人情物語」の事前予約の受付を開始した。本作は“レトロな癒し系経営シミュレーション”とのことで,20世紀の高度経済成長期の日本が舞台となる。

MicrosoftがWindows 11への更新を全画面で求めてくる上にダークパターンを用いていたという報告 – GIGAZINE(ギガジン)

Windows 10のダウンロード版販売が2023年1月31日で終了しました。Microsoftはユーザーに早くWindows 11に移行してもらいたいようで、条件を満たしたPCに対して「Windows 11の準備ができました」というお知らせを表示するようにしていますが、全画面でお知らせが表示された上に、ユーザーを意図的にだまそうとするダークパターンになっていたという事例が報告されています。

グーグル創業者が数年ぶりに現場復帰、AI部門のテコ入れで – Forbes JAPAN

人工知能(AI)テクノロジーに関するシリコンバレー企業の戦いが過熱する中、グーグルの共同創業者のセルゲイ・ブリンが、数年ぶりにソフトウェアのコードに手を触れ始めたことが明るみに出た。フォーブスが入手したスクリーンショットによると、ブリンは1…

花粉対策にいかが? デスクや車内でも便利なパーソナル空気清浄機「AIRbox G2」 – GIZMODO JAPAN

「AIRbox G2」はNASAの宇宙ステーションや新幹線の車内などでも利用されている光触媒技術と交換不要のフィルターを採用した手のひらサイズが魅力的なパーソナル空気清浄機です。
会社や自宅のデスク、あるいは自動車の車内など、狭くてニオイがこもりそうな場所に手軽に設置できるのもポイント。
花粉の時期やウイルスが気になる空間にサッと使える魅力的なアイテムですよ。

落ち着いて聞いてください。55インチ有機ELテレビが10万円以下の時代です – GIZMODO JAPAN

2023年2月2日、僕は目が冷めた。それまでの日課だったかのように、自然とスマホでAmazonを開いた。LGの有機ELテレビが、9万9800円になっていた。

Western Digitalが9億ドルの投資を受けてキオクシアを合併する可能性が報じられる – GIGAZINE(ギガジン)

世界最大規模のデータストレージ企業であるWestern Digital(ウエスタンデジタル)が複数の投資ファンドから合計9億ドル(約1160億円)の出資を受けました。この出資によって日本の半導体メーカーであるキオクシアを合併するとみられています。

AMDはCPUとGPUの価格をつり上げるために供給を制限しているとリサ・スーCEOが明かす – GIGAZINE(ギガジン)

半導体不足や仮想通貨のマイニング需要が落ち着きを見せ始めたことで、高騰していたグラフィックボードの価格が正常化に向かい、在庫にも余裕が生まれるなど、消費者にとって明るいニュースが続いています。一方で半導体業界はCPUやGPU価格の下落に苦しんでおり、これに対応するために「AMDはチップの供給を意図的に絞っている」とリサ・スーCEOが話しました。

【本日みつけたお買い得品】Radeon搭載のミニPCが約4万6千円オフ。Amazonタイムセール祭り – PC Watch

2月5日まで開催中のAmazonタイムセール祭りにおいて、MINISFORUMのミニPCが大幅な値引きとなっている。「Neptune Series HX99G」の場合、直近の販売価格から4万5,960円の値引きで、15万9,840円にて購入可能だ。

70代「ビットコイン買う」 2時間の説得、銀行員が守った100万円 – 毎日新聞

詐欺被害を未然に防いだとして、福岡県警西署は1日、西日本シティ銀行野方支店(福岡市西区壱岐団地)の行員、平山裕子さん(48)に感謝状を贈った。投資話で100万円を振り込もうとした70代の男性を約2時間かけて思いとどまらせたといい、平山さんは「お客様の資産を守ることができてよかった」と話した。

【数学】【PYTHON】ベクトルの方向を求める

ベクトルが示す座標(x,y)からベクトルの角度θを求めます。

計算式は、tanの逆関数を使います。

これをPythonで計算させます。

>>> import math
>>> rad = math.atan2(3,2)
>>> th = math.degrees(rad)
>>> th
56.309932474020215

atan2(x,y)でtanの逆関数の計算結果をラジアンで取得することができます。

ラジアンから角度の変換はdegrees()を使用します。

ベクトルの終端の座標が(3,2)ならば、角度はおよそ56度となります。

ITニュース(02/02)

Intel,デスクトップPC向けGPU「Arc A」のドライバ改善で性能が大幅向上とアピール。Arc A750純正モデルの値下げも実施 – 4Gamer.net

米国時間2月1日に,Intelは,Arc Aシリーズに関するアップデートを発表した。ポイントは,ドライバソフトの改善により,デスクトップPC向けGPU「Arc A770,A750」の性能,とくにDirectX 9世代のゲーム性能が大幅に向上したことと,Arc A750純正モデルの値下げだ。

「持ち運び可能な折り畳み式トリプルディスプレイPC」をDIYした猛者が登場 – GIGAZINE(ギガジン)

「Framework Laptop」は全てのパーツを交換できるためアップグレード&修理&カスタマイズ可能なノートPCであり、ガジェットを自由自在にカスタマイズしたい人にとってありがたい存在です。さまざまなガジェットをDIYするYouTubeチャンネル・DIY Perksを運営するマット氏が、そんなFramework Laptopを使用して、なんと「持ち運び可能で折り畳み式のトリプルディスプレイを備えたPC」を自作しています。

ついぺんリサーチ:Twitterのリスト管理と検索に特化したついっとぺーんの兄弟版アプリ – OREFOLDER

ついぺんリサーチは、Twitterのリスト管理と検索に特化したアプリです。通常のタイムラインの表示はできませんが、リストや検索結果をタブで表示し、その表示も細かくカスタマイズできます。 ついっとぺーん

立体視が楽しめるゲーム「STEREOGRAM」,itch.ioで公開。裸眼立体視の練習にも使えそう – 4Gamer.net

ゲーム開発者,Daniel Linssen氏が新作「STEREOGRAM」を発表した。インディーズゲーム開発者向けプラットフォームitch.ioでダウンロードが可能で,価格は購入者が設定する。タイトルどおり,「立体視」が楽しめるゲームだが,裸眼立体視ができないという人の練習にも使えそうだ。

Photoshopで画像生成AIをサクッと使える無料プラグイン「Auto-Photoshop-StableDiffusion-Plugin」 – GIGAZINE(ギガジン)

Stable Diffusionなどの画像生成AIは作品制作のアイデア出しや素材出力に非常に便利です。無料で公開されているPhotoshopプラグイン「Auto-Photoshop-StableDiffusion-Plugin」を使えば、Stable Diffusionで生成した画像を即座にPhotoshop上で編集できるとのことなので、実際にAuto-Photoshop-StableDiffusion-Pluginをインストールする手順や使い方を確認してみました。

高浜原発4号機の自動停止 制御棒装置不具合で点検作業中に発生 – nhk.or.jp

福井県にある関西電力の高浜原子力発電所4号機で1月30日、原子炉が自動停止したトラブルで、当時、制御棒を動かす装置に不具…

PC(Steam)版「魔界戦記ディスガイア7」のストアページが公開に。2023年内にリリース予定 – 4Gamer.net

Steamにて,シミュレーションRPG「魔界戦記ディスガイア7」のストアページが公開されている。本作では,和風魔界「日ノ本魔界群」を舞台に,はぐれ武士の「フジ」とオタク少女「ピリリカ」が,「大穢戸幕腐」の打倒を掲げ,荒れ果てた魔界を取り戻すために大暴れする。2023年内にリリース予定とのこと。

バッテリーの自然放電の原因はバッテリー内部のテープの劣化という可能性が指摘されている – GIGAZINE(ギガジン)

電子機器を充電器から外し、電源をオフにして一切使っていなくてもバッテリーは消耗します。「自然放電」と呼ばれるこの現象の原因をダルハウジー大学の研究者らが突き止め、この問題に対処しようとしています。

<独自>通信障害対策にデュアルSIM KDDIとSBが提供へ – 産経ニュース

携帯電話大手の大規模な通信障害が相次いだことを受け、KDDIとソフトバンクが、1台のスマートフォンで2枚のSIM(シム)カードを使う「デュアルSIM」の新料金…

「Microsoft 365」認証問題を解決した「Thunderbird 102.7.1」が公開 ~自動更新が再開 – 窓の杜

オープンソースのメールソフト「Thunderbird」v102.7.1が、2月1日(米国時間)に公開された。以下の修正を施したメンテナンスアップデートとなっている。

モニター下に置ける小型USBサウンドバー。3,680円 – AV Watch

サンワサプライは、コンパクトなUSBサウンドバー「400-SP109」を直販サイト「サンワダイレクト」にて発売した。直販価格は3,680円。

「零 濡鴉ノ巫女」などが特別価格で販売。Steamにて「台北ゲームショウセール」が実施中 – GAME Watch

PCゲームのオンライン配信プラットフォーム「Steam」は、「台北ゲームショウセール」を実施している。

キャリブライト、カラーマネジメント用ソフト「Calibrite PROFILER」を公開…ColorChecker Displayシリーズに対応 – デジカメ Watch

株式会社ヴィンチェロは1月31日、キャリブライト社(米国)のキャリブレーションツール用ソフトウェア「Calibrite PROFILER」を公開した。同社Webサイトより無償でダウンロードできる。対応OSはWindows 10/11、macOS 10.15/11/12/13。

「Apex Legends Mobile」,日本時間2023年5月2日8:00をもってサービス終了 – 4Gamer.net

スマホ向けバトルロイヤルゲーム「Apex Legends Mobile」(iOS / Android)のサービスが,日本時間2023年5月2日8:00をもって終了することが,Apex Legends Mobile公式Twitterアカウントで発表(リンク)された。  サービス終了の理由については明らかにされていないが,「私たちがコントロールできない要因により,プレイヤーに高品質な体験とコンテンツを維持することができませんでした」と投稿されている。 この度、「Apex …

子供のIT教育によさそう。スイッチをパソコン化する「nOS」 – GIZMODO JAPAN

もうちょっと日常生活の手助けや、創作活動もできたらなぁと思っている人に、Switch用のニューオペレーティングシステム「nOS」はいかがでしょう?

Gmailに溜まった不要ファイルをサクッと消して容量節約する方法 – おたくま経済新聞

経済ニュース(02/02)

FOMC、0.25ポイントに利上げ減速-さらなる引き上げが適切に – ブルームバーグ

米連邦公開市場委員会(FOMC)は1月31日-2月1日に開催した定例会合で、主要政策金利を0.25ポイント引き上げることを決めた。FOMCはインフレ抑制に向けた取り組みを続けているが、そのペースを減速させた。一方、今後さらに複数回の利上げが適切になるとの認識も示した。

ついに発表された「Galaxy S23/S23+/S23 Ultra」、さっそく実機をチェック – ケータイ Watch

サムスン電子は、2月1日(現地時間)に米カリフォルニア州サンフランシスコで自社製品のお披露目イベントとなる「Galaxy Unpacked」を開催。フラッグシップモデルの「Galaxy S23」シリーズを計3機種発表した。Unpackedで登場したのは、Galaxy S23、S23+、S23 Ultra。現在、発表会が進行している最中だが、一足先に実機に触れることができたので、その模様をお届けしたい。

印アダニ氏の中核企業、公募増資を一転中止-株価急落の中で – ブルームバーグ

インドの資産家ゴータム・アダニ氏率いるアダニ・グループの中核企業アダニ・エンタープライゼスは、2000億ルピー(約3160億円)に上る大規模な公募増資を中止することを決定した。米空売り投資家ヒンデンブルグ・リサーチのリポートをきっかけに、同グループ企業の株価は急落していた。

米ISM製造業総合景況指数、1月は47.4に低下-市場予想も下回る – ブルームバーグ

米供給管理協会(ISM)が発表した1月の製造業総合景況指数は5カ月連続で低下し、2020年5月以来の低水準となった。受注と生産が一段と落ち込んだ。

米国株、ダウ反落で始まる FOMC控え利益確定売り – 日本経済新聞

【NQNニューヨーク=川内資子】1日の米株式相場でダウ工業株30種平均は反落して始まり、午前10時現在は前日比161ドル05セント安の3万3924ドル99セントで推移している。米連邦公開市場委員会(FOMC)の結果発表を午後に控えて様子見ムードが強いなか、目先の利益を確定する目的の売りが先行している。FOMCでは利上げ幅を前回の0.5%から0.25%に縮小する見込み。今後の政策を見極めるうえで

なんと1缶600円のハイボール! 高級ウイスキー“白州”を使用で今年6月発売 サントリーウイスキー100周年|TBS NEWS DIG – TBS NEWS DIG Powered by JNN

サントリーは高級ウイスキー「白州」を使ったハイボールを6月から販売すると発表しました。原酒のみを使ったプレミアム商品ですが、1缶600円。強気の価格設定の背景には…サントリー 鳥井信宏社長「サントリーウイスキー100年の歴史は、サントリーのパーパス(目的)を体現してきた鳥井信治郎のやってみなはれ精神そのものです」…

山手線、一時運転見合わせ 渋谷駅で人身事故 – サンスポ

1日午後7時25分ごろ、JR渋谷駅(東京都渋谷区)の山手線内回りホーム付近で乗客が電車にはねられ負傷した。山手線と埼京線、湘南新宿ラインが全線で一時運転を見合…

米ADP民間雇用者数、1月は10万6000人増-市場予想18万人増 – ブルームバーグ

米国の民間雇用者数は1月、予想を下回る増加にとどまり、過去2年で最低の伸びとなった。米国の広範な地域での悪天候が響いたとみられる。

【2月も値上げラッシュ】「食品が安い」ドラッグストアのカラクリ スーパーは奇策 – 日テレNEWS

2月も値上げラッシュが止まりません。調査会社によると、5000品目以上が値上げします。こうした中、より安く食品が買え、食品が売り上げの3割ほどを占めるというドラッグストアが注目されています。お得に商品を買うことができる理由を取材しました。     ◇埼玉・吉川市のスーパーマルサン吉川店を取材すると、買い物客からは…

イオン 非正規社員の賃金 平均7%引き上げへ パートなど40万人 – nhk.or.jp

流通大手のイオンはグループで働くパートなどの非正規社員およそ40万人を対象に、時給を平均でおよそ7%引き上げる方針を固め…

トヨタ、東京本社移転検討 品川駅周辺に – 産経ニュース

トヨタ自動車は1日、東京本社(東京都文京区)を品川駅(東京都港区)周辺に移転することを検討していると明らかにした。品川駅周辺は羽田空港へのアクセスのしやすさな…

「30代の平均貯蓄額」はいくら?みんなの貯蓄事情 – Yahoo!ファイナンス

30歳代の貯蓄事情はどうなっているのでしょうか? 30歳代といえば、お金の貯め始めの時期です。この時期にどれくらい貯めているのでしょうか? 金融広報中央委員会が調査した「家計の金融行動に関する世論調査(2021年)」のデータから、30歳代の平均貯蓄をみてみましょう。 30歳代の平…

ユーロ圏インフレ、1月は予想以上に減速-利上げ軌道で激しい議論も – ブルームバーグ

ユーロ圏のインフレは1月に予想以上に減速した。欧州中央銀行(ECB)の今後の利上げ軌道を巡る議論はいっそう白熱しそうだ。

浄水カートリッジの模倣品、大手通販サイトに大量出品…消費者庁「安すぎる商品は疑って」 – 読売新聞オンライン

アマゾンや楽天市場などの通販サイトで、大手メーカーが販売する浄水カートリッジの精巧な模倣品が大量に出品されているとして、消費者庁は1日、販売業者7社を公表し、誤って購入しないように注意を呼びかけた。  消費者安全法に基

フラット35の上げ幅最大 – 新潟日報デジタルプラス

住宅金融支援機構は1日、長期固定金利型住宅ローン「フラット35」の2月の適用金利を発表した。長期金利の上昇傾向を受け、返済期間35年以下の最低金利は前月比で0・20ポイント上がり、現行商品となった2…

三菱商事、最長2年の休職と社内複業制度を導入へ – 日本経済新聞

三菱商事は、社員がキャリア形成やリスキリング(学び直し)のために最長2年間休職できる制度を導入する。業務時間の一部でほかの部署の業務を経験できる仕組みも取り入れる。商社業界は脱炭素社会への対応を迫られるなど、経営環境が大きく変わっている。三菱商事は社員の自主的な学びをサポートすることで対応力を強化する。社員が国内外の大学・大学院で学位を取得しようとする際に長期休職できる「サバティカル休職制度」

サントリー 山崎と白州のウイスキー蒸留所に大規模設備投資へ – nhk.or.jp

サントリーはウイスキー事業を強化するため、大阪と山梨の蒸留所に合わせて100億円規模の設備投資を行う方針を明らかにしまし…

【衝撃の瞬間】新幹線 車いす用スロープ板ごと発車 清掃員が足で…[2023/02/01 18:09] – テレビ朝日

発車直後の新幹線です。ドアの足元には、車椅子用のスロープ板が…。と、そこに、ホームに立っていた清掃員が足で受け止めました。

 清掃員:「これ付けたまんま」

 スロープ板を付けたまま発車という事態。その場に居合わせた撮影者は困惑したと言います。

 起きたのは、東京駅の新幹線ホーム22番線。北海道の新函館北斗駅行の列車でした。なぜ、そのまま発車してしまったのか。撮影者はある疑問を投げ掛けます。

 撮影者:「最後尾の先頭車両の所に車掌さんが乗っていたが、ちゃんと顔を出しているのにもかかわらず見えていなかったのか…

住友化学、市況低迷で純損益ゼロに 1000億円超の下方修正 – ロイター (Reuters Japan)

住友化学は1日、2023年3月期の連結業績予想(国際会計基準)を営業損益、純損益とも1000億円超引き下げ、ゼロに下方修正した。ロシアによるウクライナ侵攻の長期化や、中国の経済停滞などで石油化学製品の市況が低迷しているため。

住宅高騰、増やせぬ子ども 面積も狭く心理冷やす – 日本経済新聞

住宅の価格高騰と狭さが子どもを産もうという心理を冷やしている。若い世代では理想の数の子どもを持たない理由として「家が狭いから」と答える人が2割を超えた。家の狭さや長い通勤時間が第2子の出生を抑制するという分析も出た。岸田文雄首相の「次元の異なる」少子化対策を効果あるものにするためには空き家活用など住宅政策との連携が欠かせない。専有面積の平均、2LDK不動産経済研究所(東京・新宿)によると、2

DIRECT2Dを試す、その3

今回はFPSを固定化するコードを書きます。

大抵のゲームエンジンはエンジン側でFPSを制御していると思うのですが、

DirectXを使用する場合は実際に時間を計測して画面更新のタイミングを計らなくちゃいけないんですね。

サンプルソースは以下のサイトのコードを使用しています。

http://dioltista.blogspot.com/2019/04/c-directx11-fps.html

main.h
#pragma once

#include <windows.h>
#pragma comment(lib,"winmm.lib")

class Window
{
public:
    HRESULT InitWindow(HINSTANCE hInstance, int nCmdShow);
    void InitFps();
    void CalculationFps();
    void CalculationSleep();
    static HWND GethWnd();
    static double GetFps();
private:
    static HWND g_hWnd;
    static double g_dFps;
    LARGE_INTEGER Freq = { 0 };
    LARGE_INTEGER StartTime = { 0 };
    LARGE_INTEGER NowTime = { 0 };
    int iCount = 0;
    DWORD SleepTime = 0;
};

main.cpp

#include "Main.h"
#include "DirectX.h"

HWND Window::g_hWnd = nullptr;
double Window::g_dFps = 0;

//--------------------------------------------------------------------------------------
// 前方宣言
//--------------------------------------------------------------------------------------
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow)
{
    Window win;

    if (FAILED(win.InitWindow(hInstance, nCmdShow)))
        return 0;

    DirectX11 dx;

    if (FAILED(dx.InitDevice()))
        return 0;

    win.InitFps();

    // メインメッセージループ
    MSG msg = { 0 };
    while (WM_QUIT != msg.message)
    {
        if (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        else
        {
            win.CalculationFps();

            dx.Render();

            win.CalculationSleep();
        }
    }

    return (int)msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    PAINTSTRUCT ps;
    HDC hdc;

    switch (message)
    {
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        EndPaint(hWnd, &ps);
        break;

    case WM_DESTROY:
        PostQuitMessage(0);
        break;

    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }

    return 0;
}

HRESULT Window::InitWindow(HINSTANCE hInstance, int nCmdShow)
{
    WNDCLASSEX 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 = nullptr;
    wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
    wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
    wcex.lpszMenuName = nullptr;
    wcex.lpszClassName = L"WindowClass";
    wcex.hIconSm = nullptr;
    if (!RegisterClassEx(&wcex))
        return E_FAIL;

    RECT rc = { 0, 0, 800, 600 };
    AdjustWindowRect(&rc, WS_OVERLAPPEDWINDOW, FALSE);
    g_hWnd = CreateWindow(L"WindowClass", L"FPSの固定",
        WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,
        CW_USEDEFAULT, CW_USEDEFAULT, rc.right - rc.left, rc.bottom - rc.top, nullptr, nullptr, hInstance,
        nullptr);
    if (!g_hWnd)
        return E_FAIL;

    ShowWindow(g_hWnd, nCmdShow);

    return S_OK;
}

HWND Window::GethWnd()
{
    return g_hWnd;
}

void Window::InitFps()
{

    QueryPerformanceFrequency(&Freq);
    QueryPerformanceCounter(&StartTime);//現在の時間を取得(1フレーム目)
}

void Window::CalculationFps()
{
    //FPSの計算
    if (iCount == 60)//カウントが60の時の処理
    {
        QueryPerformanceCounter(&NowTime);//現在の時間を取得(60フレーム目)
        //FPS = 1秒 / 1フレームの描画にかかる時間
        //    = 1000ms / ((現在の時間ms - 1フレーム目の時間ms) / 60フレーム)
        g_dFps = 1000.0 / (static_cast<double>((NowTime.QuadPart - StartTime.QuadPart) * 1000 / Freq.QuadPart) / 60.0);
        iCount = 0;//カウントを初期値に戻す
        StartTime = NowTime;//1フレーム目の時間を現在の時間にする
    }
    iCount++;//カウント+1
}

void Window::CalculationSleep()
{
    //Sleepさせる時間の計算
    QueryPerformanceCounter(&NowTime);//現在の時間を取得
    //Sleepさせる時間ms = 1フレーム目から現在のフレームまでの描画にかかるべき時間ms - 1フレーム目から現在のフレームまで実際にかかった時間ms
    //                  = (1000ms / 60)*フレーム数 - (現在の時間ms - 1フレーム目の時間ms)
    SleepTime = static_cast<DWORD>((1000.0 / 60.0) * iCount - (NowTime.QuadPart - StartTime.QuadPart) * 1000 / Freq.QuadPart);
    if (SleepTime > 0 && SleepTime < 18)//大きく変動がなければSleepTimeは1~17の間に納まる
    {
        timeBeginPeriod(1);
        Sleep(SleepTime);
        timeEndPeriod(1);
    }
    else//大きく変動があった場合
    {
        timeBeginPeriod(1);
        Sleep(1);
        timeEndPeriod(1);
    }
}

double Window::GetFps()
{
    return g_dFps;
}

DirectX.h

#pragma once

#pragma comment(lib,"d3d11.lib")
#pragma comment(lib,"d2d1.lib")
#pragma comment(lib,"dwrite.lib")
#include <d3d11_1.h>
#include <directxcolors.h>
#include <d2d1.h>
#include <dwrite.h>
#include <wchar.h>

class DirectX11
{
public:
    DirectX11();
    ~DirectX11();
    HRESULT InitDevice();
    void Render();
private:
    ID3D11Device* pd3dDevice;
    ID3D11Device1* pd3dDevice1;
    ID3D11DeviceContext* pImmediateContext;
    ID3D11DeviceContext1* pImmediateContext1;
    IDXGISwapChain* pSwapChain;
    IDXGISwapChain1* pSwapChain1;
    ID3D11RenderTargetView* pRenderTargetView;

    ID2D1Factory* pD2DFactory;
    IDWriteFactory* pDWriteFactory;
    IDWriteTextFormat* pTextFormat;
    ID2D1RenderTarget* pRT;
    ID2D1SolidColorBrush* pSolidBrush;
    IDXGISurface* pDXGISurface;
};

DirectX.cpp

#include "Main.h"
#include "DirectX.h"

DirectX11::DirectX11()
{
    pd3dDevice = nullptr;
    pd3dDevice1 = nullptr;
    pImmediateContext = nullptr;
    pImmediateContext1 = nullptr;
    pSwapChain = nullptr;
    pSwapChain1 = nullptr;
    pRenderTargetView = nullptr;

    pD2DFactory = nullptr;
    pDWriteFactory = nullptr;
    pTextFormat = nullptr;
    pRT = nullptr;
    pSolidBrush = nullptr;
    pDXGISurface = nullptr;
}

DirectX11::~DirectX11()
{
    if (pDXGISurface) pDXGISurface->Release();
    if (pSolidBrush) pSolidBrush->Release();
    if (pRT) pRT->Release();
    if (pTextFormat) pTextFormat->Release();
    if (pDWriteFactory) pDWriteFactory->Release();
    if (pD2DFactory) pD2DFactory->Release();

    if (pImmediateContext) pImmediateContext->ClearState();

    if (pRenderTargetView) pRenderTargetView->Release();
    if (pSwapChain1) pSwapChain1->Release();
    if (pSwapChain) pSwapChain->Release();
    if (pImmediateContext1) pImmediateContext1->Release();
    if (pImmediateContext) pImmediateContext->Release();
    if (pd3dDevice1) pd3dDevice1->Release();
    if (pd3dDevice) pd3dDevice->Release();
}

HRESULT DirectX11::InitDevice()
{
    HRESULT hr = S_OK;

    RECT rc;
    GetClientRect(Window::GethWnd(), &rc);
    UINT width = rc.right - rc.left;
    UINT height = rc.bottom - rc.top;

    UINT createDeviceFlags = D3D11_CREATE_DEVICE_BGRA_SUPPORT;

#ifdef _DEBUG
    createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
#endif

    D3D_DRIVER_TYPE driverTypes[] =
    {
        D3D_DRIVER_TYPE_HARDWARE,
        D3D_DRIVER_TYPE_WARP,
        D3D_DRIVER_TYPE_REFERENCE,
    };
    UINT numDriverTypes = ARRAYSIZE(driverTypes);

    D3D_FEATURE_LEVEL featureLevels[] =
    {
        D3D_FEATURE_LEVEL_11_1,
        D3D_FEATURE_LEVEL_11_0,
        D3D_FEATURE_LEVEL_10_1,
        D3D_FEATURE_LEVEL_10_0,
    };
    UINT numFeatureLevels = ARRAYSIZE(featureLevels);

    D3D_DRIVER_TYPE g_driverType = D3D_DRIVER_TYPE_NULL;
    D3D_FEATURE_LEVEL g_featureLevel = D3D_FEATURE_LEVEL_11_0;
    for (UINT driverTypeIndex = 0; driverTypeIndex < numDriverTypes; driverTypeIndex++)
    {
        g_driverType = driverTypes[driverTypeIndex];
        hr = D3D11CreateDevice(nullptr, g_driverType, nullptr, createDeviceFlags, featureLevels, numFeatureLevels,
            D3D11_SDK_VERSION, &pd3dDevice, &g_featureLevel, &pImmediateContext);

        if (hr == E_INVALIDARG)
        {
            hr = D3D11CreateDevice(nullptr, g_driverType, nullptr, createDeviceFlags, &featureLevels[1], numFeatureLevels - 1,
                D3D11_SDK_VERSION, &pd3dDevice, &g_featureLevel, &pImmediateContext);
        }

        if (SUCCEEDED(hr))
            break;
    }
    if (FAILED(hr))
        return hr;

    IDXGIFactory1* dxgiFactory = nullptr;
    {
        IDXGIDevice* dxgiDevice = nullptr;
        hr = pd3dDevice->QueryInterface(__uuidof(IDXGIDevice), reinterpret_cast<void**>(&dxgiDevice));
        if (SUCCEEDED(hr))
        {
            IDXGIAdapter* adapter = nullptr;
            hr = dxgiDevice->GetAdapter(&adapter);
            if (SUCCEEDED(hr))
            {
                hr = adapter->GetParent(__uuidof(IDXGIFactory1), reinterpret_cast<void**>(&dxgiFactory));
                adapter->Release();
            }
            dxgiDevice->Release();
        }
    }
    if (FAILED(hr))
        return hr;

    IDXGIFactory2* dxgiFactory2 = nullptr;
    hr = dxgiFactory->QueryInterface(__uuidof(IDXGIFactory2), reinterpret_cast<void**>(&dxgiFactory2));
    if (dxgiFactory2)
    {
        hr = pd3dDevice->QueryInterface(__uuidof(ID3D11Device1), reinterpret_cast<void**>(&pd3dDevice1));
        if (SUCCEEDED(hr))
        {
            (void)pImmediateContext->QueryInterface(__uuidof(ID3D11DeviceContext1), reinterpret_cast<void**>(&pImmediateContext1));
        }

        DXGI_SWAP_CHAIN_DESC1 sd = {};
        sd.Width = width;
        sd.Height = height;
        sd.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
        sd.SampleDesc.Count = 1;
        sd.SampleDesc.Quality = 0;
        sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
        sd.BufferCount = 1;

        hr = dxgiFactory2->CreateSwapChainForHwnd(pd3dDevice, Window::GethWnd(), &sd, nullptr, nullptr, &pSwapChain1);
        if (SUCCEEDED(hr))
        {
            hr = pSwapChain1->QueryInterface(__uuidof(IDXGISwapChain), reinterpret_cast<void**>(&pSwapChain));
        }

        dxgiFactory2->Release();
    }
    else
    {
        DXGI_SWAP_CHAIN_DESC sd = {};
        sd.BufferCount = 1;
        sd.BufferDesc.Width = width;
        sd.BufferDesc.Height = height;
        sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
        sd.BufferDesc.RefreshRate.Numerator = 60;
        sd.BufferDesc.RefreshRate.Denominator = 1;
        sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
        sd.OutputWindow = Window::GethWnd();
        sd.SampleDesc.Count = 1;
        sd.SampleDesc.Quality = 0;
        sd.Windowed = TRUE;

        hr = dxgiFactory->CreateSwapChain(pd3dDevice, &sd, &pSwapChain);
    }

    dxgiFactory->MakeWindowAssociation(Window::GethWnd(), DXGI_MWA_NO_ALT_ENTER);

    dxgiFactory->Release();

    if (FAILED(hr))
        return hr;

    ID3D11Texture2D* pBackBuffer = nullptr;
    hr = pSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), reinterpret_cast<void**>(&pBackBuffer));
    if (FAILED(hr))
        return hr;

    hr = pd3dDevice->CreateRenderTargetView(pBackBuffer, nullptr, &pRenderTargetView);
    pBackBuffer->Release();
    if (FAILED(hr))
        return hr;

    pImmediateContext->OMSetRenderTargets(1, &pRenderTargetView, nullptr);

    D3D11_VIEWPORT vp;
    vp.Width = (FLOAT)width;
    vp.Height = (FLOAT)height;
    vp.MinDepth = 0.0f;
    vp.MaxDepth = 1.0f;
    vp.TopLeftX = 0;
    vp.TopLeftY = 0;
    pImmediateContext->RSSetViewports(1, &vp);

    // Direct2D,DirectWriteの初期化
    hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &pD2DFactory);
    if (FAILED(hr))
        return hr;

    hr = pSwapChain->GetBuffer(0, IID_PPV_ARGS(&pDXGISurface));
    if (FAILED(hr))
        return hr;

    FLOAT dpiX;
    FLOAT dpiY;
    //pD2DFactory->GetDesktopDpi(&dpiX, &dpiY);
    dpiX = (FLOAT)GetDpiForWindow(GetDesktopWindow());
    dpiY = dpiX;

    D2D1_RENDER_TARGET_PROPERTIES props = D2D1::RenderTargetProperties(D2D1_RENDER_TARGET_TYPE_DEFAULT, D2D1::PixelFormat(DXGI_FORMAT_UNKNOWN, D2D1_ALPHA_MODE_PREMULTIPLIED), dpiX, dpiY);

    hr = pD2DFactory->CreateDxgiSurfaceRenderTarget(pDXGISurface, &props, &pRT);
    if (FAILED(hr))
        return hr;

    hr = DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, __uuidof(IDWriteFactory), reinterpret_cast<IUnknown**>(&pDWriteFactory));
    if (FAILED(hr))
        return hr;

    //関数CreateTextFormat()
    //第1引数:フォント名(L"メイリオ", L"Arial", L"Meiryo UI"等)
    //第2引数:フォントコレクション(nullptr)
    //第3引数:フォントの太さ(DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_WEIGHT_BOLD等)
    //第4引数:フォントスタイル(DWRITE_FONT_STYLE_NORMAL, DWRITE_FONT_STYLE_OBLIQUE, DWRITE_FONT_STYLE_ITALIC)
    //第5引数:フォントの幅(DWRITE_FONT_STRETCH_NORMAL,DWRITE_FONT_STRETCH_EXTRA_EXPANDED等)
    //第6引数:フォントサイズ(20, 30等)
    //第7引数:ロケール名(L"")
    //第8引数:テキストフォーマット(&g_pTextFormat)
    hr = pDWriteFactory->CreateTextFormat(L"メイリオ", nullptr, DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL, DWRITE_FONT_STRETCH_NORMAL, 20, L"", &pTextFormat);
    if (FAILED(hr))
        return hr;

    //関数SetTextAlignment()
    //第1引数:テキストの配置(DWRITE_TEXT_ALIGNMENT_LEADING:前, DWRITE_TEXT_ALIGNMENT_TRAILING:後, DWRITE_TEXT_ALIGNMENT_CENTER:中央)
    hr = pTextFormat->SetTextAlignment(DWRITE_TEXT_ALIGNMENT_LEADING);
    if (FAILED(hr))
        return hr;

    //関数CreateSolidColorBrush()
    //第1引数:フォント色(D2D1::ColorF(D2D1::ColorF::Black):黒, D2D1::ColorF(D2D1::ColorF(0.0f, 0.2f, 0.9f, 1.0f)):RGBA指定)
    hr = pRT->CreateSolidColorBrush(D2D1::ColorF(D2D1::ColorF::Black), &pSolidBrush);
    if (FAILED(hr))
        return hr;

    return S_OK;
}

void DirectX11::Render()
{
    pImmediateContext->ClearRenderTargetView(pRenderTargetView, DirectX::Colors::Aquamarine);

    // テキストの描画
    WCHAR wcText1[256] = { 0 };

    swprintf(wcText1, 256, L"%lf", Window::GetFps());

    pRT->BeginDraw();
    pRT->DrawText(wcText1, ARRAYSIZE(wcText1) - 1, pTextFormat, D2D1::RectF(0, 0, 800, 20), pSolidBrush, D2D1_DRAW_TEXT_OPTIONS_NONE);
    pRT->EndDraw();

    pSwapChain->Present(0, 0);
}

自分、ぼっちですが何か?