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

★初心者にVisual C++を教えるスレ★

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
どーぞー

前スレ
http://pc3.2ch.net/test/read.cgi/tech/1023530449/l50
0153デフォルトの名無しさんNGNG
>>152
VCC++ってのは使ったことはないのでよくわからないのですが、
VC.netでは、プロパティのメッセージから追加しろ
0154 NGNG
>>153
できました!
有難うございます。質問してよかったです。
VCC++ って書いたのはミスタイプです。

もし、なんかいいアプリ作れたら、フリーで配って恩返しします。
感謝。
0155デフォルトの名無しさんNGNG
>>151
改行は "\r\n"
0156九十九NGNG
>>155
ありがとうございます。
ちゃんと改行することができました。
くだらない質問でご迷惑おかけします。
0157デフォルトの名無しさんNGNG
VC6で65536を超える配列は使えますか?
以前VC++2.0 の頃にうまくいかなくて、それ以来試していないのですが
0158デフォルトの名無しさんNGNG
1つ30KByteとかの構造体配列でも無い限り使えたとおもうが。
0159デフォルトの名無しさんNGNG
>>157
残念ながら64499次元までしか扱えないようだ。
0160デフォルトの名無しさんNGNG
>>158
そうでしたか、コンパイルエラーも実行時もエラーにはならないんですが
実際には65535を超えたあたりから値(計算結果)が狂ってくるという現象に
あいまして 

>>159
書き方が悪かったようで申し訳ありません
次元の数ではなく、一次元配列のサイズです
0161デフォルトの名無しさんNGNG
IE6の機能とかを使うために最新のヘッダファイルを入手するにはどうしたら
よいのでしょうか.。

昔は Internet Client SDKをインストールすればよかったんですが最近VCPPから
離れているんでわかんないです。
0162デフォルトの名無しさんNGNG
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
0163デフォルトの名無しさんNGNG
>>160
  int array[ NUM ];
だとスタック上に取られるんだっけ? で、MSDNにスタックのデフォルトサイズ
は1MBとあるから、VC2の頃より大きくなったとはいえ、コンパイラオプション
変えないと、それ以上大きくできない。

でかい配列は、
  int* array = new int[ NUM ];
でヒープにとった方がいいのではないか。
0164デフォルトの名無しさんNGNG
A a;
void(A::*p)(int) = &A::a;
__asm {
 push 3
 lea ecx, a
 call p
}

クラスのメソッドを呼び出すのに上のようなことをしているのですが、
いちいち p に代入せずにcallする方法ないですか?
0165デフォルトの名無しさんNGNG
a.*p(3)やったっけ?
0166デフォルトの名無しさんNGNG
VC++6.0の学割版ってあります?
Professional Editionってのが7,8万円してとても買えないです・・・。
0167160NGNG
>>163
どうもありがとうございます
そのときは、たしかヒープ上にとったのです

今は私のPCにはVCがインストールされてないので
時間を見つけて再度挑戦してみます。
0168デフォルトの名無しさんNGNG
http://muvc.net/jsweb/profiles.html
0169デフォルトの名無しさんNGNG
>>166
あるよ。
VC++6.0のStandard版のアカデミックだと、9800円ぐらいだった。
今ならVisual Studio .NET のアカデミック版が22000円ぐらいで
お買い得な希ガス流。
0170デフォルトの名無しさんNGNG
マジすか!
どうもです。
休みの日に、大阪日本橋に買いに行きます。
0171デフォルトの名無しさんNGNG
>>164
.NETなら call A::a で呼べるが、6以前ではおそらく無理。
0172デフォルトの名無しさんNGNG
Netscape 6のスクロールバーはなんか特殊な物になってますが、
あれはどうやっているんですか?
0173デフォルトの名無しさんNGNG
独自開発やったっとおもふ。
0174デフォルトの名無しさんNGNG
>>173
あ、やっぱそうですか。
0175デフォルトの名無しさんNGNG
Win2000でVC6を使っています。
ソースを保存する際に、まれに止まる、もしくは落ちるのですが、
何故でしょう?
(ガイシュツだったらごめんなさい)
0176デフォルトの名無しさんNGNG
>>175
気にしちゃいけません。
0177デフォルトの名無しさんNGNG
>>175
.NETが出たからです。
0178デフォルトの名無しさんNGNG
VC6+MFCを使っているのですが、Static Link Library(.lib)
を組み込むにはどうしたら良いのですか?
0179デフォルトの名無しさんNGNG
ウィザードでスタティックリンクを選択
0180デフォルトの名無しさんNGNG
今時はMFCをスタティックリンクしてくれた方が迷惑だな
0181デフォルトの名無しさんNGNG
>>179はものすごい勘違いをしてるな
0182デフォルトの名無しさんNGNG
で、ほんとのところどうなのよ
0183デフォルトの名無しさんNGNG
>>180
うちのPanasonic Let's NOTEはDLLないってエラー返してくるYO!
0184デフォルトの名無しさんNGNG
Visual C++ 6.0 を使ってます。
XPインターフェースのソフトを、manifest を使わずに作成することは可能ですか?
0185デフォルトの名無しさんNGNG
>>175
それって、保存するときっていうか、実行するときの「ビルドしますか?」の
ダイアログが出る前に、5秒ぐらい固まって「はい」を選ぶと落ちるみたいな
感じでない? ウチだと 50回に1回くらい、そうなる。

「はい」を選ばずに「いいえ」か「キャンセル」を押して、IDEが落ちるのを
切りぬけてるよ。
0186デフォルトの名無しさんNGNG
漏れはXPに変えてからデバッグ実行させるときによく落ちるな。
0187デフォルトの名無しさんNGNG
そんなにXP駄目なのか・・
0188デフォルトの名無しさんNGNG
XPってWindows98(SE)よりましですか?
0189デフォルトの名無しさんNGNG
>>178
#pragma comment(lib,〜)
をソースに追加するか、プロジェクトの設定のリンクタブで設定
0190デフォルトの名無しさんNGNG
>>189
実際にプログラム使用するときはそれのほかに
#include <〜.h>
とかを使用しないと使えないですか?
0191デフォルトの名無しさんNGNG
今ReadProcessMemory関数の引数にLPVOID型が必要なのですが
__gc int *をLPVOIDに変換するにはどのようにすればよろしいのでしょうか?

アンマネージなら(LPVOID)キャストでできたのですが
どうかよろしくお願いします
0192デフォルトの名無しさんNGNG
Win32appli を MFC を使わずに作っているのですが、
strstr や strcpy 関数が、string.h をインクルードしなくても使えてしまいます。
string.h は、必要ないのでしょうか?
0193デフォルトの名無しさんNGNG
>>191
不可能
0194デフォルトの名無しさんNGNG
>>192
windows.hがインクルードしてる
0195192NGNG
>>194
サンクス!
気持ち悪かった謎が解けました!
0196191NGNG
>>193
どうもありがとうございます。ということはそこの部分だけ
アンマネージで書かなくてはならないということですね。
では.NET FrameworksにはReadProcessMemoryと同じ働きを
するものは提供されているのでしょうか?
System::Diagnosticsを見てみたのですが、どうも同じことが
できるような物が見当たらずどうかよろしくお願いします。
0197デフォルトの名無しさんNGNG
VC初心者です。

CProgressCtrlを一つ持ったダイアログを作成し、そのダイアログが
プログレスバーを更新しつつ、長い処理を行う(シングルスレッド)
ようにしたいのですが、ダイアログ自身はDoModal()で表示し、
そのダイアログのOnXXX()で長い処理を行うようにすることは可能
でしょうか?

モードレスダイアログとするなら
http://homepage2.nifty.com/DSS/VCPP/MFC/Dialog/dlgappprgbar.htm
これでいけそうなんですが、できればモーダルに統一したいです。

よろしくお願いします。
0198197NGNG
追加です

OnShowWindow() で自分自身に何かメッセージを投げて、
そのハンドラで長い処理を開始すればいいのかなぁと
妄想したのですがどうでしょうか?
0199197NGNG
198でできました。
なんかバーの表示位置がちょっと左にズレてるような気がするけど・・・・・・・
0200デフォルトの名無しさんNGNG
>>196
出来るわけがない。
OSに強く依存しちゃうから、.NET標準で提供されることはほぼ無いと思われ。
0201デフォルトの名無しさんNGNG
>>200
確かに激しくOS依存ですね。
ReadProcessMemoryでなんとかやってみようと思います。
ありがとうございました。
0202デフォルトの名無しさんNGNG
catch(Exception* e)
{
MessageBox::Show(e->Message, S"エラー", MessageBoxButtons::OK, MessageBoxIcon::Error);
}
としたら
MessageBoxA識別子がクラス名でも名前空間でもありませんと
でてきてしまうのですが、どこがまずいのでしょうか?
0203ぼぶ ◆EMrmvKLI NGNG
あg
0204デフォルトの名無しさんNGNG
要するに、クラス名でも名前空間でもないんだと思われ。
0205202NGNG
>>204
どうもありがとうございます。
>>204さんの仰るように、どうやらMessageBox関数と誤認識を
しているようです。Application::Runなどは普通に動くのですが、
この場合どうすればMessageBoxクラスということをしっかりと
伝えることができるのでしょうか?
0206デフォルトの名無しさんNGNG
>>205=202
1. なんとかして winuser.h だけをインクルードしないようにする
2. 202 さんの MessageBox クラスを定義する前に
 #undef MessageBox とする

どちらかというと 2. の方が実用的っすかね。
MessageBox はプリプロセッサで置換されるんで
多分 namespace じゃ思うように解決しないと思うです。
# そもそも,少なくとも vc++ を使うなら WinAPI と被ってしまう
# クラスは作らない方がいいとも思ってみるテストですょ。
0207デフォルトの名無しさんNGNG
DialogBoxParam で giko ダイアログを作成するとき、
LPARAM として構造体 mona へのポインタを渡し、
giko ダイアログのコールバックの中で、
構造体 mona 自体に手を加えたいと思うのですが、
giko ダイアログのコールバックでは、
LPARAM で受け取ったポインタをどうすれば
コールバック関数内で構造体 mona に手を加えることができるでしょうか?
0208デフォルトの名無しさんNGNG
そのままキャストすればいいじゃん。
0209207NGNG
できました。
ありがとうございます。
0210デフォルトの名無しさんNGNG
ダイアログベースで、ピクチャーボックスに画像を表示したいんですが。

ビットマップ表示関数は以下のような物です。
BitDraw(HDC hDC, int x, int y, unsigned char* BmpImage, LPBITMAPINFO BmpInfo )
引数のHDCはどのように取得してやればいいのでしょうか。
初心者爆発ですみませぬ。
0211デフォルトの名無しさんNGNG
スクロールバーを右に動かしても
いつまでもTextoutした文字が付いてくるんです。
つまり右の方の文字が見えないんです
どうしたら解決できますか?
0212デフォルトの名無しさんNGNG
さげてしまった
0213デフォルトの名無しさんNGNG
>>211
WM_PAINTで調整しろ
0214デフォルトの名無しさんNGNG
>>213
意外とあっけなく解決しますた。
ありがとうございました
0215デフォルトの名無しさんNGNG
ホットキーコントロールで、
DeleteやBackSpaceの入力を可能にするにはどうすれば良いでしょうか?
0216デフォルトの名無しさんNGNG
フルパスからファイルネームのみに変換するにはどうしたらいいですか?
0217デフォルトの名無しさんNGNG
>>216
PathStripPathを使えば良いんで無いかい?
0218デフォルトの名無しさんNGNG
>>217
すんげ、すんげー
ありがとうございまs7
0219デフォルトの名無しさんNGNG
ラジオボタン最初ッからチェック入れるにはどーしたらいいんでしょう?
0220202=205NGNG
>>206
どうもありがとうございます。
そのMessageBoxクラスは.NET Frameworksの
System.WIndows.Forms.MessageBoxなので
変更できません。
もしかしてプログラムの中のほかの部分で
Win32APIを使っていることが問題なのでしょうか?
どうしても、Win32APIを使わなくてはならない場合は
0221202=205NGNG
>>219
MFCならCButton::SetCheck(int)でOKだと思う
0222デフォルトの名無しさんNGNG
すいません。int型の数値を文字として認識するためには
どういった関数を使えば上手くいくでしょうか?
0223デフォルトの名無しさんNGNG
>>221
がんばってみます
0224デフォルトの名無しさんNGNG
CButton *bp=(CButton*)GetDlgItem(IDC_RADIO3);
bp->SetCheck(1);
こんな感じでイイノですか?一応出来てるようなんですが・・・
0225あNGNG
>222
int i=10;
char s[256]:
sprintf(s,"int型 i の値は%dです",i);
printf(s);

>224
出来てるならもうなにもいうことはない。
0226デフォルトの名無しさんNGNG
VisualBasic の timer control を VisualC++ で使いたいんですけど、
VisualC++ の components & controls gallery から選べません。
どうしたら良いか、教えていただけますか?
0227デフォルトの名無しさんNGNG
>>220
.NET っすか。スレ違いのような気がしてきたけど,よくわかんないや。。。
あちこちのサンプルとかを見ると,
  MessageBox :: Show
じゃなくて
  MessageBox . Show
って書いてますよ? コロン 2 つじゃなくて,ピリオド 1 つ。
あー,でもApplication::Run が動いたってのが気になるっすね。。。
0228あNGNG
>226
えっ、そんなの使えるっけ?w
VBは知らんけど
VCではSetTimer関数使うしかないんじゃない??
0229デフォルトの名無しさんNGNG
>>227
それはC#とかだろ
名前解決にピリオドを使うと、それはC++では無くなる。
0230デフォルトの名無しさんNGNG
ダイアログベースアプリにポップアップメニューつけるには
どうしたらよいのでしょう?
0231デフォルトの名無しさんNGNG
>>230
WM_CONTEXTMENUのメッセージハンドラ作成して、
CMenuやらなんやらでポップアップメニュー作成。
0232デフォルトの名無しさんNGNG
インクレメント演算子++、デクレメント演算子−−ってただの
+や−(−○)と意味が違うんですか?
今現在学校の講義の実習を受けてるんですが、何が言いたいのかさっぱり
ッス
0233デフォルトの名無しさんNGNG
講義中に2ちゃんねる見るの禁止!
0234デフォルトの名無しさんNGNG
講義中だけど、これができるまで講師に放置プレイ食らってるんです。
0235デフォルトの名無しさんNGNG
>>232-234
ジサクジエンご苦労さん
0236デフォルトの名無しさんNGNG
んなこたない
0237デフォルトの名無しさんNGNG
何の講義をしているかによって答えは変わってくるけど、
単純に何をしているのかって事だと
変数の値を変化させるかさせないかだけ。
0238デフォルトの名無しさんNGNG
今は自分で電卓を作る講義(当然講義名は違いますけど)で
「+=や*=などのCの代入演算子や、インクレメント演算子++
やデクレメント演算子−−を追加せよ。&&と||が左から右の
順に評価されるようにし、Cと同様に評価が早く終了するように
変更せよ」が問題文です。根幹となるプログラムは与えられてます。
でもこの問題の通りにプログラムを追加していったい何の機能が
追加されたのかがわかりません。だからどんな計算をさせれば
どういう答えが出てこなければならないかもわかりません
0239デフォルトの名無しさんNGNG
i=i+1
i+=1
i++(++i)
は同じ意味です
i++はiを1増加するという意味です
--はその逆です
1増減する時に限定してインクリメント(++)やデクリメント(--)が用意されています
0240デフォルトの名無しさんNGNG
>は同じ意味です
文脈によって意味が変わるだろ
0241デフォルトの名無しさんNGNG
ダイアログ上に配置した様々な種類のコントロールの中で、
どこにキーボードフォーカスがあるか調べることってできますか?
0242デフォルトの名無しさんNGNG
>>241
GetFocus
0243デフォルトの名無しさんNGNG
>>240
そうだよな
a[i++]=0とa[++i]=0
じゃあ全然意味違うしな。
0244デフォルトの名無しさんNGNG
>>232
昔コンパイラが賢くなかった頃。
inc dec add sub などアセンブリ命令を明示的に示す必要があった。
i = i+1だとadd命令。
++iだとinc命令。
addよりもincの方がローコストなのでこの表記が推奨されている。

表記が単純。演算子のオーバーロードなどでイテレータを操作するような
機能を享受できる。とかのメリットがある。
0245デフォルトの名無しさんNGNG
>>244
へぇ〜。
なるほどねぇ。
俺は単にらくだから使ってたけど…
0246デフォルトの名無しさんNGNG
>>244
おいおい、いくらCがご都合主義の糞言語だからって
その言いがかりは無いだろ。
前置、後置インクリメント/デクリメントは理由があって導入されたんだよ
0247デフォルトの名無しさんNGNG
基地外が何か言ってるモナ・・・
 ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄
ヒソヒソヒソ
  ∧_∧∧_∧ _∧  ヒソヒソヒソ
 ( ´∀(    )∀` )
 ( つ (    つ ⊂ )
( _)(⌒)(⌒)ノ_(_)ノ
0248デフォルトの名無しさんNGNG
>>246はC言語が出来なくて挫折した厨房と言うのは本当ですか?
0249デフォルトの名無しさんNGNG
そんな会話他行ってやってくれよ
0250227NGNG
>>229
うん,それは分かってるんだけど
202=205=220 さんが System.WIndows.Forms.MessageBox とか言い出したんで
スレ違いかなとは思いながら C# を仮定してみますた。
でも Application :: Run てのも気になるなあ。実は 202 さんの勘違いとか?
0251デフォルトの名無しさんNGNG
http://dvd2svcd.doom9.net/
このページに有るDVD2AVIのコマンドライン版に日本語を完璧に読み込ませるには
どうソースを弄ったらいいんでしょうか?
今のところ一部の日本語が文字化けして、バッチ処理させようにも止まってしまい、
悩んでます。
0252デフォルトの名無しさんNGNG
>>251
全部読んで説明しろと?
果てしないアホだな
■ このスレッドは過去ログ倉庫に格納されています