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

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

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001987NGNG
タイトルのとおり、
Visual C++ 初心者用スレッドです。

前スレ・関連スレは、>>2 ぐらい。
0875デフォルトの名無しさんNGNG
老いた頭の回転の悪い貧乏リーマンは先が無くて大変だな。
0876デフォルトの名無しさんNGNG

土方として、どうやって生活していこうと思ってるんだ?あ?
0877デフォルトの名無しさんNGNG
>>874
むかしはできなかってkど、今は制限なしだよ。
アカデミック版でもOK!
0878デフォルトの名無しさんNGNG
>>874
大丈夫
そのレベルの質問をしている時点で、
レジストしてもらえるソフトを作るのは不可能だから、悩む必要など無い
0879デフォルトの名無しさんNGNG
>>874
安心汁!
誰もお前が作ったソフトになんかレジストしないから。
0880デフォルトの名無しさんNGNG
デジャブ?!
0881デフォルトの名無しさんNGNG
デジャヴ
0882871NGNG
ヒデブ
0883デフォルトの名無しさんNGNG

OSのファイル/ファイルシステムに拡張情報を埋め込むことって
できないものですかね。

特にmp3などの管理を想定しているのですが、漢字ファイルネーム
の他に、ふりがな情報を埋め込めると管理や検索が楽になると
思うんですよね。他にはmp3に限りませんがCRC情報なども管理
できるといいと思うのですが。

ファイルのお尻に埋め込むことも可能だと思いますが、これだと
Winampなんかで再生できるのかどうか。各フォルダに隠しファイル
を置いて、管理する方法も考えてみましたが、エクスプローラで
ファイルを移動させたときに整合性を取るのが面倒だなと。

なんか良い方法ないもんですかねぇ。

0884デフォルトの名無しさんNGNG
mp3のフォーマット自体に情報を埋め込むためのタグがある
0885デフォルトの名無しさんNGNG
>>883
Mac 使えば。
0886デフォルトの名無しさんNGNG
>>883
NTFS使え。
0887デフォルトの名無しさんNGNG
>>883
IPropertySetStorage
IPropertyStorage
0888デフォルトの名無しさんNGNG
おせてくださーい!
シェルでDSWファイルをダブクリするとVCが立ち上がりますが、既存の
VCが閉じられてしまいます。別のプロセスとして立ち上げたいのですが
方法はあるのでしょうか?
0889名無し@沢村NGNG
>>888
ヌヒよ、VCを立ち上げてからプロジェクトを開けばいいだけだと思うが
0890デフォルトの名無しさんNGNG
沢村に教えてもらうとは…
プログラムをやめることを考えた方がいいかもよ
0891888NGNG
>>889
シェルからじゃ無理なんですかね。
オプションで「別のプロセスとして起動する」とかありそうな
気がしたのですがなさそうなので。。。
0892デフォルトの名無しさんNGNG
あるプロジェクト内で作ったクラスを、また別のプロジェクトで利用するには、
どんな手順でやればできるのでしょうか?
0893デフォルトの名無しさんNGNG
>>892
クラスのcppとhをその別のプロジェクトに含めれば良いだけじゃん?
0894デフォルトの名無しさんNGNG
>>888=>>891
当方、Win98・VC6ですが、以下のようにして出来ました。
(なんで出来るのかは理由はわかりませんが)

1)エクスプローラーでメニューから[表示]-[フォルダオプション]を選択
2)[ファイルの種類]のタブを開く
3)リストから「プロジェクトワークスペース」というのを選択して[編集]ボタンを押す
4)アクションの「MSDEVで開く」を選択して[編集]ボタンを押す
5)[DDEを使用する]のチェックを外す
※注意
チェックを外すと、デフォルトの文字列が消えてしまいます。
一応メモっておいてから外してください。
っていうか、自分が元に戻せなくなってしまいました
「DDEメッセージ」
「アプリケーション」
「DDEアプリケーションを実行していないとき」
「トピック」
のデフォルトの文字列を教えてください。
0895デフォルトの名無しさんNGNG
(;´Д`)…
0896894NGNG
おーい>>888=>>891、もういないのか
戻せねーよ、早く教えろよ!

親切心が仇に…
0897デフォルトの名無しさんNGNG
VC++.NETはC99に対応していますか?
0898888NGNG
>>894
すいませーん。
もうじき書きまーす!
0899デフォルトの名無しさんNGNG
2003は対応してる
0900894NGNG
マテゴルァ->>888! /\
      ヽ(`Д´)ノ  \/\
       (894)        \/\
      /\< ヽ  \    /    \/\
    /    \  |  \  |\    /    \/\
    |\    /  .|       \  |\    /    \ /\
   / \ \/    |             \  |\   /    \/\
 /    \ |    .|     ( ´_ゝ`)フーン     \ |\   /    \/\
 |\    /|     |   ./ (∩∩ )              \|\    /    \
 |  \ //\      |\     /|                \ /        \
 |   |/    \     |   \ /  .|        ウワァン!/\           >
 |   \    /|     |   |    |     ヽ(`Д´)ノ  /    \       / .|
 |     \ //\       |        / (888)  \       \   /    |
 |      |/   \        /\ /    < ヽミ3 \     /| /     |
 |      \    /|   /\/    \      \    /|   /         |
 |        \ //\/    \     \     /|  /                |
 |         |/   \     \    / | /                    |
 |         \     \   / | /                         .|
 |           \    /| /                              .|
 |            \ /                                  |
 |              .|                                   |

0901デフォルトの名無しさんNGNG
2002年発売の製品なのに1999年の規格に対応していないんだ(;´Д`)
0902888NGNG
>>894
どうもありがとう。
僕のはXpなのですが同じようなダイアログが出ました。
下がDDEを使うにチェックが付いているときの状態です。
結果はまた報告しますネ。
すんまそーん。

・DDEメッセージ(D);
Open("%1")

・アプリケーション(C);
msdev

・DDEアプリケーションが実行していないとき(N)

・トピック(T)
system
0903デフォルトの名無しさんNGNG
>>901
対応しなくても誰も困らないから
0904894NGNG
>>902
戻ったよ。これで、おあいこ。
一応出来るけど、他の影響があるかもしれないから
元に戻せるようにしておいた方がいいですよ。
0905892NGNG
>>893
その含め方なんですが、cppとhを利用したいプロジェクトのフォルダ内に
入れた後がわからないんです。
例えば、A.cppとA.hというのがあってそれを、B.cppで利用したいときは、
B.cppで、#include "A.h"と書くだけでは、CAクラスはまだ使えないですよね?
0906デフォルトの名無しさんNGNG
プロジェクト -> プロジェクトへ追加 -> ファイル
0907888NGNG
>>894
お手数かけさしてしまってすんませんでした。m(__)m
VS6.0とVS2002が両方入ってて今設定中です。
(楽しいAAも)どうもありがとう。。。
0908892NGNG
>>906
ありがとうございますた。m(__)m
0909デフォルトの名無しさんNGNG
VC++でTCPを利用して通信をしようとしています。
socket(PF_INET, SOCK_STREAM, 0);
でソケットを生成してread待ちするサーバを作成しているのですが、
相手先をANYにしている為相手のIPアドレスがわかりません。
受信したデータのIPアドレスを知る方法はありますか?
又、VCでソケット通信するコーディングは合っていますか?
もっと単純にTCPで通信する方法などあったら教えて下さい。
0910デフォルトの名無しさんNGNG
getsocknameとか。
0911909NGNG
>>910
これって自局IPアドレスを取得するだけではないのですか?
0912デフォルトの名無しさんNGNG
WinMXの検索ウィンドウのリストビューって+クリックで展開できますよね?
あれどういう方法で実装するんでしょうか?
0913デフォルトの名無しさんNGNG
getpeername
0914デフォルトの名無しさんNGNG
>>912
割れですね。放置。
0915デフォルトの名無しさんNGNG
別にMXじゃなくても展開できるだろ
0916909NGNG
>>913
どうもありがとう。
でも、なんか調べるとCSocket(?)というのがあるみたいですね。
これは使い易いのでしょうか?
当方UNIX系のソケットプログラミングしかしたことないもので…。
0917デフォルトの名無しさんNGNG
MFCのCSocketなら、捨てとけ。
0918デフォルトの名無しさんNGNG
エディットボックスm_ed1内に記入された値を16進データとして吸い出すにはどうしたらよいのでしょう??

BYTE dat=static_cast<BYTE>(m_ed1)

でいいんですかね??
0919デフォルトの名無しさんNGNG
BYTE型に16進などという定義はない
0920デフォルトの名無しさんNGNG
std::runtime_errorを派生したいんですが、
なんかコンパイルエラーの嵐です。
サンプルきぼんぬ。
0921デフォルトの名無しさんNGNG
良心的なアダルトだ
http://homepage3.nifty.com/coco-nut/
0922デフォルトの名無しさんNGNG
Ctrl+Alt+Delを押して出るタスクマネージャのアプリケーションに表示されるような
項目一覧を取得したいのですが、どうすればいいのでしょうか?
EnumWindowsとEnumWindowsProcを使用して試してみると、
なんか予想外にたくさんのウインドウが列挙されて困っています。
0923デフォルトの名無しさんNGNG
#include <stdio.h>
#include <ctype.h>

#define UP_T 0
#define LOW_T 1
#define DIG_T 2
#define PUN_T 3

int main()
{
char *str = "HkJn(4Nk59gL/=s";
char buf[4][20], *bp[4];
bp[UP_T] = buf[UP_T];
bp[LOW_T] = buf[LOW_T];
bp[DIG_T] = buf[DIG_T];
bp[PUN_T] = buf[PUN_T];
0924デフォルトの名無しさんNGNG
printf("初期値:\t%s\n\n", str);
for (; *str; str++) {
if (islower(*str)) *bp[UP_T]++ = *str - 'a' + 'A';
else if (isupper(*str)) *bp[LOW_T]++ = *str - 'A' + 'a';
else if (isdigit(*str)) *bp[DIG_T]++ = *str;
else if (ispunct(*str)) *bp[PUN_T]++ = *str;
}
*bp[UP_T] = '\0';
*bp[LOW_T] = '\0';
*bp[DIG_T] = '\0';
*bp[PUN_T] = '\0';

printf("大文字:\t%s\n", buf[UP_T]);
printf("小文字:\t%s\n", buf[LOW_T]);
printf("数字:\t%s\n", buf[DIG_T]);
printf("記号:\t%s\n", buf[PUN_T]);
return 0;
}
突っ込みどころがあれば突っ込んでちょ☆
0925デフォルトの名無しさんNGNG
>>922
プロセスを列挙するってことか?
どっかにソース付きのプロセスモニターが公開されてたはず。
検索してみたけどみつからんので、とりあえずcodeguruで。

ttp://www.codeguru.com/system/SimpleProcessViewer.html

0926922NGNG
>>925
レスありがとうございます。
プロセスではなくタスクマネージャのアプリケーションタブの方の一覧を
取得したいのです。
具体的に言えば、Windowsを稼動させるといろいろなプログラムが起動、常駐すると
思いますがその中でアプリケーションとして稼動しているものです。
そのアプリケーションのWidowTextと窓ハンドルを取得したいと思ってます。
どうやればいいのか、、、。・゚・(ノД`)・゚・。
0927デフォルトの名無しさんNGNG
少し前のMSDNmagazineに載ってたような気がするけどもう書店には無いだろうしなぁ。
ウィンドウを列挙して、ある条件を満たすものだけ抜き出す。
条件は可視で、タイトル文字列数が0でなく、オーナーを持ってなく、とあとなんだっけ。
0928デフォルトの名無しさんNGNG
>>926
目的のウインドウのウインドウクラスや周辺特徴の確認
一致するウインドウを検索
そしてウインドウ配下のコントロールへウインドウメッセージを送りアイテムを取得
文字列を受け取る場合はプロセス間メモリ共有を使う必要がある
0929デフォルトの名無しさんNGNG
>>927-928
レスありがとうございます。
なるほど、一発で列挙するAPIなどはなく、列挙したウインドウの中から搾ると
いうやり方なのですね。ありがとうございました。
0930デフォルトの名無しさんNGNG
窓ハンドルを取得して画面に表示しました。
そしてボタンを押すと、その窓ハンドルの対応するウインドウを最前面に出すように
しようと思っています。

画面に表示された窓ハンドルをCString文字列として取得しました。
::BringWindowToTop(HWND hWnd)を使用したいのですが、
CString文字列で取得した窓ハンドル(200CCとか)を
HWNDにするにはどうすればいいのでしょうか?
0931デフォルトの名無しさんNGNG
文字列を数値に直せば?
0932デフォルトの名無しさんNGNG
>>930
そもそもなんで文字列で取り出すの?
0933デフォルトの名無しさんNGNG
初歩的な質問です

<include>"tt.h"

std::vector< rFont > cFONTTYPE;
std::vector< rText > cTEXTOBJ;

cTEXTOBJ[0].Init(&cFONTTYPE);


//-------------tt.h
class rFont {
  func()
//略
}

class rText :public classBase{
void* pFTYPE;//        <----ここと

public:
void Init (void* pP )//        <----;ここは
};

どういう宣言をすればいいのでしょうか?

rTextの関数の中でこういうことがしたいのですが....voidのままでは使えないし

pFTYPE(2).func();

よろしくお願いします
0934デフォルトの名無しさんNGNG
http://www.yahoo2003.com/betu/linkvp2/linkvp.html
0935デフォルトの名無しさんNGNG
ちょっと質問ですが、CStaticコントロールにラインとか描画できますか?
ソースはこんな感じで書いてます。

CStatic *s = (CStatic *)GetDlgItem( IDC_STATIC );
CDC *cdc = s->GetDC( );
cdc->MoveTo( 0, 0 );
cdc->LineTo( 40, 15 );

開発ツール:Microsoft eMbedded Visual C++ 3.0
開発環境:Windows98SE
動作環境:CASSIOPEIA PocketPC
0936デフォルトの名無しさんNGNG
>>935
拡張メタファイルを設定できるみたいだから図を拡張メタファイルにして
SetEnhMetaFile()で設定すれば(CEはしらんけど)
0937デフォルトの名無しさんNGNG
>>936
お答えどうもです。
SetEnhMetaFileの引数って静的コントロールに描画される拡張メタファイルのハンドルらしいのですが
何を設定すればいいのでしょうか?
0938デフォルトの名無しさんNGNG
>>936
CStaticの派生クラスを作って
そのOnPaint()をオーバーライドして描画とか。
0939938NGNG
↑
>>936でなくて>>935です
0940デフォルトの名無しさんNGNG
SetTimer(111, 500, NULL)
とした場合、プログラム終了、もしくはKillTimerが使われない限り
ずっと500ミリ秒おきにWM_TIMERが送られてるということなんでしょうか?
0941デフォルトの名無しさんNGNG
>940
ぐぐればいっぱつだよ(´Д`)
>ttp://sysneitf.hp.infoseek.co.jp/cbuilder_timer.html
0942デフォルトの名無しさんNGNG
クラスウィザードで例えばCStaticを継承するCStaticExなるクラスを作成した時に
フォームにCStaticExを貼り付けるにはどうしたらいいのでしょうか?
0943デフォルトの名無しさんNGNG
>>937
固定の図形なら >>936 でいいですが、動的ならだめです。
プログラムで拡張メタファイルつくるなら

CMetaFileDC mdc ;
HENHMETAFILE hemf ;
CClientDC dc(hwnd) ;

CRect rect(0, 0, 500, -500) ;
mdc.CreateEnhanced(&dc, NULL, &rect, "MyApp") ;

mdc.MoveTo( 0, 0 );
mdc.LineTo( 40, 15 );

hemf = mdc.CloseEnhanced() ;

こんな感じ。この例ではローカルにhemfを宣言してるけど
グローバルか、MFCならCxxxAppのメンバー変数にしたほうがよいです。

CxxxApp::InitInstance()の中でm_pMainWndを作った後に
CClientDC dc(m_pMainWnd) ;
でCreateEnhanced()に渡すdcを作ってメタファイルを作るのがいいタイミング。

CxxxApp::ExitInstance()をオーバーライドして
DeleteEnhMetaFile(hemf) でメタファイルを破棄する

リソースにメタファイルを含めることもできたはずだけどやり方忘れた。
0944デフォルトの名無しさんNGNG
>>943
ご丁寧にソースを書いていただき有難うございます。
早速試してみます!
0945943NGNG
>>944
忘れてたけど拡張メタファイルはマップモードが基本的にMM_HIMETRICなので
mdc.SetMapMode(MM_HIMETRIC) ;
がいるかも。rect(0, 0, 500, -500)の4つめがマイナスになってるのは
このせい、MM_HIMETRICにしないならプラスでもいいかも。
動作しているのに描画されないときはこのへんが原因になることが多い。
0946デフォルトの名無しさんNGNG
>>933
自己レス
void Init (std::vector< rFont >* pP )
こういう書き方ができるようです。

C++って偉大だな。
;
0947デフォルトの名無しさんNGNG
>>945
補足ありりんです。
気をつけまーす
0948デフォルトの名無しさんNGNG
>>942
ヘッダでCStaticで宣言されているところをCStaticExに変える
0949デフォルトの名無しさんNGNG
>>948
ヘッダって貼り付けたいフォームのヘッダーファイルですよね?
CStaticはフォームに貼ってるのですが、CStatic宣言はないのですが・・
0950デフォルトの名無しさんNGNG
いつからC++は宣言が無くてもコンパイルが通るようになったんだ?
0951デフォルトの名無しさんNGNG
ヘッダのどの辺にCStaticの宣言があるか教えて下さい
フォームに10個並べてるから定義も10個あるんですよね?
違います?
0952デフォルトの名無しさんNGNG
>>951
横レスになりますが、
>>935=>>942=>>949=>>951ってことでいい?

クラスウィザードで変数作るってことでは。
そのときIDC_STATICをIDC_STATIC_EXとか
適当な値に変えておかないとダメそうですが。
0953デフォルトの名無しさんNGNG
出力結果が
一つ目==>○ーーーーーーscanf()で
二つ目==>□ーーーーーーscanf()で
○+□=△ーーーーーーーー△は2進数で表示
を作りたいのですがサッパリです。
#include <stdio.h>
int main()
{

0954デフォルトの名無しさんNGNG
>>953
#include <stdio.h>
int main()
{
printf("一つ目==>○ーーーーーーscanf()で\n");
printf("二つ目==>□ーーーーーーscanf()で\n");
printf("○+□=△ーーーーーーーー△は2進数で表示\n");
return 0;
}
0955デフォルトの名無しさんNGNG
void main(void)
{
char x='A';
int a=5,b=32;
printf("�@",x);
printf("%d+%d=(�A)x\n",�B)
printf("%d�C%d=%d\n",�D);
printf("変数%cの初期値は%dです\n",x+�E,a);
}
実行結果
変数xの初期値はAです
5+32=(0025)x
32%5=2
変数aの初期値は5です
�Eの答えがわかりません
0956デフォルトの名無しさんNGNG
よーし、俺がマジレスしちゃうぞ。



mainの戻り値の型はint
0957953NGNG
printf("%d+%d=%d\n",a,b,c);
cを二進数で
0958953NGNG
#include <stdio.h>
int main(void)
{
int a,b;
printf("1つ目\n");
scanf("%d",&a);
printf("2つ目\n");
scanf("%d",&b);
printf("\n\t\t演算結果\n");
printf("\t\t%d + %d=%d\n",a,b,a+b);
printf("\t\t%d - %d=%d\n",a,b,a-b);
printf("\t\t%d * %d=%d\n",a,b,a*b);
if( b==0 ){
printf("\t\t%d / %d0では割れません。\n\t\t%d %% %d0では割れません\n",a,b,a,b);
}
else{
printf("\t\t%d / %d=%d\n",a,b,a/b);
printf("\t\t%d %% %d=%d\n",a,b,a%b);
}
return 0;
}
どうかえりゃ
0959デフォルトの名無しさんNGNG
Visual C++ .NETでの質問です。
「変数の追加」では配列は追加できないのでしょうか?
でてくる画面で変数名の部分に test[30] と入れるとエラーになりますし、
変数の種類のところで int [30] とやりましたら一応は作成できたっぽいのですが、
コンパイル時に配列初期化失敗みたいなエラーになりました。
アドバイスお願いいたします。
0960デフォルトの名無しさんNGNG
VC++6.0とVC++.NET、どちらを買おうか迷ってます。
どうしたらよいでしょうか。
0961デフォルトの名無しさんNGNG
>>960
今から買うなら.NET
0962デフォルトの名無しさんNGNG
>>960
迷うと言うことは両方を比較検討したはずだが、
まず自分の調べた範囲を挙げてみてくれ
話はそれからだ
0963デフォルトの名無しさんNGNG
>>962
同意!

でも面倒だから.NET>960
0964デフォルトの名無しさんNGNG
あ、やっぱり今は買わないで2003買う。
0965デフォルトの名無しさんNGNG
全部買う。何でも買う。
0966デフォルトの名無しさんNGNG
>>959
STLを使おう

STLでぐぐれ
変数どころかクラスも追加できるよ。

.NET って良くしらないんだけどSTL使えるの使えないの?
0967デフォルトの名無しさんNGNG
>>966
そういう意味の質問じゃないと思うよ。IDEの使い方(または仕様)を聞いてるんだと思う。
0968デフォルトの名無しさんNGNG
C++を勉強しようと思い、.netを購入したまではよいが
一般的なテキストに書いてある構文を書きながら
覚えていきたいとおもっているのだが、起動させてから
何をどこに書けばいいのかわからん・・・・

こんな超初心者なオイラはどうすりゃいいんですか?
親切な皆さん、おすすめテキストやら解説サイトがあったら
教えてください。よろしくお願い致します〜
0969デフォルトの名無しさんNGNG
>>968
intとかelseとか入力すると色が変わるところがあるでしょ。そこに。
0970デフォルトの名無しさんNGNG
>>968
とりあえず新規作成で*.cppファイルを作って、
サンプルのプログラム打ち込んで、ビルドしてみたら
どうですか?

ビルドの際に、プロジェクトも自動生成されると
思ったけど。(VC++6.0の話)


0971デフォルトの名無しさんNGNG
>>968
推薦図書/必読書のためのスレッド PART 10
http://pc2.2ch.net/test/read.cgi/tech/1051496506/

ここの過去ログにWinプログラミングの参考
書籍があったはず。

0972デフォルトの名無しさんNGNG
>>968
とりあえず、参考書の購入でも検討してみては?

どれが適してるかは人それぞれだが、
個人的には林晴比古氏の著書とかがわかりやすいと思う。
0973デフォルトの名無しさんNGNG
>>968
嘘書くなアホ
マニュアル読め
購入したんだろ?
ワレザーは消えろ
0974デフォルトの名無しさんNGNG
セットアップガイドならあったけど、使い方を書いたマニュアルなんてあったかなぁ。
ちなみに6.0の話。
レス数が950を超えています。1000を超えると書き込みができなくなります。