文字をウィンドウに表示したい
文字をウィンドウに表示したい
文字をウィンドウに表示したいです。
coutでストリームに出力するやり方を覚えたのですが、コンソール画面にしか出力できず困っています。
ウィンドウに出力するにはどういった処理が必要なのでしょうか。
また、DxLibなどで提供されている関数をcoutの様に記述することは可能でしょうか。
coutでストリームに出力するやり方を覚えたのですが、コンソール画面にしか出力できず困っています。
ウィンドウに出力するにはどういった処理が必要なのでしょうか。
また、DxLibなどで提供されている関数をcoutの様に記述することは可能でしょうか。
Re: 文字をウィンドウに表示したい
使用したいOSは何でしょうか?
Windows APIやGTKなど、ウィンドウの出し方はいろいろあります。
Windows APIの場合、メッセージ処理も必要になります。
「演算子のオーバーロード」を使用します。
Windows APIやGTKなど、ウィンドウの出し方はいろいろあります。
大まかに言うと、ウィンドウを開く処理と、開いたウィンドウに文字を描画する処理です。長峰 さんが書きました:ウィンドウに出力するにはどういった処理が必要なのでしょうか。
Windows APIの場合、メッセージ処理も必要になります。
適切なラッパを作れば可能だと思います。長峰 さんが書きました:また、DxLibなどで提供されている関数をcoutの様に記述することは可能でしょうか。
「演算子のオーバーロード」を使用します。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 文字をウィンドウに表示したい
ところで、言語はC++でいいですか?
coutというワードからの推測ですが、私が知らない物があったり、質問者が独自に定義しているかもしれないので。
coutというワードからの推測ですが、私が知らない物があったり、質問者が独自に定義しているかもしれないので。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 文字をウィンドウに表示したい
返信ありがとうございます。
言語はC++でOSはWindows(7)です。
APIはよくわかりませんが今使ってるのは多分Windows 32APIです。
できれば、今後は.NET Frameworkを使っていきたいです。
今ひとつイメージがつかめません。
言語はC++でOSはWindows(7)です。
APIはよくわかりませんが今使ってるのは多分Windows 32APIです。
できれば、今後は.NET Frameworkを使っていきたいです。
こういった関数はどこで詳しく調べられますか?みけCAT さんが書きました: 大まかに言うと、ウィンドウを開く処理と、開いたウィンドウに文字を描画する処理です。
Windows APIの場合、メッセージ処理も必要になります。
前処理やオーバーロードは関連したクラスを作ってやるのが適切なんでしょうか?みけCAT さんが書きました: 適切なラッパを作れば可能だと思います。
「演算子のオーバーロード」を使用します。
今ひとつイメージがつかめません。
Re: 文字をウィンドウに表示したい
とりあえずウィンドウを開いて文字を描画するサンプルです。
コンパイル方法の例(上のコードをmhw.cに保存)
「リファレンス>Win32API」というところと、「その他>(旧)ウィンドウ制御>ウィンドウメッセージ」というところです。
MSDNというのもあるらしいですが、最初はこっちのほうが手軽です。
最初のウィンドウを開くところは、C言語を始めよう!というソフトに付いていたテンプレを使いました。
#include <windows.h>
LRESULT CALLBACK WndProc(HWND hWnd, UINT message,WPARAM wParam, LPARAM lParam) {
PAINTSTRUCT ps;
HDC hdc;
RECT rt;
const char* moziretu="阿澄佳奈さん";
switch (message) {
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
TextOut(hdc,10,10,moziretu,lstrlen(moziretu));
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
LPSTR lpCmdLine,int nCmdShow) {
MSG msg;
WNDCLASSEX wcex={};
HWND hWnd;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszClassName = "MOZI_HYOUZI_CLASS";
RegisterClassEx(&wcex);
hWnd = CreateWindow("MOZI_HYOUZI_CLASS",
"文字を出力するよ", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 640, 480,
NULL, NULL, hInstance, NULL);
if (!hWnd)return FALSE;
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
ActiveBasicというソフトのヘルプに関数のリファレンスがついています。長峰 さんが書きました:こういった関数はどこで詳しく調べられますか?
「リファレンス>Win32API」というところと、「その他>(旧)ウィンドウ制御>ウィンドウメッセージ」というところです。
MSDNというのもあるらしいですが、最初はこっちのほうが手軽です。
最初のウィンドウを開くところは、C言語を始めよう!というソフトに付いていたテンプレを使いました。
逆にクラスを使わない実装が思いつきません。下手なことは言えなそうですが…長峰 さんが書きました:前処理やオーバーロードは関連したクラスを作ってやるのが適切なんでしょうか?
今ひとつイメージがつかめません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 文字をウィンドウに表示したい
例を見て、DxLibのありがたみがわかった気がします。
未知の所が多いですが、ウィンドウプロシージャのWM_PAINTのところで処理を作っていく様なイメージが出来ました。
処理をうまく関数化できるよう、ちょっと気合入れてみます。
ダウンロードしたリファレンスは、いつも検索でトップに出てくるMSDNを見て苦しんでいたので非常に助かります。
これを見て理解していきたいと思います。
件名であるウィンドウへの表示方法が分かりましたので、解決とさせて頂きます。
みけCATさん丁寧に有難うございました。
未知の所が多いですが、ウィンドウプロシージャのWM_PAINTのところで処理を作っていく様なイメージが出来ました。
処理をうまく関数化できるよう、ちょっと気合入れてみます。
ダウンロードしたリファレンスは、いつも検索でトップに出てくるMSDNを見て苦しんでいたので非常に助かります。
これを見て理解していきたいと思います。
クラスで実装してみます。あと、阿澄佳奈さんは私も好きです。みけCAT さんが書きました: 逆にクラスを使わない実装が思いつきません。下手なことは言えなそうですが…
件名であるウィンドウへの表示方法が分かりましたので、解決とさせて頂きます。
みけCATさん丁寧に有難うございました。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: 文字をウィンドウに表示したい
老婆心ですが、
>できれば、今後は.NET Frameworkを使っていきたいです。
マイクロソフトとしては、GUIでC++/CLI(CLR Windowフォーム)を使ってもらいたくない様なのでC#を検討された方が良いと思います。
→ VS2012から新規作成テンプレート上から消去されました。作れないわけではないですが、今後のサポートが心配です。
>できれば、今後は.NET Frameworkを使っていきたいです。
マイクロソフトとしては、GUIでC++/CLI(CLR Windowフォーム)を使ってもらいたくない様なのでC#を検討された方が良いと思います。
→ VS2012から新規作成テンプレート上から消去されました。作れないわけではないですが、今後のサポートが心配です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 文字をウィンドウに表示したい
老婆心に感謝です。softya(ソフト屋) さんが書きました:マイクロソフトとしては、GUIでC++/CLI(CLR Windowフォーム)を使ってもらいたくない様なのでC#を検討された方が良いと思います。
どの程度までがGUIなのかよく分かりませんが、
C#にも興味がありますので、不便ということでしたら利用していきたいと思います。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: 文字をウィンドウに表示したい
> どの程度までがGUIなのかよく分かりませんが
.NET FrameWorkを使ったウィンドウ関係全てです。
コンソールアプリやDLLの作成はC++/CLIを使ったCLRでVS2013でも続けて利用可能ですね。
.NET FrameWorkを使ったウィンドウ関係全てです。
コンソールアプリやDLLの作成はC++/CLIを使ったCLRでVS2013でも続けて利用可能ですね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 文字をウィンドウに表示したい
つまり、最新版でウィンドウを使う以上は、C#が必須ということですか。softya(ソフト屋) さんが書きました:.NET FrameWorkを使ったウィンドウ関係全てです。
コンソールアプリやDLLの作成はC++/CLIを使ったCLRでVS2013でも続けて利用可能ですね。
早めに使いたかったことを考えると、残念ですが、
いい機会だということでC#もかじっていきたいと思います。
Re: 文字をウィンドウに表示したい
Visual Basicでも大丈夫かもしれません。長峰 さんが書きました:つまり、最新版でウィンドウを使う以上は、C#が必須ということですか。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: 文字をウィンドウに表示したい
新規作成のテンプレートから消えているだけなので、詳しい人ならプロジェクトを新規作成することは出来ます。長峰 さんが書きました: つまり、最新版でウィンドウを使う以上は、C#が必須ということですか。
早めに使いたかったことを考えると、残念ですが、
いい機会だということでC#もかじっていきたいと思います。
あるいはVC++2010でプロジェクトを作ってしまえば、VS2013でもメンテは可能です。
この状況からして、マイクロソフトとしては新規では作って欲しくないって言っているのと同じです。
あえて逆らっても意味は無いんじゃないでしょうか。ということでC#などをおすすめしています。
※ 書籍もVC++2012以降は.NETでのアプリ作成の本は出ていません。
VisualC++ 2012の本で出ているのはWindows8ストアアプリの本だけです。
この場合に使うのはWinRTでWindows8以降専用なのです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。