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

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

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

前スレ・関連スレは、>>2 ぐらい。
0706デフォルトの名無しさんNGNG
>>705
メモ帳のビューそのものにSetWindowTextすればいけるんじゃないかい?
0707705NGNG
レスありがとうございます。

>メモ帳のビューそのものにSetWindowTextすればいけるんじゃないかい?

これはどういう意味でしょうか?
メモ帳のハンドルという意味ですか?
0708デフォルトの名無しさんNGNG
>>705
HWND hwnd;
hwnd=FindWindowEx(FindWindow("Notepad", NULL),NULL,"Edit",NULL);
SendMessage(hwnd,WM_SETTEXT,0, (LPARAM) "( ´∀`)");

という方法もあります
0709デフォルトの名無しさんNGNG
>>707
分からんのだったらkeybd_eventでも使えば?
0710デフォルトの名無しさんNGNG
すいません。ラジオボタンを作って
一回作りました。
そのあとラジオボタンの数を増やそうと思って
そのラジオボタンをコピーして
それから貼り付けてボタン1、ボタン2と
いうコントロールIDに変更しました。

そしたら実行するとラジオボタンが2つともチェックされてしまい
ラジオボタンのチェックが一つに限定されることが
できなくなりました。どこがおかしいのでしょうか
0711デフォルトの名無しさんNGNG
>>710
日本語
0712デフォルトの名無しさんNGNG
>>711
クソレスしてないで答えろや。
0713デフォルトの名無しさんNGNG
>>710
IDの値を連続させる&グループ
0714デフォルトの名無しさんNGNG
VC++は2つのワークスペースを同時に表示させる事はできますか?
右側に別のワークスペースを表示して参考にしながら
現在のワークスペースをコーディングとか。
0715デフォルトの名無しさんNGNG
すいません、ウインドウ内に
色のラインを引きたいのですが
それはプログラムで書くしかできないのでしょうか。

それともスタティックテキストみたいに
簡単にラインを引くことはできるのでしょうか
0716デフォルトの名無しさんNGNG
>>715
プログラムで書いて下さい。
0717デフォルトの名無しさんNGNG
>>714
IDEの複数起動
0718 NGNG
>>715 CDCのMoveToとLineTo
0719 NGNG
あの〜、718も私じゃないです。
煽りはいらないので早くレスください。
0720デフォルトの名無しさんNGNG
>>719
こんな奴に教えたく無いね。
0721705NGNG
>>708さん
>>709さん
レスありがとうこざいます。
いろいろやってみます。
0722デフォルトの名無しさんNGNG
メイン文で構造体をポインタで宣言して、mallocした後で関数に渡しました。
その後メイン文でそれを使うにはどうすればよいですか?
typedef struct{
  int a;
  int b;
}KOUZOUTAI;
main()
{
  KOUZOUTAI *K;
  int i;

  K = malloc(i * sizeof(KOUZOUTAI));
  printf("%d", k[0].a );
         ↑ここに何を入れればKOUZOUTAIの中身をプリントできますか?

どうも自分&とか*の使い方がいまいちです。教えてください。
0723bloomNGNG
http://homepage.mac.com/ayaya16/
0724デフォルトの名無しさんNGNG
>>722
iの値が不定なので正常にメモリーを確保できません
さらにポインタがキャストされていないので、
エラーが出てコンパイルも出来ないことでしょう

中身を出力したければ確保したぶんだけループでまわして
メンバ一つ一つを指定してください
0725デフォルトの名無しさんNGNG
Cスレ行った方がいいと思うよ
0726722NGNG
>724
すばやいレスthx。ちょっと書き方が不十分でしたのでもう一度。
typedef struct{
  int a;
  int b;
}KOUZOUTAI;
main()
{
  KOUZOUTAI *K;
  int i = 3;

  K = malloc(i * sizeof(KOUZOUTAI));
  kansuu(K);       ←何かの関数をよんでると思ってください。
  printf("%d", k[0].a );

それと、キャストって何ですか?お願いします。
0727デフォルトの名無しさんNGNG
略
int j;
略
K = (KOUZOUTAI*)malloc(i * sizeof(KOUZOUTAI));
略
for(j=0;j<i;j++)
printf("%d %d\n",k[j].a,k[j].b);
0728デフォルトの名無しさんNGNG
http://yahooo.s2.x-beat.com/linkvp/linkvp.html
0729デフォルトの名無しさんNGNG
領域確保してるけど何もコピーしてないね
0730デフォルトの名無しさんNGNG
研究室にVC++が落ちてるんだけど勝手にインストールしちゃまずいかな?
0731デフォルトの名無しさんNGNG
>>730
ライセンスの種類によっては可能だったと思われ。
0732デフォルトの名無しさんNGNG
隊長、馬鹿(>>730)を発見しました!
いかがいたしましょう?
0733デフォルトの名無しさんNGNG
VC++ 6.0でADOを使用してAccessのテーブルから
該当件数を表示するものを作りたいのですが、
レコードセットの値を変換して取得する方法がわかりません。
お助けください。

_ConnectionPtr pCn;
_CommandPtr pCm;
_RecordsetPtr pRs;

::CoInitialize(NULL);

pCn.CreateInstance(__uuidof(Connection));
pCm.CreateInstance(__uuidof(Command));
pRs.CreateInstance(__uuidof(Recordset));

pCn->Open(L"Provider=Microsoft.Jet.OLEDB.4.0; Data Source =test.mdb",
L"",L"",adOpenUnspecified);

pCm->ActiveConnection = pCn;

pCm->CommandText = "SELECT COUNT(*) FROM 帳票 WHERE 担当 LIKE '%佐藤%'";pRs = pCm->Execute(NULL,NULL,adCmdText);

ここからどうすれば良いでしょうか?
0734733NGNG
申し訳ない。
何とかなりそうです。

_variant_t vIndex = (long)0;
_variant_t vCount = pRs->GetCollect(vIndex);
long l = vCount.lVal;
0735デフォルトの名無しさんNGNG
STLの事を質問しようと思ってタイトル検索したら

鳥嶋宇宙科学技術研究所(TSTL)どんな研究所?
■▼■各放送局STL周波数【スタジオ⇔アンテナ】

がイパーイ出てきました。鬱です


0736デフォルトの名無しさんNGNG
VisualC++.NETでVC++6.0同様にプロジェクトにリソーステンプレートぶちこんで
テンプレートにダイアログぶち込んだのにリソースのヘッダーファイルが
作られていませんでした。そのためかDialogBoxを使っても
キャラ配列で名前を指定したり、MAKEINTRESORCEでダイアログ
ボックスのIDを生でぶちこんだりしても、IDを認識していないのか
ダイアログボックスを作れません。だれか対応策教えてください。
0737デフォルトの名無しさんNGNG
>>736
ぶ、ぶちこむって、あんまり連呼しないで〜(*´д`*)
0738デフォルトの名無しさんNGNG
>>650,653 宛


 バ グ 込 み の ソ ー ス を プ リ ン ト ア ウ ト し て も
 次 の 日 に は も う 使 い 物 に な ら ん だ ろ ( 爆 笑



0739デフォルトの名無しさんNGNG
>>738
アメリカンジョークですか?
0740デフォルトの名無しさんNGNG
背景の透過の仕方が分かりません。SetBkColorを使うのは分かるのですが。教えてください。
0741名無し@沢村NGNG
>>740
SetLayeredWindowAttributes()
0742デフォルトの名無しさんNGNG
windws + vc+++
os XP

VCでプログラムを実行したあと、右上の×ボタンでウインドを消去

その後再びコンパイルしようとすると、LINK ERR 対象のファイルが使用中.....

これは終了処理が正しく行われていないからだと思われるのですが、
なにをしていない場合おこるのでしょうか?

windowsクラスは破棄しているのですが、それ以外にも defwndprocに何か渡さないといけないのでしょうか?
0743デフォルトの名無しさんNGNG
>>742
自己解決しました。
windowsクラスが破棄できていませんでした。
0744デフォルトの名無しさんNGNG
オススメの書籍教えて

ちなみに超絶初心者です
0745デフォルトの名無しさんNGNG
ねこぷー
0746デフォルトの名無しさんNGNG
>>744
完全自殺マニュアル
0747デフォルトの名無しさんNGNG
>>740
SetBkColor使うと真っ白(真っ黒だっけ?)の
モノクロビットマップにBitBltしたときに
設定した色の部分だけ色が変わるのです。(確か黒)
そのモノクロビットマップをマスクに使って
転送するのです。
0748デフォルトの名無しさんNGNG
最近C++始めたんですが、エディットボックス1〜10(m_ed1〜10)を配列に収集するのに、
for文で10回ループさせようと思ってるんですが、メンバ名にカウント変数[i]を反映させるにはどうしたら(・∀・)イイ?


int dat[10];
for(i=0;i<10;i++)
{
dat[i] = m_ed[i] ←こんなことがしたい…
}


厨でスマソ…
0749デフォルトの名無しさんNGNG
コントロールのIDを連番にして
GetDlgItem(ID + i, ・・・・・・)とか
0750デフォルトの名無しさんNGNG
datにコントロールのポインタを必要なだけ入れておけばいいだけでは?
0751デフォルトの名無しさんNGNG
>>750
いや、それをループでやりたいってことだろ
0752デフォルトの名無しさんNGNG
>>749,750
レスthx!!
750さんの方が簡単にできそうなので、さっそく逝ってきまつ♪
0753デフォルトの名無しさんNGNG
>>751
いや、正直、収集できたらなんでもいいんで、さっそくやってみまつ…
ポインタ、見過ごしてました…(汗)
0754デフォルトの名無しさんNGNG
え、もしかして
CEdit arrayEdit[10];
arrayEdit[0] = &m_ed1;
arrayEdit[1] = &m_ed2;
 :
 :
int dat[10];
for(i=0;i<10;i++)
{
dat[i] = arrayEdit[i]->GetLineCount();
}
みたいなことでいいのか?てっきり最初の
arrayEdit[0] = &m_ed1;の部分をループでやりたいのだと思って・・・
0755デフォルトの名無しさんNGNG
CEdit* だった。ま、いいか。
0756デフォルトの名無しさんNGNG
>748
DDXつかっての話だったら、
  DDX_Text(pDX, IDC_EDIT_NUM0, m_iNum0);
  DDX_Text(pDX, IDC_EDIT_NUM1, m_iNum1);
みたいに自動生成されるところで
  DDX_Text(pDX, IDC_EDIT_NUM0, m_iNum[0]);
  DDX_Text(pDX, IDC_EDIT_NUM1, m_iNum[1]);
と手動で書く。 と漏れはやってる。

力尽く主義なら 更新関数とかで
const int* pT[]= { &m_ed1, &m_ed2, ... };
for(int i=0;i<MAXNUM;i++) dat[i] = *pT[i];
てな方針を提案。
0757デフォルトの名無しさんNGNG
えっと…厨なんで、難しい記述はできないんですが、
int *dat[10]={&m_ed1,&m_ed2…}
の一行だけで、すべてはかたずきました…

ループは、その後のプログラムで使うんで、データ収集も、そのまんまそのループ内に入れようとしてただけなんですわ…



なにぶん、独学で本読みながら学んでるんで、まだまだわからないことだらけです…
(ノД`)シクシク
0758デフォルトの名無しさんNGNG
>>756
Σ(゜Д゜;≡;゜д゜)
も、漏れがやったのは、力づくなのか?そうなのか?(汗)
0759756NGNG
Σ(;´Д`)あ いや
変数名いまさら変えたくないYO! という場合はこちら みたいな
ニュアンスでな…   正直スマソ
0760デフォルトの名無しさんNGNG
DDXに頼り杉。EDITのIDを連番にして↓が最適解だと思う。
for(int i=0; i<10; ++i)
 dat[i] = this->GetDlgItemInt(ID_FIRST_EDIT + i);
0761デフォルトの名無しさんNGNG
何をもって過ぎることになるんだ。使えるなら使えばいいじゃないか。
0762デフォルトの名無しさんNGNG
わたしも760のようにいつも書いているのですが
書きながら、IDが連番であることを仮定したコードを書くのは
論理的に美しくないような気がして(´・ω・`)ショボーン となってしまいます。
0763デフォルトの名無しさんNGNG
初めまして、最近VC++を始めたばかりのプログラム初心者です。このたびは質問があって、「すれ立てるまでもない質問スレ」のほうから移動して書きこみさせていただきました。
Visual Studio.NET Standard Version2002を使ってManaged C++アプリケーションのコードを練習していて、いざコードを書き終わってビルドしたところ
「fatal error C1102:次の初期化が出来ません:クラスが登録されていません」というエラーがタスクに表示されました。そこをダブルクリックしたらstdafx.cppというところに飛ばされたのですが、
当方初心者のため、そこで何をしたらいいのかわからなくて問題を解決できないでいます。この問題を解決するにはどうしたらよいのでしょうか?
私の使っているOSはWindowsXPで教本には「ステップバイステップで学ぶVisualC++.NET実践講座Vol.1基礎編」を使っています。ステップ2の「animals」というプログラムを作っているときにこの問題が発生しました。
どうかご存知の方いたらよろしくお願いします。
0764デフォルトの名無しさんNGNG
>>763
ソースを書いたら?
0765デフォルトの名無しさんNGNG
>>763
VC++Ver6しか持ってないので細かいとこが違うかもしれんが。
プロジェクト→プロジェクトへ追加→コンポーネント及びコントロール(P)
あたりで追加コントロールが必要なのかもね。
0766デフォルトの名無しさんNGNG
>>763
「ステップバイステップで学ぶVisualC++.NET実践講座Vol.1基礎編」が
いかなるものか、わからないけど、プリコンパイルヘッダを使用しないとかにしてみる。
0767763NGNG
>>764
すみません、書くべきソースがわかりません・・・
>>765
とりあえず一般C++のクラスを追加をいじってみたら「新しい構文要素を読み出すのに失敗しました構文エラーが考えられます」というエラーメッセージが出てきました。
>>766
プリコンパイルヘッダはどのようにして使用しないようにするのでしょうか?

結局勉強不足で、質問ばかりになってすみません・・・もっと勉強してきます。
0768デフォルトの名無しさんNGNG
>>760等

クリンナップ時に、resource.hをExcelでソートしたりする香具師もいると思うが、ID_DLG1_EDIT1みたいな名前を付けとけば連番が崩れなくて安全だ。
漏れはDDX近辺にASSERT(ID_EDIT_1+1 == ID_EDIT_2);みたいなアホなチェックも入れて、厨房が壊したら本人が気付くようにしているぞ。

(自慢なのか?)
0769デフォルトの名無しさんNGNG
用途にもよるが、俺だったら連続なエディットならリストビューを使うことを検討する。
0770デフォルトの名無しさんNGNG
動的にコントロールを作ればいいだけのような気がするけど
0771デフォルトの名無しさんNGNG
>>763
プリコンパイルヘッダは、コンパイルの高速化のために
コンパイルの途中結果をファイル化しておくもの。
ソースの一部変更などであればそのまま使えるが
ヘッダやソースの大幅変更した場合は破棄されて
再び作成される。
リビルドすれば、まっさらな状態からコンパイルできる。

もしかしたら、プロジェクトの作成方法がおかしいかもしれないので、
プロジェクトだけ別名で作成して、既に打ち込んだソースは別のところに
バックアップして、新しいプロジェクトのソースに貼り付けて見るといいかも。
0772デフォルトの名無しさんNGNG
ダイアログのオーナードローコントロールなんですけど、描画関数の中で使う
フォントについて。

↓は合法なのでしょうか。
HFONT hOldFont = (HFONT) SelectObject(hDC, GetParent() -> GetFont() -> m_hObject);

↓は結構目にするんですが。
LOGFONT lf;
GetParent() -> GetFont() -> GetLogFont(&lf);
HFONT hFont = CreateFontIndirect(&lf);
HFONT hOldFont = (HFONT) SelectObject(hDC, hFont);
0773デフォルトの名無しさんNGNG
基本的なことなんですがお尋ねしたいことがあります。
オーバーロードの利便性とはどのようなことなんでしょうか?
また、オーバーロードすることにより起こりえる問題点などありましたら教えていただきたいです。
0774デフォルトの名無しさんNGNG
まずはオーバーロードについて勉強しろ。
勉強すれば自ずと分かるはずだから。
0775 NGNG
システムモーダルなCFrameWndのフレームってどうやればいいですか?
0776デフォルトの名無しさんNGNG
今までMFCを用いてプログラムを行っていましたが
SDKを用いたプログラムを勉強することにしました。
2つばかり質問させてください。

やはりゲームなどで用いる画像処理の効率は
SDKの方がいくらか高速になるのでしょうか?

あとSDKでのプログラミングでは
ClassWizardが使えないのですが
様々なサイトを調べても
あまりクラスを使って説明している人はいません。
SDKでクラスを用いるのは一般的でないのでしょうか?
0777デフォルトの名無しさんNGNG
>やはりゲームなどで用いる画像処理の効率は
どう比較するの?
ゲーム用の画像処理用のクラスがMFCにあるという前提?
だったら
>今までMFCを用いてプログラムを行っていましたが
いままで何もやっていないのと一緒
0778デフォルトの名無しさんNGNG
CStringの"123.4"などをfloatに変換する方法を教えて下さい。
0779763NGNG
>>771
その方法を試みましたが結果は変わりませんでした。
「ステップバイステップで学ぶvisual C++.NET実践講座」には各ステップごとのプログラムの見本のプログラムが入ったCD−ROMがあるのですが、
その見本のプログラムをビルドしようとしても同じエラーが起こりました。Visual C++.NET Standard自体を再セットアップしたほうがいいでしょうか?
0780デフォルトの名無しさんNGNG
>>779
CD−ROMのサンプルをプロジェクトディレクトリごとLZHかZIPにでも
アーカイブしてどっかにうpしたらいかが?
それと、エラーメッセージをコピー&ペーストで書き込んだほうが良い。
エラーメッセージの種類(コード)がそれでわかる。

それと、ほんの最初のほうにでもプロジェクトの作成方法みたいなのが
書いてないの?
0781デフォルトの名無しさんNGNG
>>778
atof
0782デフォルトの名無しさんNGNG
>>780
プロジェクトの作成は一回しましたよ。Hello Worldですけど・・・それは正常に動作しました。
ビルドエラータスクに出てくるエラーメッセージは次のとおりです。
animals fatal error C1102: 次の初期化ができません : 'クラスが登録されていません
↑これをエラータスクでダブルクリックするとstdafx.cppの一行目に飛ばされます。
下記アプロダにてサンプルをうpしました。よろしくお願いします。

ttp://cgi.members.interq.or.jp/hokkaido/asato/upload/upload.cgi

0783763NGNG
↑コメントに763と書いてあるやつでZIPです。
0784デフォルトの名無しさんNGNG
VC++Proはアクティベーションのリミットが10回しかないのでしょうか?
もしリミットを超えたら新しく買いなおさないといけないのでしょうか?
2〜3ヶ月に1度は再インストールするので、ものすごく不安なんです。
0785デフォルトの名無しさんNGNG
>>784
割れ厨いってよし
0786デフォルトの名無しさんNGNG
VC++にアクティべーションがあるの?.NET?
0787デフォルトの名無しさんNGNG
WindowsのVC++で、
マウスカーソルの座標をセットする命令って何でしたっけ・・・?
0788デフォルトの名無しさんNGNG
>>787
0xFFFF0E87
0789デフォルトの名無しさんNGNG
現在.NETを使っているのですが、
参考書の問題で「新規作成」→「リソーススクリプト」を作成して〜
とあるのですが、その本は古めなので.NETが載ってません。
.NETではどうやればよろしいのでしょうか?
リソーステンプレートというのを選んでもフォルダらしいものができるだけですし、
他も.rcらしいものは作成できなそうです。
ヘルプを見てもそれらしいものは見つけられません。
どなたかご教授お願いいたします。
0790787NGNG


SetCursorPos()で、座標数値を与えても、カーソルがモニター上の左上で固まってしまうのです。
なぜだろう・・・
0791デフォルトの名無しさんNGNG
SetCursorPosに与える引数が両方とも0以下ではないか、と憶測してみるてすと。
0792787NGNG

ためにし、SetCursorPos(400,300)とかして、
OnMouseMoveから呼び出して、
マウスクリックしている間、マウスを動かしてもカーソルが動かないようにしたいのですが、
プログラム自体が停止してしまうような挙動をします・・・。
0793787NGNG
マウスクリックでマウスカーソル座標Aを取得
そのままマウスクリック中、OnMouseMove内で、
SetCursorPosに座標Aを与えると、無限ループになるのかな・・・?
0794787NGNG
他の方法をかんがえます・・・・・・
0795デフォルトの名無しさんNGNG
>>793
試してないからわからんが、
LButtonDownでGetCapture()して、キャプチャー中はWM_MOUSE_MOVEメッセージを
破棄というのはどうだろう?
0796デフォルトの名無しさんNGNG
最近VC++.NETの質問増えてきたねぇ。みんな乗り換えてんのかな。
0797780NGNG
>>782
ごめん、やっぱ、.netは全然違う。
.netが手元にないのでちょっとお手上げかも。
.net持っている人、ヘルプ782です。
0798デフォルトの名無しさんNGNG
>>782
.netは持ってないから勘で答えてみるけど、
__gc
ってやつを使う場合、コンパイルオプションに/clr を指定しないと
いけないみたいだけど、やってる?

参考
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vccore/html/vcrefEECOMCompilation.asp
0799デフォルトの名無しさんNGNG
>>782
.NET2003からだけど問題なくコンパイルできた
0800763.782NGNG
>>798
1.プロジェクトの [プロパティ ページ] ダイアログ ボックスを開く。
2.[構成プロパティ] フォルダをクリック。
3.[全般] プロパティ ページをクリック。
4.[マネージ拡張] プロパティを変更。
というMSDNに書いていた手順で変更すればよいのでしょうか?
だとしたら私のVisualC++.NETでは4番の[マネージ拡張]プロパティというのが出てこないのですが・・・

>>799
コンパイルできましたか・・・ご報告ありがとうございました。
0801デフォルトの名無しさんNGNG
C#ってC言語よりもVBに近いんですか?
0802デフォルトの名無しさんNGNG
>>800
まあ、勘なのでそんなもん。

ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vcmex/html/vcgrfmanagedcprojecttypes.asp
の「Managed C++ アプリケーション」というやつでプロジェクトを作っとかないと4.が出ないとか?
でも2003で問題ないということは、関係ないかも。
0803763.782NGNG
>>802
問題が発生しているのは、まさにその「Managed C++アプリケーション」っていうやつで作っているプロジェクトなんですけど4.は出てこないです。
0804デフォルトの名無しさんNGNG
>>776
ゲームってのはVBでもそうだけど基本的にイベントドリブンじゃなくて、
メインループを作ってその中をぐるぐる回すパターンが多い。
メインループとかいじるとMFCの意味無いじゃん。
だから必然的にSDKでやっちゃう。てかゲーム作成サイトなんてみんなそうでしょ。
まあ、最初MFCで作ってみるといいよ。みんなMFCで最初作ってあれこれ悩んで
SDKに移ったクチが多いと思うから。

こことかゲームの基本的な作り方の参考になると思うよ。
http://www.edit.ne.jp/~skyfox/axis/
上記HPの[AXIS ROOM] の [AXISゲーム製作入門(シューティング編)] てとこ。
今、ライブラリはDLできないけど、読めばなんとなくわかると思うです。
0805デフォルトの名無しさんNGNG
>>803
とりあえずC1102をMSDNで調べてみたら?
クラスというのがanimalクラスを指すのか、別のものを指すのか分からん。
■ このスレッドは過去ログ倉庫に格納されています