アプリ版:「スタンプのみでお礼する」機能のリリースについて

VC++2005のMFC環境でFlexGridを使用しています。
SetTextMatrix関数にて、セル内に挿入した文字に対し、
点滅させ表示したいのですが、
何か良い方法などありましたら、ご教示お願い致します。

A 回答 (1件)

 こんにちは。


 「フォントの点滅」とは、リアルタイムにフォントが点滅すると言う事でしょうか(ゲームみたいに)。
 手法の良し悪しは別として、OnTimer()でセルのフォント色を交互に切り替えれば、簡単に表現出来ます。以下参考程度に。

//ヘッダに以下のメンバ変数を追加
class CTestDlg
{
bool m_bBlink;//点滅フラグ
CArray<CPoint, CPoint&> m_ptArray;//セル位置の配列
CMSFlexGridm_flexGrid;
};

//ウィンドウやダイアログの初期化
BOOL CTestDlg::OnInitDialog()
{
//セル初期化用の使い捨て構造体
struct CInitData
{
CInitData(long x, long y, const CString& string) : point(x, y), string(string){}
CPoint point;//セルの位置
CString string;//セルの文字
} data[] =
{
CInitData(1, 1, "点滅テスト1-1"),
CInitData(2, 2, "点滅テスト2-2"),
};

for(int n = 0; n < 2; ++n)
{
m_ptArray.Add(data[n].point);
m_flexGrid.SetTextMatrix(data[n].point.x, data[n].point.y, data[n].string);
}

//取り敢えずタイマーを0.25秒辺りでセット
this->SetTimer(1000, 250, NULL);
};

//タイマー
void CTestDlg::OnTimer(UINT nIDEvent)
{
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください

m_bBlink ^= true;

for(int n = 0; n < m_ptArray.GetSize(); ++n)
{
m_flexGrid.SetCol(m_ptArray[n].x);
m_flexGrid.SetRow(m_ptArray[n].y);
//フォントの白黒点滅
m_flexGrid.SetForeColor(m_bBlink ? 0x0 : 0xffffff);
}

CDialog::OnTimer(nIDEvent);
}
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
なるほど、OnTimerを用いて文字色を反転させれば良いのですね。
参考にさせていただきます。ありがとうございました。

お礼日時:2009/07/04 00:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!