mcrblog

vcpp-ml

2003年06月

28

[vcpp 00060953] ツリービューのアイテム名の編集について

たけしです。

ツリービューのアイテム名を編集できるように、OnCreateのときに、
スタイルにTVS_EDITLABELSを指定しました。

しかし右クリックでポップアップメニューを呼び出して、名前変更
メニューを選択した時だけ、アイテム名を編集したいのに、単に左
クリックしただけでも、編集可能な状態になってしまいます。

恐らくメニューを呼び出す時にスタイルをTVS_EDITLABELSに設定し
て、OnEndlabeleditで今度はそのスタイルを削除すればいいのだと
思いますが、どうすればいいのかわかりません。

他にも一般的に実現できる方法があれば、アドバイスお願いします。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
大西武
http://www.cyberdelia.net/
mailto:t...@cyberdelia.net
27

[vcpp 00060952] FormatMessage 関数について

はじめまして、本日参加させて頂いたみるくと申します。
他MLで質問したところ、このMLをご紹介いただき
入会させていただきました。
つい数日前に初めてC++を修正することになってしまった
にわかC++使いですが、よろしくお願い致します。

C++(4.0)にてイベントビューアのイベントログを取得するとい

プログラムを修正しているのですが、FormatMessage関数で
つまづいてしまいました。

プログラムの内容は以下の通りです。

・イベントログのオープン
・RegOpenKeyExで、取得するイベント種類のレジストリをオー
プン
(HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services_
  \\Eventlog\\Application|Security|System\\xxxxxx)
・RegQueryValueExで、上記のレジストリ内の"EventMessageFile"
の値(dllファイル名)を取得
・上記dllファイルをLoadLibraryExでロードする
・FormatMessage関数で、イベントIDをキーにイベントログメ
ッセージを取得する

ここで、一部のイベントについてメッセージを取得できないケ
ースが
発生しました。
GetLastErrorで戻り値を調べると、「317」(メッセージ番号の
メッセージが
メッセージファイルに見つからない)エラーでした。
イベントIDに対応するメッセージが見つからないという意味な
のでしょうが、
この場合メッセージは取得できないのでしょうか。。。

文章にわかりにくい点等ありましたら申し訳ありません。
もし同じようなケースに遭遇したことがありましたら、お知恵
をお借りしたく、
お願いいたします。m(__)m


__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!
http://bb.yahoo.co.jp/
27

[vcpp 00060951] MDIのデフォルトのタイトル番号の管理方法

はじめまして。まっつです。

今、MDIでツールを作っているんですが子ウィンドウのタイトルのに
無題1、無題2…というふうに番号が追加されますよね?

無題1を保存せずに終了したら、また無題1が出てくるようにして、また、
既にカレントフォルダに無題1が存在している場合には無題2が出てくる
ようにしたいです。

このタイトル番号を自分で管理できるようにしたいんですがどこを変更すればいいか
わかりません。

どなたかご教授ください。宜しくお願い致します。
25

[vcpp 00060950] Re:TCPサーバーを停止させるには?

こんにちは、とびびんです。
甕星さん、前田さん、kaidaさん、ご回答ありがとうございました。

select については recv の前に使っていたんですが listen しているソケット
にも使えるんですね。気付きませんでした。

  while( flag ) {
    fd_set fds ;
    FD_ZERO( &fds ) ;
    FD_SET( socket , &fds ) ; 
    timeval waittime ;
    waittime.tv_sec  = 1 ;
    waittime.tv_usec = 0 ;
    int rc = select( FD_SETSIZE , &fds , NULL , NULL , &waittime );
    if( rc == SOCKET_ERROR ) { 
      // エラー
      break ;
    } else 
    if( rc == 0 ) {
      // タイムアウト
      continue ;
    }
    accept( socket , ... ) ;
  }

といったコードで終了可能なスレッドになりました。

closesocket をした場合は accept が WSAEINTR でブロッキング状態から抜けて
きました。ヘルプを見ると WSACancelBlockingCall と同様のメッセージのよう
です。

とりあえずお手軽な closesocket を使い、エラー等が問題になるようであれば 
select に切り換えようと思います。
ありがとうございました。



---
とびびん (...@mx1.freemail.ne.jp)
25

[vcpp 00060949] Re: MSDNを別PC上に。

戸田です

> 内藤と申します。
> MSDNをメインのPC上に置くDISK容量がなくなったため、別のPC上にMSDN
> を置こうとしているのですが、上手くいきません。
> HH.exeにcolファイルのパスを引数に渡しています。
> このような使い方をされている方はいるかと思いますが、どのように設定
> されていますでしょうか?
> よろしくお願い致します。

やりかたとしては、MSDNのCDの内容を丸ごと別HDDにコピーして
適当にネットワークドライブを設定して
そこからMSDNを使うPCにMSDNをインストールすると実現できますよ。

それでは。
記事検索
Amazon.co.jp
  • ライブドアブログ