ウィンドウの自動更新について
Posted: 2016年5月16日(月) 22:43
case WM_CREATE:
SetTimer(hwnd,ID_MYTIMER,500,NULL);
break;
case WM_TIMER:
InvalidateRect(hwnd,NULL,TRUE);
UpdateWindow(hwnd);
break;
case WM_PAINT:
rc = sqlite3_open("./db/data.db",&db);
if(rc != SQLITE_OK)
{
MessageBox(NULL,"Error","ERROR!!",MB_OK);
}
else
{
memset(query,0,sizeof(query));
query = "select NAME,FLAG from TABLE";
sqlite3_prepare(db,query,strlen(query),&stmt,NULL);
sqlite3_reset(stmt);
hdc = BeginPaint(hwnd,&paint);
memset(str,0,sizeof(str));
i = 0;
while(SQLITE_ROW == (rc = sqlite3_step(stmt)))
{
name = sqlite3_column_text(stmt,0);
flag = sqlite3_column_int(stmt,2);
sprintf(str,"%s %d",name,flag);
TextOut(hdc,10,i*20,(LPCSTR)str,strlen(str));
i++;
}
sqlite3_finalize(stmt);
sqlite3_close(db);
}
break;
データの追加、削除、変更をする外部プログラムがあるのですが、
この外部プログラムにて、何らかのアクションがあったとしても
常に最新のデータを描画させ続けたいのですが、
このような書き方に何か問題はありますか?
描画、再描画は一応できているのですが、
このプログラムは常に起動させておきたいです。
昨晩から試に起動させっぱなしにして仕事に行って、いま帰宅したのですが、
画面が真っ白になっていました。
再描画の無限ループになっているので、PCへの負担は大きいと思いますが、
通常このような場合、どのように対処するのでしょうか?
同一のプログラム内でデータ更新のアクションがあれば、その瞬間にだけ再描画させるプログラムを書くことができますが、
外部プログラムとなると、よくわかりません。
アドバイスよろしくお願いします。