Win32API講座4回
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
Win32APIを使っていても
デバック用に
printfなどが使いたいということがあると思います
そんなときは、プログラムの(WinMain関数の)冒頭に
次のような記述をします
AllocConsole();
freopen("CONOUT$", "w", stdout);
freopen("CONIN$", "r", stdin);
コンソールも開きます
scanf関数による入力なども受けつけます
&ref(winconsole.GIF);
-----------------------------------------------------------
また、次のようにいつものコンソールプロジェクトでウィンド...
この場合問題となるのはインスタンスハンドルを
どうやって取得するかという話ですが、対策はあります
コンソールを選択します
&ref(console.GIF);
次へ
&ref(console2.GIF);
・コンソールアプリケーション
・空のプロジェクト
を選びます
&ref(console3.GIF);
コンソールアプリケーションなので
main関数からアプリケーションは開始します
// ウィンドウズバージョン指定
#define _WIN32_WINNT 0x0500
#include <stdio.h>
#include <stdlib.h>
#include <tchar.h>
#include <windows.h>
#include <windowsx.h>
#include <commctrl.h>
#pragma comment(lib,"comctl32.lib")
#pragma comment(lib,"winmm.lib")
// コンソール画面隠蔽
//#pragma comment(linker, "/subsystem:\"windows\" /entry...
// ウィンドウプロシージャ
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wPa...
int main(int argc,char* argv[])
{
HINSTANCE hInstance = GetModuleHandle(NULL); // インス...
const TCHAR* WC_BASIC = _T("Basic"); // ウィンドウクラ...
/******************************************************...
/* ウィンドウクラスの定義と作成 */
/******************************************************...
// シンプルウィンドウクラス設定
WNDCLASSEX wcex ={sizeof(WNDCLASSEX), CS_HREDRAW | CS_V...
(HICON)LoadImage(NULL,MAKEINTRESOURCE(IDI_APPLICATION)...
(HCURSOR)LoadImage(NULL,MAKEINTRESOURCE(IDC_ARROW),IMA...
(HBRUSH)GetStockObject(WHITE_BRUSH), NULL, WC_BASIC , ...
// シンプルウィンドウクラス作成
if(!RegisterClassEx(&wcex))
return -1;
/******************************************************...
/* ウィンドウの作成 */
/******************************************************...
HWND hWnd = CreateWindowEx(
0, //拡張ウィンドウスタイル
WC_BASIC, //ウィンドウクラス名
_T("タイトル"), //タイトルバーにこの名前が表示されます
WS_OVERLAPPEDWINDOW, //ウィンドウスタイル
CW_USEDEFAULT, //X座標
CW_USEDEFAULT, //Y座標
CW_USEDEFAULT, //幅
CW_USEDEFAULT, //高さ
NULL, //親ウィンドウのハンドル、親を作るときはNULL
NULL, //メニューハンドルorリソースID
hInstance, //インスタンスハンドル
NULL);
// ウィンドウ作成失敗
if (hWnd == NULL)
return -1;
// ウィンドウを可視状態にする
ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd);
/******************************************************...
/* メッセージループ */
/******************************************************...
MSG msg = {};
while(msg.message != WM_QUIT) {
if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else{
// メッセージ処理をしてないとき
}
}
return 0;
}
// ウィンドウプロシージャ
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wPa...
{
switch (msg) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return (DefWindowProc(hWnd, msg, wParam, lParam));
}
肝心のインスタンスハンドルの取得は一行だけです
HINSTANCE hInstance = GetModuleHandle(NULL); // インスタ...
あとウィンドウクラスの定義を短くまとめました
書き方が違うだけで代入しているものはまったく同じです
構造体の変数の順番がわかっていれば
配列同様に、初期化子{}を使って、代入することができます
また、
プログラム冒頭の一行のコメントアウトをはずせば
コンソールは隠蔽できます
// コンソール画面隠蔽
#pragma comment(linker, "/subsystem:\"windows\" /entry:\...
この章以降はウィンドウを作成する部分よりも
ウィンドウプロシージャの部分がメインの処理となります
ウィンドウ作成の部分はこの章のコードを使用してください
全ソースコードは下から
&ref(main.cpp);
|(^ω^)やったお|1|
|何これwww意味不すぎwww|1|
|。(`ω´#)。あぁん?最近、だらしねぇな|1|
終了行:
Win32APIを使っていても
デバック用に
printfなどが使いたいということがあると思います
そんなときは、プログラムの(WinMain関数の)冒頭に
次のような記述をします
AllocConsole();
freopen("CONOUT$", "w", stdout);
freopen("CONIN$", "r", stdin);
コンソールも開きます
scanf関数による入力なども受けつけます
&ref(winconsole.GIF);
-----------------------------------------------------------
また、次のようにいつものコンソールプロジェクトでウィンド...
この場合問題となるのはインスタンスハンドルを
どうやって取得するかという話ですが、対策はあります
コンソールを選択します
&ref(console.GIF);
次へ
&ref(console2.GIF);
・コンソールアプリケーション
・空のプロジェクト
を選びます
&ref(console3.GIF);
コンソールアプリケーションなので
main関数からアプリケーションは開始します
// ウィンドウズバージョン指定
#define _WIN32_WINNT 0x0500
#include <stdio.h>
#include <stdlib.h>
#include <tchar.h>
#include <windows.h>
#include <windowsx.h>
#include <commctrl.h>
#pragma comment(lib,"comctl32.lib")
#pragma comment(lib,"winmm.lib")
// コンソール画面隠蔽
//#pragma comment(linker, "/subsystem:\"windows\" /entry...
// ウィンドウプロシージャ
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wPa...
int main(int argc,char* argv[])
{
HINSTANCE hInstance = GetModuleHandle(NULL); // インス...
const TCHAR* WC_BASIC = _T("Basic"); // ウィンドウクラ...
/******************************************************...
/* ウィンドウクラスの定義と作成 */
/******************************************************...
// シンプルウィンドウクラス設定
WNDCLASSEX wcex ={sizeof(WNDCLASSEX), CS_HREDRAW | CS_V...
(HICON)LoadImage(NULL,MAKEINTRESOURCE(IDI_APPLICATION)...
(HCURSOR)LoadImage(NULL,MAKEINTRESOURCE(IDC_ARROW),IMA...
(HBRUSH)GetStockObject(WHITE_BRUSH), NULL, WC_BASIC , ...
// シンプルウィンドウクラス作成
if(!RegisterClassEx(&wcex))
return -1;
/******************************************************...
/* ウィンドウの作成 */
/******************************************************...
HWND hWnd = CreateWindowEx(
0, //拡張ウィンドウスタイル
WC_BASIC, //ウィンドウクラス名
_T("タイトル"), //タイトルバーにこの名前が表示されます
WS_OVERLAPPEDWINDOW, //ウィンドウスタイル
CW_USEDEFAULT, //X座標
CW_USEDEFAULT, //Y座標
CW_USEDEFAULT, //幅
CW_USEDEFAULT, //高さ
NULL, //親ウィンドウのハンドル、親を作るときはNULL
NULL, //メニューハンドルorリソースID
hInstance, //インスタンスハンドル
NULL);
// ウィンドウ作成失敗
if (hWnd == NULL)
return -1;
// ウィンドウを可視状態にする
ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd);
/******************************************************...
/* メッセージループ */
/******************************************************...
MSG msg = {};
while(msg.message != WM_QUIT) {
if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else{
// メッセージ処理をしてないとき
}
}
return 0;
}
// ウィンドウプロシージャ
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wPa...
{
switch (msg) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return (DefWindowProc(hWnd, msg, wParam, lParam));
}
肝心のインスタンスハンドルの取得は一行だけです
HINSTANCE hInstance = GetModuleHandle(NULL); // インスタ...
あとウィンドウクラスの定義を短くまとめました
書き方が違うだけで代入しているものはまったく同じです
構造体の変数の順番がわかっていれば
配列同様に、初期化子{}を使って、代入することができます
また、
プログラム冒頭の一行のコメントアウトをはずせば
コンソールは隠蔽できます
// コンソール画面隠蔽
#pragma comment(linker, "/subsystem:\"windows\" /entry:\...
この章以降はウィンドウを作成する部分よりも
ウィンドウプロシージャの部分がメインの処理となります
ウィンドウ作成の部分はこの章のコードを使用してください
全ソースコードは下から
&ref(main.cpp);
|(^ω^)やったお|1|
|何これwww意味不すぎwww|1|
|。(`ω´#)。あぁん?最近、だらしねぇな|1|
ページ名: