Windowsのフォームでよく見るテキストボックスを表示したいです
(DXライブラリにも文字列入力用の関数がありますが
今回は少し事情があり、テキストボックスでの入力をしたいと思っています)
調べたところ、CreateWindowという関数を使えば
指定したウィンドウの上にテキストボックスを作成できるとのことで、以下のようなコードを書きました
実行してみると、きちんと左上にテキストボックスが作成はされているようなのですが
カーソルを合わせたとき、文字を入力したときなど、おそらく再描画される瞬間でしょうか?
そのタイミングでしか画面上に表示されません・・・
なんとかして常に表示させるようにしたいのですが、どうすればよいのでしょうか
どうぞよろしくおねがいします
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
//ウインドウモードで起動
ChangeWindowMode( TRUE );
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// 描画先を裏画面に設定
SetDrawScreen( DX_SCREEN_BACK ) ;
// 白色の値を取得
int Cr = GetColor( 255 , 255 , 255 ) ;
//ウィンドウハンドルを取得
HWND hWnd = GetMainWindowHandle();
//EDITを作成
CreateWindow(
"EDIT", // ウィンドウクラス名
"hello!", // キャプション
WS_EX_COMPOSITED | WS_CHILD | WS_VISIBLE , // スタイル指定
0, 0, // 座標
200, 50, // サイズ
hWnd, // 親ウィンドウのハンドル
(HMENU)(INT_PTR)1, // メニューハンドル
hInstance, // インスタンスハンドル
NULL // その他の作成データ
);
for(;;){
// 画面を初期化
ClearDrawScreen() ;
// 1000個の点を描く
for( int i = 0 ; i < 1000 ; i ++ )
{
DrawPixel( GetRand( 639 ) , GetRand( 479 ) , Cr ) ;
}
//表画面に反映
ScreenFlip() ;
// Windows依存処理
if( ProcessMessage() == -1 ) break ;
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}