トップページ⇒tech
987コメント318KB

□□□VC 初心者質問スレ 2□□□

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
□□□VC++初心者質問スレ□□□
http://piza.2ch.net/test/read.cgi?bbs=tech&key=984812029
0002デフォルトの名無しさんNGNG
>http://piza.2ch.net/test/read.cgi?bbs=tech&key=984812029&st=932&to=932&nofirst=true
HIDE にしてBitBlt してSHOW する
0003デフォルトの名無しさんNGNG
>>http://piza.2ch.net/test/read.cgi?bbs=tech&key=984812029&st=933&to=933&nofirst=true
>VCではActiveXって作れないんですよね。VBで作るしかないの?

あり得へん
VC使いに殺されます。うぃんどうずあぷりでVCで作れんモンはありません
0004デフォルトの名無しさんNGNG
あげ
0005デフォルトの名無しさんNGNG
VCって今バージョンいくつですか?
0006デフォルトの名無しさんNGNG
>>5
6.0のsp5かな。
0007デフォルトの名無しさんNGNG
まぎらわしいからあげ
0008デフォルトの名無しさんNGNG
紛らわしい唐揚げ
0009デフォルトの名無しさんNGNG
ブロック崩しみたいなゲーム作ろうと思うんですけど、
もしかして、DirectX使わないと玉がちらつくことを防ぐのは不可能ですか?
00109NGNG
玉はビットマップで描いてWM_TIMERで40ミリ秒ごとに移動して
再描画してます。
0011デフォルトの名無しさんNGNG
>>9
画面と同じ大きさの裏バッファ(メモリDC)を用意して、
そこに描画して、裏バッファに画面イメージが出来あがったら、
表(実際に表示されているサーフェス)に転送。
0012SC−14TNGNG
プログラム初心者です。
初めてカキコします。
たびたび質問すると思いますが、よろしくお願いします。

さっそくの質問ですが、
ウィンドウを最小化したときにツールバーではなく
タスクバーに入れたいんですがどうすればいいですか?
ウィンドウスタイルでWS_MINIMIZEBOXはあるのですが
タスクバーに入れるためのWS_***はありませんよね?
またタスクバーに入れたときのフローティングメニューの内容の
編集と表示方法も教えて下さい。
0013デフォルトの名無しさんNGNG
>>12
http://www2s.biglobe.ne.jp/~maekawa/dev/vc/tasktray/

話は変わって、ウィンドウズ終了時に送られてくるメッセージって WM_CLOSE?
調べるために再起動すんのもアレなんで、御存知の方は教えておくんなまし
0014SC−14TNGNG
>>13
ありがとう
0015ののりんNGNG
<画像ファイルのプロパティの取得について>
 質問させて下さい。
 Windowsのエクスプローラー等で画像ファイル(gif, jpgなど)を右クリックして
「プロパティ」を選ぶと、幅や高さなどが解りますね。
 これをプログラム(C++Builderを使っています)で取得するにはどうすればよろ
しいのでしょうか?
 やりたい事は、例えば幅が2000ドットを超えている画像ファイルが
所定のディレクトリ内にあると、
 「でかすぎるぞ ゴルア!」
 というメッセージを出したいのです。
0016デフォルトの名無しさんNGNG
>>15
どうすればできると思う?
0017デフォルトの名無しさんNGNG
>>13

WM_CLOSEは
「終了時と」
言うよりは
「[x]ボタンを押された時」
に来るもんだと考えてください。

WM_CLOSE時にDefWindowProcを渡した場合
デフォルト処理としてWM_DESTROYが送られて終了になります。

よくある
「終了しますか? Yes No」
等はWM_CLOSE時に行うのがよいです。
WM_CLOSEで何もせずに0を返せば終了(というかWM_DESTROY)はしません。
0018fだsNGNG
VisualC++でBeckyのようなメールソフトを作りたいとおもっています
なにかいいサンプルソースないでしょうか?
よろしくお願いします。
0019・・・NGNG
具体的な質問なんですが、、、
「ふきだし.bmp」というビットマップ(画像)の上に、ふきだしの大きさに合わせて文字列を表示したいんですが、どうやればいいんでしょうか?
よろしくお願いします
0020トイレから暇つぶしNGNG
>>19
リージョンでも使えや
0021デフォルトの名無しさんNGNG
>>17
ウィンドウ終了時じゃなくてウィンドウズ終了時に送られてくるメッセージを知りたいのです
0022デフォルトの名無しさんNGNG
>>21
なんとかシャットダウンなんとか。

WM_*全部よんでけばそのうちぶつかるよ。

include/*.h あたりで検索すれ
0023デフォルトの名無しさんNGNG
>21
読んどけ。
http://www14.big.or.jp/~ken1/tech/tech10.html
0024デフォルトの名無しさんNGNG
>>23
ありがとー
0025デフォルトの名無しさんNGNG
SetFocusとかCWnd::SetFocusとかWM_SETFOCUSとかって、
対象ウィンドウか、その親をアクティブにしてしまうんですよね?
アクティブにせずにフォーカスを当てる方法ってありますか?
0026・・・NGNG
>20
ありがとうございます!、試してみます
00279NGNG
case WM_KEYDOWN:
switch((char)wParam){
case VK_A:
//{処理}
break;
}
}
↑(たぶん)上のような感じにすると
VK_Aは定義されていない識別子だっていわれてビルドできません。
なぜなんでしょうか?ちなみにwindows.hはインクルードしてます。
00289NGNG
申し送れましたが、>>11さんありがとう。
でも、そうやっても多少のちらつきが出るんですが、
やむをえない所でしょうか。
0029うへへへNGNG
VK_Aは0x41
00309NGNG
>>29
VK_Aと書いてたところへ
0x41と書けば良かですか?
やってみます。
00319NGNG
>>29
なるほど、うまく行きました。
でも、なんでVK_Aではうまく行かないのでしょうか?
参考書にはVK_Aってかいてあったのに。
0032デフォルトの名無しさんNGNG
参考書はなあに?
0033デフォルトの名無しさんNGNG
29のやり方はあんまり良くないよ(可読性からいって)
アルファベットのVKCodeは例えば'A'みたいに大文字のアスキーコードと同じ
でよかったと思う。
00349NGNG
>>32
翔泳社のですけど・・・
タイトルは「Windows98プログラミング」
もしかして、ダメですか?

>>33
どうもありがとう。こっちの方が良さげですね。
VK_Aって書くよりも楽だし。
でもVK_Aって書くと通らないのはなぜなんでしょう?
0035デフォルトの名無しさんNGNG
ダメ本じゃないと思うよ。
0036SC−14TNGNG
>>34
あ、それ持ってます。
結構いいですよ。
私がWINプログラム始めて初めての参考書でした。
今でも時々パラパラめくって使ってます
0037SC−14TNGNG
ところでトークン結合で聞きたいのですが、

...
#define AandB(A, B) A ## B
#define RES_0 0xeeee
#define RES_1 0xffff
...
{
int x = 0;
int y = 1;
int w, z;

w = AandB(RES_, x)
z = AandB(RES_, y);
}

このプログラムを行うと
w = 0xeeee, z = 0xffff
になると思っていましたが
コンパイルエラーになってしまいます(RES_x, RES_yは定義されてないというエラー)
どうすれば
w = 0xeeee, z = 0xffff
ような結果になるプログラムって可能ですか?

説明下手でスマソ
0038デフォルトの名無しさんNGNG
#define x 0
#define y 1
0039デフォルトの名無しさんNGNG
「hoge[0]からhoge[99]まで全て0より大きい」のような条件はどう表すのがいいのでしょうか。
自分は普段、

for(i=0;i<100;i++){
 if(!(hoge[i]>0))
  break;
 if(i==99){
  ...
 }
}

のように記述してるのですが、どうも汚いです。何かいいやり方を教えてください。
0040デフォルトの名無しさんNGNG
>>39
hogeが自分のスレッドと非同期に動いてるんでなければ、hogeをクラス化して
入出力を監視するのが吉。
0041デフォルトの名無しさんNGNG
>39
BOOL型を返す関数にして
{
  for(i=0;i<100;i++){
    if(hoge[i] <=0){
      return FALSE;
    }
  }
  return TRUE;
}
0042デフォルトの名無しさんNGNG
for(i=0;hoge[i]>0;i++){
 if(i==99){
  ...
  break;
 }
}
あんま変わらんか
0043sageNGNG
hogeをでかい順に並べとくと吉
0044デフォルトの名無しさんNGNG
はひぃ。Editに入れた文字をint型の変数に
入れるには、どうすればいいですかぁ。
mfc-dialog base
0045デフォルトの名無しさんNGNG
文字コード->int?
文字列->int?

下なら何進数だよ?
0046デフォルトの名無しさんNGNG
すみません。文字じゃなくて数字でした。。。
0047デフォルトの名無しさんNGNG
EditがIDC_EDIT1で、int型変数が、isujiとすると、
どういう構文を書けばいいのか、
おしえてくらさい。
0048デフォルトの名無しさんNGNG
>>46
Class Wizardでintの変数をバインドできない?
ふつーはできるんだけど。
0049デフォルトの名無しさんNGNG
バインド?バインド?
ウゥヤバイワカリマセーン

アセアセアセアセアセアセ
0050デフォルトの名無しさんNGNG
CString ssuji;
GetDlgItem(IDC_EDIT1)->GetWindowText(ssuji);
int usuji = atoi(ssuji);

でいいけどもよ。

MFCのチュートリアル、わからないなりにしっかり読もうな。
がんばれ
0051デフォルトの名無しさんNGNG
おおおおおおおおおおおおおお!!!!!!!!!!!!!!!!!!!
スゴイヤ!コレダ!!コレダーーーーーーーーー!!
ガンバリマッスル!!アリガトウゴザイマス
0052デフォルトの名無しさんNGNG
場合によっては、
int usuji=GetDlgItemInt(IDC_EDIT1);
でもいーんじゃないの?10進数Onlyだけど。
0053デフォルトの名無しさんNGNG
wsprintf みたいに OS がサポートしてる atoi 関数ってないんかな
SetDlgItemText して GetDlgItemInt すれば実現可能だけど…
0054デフォルトの名無しさんNGNG
>>53
それぐらい、その場で書いてる。
たかが数行、時間にしてせいぜい 1 分。
0055デフォルトの名無しさんNGNG
0056中学生NGNG
関数プロットのやり方を教えて。
0057デフォルトの名無しさんNGNG
プロットってなんだYO!!日本語で話せゴルァ!!
0058デフォルトの名無しさんNGNG
>>56
gnuplot 調べれ
0059デフォルトの名無しさんNGNG
今C言語の本に載っている例のプログラムを見ながら、入力しているのですが、
新しいのプログラムに行く前に、軽く解説があり、その後に問題が
あるのですが、問題を読んでも「こうすればいいかなぁ」と思うんですけど
自分の考えたやり方じゃない答えとしてのっています。自分だったらこうやると
思うやり方は、乗っている答えと比べて複雑だし、自分が完璧と思ったプログラムが
どこも間違っていないのに、エラーがありますが、答えはないし、聞ける人もいないのですが
エラーがあっていいから、自分なりのプログラムを作るべきですか?
それともまず、問題集に載っているプログラムを1から最後まで、
入力だけやって知識を身に付けてから、自分なりのプログラムを作るべきですか?
0060デフォルトの名無しさんNGNG
どういう方法をとってもまともなものが作れるようになるには
1年以上かかるよ。好きにやるのが一番だ。
あと、プログラマは何を作れるかじゃなくて、
要求・必要どうりの物をいかに正確に作れるかだろ?
本末転倒にならないようにしろよ
0061デフォルトの名無しさんNGNG
>自分が完璧と思ったプログラムが
>どこも間違っていないのに、エラーがありますが

どこも間違ってなかったらエラーは出ません
自分なりのプログラムは他人から見づらいだけです
0062デフォルトの名無しさんNGNG
VCでプロジェクトに追加したコンポーネントを
後で削除(コントロールツールバーから消したい)することってできますか?
0063SC−14TNGNG
すみません質問です。
よろしくお願いします。

MFCプログラム(ダイアログベース)なんですが、
指定したディレクトリの中にあるファイルの名前を取得したいのですが
どうすればいいのですか?
取得するといっても検索とは違います。
つまりファイル名を指定してそのファイルがあるかどうかを調べるのではなく
ディレクトリの中にあるファイルの一覧を
ファイルダイアログを使わずにすべて知りたいのです。
0064SC−14TNGNG
>>62
Delteキーで削除できると思います
0065デフォルトの名無しさんNGNG
>>63
FindFirstFile で * で検索。
0066デフォルトの名無しさんNGNG
質問です.よろしくお願いします.

ユーザーにファイル名を入力させ,ファイルを作りたいのですが,
その際に不正な文字(“\”,"/"等)があった場合エラーなり警告なり
を出したいのですが,便利な関数をどなたかご存知ないでしょうか?

よろしくお願いします.
0067デフォルトの名無しさんNGNG
>>63
ダイアログベースなら、リストボックスを一個追加して、不可視にして
コントロールをメンバ変数としてバインドしておく。

んで、CListBox::Dir()で一覧を取得して、あとはCListBox::GetItem()で
順番に取り出すだけ。
0068デフォルトの名無しさんNGNG
>>66
便利な関数?
memcmp (藁
0069デフォルトの名無しさんNGNG
>>66
strpbrk
0070デフォルトの名無しさんNGNG
>>67
VBじゃないんだからダサいやり方やめようよ。
リソースの無駄無駄
0071デフォルトの名無しさんNGNG
ビットマップを保存するとき、BITMAPFILEHEADERのbiSizeやbfOffBitsに
ビットフィールドのサイズも加えるべきなのでしょうか?
ある本のプログラムではサイズを加えていなかったのですがどうなんでしょうか。
007262NGNG
>>64
deleteですか?できないんですけど・・・
007366ですNGNG
試したところうまく行きましたが,こんな感じでいいんでしょうか?

if ( strpbrk( strFileName, "\\/:,;*\?\"<>|" ) != NULL ) {
// エラー処理
}

とりあえず,ありがとうございました.
007469NGNG
>>73
すまん。それだとカタカナの「ソ」とかも×になる気がしてきた。
_tcspbrk とかを使った方がよいっす。
0075SC−14TNGNG
すみません、質問です。

フローティングメニューを起動できたのですか
メニューが表示されて状態でカーソルの位置をずらして
もう一度右クリックを押したときにカーソル位置で開き直したいのですが
下のコードだと右クリックしても開いてくれません。
それどころか、左クリックしないと閉じられないんです

どうすれば右クリック連続で押してメニューを起動できますか?
もしよければコードをお願いします。

......
case WM_RBUTTONDOWN:
POINT p;
//
p.x = LOWORD(pMsg->lParam);
p.y = HIWORD(pMsg->lParam);
::ClientToScreen(pMsg->hwnd, &p);
//
HMENU fm = ::LoadMenu(::AfxGetInstanceHandle(), MAKEINTRESOURCE(_IDR_default));
HMENU sm = ::GetSubMenu(fm, 0);
::TrackPopupMenuEx(sm, 0, p.x, p.y, pMsg->hwnd, NULL);
::DestroyMenu(sm);
::DestroyMenu(fm);
break;
......
0076SC−14TNGNG
あ、すみません。
もう一つ質問がありました。

メニュー(フローティングメニューも)の項目の右に
アイコン画像を挿入するにはどうすればいいのですか?
(IEでもお気に入りなどに使われているもの)
MSDNなどで(CMenuなど)検索して調べてみましたがのってませんでした。
0077デフォルトの名無しさんNGNG
>>75
WM_CONTEXTMENU
0078SC−14TNGNG
>>77
ありがとうございます。
MSDNで引いたらコードも載ってました。



ところで、メニューに画像くっつけるにはどうしたら(w
0079デフォルトの名無しさんNGNG
オーナードロー>78
0080SC−14TNGNG
>>79
うーん・・・???
MSDNで引きましたがよく分かりません
どこかにメニューにイメージを挿入するコードありませんか?
よろしくです。
0081デフォルトの名無しさんNGNG
>>80
owner draw
0082SC−14TNGNG
すみません、質問です。
いろいろなアプリでみかける(例えば、標準インストールウィザードやLhasaなど
ディレクトリの一覧を表示し、クリックしてディレクトリ名を取得する
ディレクトリダイアログって標準でないんですか?(ファイルダイアログはあるのですが・・・
MSDNで探しましたが、ありませんでした(VBにはDirListBoxっていうのがあった
0083デフォルトの名無しさんNGNG
>>80
検索しろボケ
>>82
SHBrowseForFolderとか。
0084デフォルトの名無しさんNGNG
救済age
0085名無しさんNGNG
質問です。

ポインタ変数の配列を動的に宣言したいのですが、
どうしたら良いのでしょうか?

普通の変数の配列の動的確保はmalloc関数を使う
方法はわかるのですが。

VC++では、WindowsAPIなどでmalloc関数などとは
別の方法で、ポインタ変数の配列を動的に宣言する
方法があるのでしょうか?
0086デフォルトの名無しさんNGNG

void **p;

p = (void**)malloc(ArraySize);
0087デフォルトの名無しさんNGNG
がいしゅつかもしれませんが、
一般的なツール(WINCRC等)で取得できるCRC16の求め方は
どのようにすれば良いのでしょうか?
C言語アルゴリズム辞典(http://www.vector.co.jp/soft/data/prog/se002453.html)の
中のCRC16.cを使っても、どうも違う数値になってしまいます。
もしかしたら、私の使い方がヘタレなのかもしれませんが、どなたかご教授頂けたらと思います。
0088デフォルトの名無しさんNGNG
>>87
16でしょ?
ならそれでいいんじゃない?

32は、増やすだけ。
008985NGNG
>86
ありがとうございます。
0090デフォルトの名無しさんNGNG
>>87
本文読んだ?(書籍のほう)
良い本だから、持っておいたほうがいいよ。
本文のCRCのところに、X-MODEM形式の場合は初期値を0として、
最後のビット反転は行わないと記述がある。

 でも、WINCRCってCRC32みたいだけど?
0091VC無為者NGNG
はじめましてVC無為者です。
ぼくはMicrosoft Visual C++が欲しいのですがなぜか持っていません。
そこでだれかWeb上にVCをアップロードして私がダウンロードできるようにしてくれませんか?
ご返事待ってます。
0092デフォルトの名無しさんNGNG
>>91
1.丈夫なひもを用意します(以下略
009387NGNG
>>88
>>90
レスポンスありがとうございます。
書籍のほうは残念ながら所持しておりません。
ソースファイルだけではアルゴリズムの細かいところがわからないので
今度、購入してみようと思います。
とりあえず、90さんが教えてくれたところを見てみて試したいと思います。
また、何か聞く事があるかもしれませんが、そのときはよろしくお願いします。
0094デフォルトの名無しさんNGNG
>>91
犯罪を教唆したかどで、現在警察が(以下略)
0095(゚д゚)Beからネット繋ぎてーNGNG
BeOSでhttp://www.bebits.com/app/1009/にあるソースをいじって、
ドライバをビルドせにゃならんらしいのですが、
ソースはいじってもビルドのやり方がさっぱり不明です。
誰か教えてー。
mkae?って何?
できればターミナルからやる方法を・・・。
0096デフォルトの名無しさんNGNG
まかえ?
0097VC無為者NGNG
>>92
レスありがとうございます。
えと、このひもを首に巻きつけるんですよね。
えとそれで高いところにつるして…
このあとどうすればいいんですか?
というか本当にダウンロードできるようになるんでしょうか。
0098デフォルトの名無しさんNGNG
>>97
30点。
ストレートすぎます。
もっと面白いネタ考えてから、出直してください。
0099デフォルトの名無しさんNGNG
BBSとかのCGIで半角使えるようにするにはどうやったらいいですか?
0100デフォルトの名無しさんNGNG
>>99
1.文字コードの判定でがんばる。(ある程度の誤判定はあきらめる)
2.書き込みするときに、文字コードを指定してもらう。
3.特定の文字コード以外のでの書き込みを断る。
  (「シフトJIS以外での書き込みはしないでください」とか)

100%大丈夫な方法は無いけど、実用上は上記のうちのどれかで
問題ないと思う。
010199NGNG
>>100
ありがとうございます。
でもスレの名の通り初心者なもので具体的にどうすればいいのかさっぱりです(藁
CGIのソース書き換えで出来たりはしないのでしょうか。
■ このスレッドは過去ログ倉庫に格納されています