キーボードの同時押し – プログラミング – Home

通知
すべてクリア

[解決済] キーボードの同時押し

固定ページ 1 / 3

LPO
 LPO
(@LPO)
ゲスト
結合: 21年前
投稿: 14
Topic starter  

キーボードでの同時押しってできるのでしょうか。


引用未解決
トピックタグ
LPO
 LPO
(@LPO)
ゲスト
結合: 21年前
投稿: 14
Topic starter  

すいません
環境はWinME VC++6.0 MFC SDI


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

打鍵するスイッチのことを総称してキーボードという
電子オルガンの質問ならほかに行け!


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

>環境はWinME VC++6.0 MFC SDI
組あわせるキーの数とキーの種類を明確にしてください


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

通常「KEY_DOWN」というイベントが発生します
ここら辺のMSDNよく読んで見てはどうですか


返信引用
LPO
 LPO
(@LPO)
ゲスト
結合: 21年前
投稿: 14
Topic starter  

画像を移動させるのにOnKeyDownをつかって
右 VK_RIGHT
左 VK_LEFT
上 VK_UP
下 VK_DOWN
にしているのですが
カーソルの右上の同時押しをすれば画像が斜めにいくようにしたいのです。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

試してみてはいかがですか?


返信引用
LPO
 LPO
(@LPO)
ゲスト
結合: 21年前
投稿: 14
Topic starter  

上と右を同時に押すと
上か右しか行きません


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

GetKeyStateでキーの状態が調べられるので、
上が押された時に右が押されているか?
のように調べればよいでしょう。
(同時というのが「ほぼ同時刻にボタンを押す」ということでない場合)


返信引用
n
 n
(@n)
ゲスト
結合: 21年前
投稿: 90
 

こんなのはどうでしょか。CScrollViewで作ってみました。

class CMyView : public CScrollView {

bool m_keydown[4];
enum { UP=0, DOWN=1, LEFT=2, RIGHT=3 };
};

void CMyView::OnInitialUpdate()
{

for ( int i = 0; i < 4; ++i ) m_keydown[i]=false;
}

void CMyView::OnKeyDown(UINT nChar,UINT nRepCnt,UINT nFlags)
{
if ( VK_UP == nChar ) m_keydown[UP]=true;
else if ( VK_DOWN == nChar ) m_keydown[DOWN]=true;
else if ( VK_LEFT == nChar ) m_keydown[LEFT]=true;
else if ( VK_RIGHT == nChar ) m_keydown[RIGHT]=true;

const CPoint pos_ = GetScrollPosition();
const int n = 16;
CPoint pos = pos_;
if ( m_keydown[UP] && !m_keydown[DOWN] ) pos.y -= n;
if ( m_keydown[DOWN] && !m_keydown[UP] ) pos.y += n;
if ( m_keydown[LEFT] && !m_keydown[RIGHT] ) pos.x -= n;
if ( m_keydown[RIGHT] && !m_keydown[LEFT] ) pos.x += n;

if ( pos_ != pos ) ScrollToPosition( pos );
}

void CMyView::OnKeyUp(UINT nChar,UINT nRepCnt,UINT nFlags)
{
if ( VK_UP == nChar ) m_keydown[UP]=false;
else if ( VK_DOWN == nChar ) m_keydown[DOWN]=false;
else if ( VK_LEFT == nChar ) m_keydown[LEFT]=false;
else if ( VK_RIGHT == nChar ) m_keydown[RIGHT]=false;
}


返信引用
LPO
 LPO
(@LPO)
ゲスト
結合: 21年前
投稿: 14
Topic starter  

nさんのやり方できました ありがとうございます

画像を滑らかに移動したいのですが
今の状態では右を押していて次に右以外を押すと一瞬とまり押したキーの方向
に動くのですがなにかいいほうほうありますか


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

まずはどうしてそうなっているのか御自分で解析してみてください。
原因がわかっていて対処法がわからないのであれば、そう書きましょう。

また、原因の解析法がわからないのであれば、そう書きましょう。

基本的に原因解析も対策検討もあなた自身がやるべきことです。
どこまでやって、どこがわからないのか、
具体的に省略しないで各習慣を付けてください。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

がーん、誤字。

誤)
>具体的に省略しないで各習慣を付けてください。

正)
具体的に省略しないで書く習慣を付けてください。


返信引用
LPO
 LPO
(@LPO)
ゲスト
結合: 21年前
投稿: 14
Topic starter  

PATIOさん すいませんでしたm(_)m

SetTimerをつかい描画させることでスムーズにうごくようになりました
再描画させるたびに画像がちらつくのですが
いい方法はありませんか?


返信引用
n
 n
(@n)
ゲスト
結合: 21年前
投稿: 90
 

このラウンジを「ちらつき」で検索すると…


返信引用
固定ページ 1 / 3

返信する

投稿者名

投稿者メールアドレス

タイトル *

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