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

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

■ このスレッドは過去ログ倉庫に格納されています
0001987NGNG
タイトルのとおり、
Visual C++ 初心者用スレッドです。

前スレ・関連スレは、>>2 ぐらい。
0174デフォルトの名無しさんNGNG
>>173
「アロー演算子」で調べるといいよ。
0175デフォルトの名無しさんNGNG
条件が関数の後だと思っている辺り、Cの基礎をやり直した方がいいと思われる
0176デフォルトの名無しさんNGNG
条件がCだと思っている辺り、C++の基礎をやり直した方がいいと思われる
0177173NGNG
ネットと参考書ひらけたが構造体とオブジェクトでの
文法しかのってない、もう少しヒントを、、、
0178デフォルトの名無しさんNGNG
C言語でも可能な記述。ただしアローの先が関数ってのは有り得ないけど
構造体のポインタを返す関数に対して使える。
よって175の指摘どおりCの基礎をやり直すべき。
0179デフォルトの名無しさんNGNG
>アローの先が関数ってのは有り得ないけど
ん?
typedef struct
{ HRESULT (*LoadStandardCursor)(int); } func_struct;
func_struct *AfxGetApp();

AfxGetApp()->LoadStandardCursor( IDC_ARROW);
0180173NGNG
あ、なるほど。
そのままだったね
基礎たりないね
>アローの先が関数ってのは有り得ないけど
これはありえると思うんだけど、てかメソッドか?
0181デフォルトの名無しさんNGNG
構造体内の関数ってC言語の規格だっけ?
細かい所はぐちゃぐちゃなのでスマソ...
0182デフォルトの名無しさんNGNG
失礼良く見てなかった。
関数ポインタね。さらにスマソ...
0183173NGNG
>構造体のポインタを返す関数に対して使える。
ということでいいですね
動作テストははぶいちゃいます
0184173NGNG
軽いプログラムをつくっているのですが
1 API
2 MFC
3 ウィザード
この内どれで作るかまよってます
モノはアナログ時計でリージョン使おうと思ってます
ウィザードが安定してそうなんですが、ウィンドウを
作る前にオーバーライドするのってどうしてます?
0185デフォルトの名無しさんNGNG
>>173
( ゚д゚) <ポカーン…
0186デフォルトの名無しさんNGNG
>>184
手軽に作るならMFCが楽ぢゃない?
ウィザードってよく分からんが。

0187173NGNG
申し訳ない、、
全力で説明してるんだが、なんとか読み取ってくれないかの〜
ウィザードつかったときにもうすでにフレームとユーザビュー
が完成されてるんで、なんとかリージョンをかますことができんか
考えてます、、、
0188デフォルトの名無しさんNGNG

すんませんがリージョンってなんですか?

0189173NGNG
>>184
MFCはMFCウィザード使わないでという意味です
ウィザードはMFCウィザードを使うという意味です
MFCのみだとCWndクラスをそのまま継承してリージョンが
できるが手作りだと不安定なきがしました、メッセージ関係とか特に
0190デフォルトの名無しさんNGNG
>>187
SDIで作成すると白い背景のウインドウ
1つだけじゃない? そこにごちゃごちゃ
追加していけばいいのでは?

0191デフォルトの名無しさんNGNG
昔のEmi Clock みたいなの作りたいのかな?
丸いウインドウ。

0192173NGNG
>>188
リージョンはウィンドウのスタイルを自由な形で利用する意味で
書きました^^;
普通だとダイアログかSDIの矩形なので面白くないと思って、、
で、今回は時計なので楕円です
0193デフォルトの名無しさんNGNG
>>192
漏れもそういうのは作り方わかんないから、他の人の
アドバイスきぼんぬ。
0194173NGNG
>>190
SDIにごちゃごちゃ書くときに
ウィンドウの形を変えるには
ViewのPreCreateWindowメソッドに書いたらええですか?
Frameはほっといたらいいよね?

>>191
そう
0195デフォルトの名無しさんNGNG
ttp://techtips.belution.com/ja/vc/0007/

検索したらすぐ出てきたぞ。
0196173NGNG
>>194
なるほど、こりゃええわ
でも、APIやな

MFCウィザードやったらFrameクラスいじったらええみたいや
なんとかできそうや、ほな
0197デフォルトの名無しさんNGNG
>>188
DVDで使われている地域コードのこと。
0198デフォルトの名無しさんNGNG
あるCSVファイルを読み込んで、
中にある値を2倍して
新しいCSVファイルに出力
するプログラムを作りたいのですが、
現在難航しています。
そこで質問なのですが、
CSVファイルのデータは全て
文字列データ型なのでしょうか?

atof()関数で文字列を数値型に変換しようと
ソースに記述するとシンタックスエラーとか
言われます。
このあたりで何かヒントがあればお願いします。
0199デフォルトの名無しさんNGNG
>>198
>CSVファイルのデータは全て
>文字列データ型なのでしょうか?
CSVファイルのデータは全て
文字列データ型なのでしょうか?
0200デフォルトの名無しさんNGNG
>>198
シンタックスエラーが出ている時点で
CSVファイルの構造がどんなものであろうがそれ以前の問題
0201デフォルトの名無しさんNGNG
>>198
エクセルかなんかで吐いたデータだろうが、
数値型で入れてくださいと言っても、入れてくれるとは限らんぞ。
文字列で受け取って、その後数値かどうか判定してからatof()しないと。。。

0202198NGNG
レスありがとうございます。

現在の状況としてはおおよそ↓のように
なっているのですが、なにか突っ込むところが
あればお願いします。
(突込みどころ満載かもしれませんが、ネタじゃないです)
ch→char型変数
ddt,ddr→double型変数


if(isdigit(ch)==false){ /* 入力文字が数値以外のものだったら実行 */
  fout.put(ch);
}
  else if /* 文字列を数値に変換、×2演算 */
  ddt=atof(ch); /*ここでシンタックスエラー*/
  ddr=ddt*2;
fout.put(ddr);
0203デフォルトの名無しさんNGNG
>>202
文字列と文字を同じ扱いしてないか?
0204198NGNG
たしかに言われてみれば考えていなかったです。
っつーことはchを
char ch[80];
にしたらよいのでしょうか?
試しにやってみると
エラーが2行出てしまいました。
「引数を 'char [300]' から 'char &' に変換できません。」
て言われます。

どこが悪いのでしょうか?
getlineとか使うんですかね?
とりあえずやってみます。
0205デフォルトの名無しさんNGNG
>>202
普通は、

if(sscanf(str, "%f", &ddr) == 1){
fout.printf("%f", 2*ddr);
} else {
fout.printf("%s", str);
}

こんな感じになるんじゃないか?
0206デフォルトの名無しさんNGNG
>>202がネタにしか思えない奴の数→(1)
0207デフォルトの名無しさんNGNG
>>202は、CSVファイルをちゃんとParse出来ているんだろうな。。。?
まさか、一行一フィールドとして処理してないだろうな。。。
0208ひよこ名無しさんNGNG
最近 Visual C++ に手を出した元 Visual Basic ユーザーです。

そこで質問なんですが、
Visual C++ のコントロール(フォームベースのやつ)と VB のコントロールって
つまりは何が違うんですか。扱う上で。

お絵かきソフトっぽくしようとしてピクチャ貼り付けたらどうも上手くいかない・・・。
VB だったらピクチャーコントロール貼り付けて MOUSEMOVE にコード書けば
OKなんですが。。。

うーん。なんかよくわかりません。
0209デフォルトの名無しさんNGNG
VBライクに組みたいなら、Builderの方がいいかもね。
0210208NGNG
あのう、VCで VBのピクチャコントロールに相当するものって
ピクチャってやつですよね?

あそこに MouseMove の処理を書きたいときってどうすればいいんですか?
0211デフォルトの名無しさんNGNG
VBで〜したのをVCではどうすれば良いって聞くよりは、VCで〜をしたいと書いた方がいいと思うが。
0212デフォルトの名無しさんNGNG
うむ。ピクチャコントロールとか言われても何のことか
わからん。
0213デフォルトの名無しさんNGNG
俺はピクチャと言われてもピンとこん。
0214デフォルトの名無しさんNGNG
VBのピクチャコントロールとは
PictureBox のことと見た。
0215デフォルトの名無しさんNGNG

BMP画像を貼りつけて、その上にマウスカーソルが
あるかどうかを感知したいんですかね?

0216デフォルトの名無しさんNGNG
>>215
単純にグラフィックしたいだけかも知れんぞ。
それなら、そのままFormに描けばいい。
あと、Messageについて勉強することだな。
0217デフォルトの名無しさんNGNG
>>184-189
まだ読んでるかな?
VC++のウィザードってのは、あれはたんっっっっなる
ソースコード生成ツールだからその点よろしく。
でもMFCを使うならウィザードが作るコードを骨組みに
するのがお勧め。
0218デフォルトの名無しさんNGNG
>>184
3はギャグだよな?
0219208NGNG
>>216
そうです。その通りです。

Form に描画の処理書く方法もあるんですが、ピクチャボックスっぽい外観を
付けたい場合はどうすればいいんでしょう?
(左半分に描画域、右半分にボタン類を付けたい)

CView クラスをそのまま継承すれば描画処理は簡単に作れると思いますけど、
どうしてもフォームベースで作ってみたいんです。
0220デフォルトの名無しさんNGNG
スレ違いのような気もするのですが…教えてください。
VC++でフリーソフト作って公開するに当たって、
中には「動作環境」を記載しているサイトもありますが
あれはロウスペックのPCに入れて動くか動かないかを
徐々に試していくしか方法はないのでしょうか?

それともPCの動作を制限し、その上でexeファイルを動かせるような
ソフトがあるのでしょうか?
0221デフォルトの名無しさんNGNG
>>219
Staticか、使ったこと無いけどPictureコントロールを貼り付けて
右クリックでプロパティー出してスタイル変更。
設定できないスタイルや背景色はは、別途プログラムで変更できる。
ttp://www.kumei.ne.jp/c_lang/ も参考にするべし。
0222デフォルトの名無しさんNGNG
ウインアプリでウインドウを作る時に
myProg.hbrBackground=GetStockObject(WHITE_BRUSH);//背景
の所に
error C2440: '=' : 'void *' から 'struct HBRUSH__ *' に変換することはできません。
と言うエラーが出るのですが、解決方法を教えてください。
0223デフォルトの名無しさんNGNG
myProg.hbrBackground= (HBRUSH)GetStockObject(WHITE_BRUSH);//背景
0224デフォルトの名無しさんNGNG
>>222
これは良く出るエラーだな。型をしっかり指定すればOK!
0225デフォルトの名無しさんNGNG
>>220
「CPU:最低400MHz」とかいうの?
ゲームとかでヨッポドタイムクリティカルなものでもなければ、意外と適当と思われ。
自分のPCで、クロックダウンして動かしてみるとか(w
0226デフォルトの名無しさんNGNG
今まで、ボーランドのフリーの使ってましたが、ここを読んで、勢いあまってVC++.NET購入したんですけど、使い方が全然分からないです。
とりあえずプログラム動かしたいんですけど、どうすればいいんすか?
誰か丁寧に教えてくだしい。
0227aaaNGNG
http://www5b.biglobe.ne.jp/~ryo-kyo/osu.html

http://my.vector.co.jp/servlet/System.FileDownload/download/ftp/0/279026/pack/win95/game/table/pachinko/sikisai.lzh
0228デフォルトの名無しさんNGNG
>>226
「Windowsプログラミングの基礎知識」 柏原 (ascii)
おすすめ。
0229デフォルトの名無しさんNGNG
>>225
クロックダウン…なるほど…
危険そうな言葉ですが頭には入れておきます。
どうもありがとう!
0230デフォルトの名無しさんNGNG
COM コンポーネント作ってみたんですけど、全体的に作り直したいんで、
全部削除して最初からやり直したいんです。

COM って作った時点でレジストリに登録されますよね?
ですから、作業フォルダだけ消したら問題が生じると思うんですが。。。
レジストリから削除するにはどうすればいいんですか?
0231デフォルトの名無しさんNGNG
regeditで削除すりゃいいじゃん。
0232デフォルトの名無しさんNGNG
Windows2000で、通常使用するプリンタを任意に
切り替えるプログラムを作成したいのですが…。
SetPrinterが失敗してしまって、切り替えることができません。
なにか方法はありますでしょうか?
0233デフォルトの名無しさんNGNG
>>220=229
最低限のクロック周波数なんてみんな結構いい加減だよ。
「責任逃れ」な値を書いておけば大丈夫(笑)

それよりもプラットフォーム(98/Me/NT4.0 等)の心配したほうがよろし。
0234bloomNGNG
http://www2.leverage.jp/start/
0235デフォルトの名無しさんNGNG
>>233
あれって、手持ちにあるPCの中でも低スペックのもので動作させて、
満足行くような処理が出来たらそれが最低環境っていう風に決めてんじゃないの?
0236デフォルトの名無しさんNGNG
超初心者は何やったらいいんだろう・・・
とりあえず箱を抱いて寝ています。
0237デフォルトの名無しさんNGNG
デバッグ実行後メモリリーク(解放忘れ)があった場合、
そのことがアウトプットに表示されるようにするには
どうすればいいのでしょうか?
知人が表示させているのを見たことがあるのですが、
どこで設定すればそうなるのかわかりません。
0238デフォルトの名無しさんNGNG
>>237
デバッグ環境だと普通に表示されると思うが。。。
0239237NGNG
>>238
それが、WinMainで
char *p = new char[ 100 ];
を実行して、そのままdeleteせずに
終了しても何も表示されません。

ひょっとして、何かincludeしなければ
いけないとかいうことなのでしょうか?
0240デフォルトの名無しさんNGNG
>>239
単にデバッグ版を実行してるだけじゃなくて?
0241デフォルトの名無しさんNGNG
>>239
非MFC環境の場合であれば

#include <crtdbg.h>
_CrtSetDbgFlag()

これらに関連する関数等を調べていけば、
何かわかってくるかと。
0242デフォルトの名無しさんNGNG
俺の場合はAfxBiginThreadで起動したスレッドの先頭でCString msg;として
その中でmsg.Format云々を使ったりするとメモリリークになるんですが。
0243237NGNG
>>241
その関数を実行することで
リークが表示されるようになりました。
ありがとうございます。
0244222NGNG
>>223-224 できました。ありがとうございました。
0245デフォルトの名無しさんNGNG
>>242
TerminateThread使ってない?
0246デフォルトの名無しさんNGNG
ハンドルをグローバル変数にするのはだめですか?1回1回引数で渡すより
早いような気がして。後々問題とか出てきそうですけど。
0247かおりん祭りNGNG
http://www.saitama.gasuki.com/kaorin/

  〜oノノハヽo〜
     ( ^▽^)/⌒\                       , −-
     ((ニ[二=(  こんなのがございま−−==≡≡す♪  ))
   /∧=:||  \_/                       `ー‐‐'
     じ/___/
0248デフォルトの名無しさんNGNG
>>246
別に駄目って事は無いぞ。
0249デフォルトの名無しさんNGNG
Java厨じゃないんだから
グローバル=悪なんて固定観念
持つ必要はない
ライフタイムがプロセスと同一とか
終始アクセスが発生するとか
必要なら使えばいい
0250デフォルトの名無しさんNGNG
>>249
Javaだと駄目なのか?使ったこと無いから知らん。
0251デフォルトの名無しさんNGNG
分かりました。ありがとうございました。
0252超初心者NGNG
visualc++で、ボタンを押すと新しいフォルダを作成するようにさせるには
どうしたらいいですか??
0253デフォルトの名無しさんNGNG
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
のどこから
LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
を呼び出しているのですか?うまく質問できないのですが、教えてください。
0254デフォルトの名無しさんNGNG
DispatchMessage(&msg);
0255デフォルトの名無しさんNGNG
>>253
CALLBACKの付いた関数はソースからではなく、
ウインドウズ(OS)から呼び出されるんですよ。
0256デフォルトの名無しさんNGNG
>>252
何か1冊初心者向けの本を読んだほうが良いと思われ。
フォルダの作成と、ボタンに反応する関数の作り方では
アドバイスが異なります。

0257253NGNG
>>254-255 分かりました。ありがとうございました。
0258デフォルトの名無しさんNGNG
>>245
使ってないっす(´Д`;)
そのスレッドの中でWaitForSingleObjectでループしてるんですが
そのループ内で宣言してあげたら何故かメモリリークが取れました。
・・・なぜ・・・?
0259デフォルトの名無しさんNGNG
// formatting (using wsprintf style formatting)
void AFX_CDECL CString::Format(LPCTSTR lpszFormat, ...)
{
ASSERT(AfxIsValidString(lpszFormat));

va_list argList;
va_start(argList, lpszFormat);
FormatV(lpszFormat, argList);
va_end(argList);
}

void AFX_CDECL CString::Format(UINT nFormatID, ...)
{
CString strFormat;
VERIFY(strFormat.LoadString(nFormatID) != 0);

va_list argList;
va_start(argList, nFormatID);
FormatV(strFormat, argList);
va_end(argList);
}
0260デフォルトの名無しさんNGNG
>>258
シングルスレッド用のライブラリになってない?
0261デフォルトの名無しさんNGNG
ウインアプリで、何もイベント(キーが押された、マウスが動いた等)が起こって
いないのに、表示したりできますか?できるなら教えてください。
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main(void)
{
for(;!kbhit();)printf("%8d",rand());
return 0;
}
コンソールで書くと、こんな感じです。
0262デフォルトの名無しさんNGNG
乱数を使ってタイマーを設定すればよろしいかと。
0263デフォルトの名無しさんNGNG
もまいらのおすすめの文献をおしえr・・・教えて下さい!
始めたばかりの初心者にぴったりな文献を、どうか、お願いしまつ。

Windowsプログラムより先に、MS-DOSのプログラムを先に
勉強した方がいいんでつか?

初心者的質問スマソ(´Д⊂
0264デフォルトの名無しさんNGNG
推薦図書/必読書のためのスレッド PART 9
http://pc2.2ch.net/test/read.cgi/tech/1046937366/
0265261NGNG
>>262 できました。ありがとうございました。
0266デフォルトの名無しさんNGNG
マイクロソフトのC++でソフトを作りたいのですが
販売しているパッケージがいろいろあってどれを使えば買えばいいのか
分かりません、以下の用途の場合どのパッケージを買ったらいいのでしょうか?

・C/C++はまったくの初心者で使いながら学習していきたい
・画像ビューアを作りたい、GV,Susie,IrfanViewのようなもの
0267デフォルトの名無しさんNGNG
>>266
standard で十分と思ふ。
お金に余裕があるなら Professional を
購入してもいいと思うけど。

Win98なら、VC++6.0しか選択肢なし。
Win2000/XPなら、VC++.NETも使える。

.NETは良く分からんので、他の人に聞いとくれ。

0268デフォルトの名無しさんNGNG
>>266
一番高いのを買っておけば間違いはないよ
0269デフォルトの名無しさんNGNG
VC++を買うなら最低Pro。Standard買うぐらいならbccなりgcc(Migw/Dev-C++)で充分。
もっとも.netの場合VC++.netはstandard版しかないので自動的にVisual Studioになるが。

ちなみにアカデミック版VS.netはVS 2003への無償アップグレードの対象外らしいので注意。
0270デフォルトの名無しさんNGNG

VC++ Pro と Std の違いは
Standard -> MFC のみ
Professional -> MFC + ATL
だと思ったのですが、ATLってのはそんなに便利なんですかね?

自分はVC++6.0 Pro持ってるんですが、ATLは使ったこと無いので、
MFC + Platform SDK で十分かなぁと思ったもので。

0271デフォルトの名無しさんNGNG
わざわざ金払って最適化もできないコンパイラが欲しいなら止めないが。
0272デフォルトの名無しさんNGNG
つーか舞糞よ
いいかげんVisualC++.net Pro出せ
Stdなんか買うがボケが
0273学生NGNG
>>272
はげどう。
でも漏れは2003赤出身苦を待つけどなー。
■ このスレッドは過去ログ倉庫に格納されています