えーっと、勉強終えて、いざパソコンやろうとすると、
何をしようとしてたのかすっかり忘れる。
しっかりと、メモしておかないと忘れてしまうな。
ぁ、昨日の日記を見たら思い出した。
Visual C++の設定で、ウィンドウズアプリケーション(GUI)を
選択したときに、標準入出力をコンソールに
向けれるかどうか調べようと思ってたんだ。
つまりどういうことかというと、Windowsアプリケーションに設定を変えて、
ソースコード内では、AllocConsole()呼び出して、
GetStdHandle()でコンソールのハンドル取得して、
WriteConsole()を使って、コンソールに出力をする。
以上の一連の動作において、一番最後のWriteConsole()を呼び出して
コンソールに出力を行う、っていう部分を、coutやprintfを使って
出力できないか、模索していたわけです。
結果はというと、有効な手段は見つからず。
コマンドプロンプトからテキストファイルに対して
リダイレクトしてやれば、一応できないこともないのだけど、
これが一番の目的じゃないし、第一、仕組みが理解できていない。
ちなみに、検証コードは以下のような感じ。
どのような条件でどうなるかはさらに下を参照。
using namespace std;
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpsCmdLine,int nCmdShow)
{
AllocConsole();
cout << "test";
return 0;
}
1、returnの前でfor(;;);をして、コンソールの内容を確認してみる。
コンソールに変化なし
2、コマンドプロンプトから起動
変化なし
3、コマンドプロンプトからファイルにリダイレクト
変化あり。しっかりと出力される。
以上のような結果。
ただ、友人が調べたところによると、cprintfなるものがあって、
こいつをつかってやると、上記の1の環境でも再現(2,3は未確認)
以下は、今日あったことの簡単なメモ。
・補講後に教室から出ようとして、ふと、窓の外に目をやると、
校舎と校舎をつなぐ渡り廊下のあたりで、膝枕をしてる
カップルらしきものを発見。
やるのは自由だが、公共の場で、しかも、おおよそ
全教室から見える位置でやるのは、さすがにどうかと思う。
そういう性癖があるだけかもしれないが・・・。
それか、たぶん自分のみ間違いだろう、そういうことにしとこう。
・昔の間違えでオブジェクト指向プログラミング(Object Oriented Programming)の略称を
「ODP」と書いてしまう。正確には、「OOP」
・友人に渡したデバッグコンソールのソース、
よく見たら、FreeConsole()するの忘れてた prz
あと、GetStdHandleのフラグが多分間違え。。。
・Interfaceの8月号が組み込みOSについてだったので、気になって購入。
TOPPERS(Toyohashi OPen Platform for Embedded Real-time Systems)プロジェクトって、
よくよく調べてみると、あそこの大学で研究されてたものか。
長々とかいてて、時間がかなりまずい。
早く終わることにしよう。