★初心者にVisual C++を教えるスレ★ Part14
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGお兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。
■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう。
・できるだけ具体的に。
質問の仕方については次のページが大変参考になります。
http://www.hyuki.com/writing/techask.html
http://www.geocities.co.jp/Beautycare/4965/public/template.html
■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
(MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。
前スレ
★初心者にVisual C++を教えるスレ★ Part13
http://pc5.2ch.net/test/read.cgi/tech/1089011118/l50
0232デフォルトの名無しさん
NGNG自宅でも勉強しようとVC++.net2003を購入したんですが
Win32コンソールでソース書いて開始してもコマンドプロントが実行後すぐに
終了してしまいます。
どこか設定で終了させないようできるのでしょか?
#include <stdio.h>
void main(void)
{
printf("テストです。\n");
}
などと書いても一瞬表示されて自動終了します。
コンパイルもビルドもエラーはありません。
会社で使っているVC++6.0では表示されたあと何か
キーを押すと終了されるようなっています。
ちなみに会社も自宅もWinXPです。
0233デフォルトの名無しさん
NGNGありがとう!それを手掛かりに、
オプション→キーボード マップ スキームを「Visual Studio 6」
に設定したら直りました。
快適快適☆
0236デフォルトの名無しさん
NGNGコンパイルするには何かコツがあるんでしょうか?
いま手元にソースや環境がないので詳細な例とか
エラーメッセージとか出せないので申し訳ないんですが、
class MyClass {
template <class Type>
static bool fetchValue(Type & value);
}
こういった感じのコードをコンパイルできないんです。
gccとかVisual C++ .NETでは通るのに。。
何か関連する情報をご存じでしたら教えていただけませんか?
0237232
NGNGVC++6.0のときのようにワークスペースを切り替えできるようなものはVC++.net2003ではどのように設定すればいいのでしょうか?
ソリューションエクスプローラからスタートアッププロジェクトに設定でことをすませておりますが、
以前のようにワークスペースをメニューバーから簡単に切り替えられないものかと思います。
どうぞご教授お願いします。
0238デフォルトの名無しさん
NGNGVC6はテンプレートに完全に対応してないとか聞いたが
0239デフォルトの名無しさん
NGNGtypoだと思うけど
template <class Type>
class MyClass {
...
でしょ?
とりあえず必要十分なソースを出してくれ。
話はそれから。
0240デフォルトの名無しさん
NGNGメンバテンプレートって言ってるから>>236であってると思うけど。
0241239
NGNGなるほど、それで分かった。
VC6 はメンバテンプレートには対応してないんだ。
俺、VC6 しか使ってないから、>>239みたいのでも
メンバに使ってればメンバテンプレートって言うのかと思ってたよ。orz
>>236さん、あきらめてください。
0242デフォルトの名無しさん
NGNGただ、
MyClass::fetchValue<char>(0);
という感じで、型指定をしている場合は通らないハズ。
自動的に型を判別出来る場合は通る。
0243デフォルトの名無しさん
NGNGclass MyClass {
public:
template <class Type>
static bool fetchValue(Type & value)
{
value = Type();
return true;
}
};
int i;
MyClass::fetchValue(i);
VC++6SP6で通ったけど素直に.NETに移行した方がいいと思う。
0244デフォルトの名無しさん
NGNGメニューの所が窪んだ感じ(視覚的に)なって、動きには関係ないんですが、
どうにかあの窪み(?)を無くせませんか?
VC++2003です。
0245虎夫
NGNG割り込みによって一定時間ごとにデータを取得しております。
このとき割り込みの周波数を100[Hz]に設定すると、
プログラムは0.01秒毎にタスクを行います。
(PCのCPUが十分であると考えて)
たとえばタスクA,B,Cを割り込みの1周期に1度行うとすれば、
Aのタスクは0.01秒ごとに遂行されます。
しかし、もしBというタスクが常に2秒かかるタスクだとすれば、
それぞれのタスクは2.01秒に1回しか遂行されません。
これはあれ程度しかたありません。
現在私の悩んでいる問題は、
A,Cというタスク(1回に1msもかからない)を0.01秒ごとに
遂行して、ある条件の時にBというタスクを行いたいとすると、
今のままでは、A,Cは普段0.01秒に1度タスクが遂行されますが、
Bが遂行されるときにはタスクが2秒(Bの遂行時間)待ちが生じます。
こんなとき、BをA,Cとは並列に遂行させ、
常にA,Cを0.01秒ごとに遂行させるにはどうすればよいでしょうか?
(ここで、Bが遂行中に次のBの命令がくることはないとします。)
0246デフォルトの名無しさん
NGNG>MyClass::fetchValue<char>(0);
>
>という感じで、型指定をしている場合は通らないハズ。
げ、まさにそれです。
>>243
みたいに <> を付けないで呼び出せばよかったんですね。
情報ありがとうございました!
ただ、
class MyClass {
public:
template <class Type>
static Type fetchValue(const MyInstance & instance, const string & key);
};
int i = MyClass::fetchValue<int>(instance, key);
こんなことはVC++6ではできないということなんですよね。。。
0247デフォルトの名無しさん
NGNG>こんなことはVC++6ではできないということなんですよね。。。
うむ。
VCToolKitとか、VC2005Expressβとか落として使ってみるのも手だけど、
おそらく、たくさんコードを書き換えないと動かない予感......
0248デフォルトの名無しさん
NGNGプログラミング以前の問題
0249デフォルトの名無しさん
NGNGA,Cの処理は10ms以内に収まるのであれば割り込みトリガそのもので
シーケンシャルに動かして、Bの処理は割り込みトリガからスレッド起動で
処理するとか。A,CとBは同期してる必要がなければ、ね。
0250デフォルトの名無しさん
NGNG何かサンプルコードとかがあって、わかりやすいHPあれば教えて下さい。
0252デフォルトの名無しさん
NGNG0253デフォルトの名無しさん
NGNG�d。勉強してきま
0254デフォルトの名無しさん
NGNG最適は人によってそれぞれ。
よって答えることは不可能。
0255デフォルトの名無しさん
NGNG例えば、coutで"数値を入れてください"と表示させて
数値を入れた後に"数値を入れてください"の部分が消え
数値を入れた後の答えだけがでるようにするにはどうすればいいのでしょうか?
それとdos画面でreturn 0;とcoutの間に改行を入れるにはどうしたらいいですか?
ご教授お願いします。
0256デフォルトの名無しさん
NGNG完全なスレ違い
それはVisual C++ではなくてC++
0257デフォルトの名無しさん
NGNGsystem("cls");
0258デフォルトの名無しさん
NGNG失礼しました。
>>257
できました!!ありがとうございます。
0259偏差値37
NGNGプログラミング経験は無いです。
よろしくおねがいします。
0260デフォルトの名無しさん
NGNGhttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vccore/html/_core_.2f.o.asp
の/Oオプションって複数していできるんですか?
例えば「/O2 /Ot」とか?
0261デフォルトの名無しさん
NGNGただし、組み合わせによっては無効になるものもある。
0262デフォルトの名無しさん
NGNGA, B, Cという3つのプロジェクトがあって、
BはAのソースとヘッダを、CもAのソースとヘッダを
自らのものと混ぜて一緒にコンパイルしたいのです。
このとき、BやCのソリューションエクスプローラに
Aのソースとヘッダを登録しないとだめなのでしょうか。
Aの構成を変えたときに、BとCの両方を変更するのが
面倒くさくて…。
0263デフォルトの名無しさん
NGNGネイティブコードでも使えるようなこと書いてあったんですが、どうすればいいんでしょうか。
ちなみに使えないというのは、プロファイラを有効にして実行しても何も起こらないって意味です。
誰か助けてください。
0265デフォルトの名無しさん
NGNG経験だと.NETアプリって重いから移行したくない…。
日曜プログラマみたいな自分でも移行してたほうがいいですか?
0266デフォルトの名無しさん
NGNGVC.NETは.NETアプリだけでなく、
従来通りのWin32ネイティブのアプリも作成可能
VC6 = Win32アプリ
VC.NET = Win32アプリ or .NETアプリ
移行の必要はさほどないと思います。
0267デフォルトの名無しさん
NGNGWin2000/VC++環境にて、LANアダプタのDHCPの設定(Enable/Disable)は
どのようにすれば取得できるのでしょうか?
色々調べたのですが、解りませんでした。
ご教授、宜しくお願いします。
0268偏差値37
NGNGという本を買ってきました。
0269デフォルトの名無しさん
NGNGで何よ?
0270デフォルトの名無しさん
NGNGhttp://hp.vector.co.jp/authors/VA023882/review.html
新VisualC++6.0入門 ビギナー編 林晴比古
> やさしすぎて、内容的には、MFCプログラミングのほんの触りだけという感じなので、
> この本だけで何かを創るのは不可能でしょう。
> また、サンプルソースの所々にちょっと不適切と思われる部分が見られます。
0271偏差値37
NGNG3部に分かれてますね。
・VC++.NETの操作法
・VC++.NETを使ったプログラミング
・C++の説明
の3つです。。。Amazonのレビューにもありましたがマニュアルって感じです。
書店でVC++.NETの本を探したのですが他の本は体系だてて説明していないのでこれにしました。
0272デフォルトの名無しさん
NGNG同じ本持ってるけど、結構いい
0273デフォルトの名無しさん
NGNGダイアログボックスベースのファイルを作っています。
*.exeファイルのアイコンの設定方法がわかりません。
ウィンドウベースの場合では、int WINAPI WinMain関数中に
WNDCLASSEX wcl;
char iconName[] = "IDI_ICON1";
wcl.hIcon = LoadIcon(NULL, iconName);
とすることでアイコンを設定できますが、ダイアログボックスベースの場合は
どこに、どのように既述をすればよいのでしょうか?よろしくお願いします。
0274デフォルトの名無しさん
NGNG0275デフォルトの名無しさん
NGNGhIcon=(HICON)LoadImage〜
って感じでアイコン読み込んで
SendMessage(hDlg,WM_SETICON〜
でメッセージ送ればできるのではないだろうか。多分。
0276デフォルトの名無しさん
NGNGGetAdaptersInfo関数かなあ。
複数ネットワークカードがささってる場合の処理に気をつけた方が
よさそう。(IP_ADAPTER_INFOのNextに次のへのポインタ、など。)
0277デフォルトの名無しさん
NGNG0278デフォルトの名無しさん
NGNGいいんだけどさ・・・・ちっともシニア編が出ない訳よ。
近刊ってなってから1年経つんだけど、もう出すの辞めたの?
頼むよ晴比古クン。
0279デフォルトの名無しさん
NGNG0280デフォルトの名無しさん
NGNG0281デフォルトの名無しさん
NGNGclass Data : public Photo{
protected:
Point pt;
}
class Photo{
protected:
PhotoData *pData;
char FileName[128];
public:
void LoadPicture(){
WinLoadPicture(pData, FileName);
}
void Draw(){
WinDraw(Data::pt, pData); //ここ
}
}
こんな感じの使い方がしたいです。即席で作ったので間違ってるかも。
へぼへぼ。
0282デフォルトの名無しさん
NGNG0283デフォルトの名無しさん
NGNGPhotoで
virtual Point& getPoint() = 0;
ってやってDataで
Point& getPoint() {
return pt;
}
って実装させればいいじゃん。
0284デフォルトの名無しさん
NGNG#define _WIN32_WINNT 0x0500
としてるのですが、コンパイル時に
error C2065: 'WS_EX_LAYERED' : 定義されていない識別子です
となって、コンパイルできません
WinUser.hの中を検索したのですが、WS_EX_LAYERED というものが見つかりませんでした・・・
わかるかた、よろしくお願い致します
0285デフォルトの名無しさん
NGNGPhotoクラスをそのまま使い、Dataクラスは
Data1、Data2とかそれぞれ固有のメンバを持つ
クラスを作成しようとしてます。
だから、Dataクラスが基本で、Photoクラスを
派生にしました。
うーん、やっぱり派生クラスでデータを吐き出して
基本クラスで読み込むしかないのかなぁ...
それとも、継承を逆にするか、もう一回考え直します。
質問する事で頭の中が整理されたような気がします。
する前はパニック状態でした。ありがとうございました。
自分で考えるしか無さそう...
0286284
NGNGWindowsXP、VC++6.0 です。
0287デフォルトの名無しさん
NGNGMS行って最新のPlatform SDKダウンロードして来い
0288デフォルトの名無しさん
NGNGCDからインスコしただけのVCのヘッダには
当然入っていない。VC++6でしょ?
0289284
NGNG重ね重ね申し訳ございません
ttp://www.microsoft.com/msdownload/platformsdk/sdkupdate/
で Select All SDKs でインストールしましたが、同じエラーが出てしまいます・・・
0290デフォルトの名無しさん
NGNG0291デフォルトの名無しさん
NGNG#ifndef WS_EX_LAYERED // 念の為、トラブル回避
#define WS_EX_LAYERED 0x00080000
#endif
↑を、自分のソースにコピペすればいいよ。
0292デフォルトの名無しさん
NGNGtemplate<class D> class Base {
public:
void Draw() {
static_cast<D*>(this)->Draw();
}
};
class Derived : public Base<Derived> {
public:
void Draw()
{
// 略
}
}
0293デフォルトの名無しさん
NGNG0294デフォルトの名無しさん
NGNGありがとうございます。
0295デフォルトの名無しさん
NGNGスタートメニュー -> Microsoft Platform SDK -> Visual Studio Registration -> Register PSDK Directories with Visual Studio
0296デフォルトの名無しさん
NGNG・・・がビルドしようとしたら以下のようなリンクエラーが出ました。
error LNK2001: 外部シンボル "__imp__AlphaBlend@44" は未解決です
fatal error LNK1120: 外部参照 1 が未解決です。
こういった場合どうすればいいんでしょうか?
誰か知っている方がいましたら教えていただけませんでしょうか。
お願いします。
0297デフォルトの名無しさん
NGNGstring str;
for(i=0; i<30; i++) {
str.insert(str.length(),filename[i]);
str.insert(str.length(),"\n");
}
Edit_SetText(hEdit, str.c_str());
とゆう感じでエディットボックス?に文字列もセットしたんですけど、文字列が全部つながって一行に表示されるんですけどどうしたらいいのでしょうか・・・
multilineにしちるし編集する時にはエンターで改行も出来ます
0298285
NGNGはっきりとは理解できないのですが(勉強不足)
派生クラスのメソッドが基本クラスになってる(?)。すごい
ある一つのメンバが基本クラスにコピーされているのでしょうか
結局、継承を逆にするとスムーズにいかないので派生のメンバを
渡すことにしました。というか、継承してないです。。。
基本クラスをメンバに持たせたらごく自然に上手くいきました。
お騒がせしました。恥。。。ホントすみません。
0299デフォルトの名無しさん
NGNG"\r\n"
0300デフォルトの名無しさん
NGNGmsimg32.libをリンクしろ
0301デフォルトの名無しさん
NGNG0302デフォルトの名無しさん
NGNGあとinsertより
str += filename[i];
と書いたほうが見やすいと思う。
0303デフォルトの名無しさん
NGNG>>302
お〜ありがとうございます m(_ _)m
勉強になりました
0304デフォルトの名無しさん
NGNGどもども。出来ました〜。
0305284
NGNGProgram Filesの中探してたらありました!どうもありがとうございます
>>291さん
直接書くっていう方法もあったんですね。今後何かあったらやってみます。
>>295さん
私のではなぜかスタートメニューにありません・・・
0306デフォルトの名無しさん
NGNGなけりゃ実物を探せよ。
つーか別ユーザのスタートメニューに入ってるんだろ。探せよ。
0307デフォルトの名無しさん
NGNG0308デフォルトの名無しさん
NGNG書き換えの仕方を教えてください。
0309デフォルトの名無しさん
NGNGそういう問題じゃがいも無い
0310デフォルトの名無しさん
NGNGif((GetKeyState(VK_UP) & 0x8000) && (GetKeyState(VK_DOWN) & 0x8000)){
MessageBox("!");
}
0311デフォルトの名無しさん
NGNGありがとうございます
0312デフォルトの名無しさん
NGNG説明しづらいので簡略化したソースは、
char mozi[20],ans[40];
strcpy(mozi,"ひろゆき"); //変換したい文字列を代入
//mozi配列の一文字目が'ひ'であればans配列にHとIを代入
if(strncmp ( mozi , "ひ" , 1 ) == 0 ) {
ans[0]='H';
ans[1]='I';
}
平仮名を使っているせいか関数strncmpあたりの判定がおかしくなってしまいます。例えばmozi配列を'ろゆき'にしてしまっても関数strncmpが0を返しえてしまいif文内の処理が実行されてしまします。
初歩的な質問だと思いますがアドバイスお願いします.
0313デフォルトの名無しさん
NGNGひらがなは2バイト文字だ。
0314デフォルトの名無しさん
NGNG0315312
NGNG>>313
if(strncmp ( mozi , "ひ" , 1 ) == 0 ) {
の1を2にしたらできました。2バイトってのは解ってたんですがstrncmpの使い方が悪かったんですね。
>>314
初耳だったんですがぐぐってみたら便利そうですね。早速試してみます.
0316偏差値37
NGNGダイアログベースでも出来ますか?
0317デフォルトの名無しさん
NGNGまずどういうソフトを作りたいか概要を書きます。
パルスパターンジェネレーター(以下PPG)で任意のパターンを発生させるためにテキストデータから
そのPPGに合うデータを作らなくてはなりません。そこでテキスト→バイナリー変換のプログラムを作りたいのですが
MFCで組、GUI環境で波形を確認しながら作りたいです。
何からやったらいいですか?PPGのバイナリーデータはすでにあります。
環境
Win2000 VC++6.0 です。どうか教えてくださいです。
バイナリの勉強もしなければならないので何か参考になる書物、サイトもお教えください
0318デフォルトの名無しさん
NGNG書籍ではVC++6.0は/GRコンパイルオプションを指定しなければならないとあるのですがどのように指定するのか手順が載っておらず、どうにも困っています。
そのままコンパイルすると警告が出てしまい、実行するとエラーで強制終了してしまいます。
よろしければご指導おねがいします。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1074774948_34/code.txt ←ソースです。
警告:'typeid' が /GR- を使用したポリモーフィック型 'class Base' で使用されています; 動作結果は保証されません。 ←エラーメッセージです
0319デフォルトの名無しさん
NGNG開発環境でこのオプションを指定するには、[プロジェクト] メニューの [設定] をクリックします。次に、[C/C++] タブをクリックし、[カテゴリ] ボックスの [C++言語] をクリックします。
ラインタイム型チェックの詳細については、「C++ ランゲージ リファレンス」の「ランタイム タイプ情報」を参照してください。
0320デフォルトの名無しさん
NGNG0321デフォルトの名無しさん
NGNGありがとうございます、実行できました
0322デフォルトの名無しさん
NGNGプロパティーウィンドウのメッセージの追加ボタン(?)
(この機能を使うと自動的に関数やメッセージハンドラが追加されるらしい)
が見当たりません。6.0でやるにはどうしたらいいですか?
0323デフォルトの名無しさん
NGNGVC++6では、ClassWizardと呼ばれる機能です。
0325デフォルトの名無しさん
NGNGありがとうございます〜!
しかし、ClassWizardの項目が選択できない(灰色)のですが…
0326デフォルトの名無しさん
NGNGプロジェクトをまるまるコピーする事が多いので、どれがどんなプログラムか
分かりにくいです。
0327デフォルトの名無しさん
NGNGできる。project fileの内容を変更すればいい。
0328デフォルトの名無しさん
NGNGやりたいことは、CListBoxへの1行ずつのログ出力です。
最新のログは常に一番下へ追加し、自動スクロールさせて
常に最新ログが見える状態にしたいのです。
また、リソース消費を抑えるために、ある一定以上の古い
ログは消去したいんです。
== ソース一部抜粋 ==
ulines++;
if(lines > 50){
m_list_log.DeleteString(0); …(1)
}
m_list_log.InsertString(-1, strLog);
m_list_log.SendMessage(WM_VSCROLL, SB_LINEDOWN, 0);
=============
上記のようにすると、(1)の処理でキャレットが一番上に
移動してしまいます。
常にスクロールバーが一番下になる方法ありませんか?
(最新が常に見える状態にする方法)
SetScrollPosとRedrawWindowの組み合わせでも出来なかったので
よい方法があれば教えてください。よろしくです。
0329デフォルトの名無しさん
NGNGm_list.DeleteString(0);
m_list.SetCurSel(49);
0330328
NGNGありがとうございます。
みごと出来ました!
0331デフォルトの名無しさん
NGNGあったら何関数を使ったら良いのか教えてください。
よろしくお願いいたします。
■ このスレッドは過去ログ倉庫に格納されています