mcrblog

vcpp-ml

2001年02月

28

[vcpp 00051437] Re: TABキーで移動

神野です。

Wed, 28 Feb 2001 14:36:37 +0900 ごろに
<001b01c0a148$6b1d8d70$2...@pic.melco.co.jp> の
"[vcpp 00051428] [SDK]TABキーで移動" のメールで
杉山 正城 <m...@pic.melco.co.jp> さんは書きました。

> CreateWindow等で作成したオブジェクト間を
> TAB又は Shift+TABで移動したいのですが
> どのように実現すればよいのでしょうか?

「簡単に」なら、「メッセージループで IsDialogMessage() を呼ぶ」
でしょうか。不要な機能まで付いてきて、それを殺す必要が
あるかもしれませんが。

他の方法としては、TAB/Shift+TAB にアクセラレータでコマンドを
割り当て、次の/前のウィンドウへフォーカス移動するように
実装する、とか。

-- 
神野健吾 <k...@orange.co.jp>
28

[vcpp 00051436] Re: サムネイル表示

日峰さんの<N...@hitachi-ms.co.jp>から
>ACDSeeは知りません。
 http://www.acdjapan.com/
 ここですね。ためしにダウンロードして実行してみました。で、確かにリス
トビューを使っているようです。アイコンモードですね。

 ぱっとみた感じでは
Yusuke Saharaさんの<2...@core.co.jp>から
>リストコントロールとイメージリストを使うのでしょうか?
 だと思います。

-- 
電柱一家
mailto:d...@kazetotomonisari.nu
28

[vcpp 00051435] Re: char からintへのコンバートについて

妙木です。

>>>>> On Wed, 28 Feb 2001 14:21:00 +0900,
      "takata" == t...@ued.epson.co.jp (高田 照幸) wrote:

takata> 例えば、sizeof(int) = 4, sizeof(char) = 1 である場合、
takata> BigEndian のマシンと Little Endian のマシンで、
takata>  i = ( (temp[0] & 0xFF) << 24 ) | ( (temp[1] & 0xFF) << 16 ) |
takata>  ( (temp[2] & 0xFF) << 8 ) | ( temp[3] & 0xFF );
takata> という処理をしたときに得られる i の値は同じではないように思います。
takata> (ビット単位で見れば同じだと思うけど)

演算子 << のシフト動作は一種概念的なもので,常に最上位ビット方向にシフ
トが行なわれます。"<< 1" の場合,ビッグエンディアンなら数値が 1/2 になっ
てリトルエンディアンなら数値が 2 倍になるということではなく,環境によ
らず 2 倍になります。

したがって上記の式は以下の式と同じです。

    i =   (temp[0] & 0xFF) * 2^24
        + (temp[1] & 0xFF) * 2^16
        + (temp[2] & 0xFF) * 2^8
        + (temp[3] & 0xFF)

たとえば 4 バイト整数値をネットワーク経由でやり取りする場合,送信側/受
信側で「最上位バイトから 1 バイトずつ送信する」ことに決めておくと,受
信側がいずれのエンディアンであっても,受け取った各バイトから上記のよう
にして 4 バイト整数値を生成できます。

temp をデータとして扱うというのは,temp[0] を最上位バイトとして扱い 
temp[3] を最下位バイトとして扱うことに決めて,そのように運用するという
ことでしょう。

-- 
  妙木 裕 / Internet Technology Development Center, Canon Inc.
†mailto:m...@canon.co.jp
28

[vcpp 00051434] リストビューとチェックボックス

松崎と申します。いつもMLを参考にさせて頂いています。
VC++ + OpenGLでソフトの開発をしています。
リストビューの項目にチェックボックスを貼り付けたいのですが、
方法をご存知の方が居りましたら、教えてください。サンプルを
公開されている方がおりましたら、URLを教えてください。
宜しくお願いいたします。

**************松崎 智和  T.Matsuzaki*************
E-Mail : t...@cae.ijs.hitachi.co.jp
 ...@sbs-motovillage.com
 ***********************************************
28

[vcpp 00051433] Re: リッチエディットコントロールのマウス位置の行インデックス

こんにちは、sinです。
神野ありがとうございました。

> GetTextMetrics()で文字高さを求めて、
> それより下(縦書きなら右?)かどうかを判断するのは
> どうでしょうか?

こんな感じで出来ました。
--------------------------------------------------------------------
   case WM_MOUSEMOVE:
    POINT Pos;
    ::GetCursorPos(&Pos);
    // クライアント座標に変換
    ::ScreenToClient(hREdit, &Pos);

    int mIndex, gIndex, TextLen; 
    DWORD sp, pf;
    sp = ::SendMessage(hREdit, EM_CHARFROMPOS, 0, (LPARAM)&Pos);
    if(sp != -1) {
     CHARRANGE cr;
     mIndex = LOWORD(sp); 
     TextLen = strlen(TextRange); 
     pf = ::SendMessage(hREdit, EM_POSFROMCHAR, (WPARAM)TextLen, 0);
     gIndex = HIWORD(pf);

     TEXTMETRIC tm;
     memset(&tm, 0, sizeof(TEXTMETRIC));
     HDC reDC;
     reDC = ::GetDC(hREdit);
     ::GetTextMetrics(reDC, &tm);
     ::ReleaseDC(hREdit, reDC);
     gIndex += tm.tmHeight;
     if((mIndex >= TextLen) || (gIndex <= Pos.y)) {
      ::SetCursor(hDefaultCursor);
      return TRUE;
     }
                (以下略)
記事検索
Amazon.co.jp
  • ライブドアブログ