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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう。
・できるだけ具体的に。

  質問の仕方については次のページが大変参考になります。
  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
0002デフォルトの名無しさんNGNG
// 過去スレ
Part13 http://pc5.2ch.net/test/read.cgi/tech/1089011118/
Part12 http://pc5.2ch.net/test/read.cgi/tech/1083585833/
Part11 http://pc5.2ch.net/test/read.cgi/tech/1077965179/
Part10 http://pc5.2ch.net/test/read.cgi/tech/1074933908/ ※
Part09 http://pc5.2ch.net/test/read.cgi/tech/1068983609/ ※
Part08 http://pc5.2ch.net/tech/kako/1063/10630/1063029371.html
Part07 http://pc5.2ch.net/tech/kako/1056/10562/1056280510.html
Part06 http://pc5.2ch.net/tech/kako/1052/10529/1052931903.html
Part05 http://pc5.2ch.net/tech/kako/1048/10486/1048698321.html
Part04 http://pc5.2ch.net/tech/kako/1044/10441/1044196393.html
Part03 http://pc5.2ch.net/tech/kako/1038/10381/1038160750.html
Part02 http://pc3.2ch.net/tech/kako/1030/10309/1030985362.html
Part01 http://pc3.2ch.net/tech/kako/1023/10235/1023530449.html
※「いや〜、ごめんなさい」により、紛失の可能性

// 関連
■MFC相談室 mfc11.dll■
http://pc5.2ch.net/test/read.cgi/tech/1088084875/
Win32API質問箱 Build22
http://pc5.2ch.net/test/read.cgi/tech/1092524669/
鬱だ氏のう DirectX (Part 14)
http://pc5.2ch.net/test/read.cgi/tech/1088594869/
C++相談室 part34
http://pc5.2ch.net/test/read.cgi/tech/1092018643/
C/C++の宿題を片付け作戦指令 30代目
http://pc5.2ch.net/test/read.cgi/tech/1091954342/
0003デフォルトの名無しさんNGNG
// 外部リンク
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
MSDN ライブラリ
http://www.microsoft.com/japan/msdn/library/
Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
Google
http://www.google.co.jp/

//このスレの前身 VisualC++相談室 過去スレ
part 1 http://piza.2ch.net/tech/kako/970/970607517.html
part 2 http://piza.2ch.net/tech/kako/981/981630730.html
part 3 http://piza2.2ch.net/tech/kako/993/993186053.html
part 4 http://pc.2ch.net/tech/kako/1002/10021/1002165477.html
part 5 http://pc.2ch.net/tech/kako/1006/10068/1006834463.html
part 6 http://pc.2ch.net/tech/kako/1011/10116/1011615035.html
part 7 http://pc.2ch.net/tech/kako/1017/10178/1017843192.html
part 8 http://pc.2ch.net/tech/kako/1022/10224/1022499000.html
part 9 http://pc5.2ch.net/tech/kako/1036/10368/1036897197.html

0004デフォルトの名無しさんNGNG
>>1
市ね
0005デフォルトの名無しさんNGNG
>>1
乙
0006デフォルトの名無しさんNGNG
VC++6で.cppと.defファイルをDLLにコンパイルする方法を教えて下さい
0007デフォルトの名無しさんNGNG
>>6
意味不明
0008デフォルトの名無しさんNGNG
>>6
ウイザードでDLLのプロジェクトを作成する。
cppとdefを書き換える。
コンパイルする。
0009デフォルトの名無しさんNGNG
はじめまして

環境:Visual Studio 6

C++にある、setというコンポーネントを使おうとしてます。
勉強段階として、次のデータ型を
---
///データ型
typedef struct{
stringid;
stringname;
stringdetail;
} DATA;

template<typename DATA>
bool operator<(DATA const &a, DATA const &b){
return a.id < b.id;
};
---

以下のsetに次々と登録していきたいと考えています。
set<DATA> idlist;

が、次のようなエラーが出てしまいます。

error C2667: '<' : 2 個のオーバーロード関数があいまいで最適な変換ができません。 (新しい機能 ; ヘルプを参照)
error C2593: 'operator <' があいまいです。

idの部分を、intに変えた場合はうまくいきました。
なぜ、stringにするとダメなのでしょう…?
何かご存知の方がおられましたら、ご教授の程お願いいたします。
0010デフォルトの名無しさんNGNG
// これはいらないんじゃないか? → template<typename DATA>
bool operator<(DATA const &a, DATA const &b){
return a.id < b.id;
};

ってか、stringのあとにちゃんと空白を入れろと。
0011デフォルトの名無しさんNGNG
>>10さん

ありがとうございました。できました。
template宣言いらないのか…

空白をTABにしていたので、消えちゃいました;;
次から気をつけます(^^)ゞ
0012デフォルトの名無しさんNGNG
アプリケーション配布ライセンスって
Visual C++ 6.0 Professional Editionで作ったものって売っても問題ないの?教えてください
使用許諾書のを読んだけど、問題ないみたいが。
0013デフォルトの名無しさんNGNG
質問です。
ネット上で拾ったDLLモジュールのソースをコンパイルして使用したいのですが
VCTK2003+PSDKの環境で
VCTKの方のコンパイラを使用してます
cl /c AutoAcce.cpp
link /dll AutoAcce.cpp /DEF:AutoAcce.def
それで以下の結果に終わってしまいます。
何がいったい原因なんでしょうか?
   Creating library AutoAcce.lib and object AutoAcce.exp
AutoAcce.obj : error LNK2019: unresolved external symbol __imp__KillTimer@8 referenced in function "void __stdcall DefaultEquip(struct HWND__ *,unsigned int,unsigned int,unsigned long)" (?DefaultEquip@@YGXPAUHWND__@@IIK@Z)
AutoAcce.obj : error LNK2019: unresolved external symbol __imp__SetTimer@16 referenced in function "int __stdcall OnSend(unsigned char *,int)" (?OnSend@@YGHPAEH@Z)
AutoAcce.dll : fatal error LNK1120: 2 unresolved externals
0014デフォルトの名無しさんNGNG
よくわからないのですがKillTimerとSetTimerを他のLibから引っ張らないといけないのでしょうか?
0015デフォルトの名無しさんNGNG
稀にソフトウェアのバージョンアップ内容を見ると
・開発環境を VC++ 6.0 から VC++ .NET に移行した
と、開発環境の変更だけの更新内容を見かける事があるのですが
VC++ 6.0 から VC++ .NETへ移行することで
起動の早さ等、ユーザー側に何らかの影響を及ぼすのでしょうか?
VC++素人の質問ですみません、よろしくお願いします
0016デフォルトの名無しさんNGNG
dllのバージョンとか最適化とか
0017デフォルトの名無しさんNGNG
>>15
manegedで書き直した場合なら、実行にCLRランタイムが必要になるし
起動速度なんかも大分かわってくるんじゃないの?
0018デフォルトの名無しさんNGNG
VC++自体の質問なのですが、
http://www.amazon.co.jp/exec/obidos/ASIN/B00009PJOC/qid=1093782111/sr=1-2/ref=sr_1_10_2/249-3678490-8701153
対応OS:Win2000Sv/Win2000AdvSv/Win2000Profesl/WindowsXp Home/WindowsXp Pro/Win2003Sv STD/Win2003Sv
になってるのですがMe、98では使用不可でしょうか?
0019デフォルトの名無しさんNGNG
>>18
インストール出来ません
0020デフォルトの名無しさんNGNG
そんなぁ…orz
0021デフォルトの名無しさんNGNG
>>18
では「インストールできます」ってことにしておきますね
0022デフォルトの名無しさんNGNG
XP買いなはれ。
0023デフォルトの名無しさんNGNG
最近使ったファイルがデフォでコンパイルした場合表示されるのですが、
(MRU?)
そのファイル名を取得できる方法をお教えください。
0024デフォルトの名無しさんNGNG
>>23
VC6.0付属MFCには、CWinAppのprotectedメンバにm_pRecentFileListがある。
MSDNには載ってないけど多分これ使えばいいんじゃね?
0025デフォルトの名無しさんNGNG
>>23
レジストリから漁ったりなんかしちゃったりして
0026デフォルトの名無しさんNGNG
コマンドプロンプトよりユーザID、パスワードを入力させ、
RADIUSサーバにRADIUSプロトコルで送信し、
ユーザの認証を行うRADISUクライアント用のAPをVCで作ろうと思っています。
Active DirectoryでRADIUSを叩けるという話を聞きまして、
調べてみたのですが、ADSIでActive Directoryにアクセスするという所までわかったのですが、
具体的にどのようなことをすれば良いのかわかりませんでした。

そこでみなさんの知恵をお借りしたいのですが、ご存知無いでしょうか?
参考になるサイト、書籍やアドバイスがございましたら、ご教授くださいませ。
宜しくお願い致します。

開発環境は
Windows2000pro
Visual Studio.NET
です。
002715NGNG
>>16
>>17
レスありがとうございます
0028デフォルトの名無しさんNGNG
>>12
俺の脳内ソースだと、ProはOKなはず
0029デフォルトの名無しさんNGNG
VC6,0でリソースエディタにて、画面を作成しました。

その画面には、[OK]ボタンがデフォルトボタンになってます。
また、リストビューが表示されています。

このリストビューを、サブクラス化してエンターキーを押した場合に、
ダイアログを出そうと考えています。

ところが、エンターを押すとデフォルトボタンの[OK]が実行されてしまいます…
どうしたらいいでしょうか…

試しに、スペースキーを入れてみましたが、スペースはうまくいきます。

サブクラス化した一部です。


switch(message) {
  case WM_KEYDOWN:
    switch(wParam){
      case VK_RETURN:
        MessageBox(hWnd, "えんたー", NULL, MB_OK);
        break;

      case VK_SPACE:
        MessageBox(hWnd, "すぺいす", NULL, MB_OK);
        break;
 :
 :
0030デフォルトの名無しさんNGNG
>>29
OnOK()
で
//CDialog::OnOK();
とコメントアウトする

適当な処理をそこに足す
0031デフォルトの名無しさんNGNG
SDKの質問にMFCで答えるスレはここですか
0032デフォルトの名無しさんNGNG
#include<stdio.h>
#include<stdlib.h>

int main(void){
FILE *fp;
if((fp=fopen("sintai.dat","w"))==NULL){
printf("File not open\n");
exit(1);
}

int i;
struct sintai {
char *name;
int height,weight;
};
static struct sintai a[]={
{"nagata" ,180, 85},
{"nisimura" ,185, 95},
{"nakanisi" ,175, 80},
{NULL,0,0}
};
for (i=0 ; a[i].name != NULL; i++){
printf("%s\t%d\t%d\n",a[i].name,a[i].height,a[i].weight);
fprintf(fp,"%s\t%d\t%d\n",a[i].name,a[i].height,a[i].weight);
}
return 0 ;
}

これはstruct sintai a[]を初期化してsintai.datへ書き出すプログラムですが

これの逆をする場合、つまりsintai.datが 先に与えられている条件でsintai.datを読み込んで
struct sintai a[]へ代入する場合はどうすればいいでしょうか
0033デフォルトの名無しさんNGNG
fscanfを使え!てかスレ違いだ
0034デフォルトの名無しさんNGNG
メモ帳が保存できません
0035デフォルトの名無しさんNGNG
>>34
メモ帳を終了させてから notepad.exe をバイナリエディタで読み込み保存しろ
003628NGNG
>>30、>>31
すみません。環境説明が足りなかったです…
おっしゃるとおり、SDKなのでOnOKの処理はありません。

デフォルトボタンはリストビュー以外では有効にしておいて
リストビューでのエンターに対してのみ、ダイアログを表示したいのです。

この手の動きをするアプリはいくつかあるので、実現可能なはずなのですが…
0037デフォルトの名無しさんNGNG
visual c++.netでcppファイルからヘッダーファイルを作る方法を
教えてください。

m(__)mお願いします。
0038デフォルトの名無しさんNGNG
>>37
自分で.cppファイル解析して書くしかない。
ヘッダ間違って消したのか?
0039デフォルトの名無しさんNGNG
ダイアログベースのアプリケーションを作りたいんだけど
他の人が作ったファイルの機能などを取り込みたい、
でもそっちにもメインウィンドウがあってしかも機能がウィンドウに密着している(と思う)

このウィンドウは全然要らないので
必要な関数だけを読んでコードを書きました。
コンパイル、ビルドにはエラーはありません。

実行時に
Debug Library
Debug Assertion Failed!
というエラー
多分メインウィンドウが重複しているとかだと思うのですが..


もっと詳しく書かないとアドバイスもらえませんかね。
0040デフォルトの名無しさんNGNG
>>39
Assertしたならその行がわからないと。
「再試行」でその行に止まるからそれを見て自己解決か再投稿。
ソース抜き出し再利用とかでは気をつけないとよくある。
0041デフォルトの名無しさんNGNG
おそらくVCでコピーした時だけど
コピー前にクリップボードに "retun 1;"がはいっていて
"hoge()"を選択して
おそらくCtrl+Cを押すと
retun 1;hoge()
がクリップボードに入ってる時がたまにあるんだわ。

これって、Ctrl+C以外を押したときになるの?
それとも、VC以外の機能?

004241NGNG
環境は
VC6
WindowsNT4
です。
他に常駐は「紙」

インストールしているエディタは、
秀丸と
EmEditorと
サクラエディタと
xyzzy
です。
0043デフォルトの名無しさんNGNG
>>41
VC++のエディタ上での事?
0044デフォルトの名無しさんNGNG
>>43
はい。
ショートカットキーでコピペすると
たまに、古いクリップボード内容がくっついてるんです。
何か別のキーを押してたのかもしれません。
そんな機能ってあります?
0045デフォルトの名無しさんNGNG
>インストールしているエディタは、

(´ー`)y−〜〜
0046デフォルトの名無しさんNGNG
>>44
今、数十回やってみたけど、そんな事一度も起こらんよ。
とりあえず、SPはあててるの?
0047デフォルトの名無しさんNGNG
今日学校にVisual C++6.0があったので友達とコピーしてたのですが、
これって違法ですよね?
004829NGNG
すみません…先ほど番号を間違えました…

デフォルトボタンをやめて確認しようとしたところ、
VK_RETURNに入りませんでした!

つまり、デバッガで、VK_RETURNとVK_SPACEのMessageBoxにブレイクポイントしても
スペースは止まるが、エンターだと止まらないのです…

調べてみたのですが、MFCの場合は「PreTranslateMessage」を使う
ということはわかったのですが、SDKの場合はどうすれば良いのでしょう?
0049デフォルトの名無しさんNGNG
directplayでmsnZONEみたいな自動起動プログラムをつくりたいのですが
どうすればよいのでしょうか?
0050デフォルトの名無しさんNGNG
MFCでツールバーをフローティングしたりドッキングしたりする
アプリ作れますか?
作れるか作れないかで結構です。
それによって、VCかBCBにするか決めるので・・・
0051デフォルトの名無しさんNGNG
#includeで取り入れたいヘッダーファイルの場所を指定するにはどうすれば
よいのでしょうか?
#include<A>
#include<B>
#include<C>
A,B,C全て異なるフォルダから参照することはできますでしょうか?
0052デフォルトの名無しさんNGNG
>>51
意味わからんがとりあえず貼っとく。
ttp://forums.belution.com/ja/vc/000/262/27.shtml
0053デフォルトの名無しさんNGNG
>>50
出来る。
でもBCBの方が遥かに楽。
でも仕組み知っておきたいならMFCか。

BCBは、これ以上バージョンアップしない予感だし
仕事ではVCが遥かに多い。

とりあえず
両方知っとけ。
005450NGNG
>>53
ありがとうございます。
とりあえず、将来性に期待してVCを覚えます。
ゆくゆくは両方覚えられるといいかな・・・
0055デフォルトの名無しさんNGNG
開発環境:VC++6 SP5、最新のPlatform SDKインクルード、Windows XP Pro SP1

エクスプローラ上で、ファイルやフォルダのアイコンの上で右クリックすると、
「開く」「印刷」「検索」などの項目で構成されるメニューが表示されますよね。
項目を非表示させる、あるいは項目名が灰色表示で選択できない、というプログラムを
作りたいです。
イメージとして、作りたいと思うプログラムが起動されているとき、項目の非表示、
あるいは灰色表示で選択できなくなり、起動されていないときは普通に表示されて
選択ができる、というものです。

VCのシェルプログラミングに関するサイトをいろいろ見たのですが、イメージに
ぴったり合うサイトが発見できませんでした。
メニューに項目を追加する、というものならたくさんありましたが…。

どなたかやり方、あるいは参考リンクをご存知でしたら教えてください。
0056デフォルトの名無しさんNGNG
CMenu
EnableMenuItem(item, MF_GRAYED);
005755NGNG
>>56
ありがとうございます。
それで、関連して2つ質問があります。

(1)EnableMenuItemの第一引数に設定する情報ですが、afxres.hをインクルードして、
ID_FILE_XXX、又は、ID_EDIT_XXXで始まる定数を設定すればよいですよね?

(2)作りたいと思うプログラムは、MFCのダイアログベースでやりたいです。
試しに新規にプロジェクトを作成後、クラスウィザードでOnRButtonDownを追加して、
以下のように組みました。
(例:ファイルを右クリックしたときに、「開く」を無効にしたい場合)
void CClickDlg::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
CMenu *hMenu;
CWnd* cwParent = GetParent();
DWORD dwStyle = cwParent->GetStyle();
hMenu = cwParent->GetSystemMenu(FALSE);
hMenu -> EnableMenuItem(ID_FILE_OPEN, MF_GRAYED);
CDialog::OnRButtonDown(nFlags, point);
}
上でビルドして実行ファイルが立ち上がっている状態で、あるテキストファイルのアイコン上で
右クリックしました。
しかし、「開く」の項目が無効になりませんでした。
これは、ソースの組み方そのものがおかしいのでしょうか?
ダイアログベースでできるのであれば、プロジェクト新規作成後からの手順を
教えていただけたらうれしいです。
0058デフォルトの名無しさんNGNG
>>57
ちょっと意図する事がよく分からないんですが、
要するに、自分の作ったプログラムから
エクスプローラのポップアップメニューを制御したという事ですか?

↓にシェル関係の情報が紹介されてるので参考までに。
ttp://www.asahi-net.or.jp/~GV4J-SGUR/narik/susucyu.htm
0059デフォルトの名無しさんNGNG
visual c++.net やってますが正直さっぱりわかりません。

javaはそれなりに出来ますがc++自体初心者です。
MFCアプリケーションだとすでに、ヘッダーファイルやcppファイルなどが
作られていますがその中の文法がわかりません。
2,3さつ本持っていますが、どれもコンテンツの加え方みたいなものしか書いていません。

中で何が行われているかわからないと、この先壁にぶち当たるような気がしていて
とりあえず、中でどういう順番で何が行われているか理解しようと思っています。

こういう自分にお薦めのvisual c++.netの本がありましたら教えていただけないでしょうか?
0060デフォルトの名無しさんNGNG
なら純粋なCやC++の本を買った方がいいんじゃないの?
0061デフォルトの名無しさんNGNG
javaは簡単っつーことだな。
0062デフォルトの名無しさんNGNG
>>59
自分も最初はMFCどころかC++の文法も分からなかったけど
C/C++の文法を覚えてからMFCでのプログラミングを練習したよ。

最初は、ホント滅茶苦茶なコードしか書けず何度何度も破綻したけど、
色々な書籍やサイトなどの文献を読み漁って(時には2chでの質問も)
諦めずにやっていたら、いつの間にやらそれなりにまともなコード書けるようになってたよ。

今では、公開しているソフトがそこそこ評価してもらえるくらいになったよ。
ちなみに、自分で「まとも」だと思えるアプリが作れる様になるまで3年くらいかかったけどね…
006362NGNG
>>59
>こういう自分にお薦めのvisual c++.netの本がありましたら教えていただけないでしょうか?
ごめん、ここの部分のレスがなかったね…
う〜ん、自分の場合は書籍よりもWebの方が有意義な情報が多かったような気がするなぁ。
0064デフォルトの名無しさんNGNG
>>59

1冊目 MFCによるWindows95プログラミング
ウィザードの吐き出したソースの変更ではなく
1からスクラッチでソースを起こす方式で
SDK的にMFCを解説
Win32APIの知識は無くても読める
C++の知識は必要

2冊目 MFCアンサーブック
前半にドキュメントビューアーキテクチャの解説がある
MFCのフレームワークが理解出来る
0065デフォルトの名無しさんNGNG
>>64
MFCによるWindows95プログラミングは、MFCによるWindowsプログラミングとして、改訂版がでてますよ。
0066デフォルトの名無しさんNGNG
MFCアプリケーションについて質問があります。
ソースファイル
 |_MainFrm.cpp
_SOFT.cpp
_SOFTDoc.cpp
_SOFTView.cpp
_stdafx.cpp
ヘッダーファイル
 |_MainFrm.h
_Resource.h
_SOFT.h
_SOFTDoc.h
_SOFTView.h
となっていて、MainFrm.cppの中でCMainFrame::OnCreateやCMainFrame::PreCreateWindow
など、MainFrm.hの中にあるメソッドについて何か操作をしているようですが、
これは一体何をしているのでしょうか?

あと、上記のソースファイルの中ではclassが定義されていませんが、classがある時と
ないときで何が変わるのでしょうか?
006766NGNG
↑
あ‥メソッドを上書きしているのですか?
006855NGNG
>>58
やりたいことはそのとおりです。
教えていただいたURLですが、実はシェルプログラミングの別件の調査で、
少し前に発見していました。
コーディングをするならEnableMenuItemを使うのではなく、レジストリ操作で
やる方法になるんですか…。
0069デフォルトの名無しさん NGNG
ウィンドウに描画された矩形をマウスでドラグするという
単純なテストプログラムを作ってみたんですが、どうもうまくいきません。
どうすればいいか教えて下さい。
説明が難しいのでワークスペースごとUPしてしまいました。
ごく短いVC++6、WinAPIのプログラムです。
ttp://gamdev.org/up/img/1157.zip
こんな事も分からない俺…orz
よろしくお願いします。
0070デフォルトの名無しさんNGNG
↑ウィルス
0071デフォルトの名無しさんNGNG
>>69
意図的に作られたものではないにせよ、実質ウィルス。
007269NGNG
まじで?なんか感染してる?
そうじゃなくてアフォプログラムでPCバグったとか
そういう意味だったらすいません。。。
0073デフォルトの名無しさんNGNG
何をしたいのかってのを明確にした方が早いと思うけどなあ。
007469NGNG
すいません。古いのをUPしてたんで消しました。
新しいのをUPしようとしたけど(どっちにしろまともに動かないけど)
やっぱ恥かしいので止めときます。

>>70>>71
とりあえず氏ね。
0075デフォルトの名無しさんNGNG
いちいち反応して暴言吐いてる香具師には多分無理w
0076デフォルトの名無しさんNGNG
マウスボタンON/OFF情報を保存するフラグ変数を用意して
マウスボタンON時は、マウスポインタが矩形内にあるか判断した上でフラグをTRUEにする。
マウスボタンOFF時は、フラグをFALSEにする。
で、その変数がTRUEの場合だけ、マウス移動と連動して矩形を移動させれば良いのでは?
007769NGNG
>>76
69でUPしたのはなんだかでたらめのやつをUPしてしまったんですが
76と同じ意味の事をやってるつもりのバージョンでもできないんですよねぇ。
WM_MOUSEMOVEは使いたくないし。。。
0078デフォルトの名無しさんNGNG
>>77
どの辺りが分からないのかをハッキリさせないと
多分誰も答えてくれないと思うよ。
0079デフォルトの名無しさんNGNG
他人が書いたWinソフトのソースコードを見ると
標準出力の起動しないアプリケーションで
よくprintfが描いてあるのですが、これはどういった効果のためでしょうか?
0080デフォルトの名無しさんNGNG
sprintfの見間違いと思われ
0081デフォルトの名無しさんNGNG
いえ、見間違いでは有りません、
デバッグのときだけ認識するようですがこれはなんなのでしょうか
0082デフォルトの名無しさんNGNG
visual c++.netでおすすめの本ってありますか?
0083デフォルトの名無しさんNGNG
>>79
標準出力の起動しないってどういう意味だ?

デバッグ用の出力だろ。
コンソールアプリでなくても標準出力はできるぞ。
パイプ開くツールから起動してログ取ったりする。リダイレクトも出来るだろ。
008469NGNG
>>78
すいません。昨日の部分はうまくいったんですが別の問題が発生したので改めて、、、

APIで矩形を描いてそれをマウスで掴んで動かす実験をしてます。
GetAsyncKeyStateでマウスボタンの押下状態を取得してるんですが、
外からボタンを押したまま矩形に接しただけでも矩形を掴めてしまって困ってます。
(連射しながら近づいているような扱いになっているためフラグとか使うのも無理っぽい)
ウィンドウメッセージのswitchを使わずに、
きちんと矩形内でマウスボタンを押下する以外には掴めないようにできないものでしょうか?
なにか方法があったら教えてください。お願いします。
↓ソースです。(VC6++です)
ttp://gamdev.org/up/img/1162.zip
0085デフォルトの名無しさんNGNG
脳内コンパイルだけどこれで駄目ですか?

static int oldX,oldY;;
static bool bDrag=false;

//左ボタンが押されてたら移動
if(bDrag) move(mouseX-oldX,mouseY-oldY);
if (GetAsyncKeyState(VK_LBUTTON) & 0x8000){
 //カーソルが矩形内にあるかどうか判定
 if (mouseX>=wndX && mouseX<=wndX+wndW &&
     mouseY>=wndY && mouseY<=wndY+wndH){
  bDrag=true;
 }
}
else bDrag=false;
oldX=mouseX;
oldY=mouseY;
008669NGNG
>>85
すいません、駄目でした。。。
動き的には今までと同じ模様です。
0087デフォルトの名無しさんNGNG
じゃあこれは
if (!bDrag&&GetAsyncKeyState(VK_LBUTTON) & 0x8000)
0088デフォルトの名無しさんNGNG
>>87
あだめだ
0089デフォルトの名無しさんNGNG
んーこうかな?
int oldX,oldY;;
static bool bDrag=false,bFst=false;

//左ボタンが押されてたら移動
if(bDrag) move(mouseX-oldX,mouseY-oldY);
if (!bFst&&GetAsyncKeyState(VK_LBUTTON) & 0x8000){
 bFst=true;
 //カーソルが矩形内にあるかどうか判定
 if (mouseX>=wndX && mouseX<=wndX+wndW &&
     mouseY>=wndY && mouseY<=wndY+wndH){
  bDrag=true;
 }
}
else{bFst=bDrag=false;}
oldX=mouseX;
oldY=mouseY;

0090デフォルトの名無しさんNGNG
ヘッダーファイル
|_A.h
|_B.h
とあって、ヘッダーファイルAの中ではclass Aが定義されていて、ヘッダーファイル
Bの中ではクラスBが定義されています。
ここで、
#include "B.h"
class A : public BとしてクラスBを継承したいのですが
どうしても、C2054 の「定義されていない基本クラスが宣言されています」の
エラーが出てしまいます。
逆に、ためしに
#include "A.h"
class B : public A

とやると、エラーはでません。この理由がわかりません。この場合クラスAとBの
違いは何が考えられるでしょうか?
0091デフォルトの名無しさんNGNG
ごめんおれへっぽこだな
if (!bFst&&GetAsyncKeyState(VK_LBUTTON) & 0x8000){
 bFst=true;
 //カーソルが矩形内にあるかどうか判定
 if (mouseX>=wndX && mouseX<=wndX+wndW &&
     mouseY>=wndY && mouseY<=wndY+wndH){
  bDrag=true;
 }
}
else if(bFst){bFst=bDrag=false;}
0092デフォルトの名無しさんNGNG
>>90
恐らくだが、
先行宣言 でぐぐれ
009392NGNG
すまん、先行宣言関係ないじゃん…
0094デフォルトの名無しさんNGNG
>>90
原因を突き止めるためにsimplifyしてみたら?
----- A.h -----
#include "B.h"
class A : public B {};

----- B.h -----
class B {};

ここまでやれば通るでしょ?
009569NGNG
>>91
どうもです。
これでもだめっぽいです。
やっぱ時間を細切れに考えると連射で矩形内に侵入してることに
なってるんでしょうか。。。頭がこんがらがって…
009669NGNG
すいません、ちょっと別のところで聞いてくることにします。
色々お世話様でした。助けてくれた方ありがとうございました。
0097初心者NGNG
すいません、課題が進まなくて困っています、誰か教えていただけないでしょうか?
目的は、すでにあるテキストファイルを次々に読み込んでその中の一部のデータだけを
まとめて一つのファイルに出力したいのですが・・・、
次々にファイルを読み込む命令で,
fpopen(fp,"ファイル名+number","r");
みたいな形でnumberの部分for文で次々に変えていきたいのですが
うまくいきません(T_T)
strcatやstrcpyを使うことは考えたのですがint型はchar型では渡せないとかなんとかの
エラーが・・・。雑な説明ですがどうぞご教授願います。
0098デフォルトの名無しさんNGNG
>>97
sprintf
0099初心者NGNG
おお!?
試してみます!
ご返事ありがとうございます!!
0100デフォルトの名無しさんNGNG
>>96
そんなに難しい事かな?
以下のコードで出来るよ(確認済み)。

static POINT BoxPos;
static POINT OldCurPos;
static BOOL DrgFlag;

POINT CurPos;
GetCursorPos(&CurPos);
ScreenToClient(hWnd, &CurPos);

if(GetKeyState(VK_LBUTTON) & 0x80){
  if(!DrgFlag){
    if(CurPos.x >= BoxPos.x && CurPos.x <= BoxPos.x + 64 &&
      CurPos.y >= BoxPos.y && CurPos.y <= BoxPos.y + 64){
      DrgFlag = TRUE;
      OldCurPos.x = CurPos.x - BoxPos.x;
      OldCurPos.y = CurPos.y - BoxPos.y;
    }
  }
}else{
  DrgFlag = FALSE;
}

if(DrgFlag){
  BoxPos.x = CurPos.x - OldCurPos.x;
  BoxPos.y = CurPos.y - OldCurPos.y;
}
0101デフォルトの名無しさんNGNG
ソースファイル
A1.cpp
ヘッダーファイル
B1.h
をビルドするとエラーが出ませんでした。後にソースファイルにA2.cppを追加したらエラーが
でました。そしてその後A2.cppを消して再ビルドすると以下のエラーが出て
どうしても解決しません。

error LNK2020: 未解決のトークン
fatal error LNK1120: 外部参照1が未解決です。

調べると、変数が見つからないという類のエラーらしいのですが、だとしたら
一度通ったコードが通らなくなる理由がわかりません。
誰か教えてください!
■ このスレッドは過去ログ倉庫に格納されています