トップページ⇒tech
1001コメント306KB

VisualC++相談室 【7】

■ このスレッドは過去ログ倉庫に格納されています
0001いさましいチビの女の子NGNG
VisualC++関連の話題を扱うスレッドです。

前スレッド
http://pc.2ch.net/test/read.cgi/tech/1011615035/l50
0002943NGNG
2ゲッチュ
0003デフォルトの名無しさんNGNG
3だっつーの!!(怒)
0004デフォルトの名無しさんNGNG
>>1
女の子かー。
0005デフォルトの名無しさんNGNG
んなわけない。
0006アルメイダNGNG
すみません、以前リストボックスの色のつけ方を質問した者ですが
色はつけることが出来たのですが、リストボックス内全部が同じ
色になってしまいます。
リストボクスッが複数項目ある場合、その項目毎に色を変えることは
出来ないのでしょうか

お忙しいところ申し訳ありませんが
教えていただけるようお願い致します。
0007デフォルトの名無しさんNGNG
VCのシステムって根本的にどうゆうことなの?
C++やってるが全然わからん。
0008デフォルトの名無しさんNGNG
小人が入ってるらしい
0009デフォルトの名無しさんNGNG
>>6
前スレの919
0010デフォルトの名無しさんNGNG
>>7
C++ + MFC + IDE用コード。
0011デフォルトの名無しさんNGNG
STL.hって何入れれば使えるようになりますか?
0012デフォルトの名無しさんNGNG
「エクスプローラでファイルを右クリックしたときに表示されるポップアップメニュー」
と同じものをプログラム的に表示するにはどうしたらよいのでしょうか?
やさしい有識者のお方、ご助言よろしくお願いいたします。
0013デフォルトの名無しさんNGNG
>>1御付かれみたまちゃん
0014デフォルトの名無しさんNGNG
>>12
http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/programmersguide/shell_int/shell_int.asp
あたりを読むとか。MSDN LibraryやPlatform SDKにもサンプルがあった気が。
日本語解説があるかどうかは知りません。
0015デフォルトの名無しさんNGNG
マウスの中ボタンと左ボタンを入替えるプログラムを作りたいのですが
とりあえず中ボタンをフックで捕まえることが出来るのですがその後に
左ボタンが押された用に見せる処理がうまくいきません。

どのようにすれば良いか教えてほしいYO!
0016デフォルトの名無しさんNGNG
>15
捕まえられたんなら、
そこで左クリックのメッセージを投げとけば?
0017デフォルトの名無しさんNGNG
CM_Get〜の関数を使って、あるデバイスが現在ドコに繋がっているか(※)を
調べるには如何すれば良いんでしょうか?

※ノートパソなんかで、SCSIカードがPCMCIAに繋がっているとか...
0018デフォルトの名無しさんNGNG
誰かPostgreSQLをWin32でコンパイルして配布してください。
0019デフォルトの名無しさんNGNG
   _____
 /::\_____\   
 |: ̄\∩`_´) \ 
 |:   :| ̄ ̄U ̄:|
0020デフォルトの名無しさんNGNG
MFCで、毎フレームある作業をさせたいときはどうすれば?
0021デフォルトの名無しさんNGNG
>>20
毎フレーム
0022デフォルトの名無しさんNGNG
OnIdle
0023デフォルトの名無しさんNGNG
ときどき出てくるVC7ってVC6の次バージョンのこと?
それともVS.NETに入ってる偽VC++のこと?
0024デフォルトの名無しさんNGNG
前者と後者はどう違うんだ
002515NGNG
>16
WH_MOUSE_LLでWM_MBUTTONXXをフックしてWM_LBUTTONXXをPostMessage
してみてもうまくいかないYO! このやり方じゃダメですかね?
0026Disca ◆NAfP6znE NGNG
VisualCでMySQLを動かしたいのですが、どのようにしてプログラムすれば良いのでしょうか…。
0027デフォルトの名無しさんNGNG
>>26
このへんとか
ttp://www.mysql.gr.jp/jpdoc/3.22/manual.ja_ODBC.html
0028Disca ◆NAfP6znE NGNG
>>26
ありがとう、参考になりました。
0029デフォルトの名無しさんNGNG
.netが発売されてから、あまり伸びてないね。
新しい人は、C#に関心があるのかな?
0030デフォルトの名無しさんNGNG
souka?
003123NGNG
>>24
VC6の次バージョン: ネイティブコードを作る。
偽VC: VC#.net, VB.netなどと同様の中間コードを作る(.netのない環境では動かない)

という意味です。
で、VC7はどっちなんでしょ?
0032デフォルトの名無しさんNGNG
>>31
VisualSstudio .NETだろ?
ネイティブコードも作れるし、CLI版も作れる。
0033デフォルトの名無しさんNGNG
>>15
ごめん。嘘ついてた。コレだと抜けが多すぎる...

>>25
システムフックのDLLを作ってそこで置き換える。
完璧なのを作りたいのなら、
マウスドライバに被せるような、フィルタドライバを作る。
0034デフォルトの名無しさんNGNG
CM_Get_DevNode_Registry_Propertyって関数の第2引数に指定する#defineで
"CM_DRP_CAPABILITIES"の意味は何なんでしょうか?
知ってる方回答よろしく。m(_ _)m
0035デフォルトの名無しさんNGNG
Excel2000 のオブジェクトを VC++6.0 で使いたいんですけど、どうしたらいいのでしょう?
Excel97 のサンプルは見つけたのですが、それを 2000 で使おうとすると、
excel9.tlh 内で
「error C2501: '_CommandBarsPtr' : 識別名を宣言するのに、型が指定されていません。」
等のエラーが出てしまいます。

ご存知の方、ご回答よろしくお願いします。
0036デフォルトの名無しさんNGNG
VisualC++6.0 スタンダードエディション+DirectXでプログラムを作った
時はある程度安定してたけどVisualC++6.0エンタープライスにしたら
ビルドしたアプリがフリーズすることが多くなったんですけど自分だけ?
0037デフォルトの名無しさんNGNG
>>36
アンタのコードにもともとバグがあったんだよ。
スタンダードエディションでは最適化をしないから、
今まで発覚しなかっただけ。
0038デフォルトの名無しさんNGNG
VC6.0でつくったアプリには、
プロパティのバージョン情報以外に、
プロダクトIDのようなものが、
埋め込んであるんですか?
0039デフォルトの名無しさんNGNG
>>36
サービスパックを最新のを当ててる?
0040デフォルトの名無しさんNGNG
vc6エンタープライズとvc6.netどっちがよいのですか?
0041デフォルトの名無しさんNGNG
>>40
vc"6".netにしる!
0042デフォルトの名無しさんNGNG
自分のアプリを友人のマシンでテストプレイさせたら

Runtime Error!

って出てきます。自分のマシンではおきません。これって、
DLLが足りないとかが原因でおきるんですか?

だとしたら、どのDLLが必要なのかを簡単に調べる方法って
ありませんか?(使ってるAPIやらを全部洗い出してMSDN
ライブラリで調べろってのは勘弁してください)
004342NGNG
ごめん。ageさせて。
0044デフォルトの名無しさんNGNG
>>42
> どのDLLが必要なのかを簡単に調べる方法
Dependecy Walker 辺りを使うとよろし。
004542NGNG
>>44
ありがとうございましたー。

フル英語なのがちょいムカつく(しかも、日本語pathは大文字変換のせいでバグありだ)けど、
これのおかげで何とかなりそうな予感です。
004615NGNG
>33
レスありがとう。
う〜ん、簡単に出来そうと思ったんだけどなかなか難しそうだな。
004723NGNG
>>32
ネイティブコードもつくれるとは知らんかったです。
ありがとございます。

じゃあ、ここで聞くことじゃないかもしれないけど、VC#.netもネイティブコード
吐いてくれるのかな?
0048デフォルトの名無しさんNGNG
シェルエクステンションでエクスプローラにツールバーを加えたん
ですけども、そのうえのボタンを押したときに選択しているファイ
ルを取得する方法を教えてください。
0049デフォルトの名無しさんNGNG
エクスプローラのあれは、
ListViewやないの?
0050デフォルトの名無しさんNGNG
エクスプローラのListViewを取得することができるのかな?
もしくはメッセージをおくるとかですか?
0051初心者NGNG
基本的な質問なんですが、
VC6で、C++の教本に載ってる、プログラムを
普通に入力して実行するにはどのように
したらよろしいんでしょうか?
0052デフォルトの名無しさんNGNG
>>51
・・・VC6の教本も買った方がいいと思うよ。マジで。
0053デフォルトの名無しさんNGNG
>>51
VC6を立ち上げなさい。
ファイル、新規作成、プロジェクト選択、ファイル、新規作成、
ソースファイル(cpp)で後はコードを打て。
0054デフォルトの名無しさんNGNG
>>51
VC6.0のエディタにコードを入力してビルド->実行じゃだめなの?
C++の教本に載っているようなものならコマンドラインからclを使った方がいいけど。
0055デフォルトの名無しさんNGNG
VC6 を使っています。
自作クラスへのポインタの std::list を iterator を使って for でループしようとすると

SourceFile.cpp(121) : error C2678:
二項演算子 '<' : 型
'class std::list<class NAMESPACE::CLASSNAME *,class std::allocator<class NAMESPACE::CLASSNAME *> >::iterator'
の左オペランドを扱う演算子は定義されていません。
(または変換できません)(新しい動作; ヘルプを参照)

というエラーが出てしまいます。まったく意味不明なのですが、
どういう意味でしょうか?
0056デフォルトの名無しさんNGNG
std::list::itarator を扱う operator < は定義されてないから
そんなもん使うんじゃねぇ!という意味でしょう。
0057デフォルトの名無しさんNGNG
STLのiteratorの巡回終了条件には、!= を使うのが常道で、
i < list.end();みたいなコードは書けない場合もある。
005855NGNG
>>56
それっぽいエラーが出たので対象クラス用の比較演算子群を定義したら
そのエラーは消えました。
ともあれ、ご返答いただきましてありがとうございました。

>>57
なるほど…ズバリこれでした。
iterator を使ってないコードからコピペしたので全然気づきませんでした。
ありがとうございました!!
0059デフォルトの名無しさんNGNG
アルゴリズム使えよ
0060デフォルトの名無しさんNGNG
ポインタのリストだからな…
全てのポインタが必ずi < list.end();のアドレスにあるとは限らん。
0061デフォルトの名無しさんNGNG
>39
>サービスパックを最新のを当ててる?
サービスパックって複数枚あるんですけど、どれでしょうか?
0062デフォルトの名無しさんNGNG
>>59
transform?
0063初心者NGNG
CWnd::OnKillFocus は入力フォーカスを失う直前に呼び出されるみたいですが、
フォーカスを失った直後に処理をしたい場合はどうしたらいいでしょうか?
0064デフォルトの名無しさんNGNG
教えて君で申し訳ありませんが。
今、VC++でプログラムを自作し、移動ステージを動かさねばなりません。
しかし付属のマニュアルにはコントローラのパネル操作でのステージ移動
についてしか書いてなく困っているしだいです。
PCにコントローラを繋いで、そのコントローラに直接コマンドを
送る方法について教えてください。
おそらくこんな書き方では伝わりにくいと思うのですが・・・。
よろしくです。
0065リアル厨房 NGNG
nが真のとき偽を返し、nが偽の時真を返すファンクションが欲しいのですけれど、
どのように書けばスマートに行けるのでしょうか?

こんなのは不味いですよね。
御教示頂けたら幸いです。

bool Classname::funcname(n) const{
  if(n){
    return (false);
  }else{
    return (true);
  }
0066デフォルトの名無しさんNGNG
return !n;
0067リアル厨房 NGNG
>>66
それも試したのですが動かなくてお伺いした所存です。
他に間違いがあると思いますので、もう少し試して見ます。有難う御座いました。
0068リアル厨房 NGNG
関数を呼び出す時の()を付け忘れておりました。
どうもお騒がせ致しました。
0069Disca ◆NAfP6znE NGNG
return (n ? false : true);
0070デフォルトの名無しさんNGNG
return !!!n;
0071デフォルトの名無しさんNGNG
operator !()しか定義されてなくて、
if( !!obj )
{...}
とやる罠
0072デフォルトの名無しさんNGNG
一番基本的で他言語からも呼び出せるDLLが作りたいのですが
なんだかいろいろな方法があって困っています。
一番正当な方法がしりたいのですが、HPなどあったら教えてください。
0073デフォルトの名無しさんNGNG
VCは、買ってみて、幻滅した。
結局コンパイラとデバッカしかつかっとらん。
俺はウィンドーズだけじゃなく、リナックスのアプリケーションも
作りてーんだぁーーーーー(切)
マイクロソフト マンセーー
0074デフォルトの名無しさんNGNG
>73
すまない。その高度なボケにうまく突っ込む技術はオレには無い。
0075デフォルトの名無しさんNGNG
単にマンセーの意味を間違ってるだけだと思われ
0076デフォルトの名無しさんNGNG
                 /)
             、2)Y⌒  ⌒フ   +
           ッ-i'´       ⌒フ
           (´ ,.-゙ー-、     ろ、
        * シ彡ノ"ミVv    )
      *    ノノノノ"ヽヽヽミ   シ  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
.          ,l')∩  ∩ |)|ヾ ミ  < DoLoveLove?
           ,○)、 ▽  ノjl| YY゙    \________
           {_∃ `l____/⌒'i|
            ̄ Yl"゙⌒lY |  +
              ,ト|__/ハ i、
           ,iニiニiニユ ゙h,,)
           ノtYTYヾ\
          /''フ''''ー<"ヽ、
           /__ノ     \ノヽ、
          (__)     ゞ__)

0077デフォルトの名無しさんNGNG
普通にMSDNLibraryを起動するとタスクマネージャにhh.exeってのが表示されますよね?
でも、VC++から起動すると表示されません。
これは、どういう風に起動しているのでしょうか?
007872NGNG
わかりました。
0079デフォルトの名無しさんNGNG
ショートカットのプロパティをみれ。
0080デフォルトの名無しさんNGNG
ヲい!モ前ら!
プロジェクトファイルが提供されてない、メイクファイルしかない、
プロジェクトをVCで開くとき、どんな方法を使ってますか?
0081デフォルトの名無しさんNGNG
>>77 COMのinprocess serverだろ。
VCから起動すると、たまにヘルプのキー入力を奪い取ったり(CTL+Fとか)かなり不便。
0082デフォルトの名無しさんNGNG
std::negateで駄目な理由がおもいつかん。
0083デフォルトの名無しさんNGNG
>15
いまさらだけどこんな発見。
コレ → SwapMouseButton
気づいてたらスマン。
0084デフォルトの名無しさんNGNG
電源投入時の時間が知りたいんですけど、何かAPI知りませんか?
(電源投入時 → OSが起動した時間です。)
「起動してからの時間を取って、現在の時間から逆算」ってのは無しの方向で...
ご存知の方、よろしくお願いしますm(_ _)m
0085デフォルトの名無しさんNGNG
>>84
RDTSC
電源投入時からっつーのは難しい。
0086デフォルトの名無しさんNGNG
>>84
Winが起動してからならGetTickCount
そしてスレ違い
0087デフォルトの名無しさんNGNG
HBITMAPってなんですか?
メモリー上にビットマップのデータがあってそれへのポインタですか?
008884NGNG
レスどうも。>>85 >>86
質問の仕方の書き方を間違った...ついでに板も。←Win32APIのトコか?
A→Bなんて書き方をしちゃあイケナかったね。
システムが起動した(出来れば電源投入時)時間を取得したかったんですよ。
やっぱり経過時間から逆算するしかないのか・・・
0089デフォルトの名無しさんNGNG
>>72
今ならCOM。将来は.NET。
かな?
0090デフォルトの名無しさんNGNG
環境変数をVC使ってプログラムで登録するのはどうすれば良いですか?
0091デフォルトの名無しさんNGNG
>>90
プロセス環境の環境変数の取得/設定なら、
Get/SetEnvironmentVariableです。
が、Windows全体の環境変数を設定する方法はわからないです。
0092デフォルトの名無しさんNGNG
レスありがとうございます。>>91
質問悪くてすみません。
おっしゃられている通り、全体の環境変数なんですよ・・・
0093デフォルトの名無しさんNGNG
FILE構造体を引数にもつ関数をもったDLLを作成し、
いざ実行プログラムでstderrを引数にして呼び出したら
DLLの関数内のfprintfで落ちるんだけど、なぜなんでしょう?
0094デフォルトの名無しさんNGNG
OnDraw()で描画後、画面に表示されません。
Invalidate()とかしても表示されません。もしくはOnDraw()のループになります。
どうすればいいですか?
0095デフォルトの名無しさんNGNG
Invalidateはクライアント全体を更新領域に追加する関数。
その後OnDraw(WM_PAINT)を呼び出して、無効領域の描画を行う。
OnDraw内でInvalidateをすると無限ループに陥る可能性がある
009694NGNG
かわりの関数おしえてくださいです。。
0097デフォルトの名無しさんNGNG
きっちりメッセージループを回しているなら、
好きなタイミングでInvalidateすれば次、もしくはさらに後のループで描画されるはず。
メッセージループを回していないなら、Invalidate後にUpdateWindowしろ。
009894NGNG
もしかしてOnDrawで表示されないのはまだドキュメントが作成されてないからかな
と思い、新規作成を選んだら表示されました。

これを最初から行うにはどうすればいいのでしょう?

つまりOnCreate()とかそんなハンドラで、
それを呼び出す時点でViewは完成していて、OnDraw()が動いてくれる、そんなような関数ありますか?
0099デフォルトの名無しさんNGNG
はじめから無題が開いているだろ。
もしかしてMDIか?
きっちり状況を説明しろよ
010094NGNG
SDIです。
実行した時点ではなにも表示されません。
この状態で
・他のウインドの下に隠してから、もう一度アクティブにしてあげると表示される
・新規作成を選ぶと即座に表示される。

です。よろしくお願いします
010177NGNG
>>79
そうじゃなくて、VC++の側からのような起動はどういう風にしているのか知りたいんです。
■ このスレッドは過去ログ倉庫に格納されています