Win32 SDK の基本 (5) ウィンドウ クラスの簡単な紹介
1. はじめに
前回の記事では、ウィンドウを一から作成しました。最も重要な手順の 1 つは、次のコードに示すように、ウィンドウ クラスを登録することです。
//注册窗口类 BOOL Register(LPSTR lpClassName, WNDPROC wndProc) { WNDCLASSEX wce = { 0 }; wce.cbSize = sizeof(wce); wce.cbClsExtra = 0; wce.cbWndExtra = 0; wce.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wce.hCursor = NULL; wce.hIcon = NULL; wce.hIconSm = NULL; wce.hInstance = g_hInstance; wce.lpfnWndProc = wndProc; wce.lpszClassName = lpClassName; wce.lpszMenuName = NULL; wce.style = CS_HREDRAW | CS_VREDRAW; ATOM nAtom = RegisterClassEx(&wce); if (nAtom == 0) return FALSE; return true; }
Windows 上のウィンドウは、作成する前にシステムに明示的に登録する必要があります。ウィンドウの作成には CreateWindowEx を使用します。作成時の 2 番目のパラメーターの名前はウィンドウ クラス名であり、コードから見える範囲内で一意である必要があります。この記事では主に Windows におけるウィンドウ クラスの問題について説明します。
2. ウィンドウの分類
Windows で表示されるすべての要素は、その形状に関係なく、基本的には、円形、正方形、または不規則であるかどうかに関係なく、ウィンドウに属します。これらすべてのウィンドウは、特定のウィンドウ クラスに属します。一般に、Windows ウィンドウ クラスは 3 つのタイプに分類されます: (1) システム ウィンドウ クラス
(2) グローバル ウィンドウ クラス
(3) ローカル ウィンドウ クラス
以下に分類します。 Windows のウィンドウ クラスについては、別途説明します。
2.1 システムウィンドウクラス
Windows オペレーティングシステムで見られる ボタン 、編集ボックス、すべての コントロール は、実際にはウィンドウです。オペレーティング システムを インストールすると、Windows はオペレーティング システム内に多数のシステム レベルのウィンドウ クラスを登録します。開発時には、これらのウィンドウをウィンドウ クラス名に基づいて直接作成できます。この問題を説明するために、前の記事のコードに加えて次のコードを導入します。
HWND CreateMain(LPSTR lpClassName, LPSTR lpWndName) { HWND hWnd = CreateWindowEx(0, lpClassName, lpWndName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, g_hInstance, NULL); return hWnd; } int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow) { // TODO: Place code here. g_hInstance = hInstance; HWND hWnd = CreateMain("Button", "window"); Display(hWnd); Message(); return 0; }
編集ボックスやドロップダウンボックスなど、他のシステムレベルのウィンドウを作成してみることもできます。
2.2 グローバルウィンドウクラス
グローバルウィンドウクラスとは、登録後にアプリケーションのグローバルスコープで使用できるウィンドウクラスを指します。たとえば、dll にグローバル ウィンドウ クラスを登録すると、dll を導入するすべてのプログラムでこのクラスを使用できるようになります。グローバルに使用されるウィンドウ クラスを登録する場合、次のように、登録時に wec の structural のスタイル メンバーに CS_GLOBALCLASSattribute を追加するだけで済みます。新しい DLL プロジェクトを追加し、次のようにウィンドウ登録関数 RegisterWindow() を定義します。
wce.style = CS_HREDRAW | CS_VREDRAW | CS_GLOBALCLASS;
RegisterWindow() に登録されたウィンドウ クラスの名前は "DllMain"
で、
dll のメイン関数 登録関数によって登録が完了します:
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_DESTROY:
PostQuitMessage(0);//可以使GetMessage返回0
break;
default:
break;
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
BOOL RegisterWindow()
{
WNDCLASSEX wce = { 0 };
wce.cbSize = sizeof(wce);
wce.cbClsExtra = 0;
wce.cbWndExtra = 0;
wce.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wce.hCursor = NULL;
wce.hIcon = NULL;
wce.hIconSm = NULL;
wce.hInstance = NULL;
wce.lpfnWndProc = WndProc;
wce.lpszClassName = "DllMain";
wce.lpszMenuName = NULL;
wce.style = CS_HREDRAW | CS_VREDRAW | CS_GLOBALCLASS;
ATOM nAtom = RegisterClassEx(&wce);
if (nAtom == 0)
return FALSE;
return true;
}
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
....
RegisterWindow();
return TRUE;
}
}
2.3 ローカル ウィンドウ クラス
ローカル ウィンドウ クラスは定義の観点から定義されており、すべての cs_globalclasss は WCE のスタイルに追加されておらず、登録されたウィンドウ クラスはローカル ウィンドウ クラスです。ウィンドウクラス。
我们在上一文中注册的窗口就是一个局部的窗口类,它的特点就是只能在注册的作用域内使用,由于它和全局窗口类只在注册的style和作用域上有分别,这里就不再详述,如要了解,请参照上一文。 以上がWin32 SDK の基本 (5) ウィンドウ クラスの簡単な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。wce.style = CS_HREDRAW | CS_VREDRAW;//未添加CS_GLOBALCLASS

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Windows 11 のネイティブ アプリ (ファイル エクスプローラーなど) とその他のシェル アプリは、デフォルトで丸い角と Fluent Design 要素 (アクリルなど) を使用します。丸い角に加えて、Windows 11 のもう 1 つの重要なデザイン機能は、アプリの背景色をデスクトップと揃える雲母などのマテリアルです。マイカはアクリルに似ていますが、動作が少し異なります。 Microsoft が説明しているように、Windows Mica マテリアルは「背景をアプリに合わせて色の階層を作成します」

ビルド 22523 用の新しい Windows 11 SDK は、Microsoft が Windows 11 用の新しいぼかし効果を開発していることを明らかにしました。この効果はタブ付きと呼ばれ、アクリルとマイカに追加されます。 22523 SDK の新しい DWMWA_SYSTEMBACKDROP_TYPE、Mica、Acrylic のパブリック Win32 API、およびその奇妙な新しい「タブ」ミックス: pic.twitter.com/dbsu7ZFiIi — It's All Back (@StartIsBack) December 15, 2021 次の SDK のサンプル アプリケーションで利用可能

ウイルス対策ソフトウェアは、Windows 32 ラップトップ上で Trojan/win11.casdet rfn を示す警告を表示する場合があります。これは、PC がトロイの木馬マルウェアに感染し、誤動作を引き起こしていることを示します。幸いなことに、以下で説明するように、この問題を解決する方法がいくつかあります。さらに、cdn.districtm.io がポップアップ/ウイルス/マルウェアであるかどうかに関する詳細なガイドにも興味があるかもしれません。 Trojan/win32.casdet rfn とは何ですか? Trojan/win32.casdet rfn は、システムをオーバーランさせてプロセスを強制終了させる可能性がある深刻なトロイの木馬ウイルス感染症です。

win32 と win64 の違いは次のとおりです。 1. win32 は Microsoft Windows オペレーティング システムの 32 ビット環境を指し、win64 は Microsoft Windows オペレーティング システムの 64 ビット バージョンを指します。これは 32 ビット環境よりも安定しており、高速です。 -ビットバージョン; 2. win32 は最大 2G のメモリをサポートしますが、win64 には 4G 以上のメモリが必要です; 3. win64 は 64 ビット プロセッサをサポートしますが、win32 は完全にはサポートできません; 4. win32 はシンプルさを追求し、win64 はパフォーマンスを追求します。

2021 年 8 月に遡ると、Microsoft は、テクノロジー大手が複数のバージョンのメモ作成アプリを 1 つに統合するため、Windows 10 および Windows 11 の OneNote に今後数か月以内に一連の主要な機能アップデートが提供されると約束しました。顧客の。 OneNote は過去数年間に多くの変更を加えてきました。 2018 年、Microsoft は人々に自社の UWP バージョンの OneNote を使用してもらいたいと本気で考えていたため、機能が豊富なオリジナルの OneNote バージョンとプレインストールされた Office アプリのバンドルを中止しました。代わりに、Microsoft は UWP クライアントを提供し、最新バージョンに新機能を追加しただけです。マイクロソフトはその後変更しました

Java Hikvision SDK の二次開発に必須のスキルをマスターする はじめに: 情報技術の急速な発展に伴い、ビデオ監視システムはさまざまな分野で広く使用されています。国内の大手ビデオ監視ソリューションプロバイダーとして、Hikvision の製品と技術は常に市場で重要な位置を占めてきました。さまざまなプロジェクトのニーズを満たすために、Hikvision は開発者が二次開発を実行するための SDK を提供します。この記事では、Java Hikvision SDK の二次開発を習得するための重要なスキルをいくつか紹介し、対応するコード例を添付します。 1. Hikvision を理解する

WindowsAppSDK は、開発者が Windows 10 (バージョン 1809 以降) および Windows 11 を使用するさまざまなデバイス間で「一貫した」機能を提供するために Windows アプリケーションで使用できるツールと API のセットです。 .NET や Windows SDK などの既存のアプリケーション タイプを置き換えるのではなく、既存のアプリケーションを補完するために使用できる統合 API ツールセットを提供するだけであることを理解することが非常に重要です。本日、Microsoft は多くの新機能を備えた Windows App SDK バージョン 1.2 をリリースしました。このリリースのハイライトはサードパーティの開発者かもしれません

sdkの正式名称は「Software Development Kit」、中国語で「ソフトウェア開発キット」を意味し、ハードウェアプラットフォームやオペレーティングシステム(OS)、プログラミング言語のメーカーが提供するツールのセットです。 SDK は、ソフトウェア開発者が特定のプラットフォーム、システム、またはプログラミング言語用のアプリケーションを作成するのを支援します。通常、基本的な SDK はコンパイラー、デバッガー、アプリケーション プログラミング インターフェイス (API) で構成されますが、ドキュメント、ライブラリ、ランタイム/開発環境、テスト/分析ツール、ネットワーク プロトコルなどの他のコンテンツが含まれる場合もあります。
