Msflexgrid 全角入力の方法 – プログラミング – Home

Msflexgrid 全角入力の方法
 
通知
すべてクリア

[解決済] Msflexgrid 全角入力の方法


Endy
 Endy
(@Endy)
ゲスト
結合: 16年前
投稿: 2
Topic starter  

WinXP SP3 VC++2005 MFC ダイアログベース

Endyです。
Msflexgridを用い文字入力を行なうプログラムを作成しています。
現在、KeyDownイベントにて、半角英数字表示はできております。

しかし、全角入力ができません。
ネットで検索してみましたが、解決方法がわからない状態です。
どなたか、ご教授よろしくお願いします。

以下、作成したKeyDownイベントのソースです。
void CDriverManageDlg::KeyDownMsflexgridNote(short* KeyCode, short Shift)
{
// TODO: ここにメッセージ ハンドラ コードを追加します。
CString strText = m_grid_note.get_Text();
CString strInput;

if ((0x30 <= *KeyCode) && (*KeyCode <= 0x39))//数字
{
if (m_bInitGrid)
{
strText = _T(");
m_bInitGrid = false;
}
strInput.Format(_T(%c), *KeyCode);
InputGridNote(strText, strInput);
}
else if ((VK_NUMPAD0 <= *KeyCode) && (*KeyCode <= VK_NUMPAD9))//数字
{
if (m_bInitGrid)
{
strText = _T(");
m_bInitGrid = false;
}
strInput.Format(_T(%c), (*KeyCode - 0x30));
InputGridNote(strText, strInput);
}
else if ((0x41 <= *KeyCode) && (*KeyCode <= 0x5a))//英数字
{
if (m_bInitGrid)
{
strText = _T(");
m_bInitGrid = false;
}
strInput.Format(_T(%c), *KeyCode);
InputGridNote(strText, strInput);
}
else if (*KeyCode == VK_BACK) // BackSpace
{
CString strCell = m_grid_note.get_Text();
strText = strCell.Left(strCell.GetLength() - 1);
m_grid_note.put_Text(strText);
m_bInitGrid = false;
}
else if (*KeyCode == VK_DELETE) // Delete
{
strText = _T(");
m_grid_note.put_Text(strText);
}
else if(*KeyCode == VK_DECIMAL || *KeyCode == 0xbe)//小数点
{
TRACE(小数点押されたよ\n);
strText += .;
m_grid_note.put_Text(strText);
m_bInitGrid = false;
}
else if(*KeyCode == 0xbd || *KeyCode == VK_SUBTRACT)
{
TRACE(-押されたよ\n);
strText += -;
m_grid_note.put_Text(strText);
m_bInitGrid = false;
}
}

void CDriverManageDlg::InputGridNote(LPCTSTR lpszText, LPCTSTR lpszInput)
{
CString strNewText = lpszText;

strNewText+=lpszInput;

m_grid_note.put_Text(strNewText);

// ブロック入力
int nSelectRow = m_grid_note.get_RowSel();
int nSelectCol = m_grid_note.get_ColSel();
if ((nRow == nSelectRow) && (nCol == nSelectCol)) return;

CPoint ptStart, ptEnd;
ptStart.x = (nCol <= nSelectCol) ? nCol : nSelectCol;
ptStart.y = (nRow <= nSelectRow) ? nRow : nSelectRow;
ptEnd.x = (nCol >= nSelectCol) ? nCol : nSelectCol;
ptEnd.y = (nRow >= nSelectRow) ? nRow : nSelectRow;
for (int i = ptStart.x; i <= ptEnd.x; i++)
{
for (int j = ptStart.y; j <= ptEnd.y; j++)
{
m_grid_note.put_TextMatrix(j, i, strNewText);
}
}
}


引用未解決
トピックタグ
h
 h
(@h)
ゲスト
結合: 16年前
投稿: 4
 

ここ
http://7ujm.net/C++/FlexGrid.html


返信引用
Endy
 Endy
(@Endy)
ゲスト
結合: 16年前
投稿: 2
Topic starter  

hさん

ありがとうございました!
全角入力できるようになりました!


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました