「C言語/C++/wtlhello」の編集履歴(バックアップ)一覧はこちら
C言語/C++/wtlhello - (2012/09/21 (金) 16:33:48) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
|開発環境|Microsoft Visual C++ 2010 Express (SP1)|
|実行環境|Microsoft Windows XP Home Edition (SP3)|
|プロジェクトの種類|Win32 プロジェクト|
|プロジェクト名|wtlhello|
|アプリケーションの種類|Windows アプリケーション|
|追加のオプション|空のプロジェクト|
以下のATL/WTLを使用。
-Windows Driver Kit Version 7.1.0
-WTL 8.1.12085
参考
-[[Windows Template Library - Wikipedia>http://ja.wikipedia.org/wiki/Windows_Template_Library]]
-[[Visual C++ 2010 Express の導入 【Part.6】>http://programmemopad.blog.fc2.com/blog-entry-29.html]]
wtlhello.cpp
#highlight(cpp){{
/*
ATL/WTLディレクトリの追加
構成プロパティ/VC++ ディレクトリ
・インクルード ディレクトリ:C:\etc\wtl81_12085\Include;C:\WinDDK\7600.16385.1\inc\atl71
・ライブラリ ディレクトリ:C:\WinDDK\7600.16385.1\lib\ATL\i386
構成プロパティ/リンカー/コマンド ライン
・追加オプション:/ignore:4078,4254
*/
#pragma comment(lib, "atlthunk.lib")
#include <Windows.h>
// ATLヘッダ
#define _ATL_NO_AUTOMATIC_NAMESPACE
#include <atlbase.h>
#include <atlwin.h>
// WTLヘッダ
#define _WTL_NO_AUTOMATIC_NAMESPACE
#include <atlapp.h>
#include <atlcrack.h>
class HelloWindow : public ATL::CWindowImpl<HelloWindow>
{
public:
// ウィンドウクラス名を登録
DECLARE_WND_CLASS(TEXT("HelloWindow"));
private:
// メッセージマップ
BEGIN_MSG_MAP(HelloWindow)
MSG_WM_PAINT(OnPaint)
MSG_WM_DESTROY(OnDestroy)
END_MSG_MAP()
// 描画メッセージ
void OnPaint(HDC)
{
WTL::CPaintDC dc(m_hWnd);
dc.TextOut(10, 10, TEXT("Hello, world"), -1);
}
// ウィンドウが破棄されるメッセージ
void OnDestroy()
{
PostQuitMessage(0);
}
};
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int nCmdShow)
{
// ウィンドウのインスタンスを生成
HelloWindow wnd;
HWND hWnd = wnd.Create(NULL, ATL::CWindow::rcDefault,
TEXT("Hello, world"), WS_OVERLAPPEDWINDOW);
if (!hWnd) {
return -1;
}
// ウィンドウ表示
wnd.ShowWindow(nCmdShow);
wnd.UpdateWindow();
// メッセージループ
WTL::CMessageLoop msgLoop;
return msgLoop.Run();
}
}}
|開発環境|Microsoft Visual C++ 2010 Express (SP1)|
|実行環境|Microsoft Windows XP Home Edition (SP3)|
|プロジェクトの種類|Win32 プロジェクト|
|プロジェクト名|wtlhello|
|アプリケーションの種類|Windows アプリケーション|
|追加のオプション|空のプロジェクト|
以下のATL/WTLを使用。
-Windows Driver Kit Version 7.1.0
-WTL 8.1.12085
リンカーのwarningの意味は「異なる属性の複数のセクションがマージされている」という事らしい。
リンカーオプションの/verboseや/mapを指定して調べてみたがよく分からない。
とりあえずwarningを抑止する事にした。
参考
-[[Windows Template Library - Wikipedia>http://ja.wikipedia.org/wiki/Windows_Template_Library]]
-[[Visual C++ 2010 Express の導入 【Part.6】>http://programmemopad.blog.fc2.com/blog-entry-29.html]]
wtlhello.cpp
#highlight(cpp){{
/*
ATL/WTLディレクトリの追加
構成プロパティ/VC++ ディレクトリ
・インクルード ディレクトリ:C:\etc\wtl81_12085\Include;C:\WinDDK\7600.16385.1\inc\atl71
・ライブラリ ディレクトリ:C:\WinDDK\7600.16385.1\lib\ATL\i386
構成プロパティ/リンカー/コマンド ライン
・追加オプション:/ignore:4078,4254
*/
#pragma comment(lib, "atlthunk.lib")
#include <Windows.h>
// ATLヘッダ
#define _ATL_NO_AUTOMATIC_NAMESPACE
#include <atlbase.h>
#include <atlwin.h>
// WTLヘッダ
#define _WTL_NO_AUTOMATIC_NAMESPACE
#include <atlapp.h>
#include <atlcrack.h>
class HelloWindow : public ATL::CWindowImpl<HelloWindow>
{
public:
// ウィンドウクラス名を登録
DECLARE_WND_CLASS(TEXT("HelloWindow"));
private:
// メッセージマップ
BEGIN_MSG_MAP(HelloWindow)
MSG_WM_PAINT(OnPaint)
MSG_WM_DESTROY(OnDestroy)
END_MSG_MAP()
// 描画メッセージ
void OnPaint(HDC)
{
WTL::CPaintDC dc(m_hWnd);
dc.TextOut(10, 10, TEXT("Hello, world"), -1);
}
// ウィンドウが破棄されるメッセージ
void OnDestroy()
{
PostQuitMessage(0);
}
};
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int nCmdShow)
{
// ウィンドウのインスタンスを生成
HelloWindow wnd;
HWND hWnd = wnd.Create(NULL, ATL::CWindow::rcDefault,
TEXT("Hello, world"), WS_OVERLAPPEDWINDOW);
if (!hWnd) {
return -1;
}
// ウィンドウ表示
wnd.ShowWindow(nCmdShow);
wnd.UpdateWindow();
// メッセージループ
WTL::CMessageLoop msgLoop;
return msgLoop.Run();
}
}}