★初心者にVisual C++を教えるスレ★ Part5
■ このスレッドは過去ログ倉庫に格納されています
0001987
NGNGVisual C++ 初心者用スレッドです。
前スレ・関連スレは、>>2 ぐらい。
0445デフォルトの名無しさん
NGNG返事遅くなりましたが、どうもありがとうございました。
クリーンインストールするんで、レジストリでもなんでも 強気でいじれるので、
いろいろいじってみたいと思います。
どうも ありがとございました。
0446443
NGNGどうも
'型キャスト' : ポインタを 'LPVOID' から 'DWORD' へ切り詰めます。
ってエラーです。
sizeof で LPVOID と DWORD を調べても、両方4byteで問題ないはずなんですよね。
むしろ問題であるはずのBYTE と WORD のキャストには無警告なんですよ。
おそらくVC7だと64bitアドレスもサポートしてるんで、その性だとおもうんですが、
だとしたら、なんでBYTEとWORDへのキャストには無警告なんでしょうね・・・
0447あ
NGNGいいからソースを見せなさい。
0448443
NGNGUINT型とDWORD型のみへの警告は恐らく、旧来の手法に対する警告ってことでしょうね。
#include <windows.h>
#include <stdio.h>
void main( )
{
DWORD d; UINTui; WORD w;BYTE b;LPVOID p;
p = &d; d = (DWORD) p; ui = (UINT) p; w = (WORD) p; b = (BYTE) p;
printf( "LPVOID = %d\n", sizeof( LPVOID ) );
printf( "DWORD = %d\n", sizeof( DWORD ) );
printf( "UINT = %d\n", sizeof( UINT ) );
printf( "WORD = %d\n", sizeof( WORD ) );
printf( "BYTE = %d\n", sizeof( BYTE ) );
}
結果:LPVOID = 4,DWORD = 4,UINT = 4,WORD = 2,BYTE 1
warning C4311: '型キャスト' : ポインタを 'LPVOID' から 'DWORD' へ切り詰めます。
d = (DWORD) p;
warning C4311: '型キャスト' : ポインタを 'LPVOID' から 'UINT' へ切り詰めます。
ui = (UINT) p;
0450デフォルトの名無しさん
NGNGあらかじめ設定した文字列から
イベント取得時に変更したいのですが
どうやればいいんでしょうか?
0451デフォルトの名無しさん
NGNG0452あ
NGNG了解。
0453bloom
NGNG0454デフォルトの名無しさん
NGNGc++の決まりですか?VCの決まりですか?
template < typename T = void > class hoge 〜
template < typename T > class hoge 〜
にたいして
hoge < void > foo;は可能な様です。
0455山崎渉
NGNG0456デフォルトの名無しさん
NGNG0457454
NGNGエラーメッセージ↓
error C2182: '__formal' : 'void' 型を使って宣言されました。
0458デフォルトの名無しさん
NGNG仕方ないのでintにしてる
void *はできるかな? やってないけど
0459454
NGNGレスどうもです。
その他この他いろんな疑問(VCの不具合?)がでてきたので自分で調べる環境を整えます。
CGI作って遊んだっきりのcygwinが役に立ちそうです・・・
とりあえず立ち上げて・・・即exit。全く使い方覚えていない・・・
0460デフォルトの名無しさん
NGNG0461デフォルトの名無しさん
NGNGそんなコード作る意義あるんですかね。
0462454
NGNGテンプレートについてはかなり不充分らしいです。(特にVC6)
実際ちょっとした実験コードを書いたらすぐに壁にぶち当たりました。
んで,なれないg++で実験してみました。
メンバ関数テンプレートで
class Foo {
template <typename T> void bar(){...}
}
Foo foo;
foo.bar<hoge>();
において「<hoge>が不用です」なんて言われるのです。
g++だとOKでした。
引数でとる場合はOKなんですけどね。
class Foo {
template <typename T> void bar( T& t ){...}
}
Foo foo;
foo.bar<hoge>();
int i;
foo.bar(i)
でも自分が間違っている気がします。
0463454
NGNGModern C++ Design の第11章マルチメソッドに一つの例があります。
てゆうかこれを実験してみたかっただけなんですが。
LokiPortVC6版がホスィ。
0464デフォルトの名無しさん
NGNGつべこべ言わずにVisualStudio .NET 2003を待て。もうすぐ発売だ。
ANSI準拠度がかなり上がっているぞ。
0465デフォルトの名無しさん
NGNG0466デフォルトの名無しさん
NGNGBmInfoHed.biPlanes=1;
BmInfoHed.biBitCount=24;
for(a=0;a<16*16;a++)
{
r=rand()%64;
lpBMP[a*3]=r/16*85;
lpBMP[a*3+1]=r/4%4*85;
lpBMP[a*3+2]=r%4*85;
}
色のバイトの所を8にするとうまく色が表示されないのですが(6で足りるはずなのに)、
どうすればよいのでしょう。
0467デフォルトの名無しさん
NGNG色のバイトのところってなんじゃい。
ビットマップの構造として幅が8*nドットになるようにダミーデータが入るのと関係あるのだろうか
0468466
NGNG色のバイトの所とはBmInfoHed.biBitCount=24の所です。
再び調べてみた所、24(フルカラー)以外の場合は予め色を登録しておかなければ
ならないようです。初心者なので、質問もうまくできませんでしたが、
お答えありがとうございました。もう少し勉強してきます。
0469フルタワーが机の下に入らん
NGNGこれは x86系の CPU が 4 の倍数を計算するときだけ微妙に速くなるからです。
0470デフォルトの名無しさん
NGNGなんか大嘘をぶっこいている奴がいるんだがどうしよう
メモリのバス幅の問題とアーキテクチャの問題の近藤君がいるよ
0471デフォルトの名無しさん
NGNG0472デフォルトの名無しさん
NGNGたとえば 8 ビットカラーの場合、BITMAPINFO hoge; じゃあなくて、
LPBITMAPINFO bi = new BYTE[sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD)*256];
てな感じで clut の分も確保して、bi->bmiColors[0...255] にそれぞれの色を入れて、
bi->bmiHeader.biClrUsed = 256; とかする。
0473あ
NGNGヘルプを見る。
ちゃんと全部かいてある。
その 6ではいけない理由もな。
0474デフォルトの名無しさん
NGNGlpBMP[a*3]=r/16*85;
lpBMP[a*3+1]=r/4%4*85;
lpBMP[a*3+2]=r%4*85;
の部分
p = lpBMP;
...
*p++ =r/16*85;
*p++ =r/4%4*85;
*p++ =r%4*85;
みたいにするほうがいいよ
こっちの方が速いはず
0475デフォルトの名無しさん
NGNG0476デフォルトの名無しさん
NGNGVisualStudio6.0をセットアップする時にもWindowsNT Symbol Setup が
どうのこうのというメッセージが出ますが、これをするとどうなるのですか、
しないとどうなるのですか?
OSはWindows2000です。私はVBしか使った事がなくて、これからVCをやってみようかと
思っているのですが・・・
0477デフォルトの名無しさん
NGNGhttp://www.borland.co.jp/delphi/personal/
0478デフォルトの名無しさん
NGNGVisualC++でデバッグをするときにちょっと便利になる。
ディスク容量に余裕があるならセットアップしとけ。
…でも使ってるOSに対する正しいシンボル情報は
別途入手する必要があるかも。
まあ分からなかったら今はまだ気にしなくていい。
0479デフォルトの名無しさん
NGNGWin98/NTではすべてのスレッドが、それぞれのメッセージキューを持つ
らしいのですが、作成したスレッドにメッセージを送るにはどうしたら
いいんですか?
DWORD WINAPI ThreadFunc (LPVOID Param);
↑この関数内部で GetMessage すると、このスレッドのメッセージキューから
メッセージをGetできるってことですよね?
int WINAPI WinMain ();
の場合は hInstance を使って CreateWindow() したウインドウに対して
メッセージを送ることで、WinMain のメッセージキューに送られるみたい
ですが。
またWinMainじゃない、作成したスレッドでCreateWindow する場合は
WinMain の hInstance を使えばいいのでしょうか?
0480あ
NGNGそんなあなたに WaitForSingleObject
いまなら CreateEvent が、もれなくついてきます。
0481デフォルトの名無しさん
NGNGPostThreadMessage()で送ってGetMessage()かPeekMessage()で受け取る。
この時に気を付けなければならないのは送信先スレッドにメッセージキューが
無いとPostThreadMessage()は失敗する。
CreateMessageQueue()みたいな関数は存在しないので注意。
詳しくはヘルプ参照。
別スレッドでも基本的にWinMainのhInstanceを使用する。
0482デフォルトの名無しさん
NGNGPostThreadMessage なんてのがあるんですね。
メッセージキューってすべてのスレッドで自動的に
作られるんじゃないんですか?
>>480
どうもです。こっちはペゾルドにも書いてありますた。
0483あ
NGNGそれは失礼しますた。
ちょっと強引だが、
Windowsでは、プロセスに自動的にメッセージが「送られて」くるが
それを 「受け取る」&「中身を見る」のは、プログラマの仕事です。
あくまでイメージね。
0484デフォルトの名無しさん
NGNGメッセージキューは自動的に作成されるが、
スレッドを生成したら自動的にメッセージキューが作成されるわけではないので注意。
ヘルプとか見ると受け取りスレッド側でAPI関数を呼べば自動的に作成されるようだが、
全てのAPI関数がそうなのかはよくわからん(藁)
一番確実なのは受け取りスレッド側でPeekMessage()を呼べはメッセージキューが作成される。
0485デフォルトの名無しさん
NGNG見えないウィンドウを作ってそのウィンドウにPostMessage
する方が紛れがない。
思わぬAPIがスレッドのメインウィンドウの存在を前提に
してたりする、んじゃなかったかな。
0486デフォルトの名無しさん
NGNGなるほど。つまりメッセージでコントロールするなら、
わざわざ新規スレッドで作る必要は無いってこと
なのかな。
それとも新スレ作ってもhInstanceで何かのウインドウを
作るべきってこと?
0487デフォルトの名無しさん
NGNGあ、すんません。理解しました。
ウインドウ作ると SendMessageが使えるってことですね。
0488デフォルトの名無しさん
NGNGVisual Studio 6.0はあるんですが、Visual Studio NETって買う必要ありますか?
0489デフォルトの名無しさん
NGNG0490488
NGNGVisualStudio.NET2003は買ったほうがいいということでしょうか。
0491デフォルトの名無しさん
NGNG現状と予算と目的次第。
0492デフォルトの名無しさん
NGNG0493デフォルトの名無しさん
NGNG0494485
NGNG新規スレッドの先頭でCreateWindowするってこと。
まあ面倒だし、PostThreadMessageってのは
そういう面倒なことをなくすためのAPIじゃないのかって
話もあるだろうけどね。
待てよ。そこまで気にするならイベントオブジェクトを
使って自前でキューを実装した方がいいかも。
うん、そうだ。その方がいい。
0495デフォルトの名無しさん
NGNGプログラムを組みたいのですが、この場合グローバルフック使ってメッセージを
監視するのでいいのでしょうか?
他にもっと簡単な方法はありますか? 諸先輩方、アドバイスお願いします。
0496山崎渉
NGNG( ^^ )< ぬるぽ(^^)
0497山崎渉
NGNG( ^^ )< ぬるぽ(^^)
0498デフォルトの名無しさん
NGNGm=objFolder.SubFolders.Count
としたとき、mにはフォルダの個数がはいるのですが、
m=objFolder.SubFolders
ならmにはなにがはいるんでしょう?
0500デフォルトの名無しさん
NGNGちゃんとした参考書を1冊こなせば、
そういう質問はでてこないはず。
0501デフォルトの名無しさん
NGNGプロフェショナルしか売ってなかった・・・・・(しかも一店だけ)。ヽ(`Д´)ノウワァァァァン
早く.NETが使える環境になりてぇ・・・(;_;)
0502デフォルトの名無しさん
NGNG0503デフォルトの名無しさん
NGNG0504デフォルトの名無しさん
NGNG0505デフォルトの名無しさん
NGNG0506.
NGNGまずは何でも良いからフォルダを開きます。
アドレスバーにはデスクトップ、マイコンピュータ、3.5インチFD、、、
と続いていますが、ここでデスクトップを選びます。
このデスクトップをプログラムで開く方法を教えて下さい。
ちなみに
C:\Documents and Settings\administrator\デスクトップ
などではありません。
環境:Win2000Pro、VisualC++6.0
0507デフォルトの名無しさん
NGNG>と続いていますが
続いていません
〜終了〜
0508デフォルトの名無しさん
NGNG言わんとすることがよく分からん。
0510デフォルトの名無しさん
NGNG>何でも良いから
とりあえずここから修正しろ
0511デフォルトの名無しさん
NGNG0512C言語GW宿題
NGNGユーザーに大人の人数と子供の人数を入力してもらい、
大人は一人1000円、子供は300円で合計を算出し、結果を表示する。
0513デフォルトの名無しさん
NGNG"start C:\Documents and Settings\administrator\デスクトップ "
とかそういうのじゃないだろうなあ。
厨房様は何が言いたいのかさっぱりわからん。
0514デフォルトの名無しさん
NGNG氏ね
C/C++の宿題やらせてください。おながいします
http://pc2.2ch.net/test/read.cgi/tech/1045074808/l50
0515デフォルトの名無しさん
NGNG優しいな(・∀・)
0516デフォルトの名無しさん
NGNGttp://www.hidecnet.ne.jp/~sinzan/tips/win/win_tip24.htm
0517デフォルトの名無しさん
NGNGデバッグ情報で識別子が 255 文字に切り捨てられました。
というwarningがいくつもでて煩わしく思ってます。
このwarningだけ表示させないようにすることはできないでしょうか?
0518デフォルトの名無しさん
NGNG0519デフォルトの名無しさん
NGNG#ifdef NDEBUG
#undef _STLP_DEBUG
#undef _STLP_DEBUG_ALLOC
#else
#pragma warning(disable:4786)
#define _STLP_DEBUG 1
#define _STLP_DEBUG_ALLOC 1 //or #undef
#endif
0520デフォルトの名無しさん
NGNG0521デフォルトの名無しさん
NGNGどんな識別子使ってるんだ?
0522デフォルトの名無しさん
NGNGあほ発見
0523デフォルトの名無しさん
NGNGSTLがソースの中で使ってるんだよ。
0524デフォルトの名無しさん
NGNG>>518 >>521
0525デフォルトの名無しさん
NGNG0527デフォルトの名無しさん
NGNGリリースモードではでないけど
519のコード埋めればいいんだね?
STLPortは知らんかった
ちょっと調べてみようかな
0528デフォルトの名無しさん
NGNG何がいけないのやら・・・
0529デフォルトの名無しさん
NGNGstdafx.hの上の方に入れてみろ。
#pragma warning(disable:4786)の一行だけでいいと思うけど。
0530デフォルトの名無しさん
NGNG何の警告よ
0531デフォルトの名無しさん
NGNGSDIのCEditViewを使ってプログラムしてるんですが
何かちょっと編集して×ボタンを押すと
「Save changes to Untitled?」
っていうメッセージボックスがでるんですが
そのメッセージを出さないようにするには
どうすればいいんでしょうか?
0532デフォルトの名無しさん
NGNGセーブしなくて良いってこと?
0533531
NGNGただログをEditViewにダラダラ出してくだけなんで
セーブの警告なんていらないんです。
よろしくお願いします。
0534デフォルトの名無しさん
NGNGDoc-View使ってる?だとすれば、
とりあえず↓のようにCDcoument::SetModified()をオーバーライドすればできる。
やったことないから、もしかしたら他にいい方法あるかも。
BOOL CHogeDoc::SaveModified()
{
return TRUE;
}
0536デフォルトの名無しさん
NGNG特定のウィンドウにフォーカスを変更したいのですが、
どうすればいいのでしょうか?
0537デフォルトの名無しさん
NGNG↓
SetFocus
0538デフォルトの名無しさん
NGNG黙れ
0539デフォルトの名無しさん
NGNG0540デフォルトの名無しさん
NGNGSendInput を使えということですが....
0541540
NGNGすみません
誤爆です
0542デフォルトの名無しさん
NGNG>>537
これウインドウハンドルが必要でしょ。
ウインドウクラス名とかまで分かっていれば探すことも
できるけど、ソースの分からないアプリの場合は
どうすればできるのかな。
0543デフォルトの名無しさん
NGNG0544デフォルトの名無しさん
NGNGアプリB 他人が作ったゲームなどDirectXフルスクリーン(排他)
自作アプリC
アプリBを「フォアグラウンドのまま」、自作アプリCからキーフックを使ってアプリAのダイアログにメッセージを送っています。(SendMessage,,,WM_SETTEXTで)
さらにアプリBが「フォアグラウンドのまま」そのアプリAのダイアログでリターンキーを押したいのですがこれは可能でしょうか?
■ このスレッドは過去ログ倉庫に格納されています