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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
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
>>1
市ね
>>1
6デフォルトの名無しさん:04/08/28 17:54
VC++6で.cppと.defファイルをDLLにコンパイルする方法を教えて下さい
>>6
意味不明
8デフォルトの名無しさん:04/08/28 22:37
>>6
ウイザードでDLLのプロジェクトを作成する。
cppとdefを書き換える。
コンパイルする。
はじめまして

環境: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にするとダメなのでしょう…?
何かご存知の方がおられましたら、ご教授の程お願いいたします。
// これはいらないんじゃないか? → template<typename DATA>
bool operator<(DATA const &a, DATA const &b){
return a.id < b.id;
};

ってか、stringのあとにちゃんと空白を入れろと。
>>10さん

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

空白をTABにしていたので、消えちゃいました;;
次から気をつけます(^^)ゞ
アプリケーション配布ライセンスって
Visual C++ 6.0 Professional Editionで作ったものって売っても問題ないの?教えてください
使用許諾書のを読んだけど、問題ないみたいが。
質問です。
ネット上で拾った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
よくわからないのですがKillTimerとSetTimerを他のLibから引っ張らないといけないのでしょうか?
15デフォルトの名無しさん:04/08/29 18:43
稀にソフトウェアのバージョンアップ内容を見ると
・開発環境を VC++ 6.0 から VC++ .NET に移行した
と、開発環境の変更だけの更新内容を見かける事があるのですが
VC++ 6.0 から VC++ .NETへ移行することで
起動の早さ等、ユーザー側に何らかの影響を及ぼすのでしょうか?
VC++素人の質問ですみません、よろしくお願いします
dllのバージョンとか最適化とか
>>15
manegedで書き直した場合なら、実行にCLRランタイムが必要になるし
起動速度なんかも大分かわってくるんじゃないの?
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では使用不可でしょうか?
>>18
インストール出来ません
そんなぁ…orz
>>18
では「インストールできます」ってことにしておきますね
XP買いなはれ。
最近使ったファイルがデフォでコンパイルした場合表示されるのですが、
(MRU?)
そのファイル名を取得できる方法をお教えください。
>>23
VC6.0付属MFCには、CWinAppのprotectedメンバにm_pRecentFileListがある。
MSDNには載ってないけど多分これ使えばいいんじゃね?
>>23
レジストリから漁ったりなんかしちゃったりして
コマンドプロンプトよりユーザID、パスワードを入力させ、
RADIUSサーバにRADIUSプロトコルで送信し、
ユーザの認証を行うRADISUクライアント用のAPをVCで作ろうと思っています。
Active DirectoryでRADIUSを叩けるという話を聞きまして、
調べてみたのですが、ADSIでActive Directoryにアクセスするという所までわかったのですが、
具体的にどのようなことをすれば良いのかわかりませんでした。

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

開発環境は
Windows2000pro
Visual Studio.NET
です。
2715:04/08/30 18:16
>>16
>>17
レスありがとうございます
>>12
俺の脳内ソースだと、ProはOKなはず
29デフォルトの名無しさん:04/09/01 02:11
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;
 :
 :
>>29
OnOK()

//CDialog::OnOK();
とコメントアウトする

適当な処理をそこに足す
SDKの質問にMFCで答えるスレはここですか
32デフォルトの名無しさん:04/09/01 08:13
#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[]へ代入する場合はどうすればいいでしょうか
fscanfを使え!てかスレ違いだ
メモ帳が保存できません
>>34
メモ帳を終了させてから notepad.exe をバイナリエディタで読み込み保存しろ
3628:04/09/01 09:04
>>30>>31
すみません。環境説明が足りなかったです…
おっしゃるとおり、SDKなのでOnOKの処理はありません。

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

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

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

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

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


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

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

4241:04/09/01 14:13
環境は
VC6
WindowsNT4
です。
他に常駐は「紙」

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

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

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

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

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

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

とりあえず
両方知っとけ。
5450:04/09/02 12:31
>>53
ありがとうございます。
とりあえず、将来性に期待してVCを覚えます。
ゆくゆくは両方覚えられるといいかな・・・
開発環境:VC++6 SP5、最新のPlatform SDKインクルード、Windows XP Pro SP1

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

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

どなたかやり方、あるいは参考リンクをご存知でしたら教えてください。
CMenu
EnableMenuItem(item, MF_GRAYED);
5755:04/09/02 16:42
>>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);
}
上でビルドして実行ファイルが立ち上がっている状態で、あるテキストファイルのアイコン上で
右クリックしました。
しかし、「開く」の項目が無効になりませんでした。
これは、ソースの組み方そのものがおかしいのでしょうか?
ダイアログベースでできるのであれば、プロジェクト新規作成後からの手順を
教えていただけたらうれしいです。
>>57
ちょっと意図する事がよく分からないんですが、
要するに、自分の作ったプログラムから
エクスプローラのポップアップメニューを制御したという事ですか?

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

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

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

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

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

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

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

2冊目 MFCアンサーブック
前半にドキュメントビューアーキテクチャの解説がある
MFCのフレームワークが理解出来る
>>64
MFCによるWindows95プログラミングは、MFCによるWindowsプログラミングとして、改訂版がでてますよ。
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がある時と
ないときで何が変わるのでしょうか?
6766:04/09/03 09:30

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

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

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

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

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;
8669:04/09/04 15:41
>>85
すいません、駄目でした。。。
動き的には今までと同じ模様です。
じゃあこれは
if (!bDrag&&GetAsyncKeyState(VK_LBUTTON) & 0x8000)
>>87
あだめだ
んーこうかな?
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;

ヘッダーファイル
|_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の
違いは何が考えられるでしょうか?
ごめんおれへっぽこだな
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;}
>>90
恐らくだが、
先行宣言 でぐぐれ
9392:04/09/04 17:00
すまん、先行宣言関係ないじゃん…
>>90
原因を突き止めるためにsimplifyしてみたら?
----- A.h -----
#include "B.h"
class A : public B {};

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

ここまでやれば通るでしょ?
9569:04/09/04 19:31
>>91
どうもです。
これでもだめっぽいです。
やっぱ時間を細切れに考えると連射で矩形内に侵入してることに
なってるんでしょうか。。。頭がこんがらがって…
9669:04/09/04 21:48
すいません、ちょっと別のところで聞いてくることにします。
色々お世話様でした。助けてくれた方ありがとうございました。
97初心者:04/09/04 22:15
すいません、課題が進まなくて困っています、誰か教えていただけないでしょうか?
目的は、すでにあるテキストファイルを次々に読み込んでその中の一部のデータだけを
まとめて一つのファイルに出力したいのですが・・・、
次々にファイルを読み込む命令で,
fpopen(fp,"ファイル名+number","r");
みたいな形でnumberの部分for文で次々に変えていきたいのですが
うまくいきません(T_T)
strcatやstrcpyを使うことは考えたのですがint型はchar型では渡せないとかなんとかの
エラーが・・・。雑な説明ですがどうぞご教授願います。
>>97
sprintf
99初心者:04/09/04 22:42
おお!?
試してみます!
ご返事ありがとうございます!!
>>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;
}
ソースファイル
A1.cpp
ヘッダーファイル
B1.h
をビルドするとエラーが出ませんでした。後にソースファイルにA2.cppを追加したらエラーが
でました。そしてその後A2.cppを消して再ビルドすると以下のエラーが出て
どうしても解決しません。

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

調べると、変数が見つからないという類のエラーらしいのですが、だとしたら
一度通ったコードが通らなくなる理由がわかりません。
誰か教えてください!
10296:04/09/05 08:52
>>100
ありがとうございます。実は昨夜何とか解決しました。
100の方法試させて頂きましたが、
ドラグ状態で矩形に近づくと掴んでしまいません?
103100:04/09/05 10:25
>>102
ああ、それが問題だったのね… 解決したなら、もう必要ないとは思うけど
以下修正コード。ちょっと汚いけど。

BOOL GetLBtnState(void)
{
static BOOL flag = FALSE;
  if(GetKeyState(VK_LBUTTON) & 0x80){
    if(!flag){ flag = TRUE; return TRUE; }
  }else{
    flag = FALSE;
  }
  return FALSE;
}
void Main(void)
{
static POINT BoxPos, OldCurPos;
static BOOL DrgFlag;
  POINT CurPos;
  GetCursorPos(&CurPos);
  ScreenToClient(hWnd, &CurPos);
  if(!DrgFlag && GetLBtnState()){
    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 if(DrgFlag && !(GetKeyState(VK_LBUTTON) & 0x80)){
    DrgFlag = FALSE;
  }
  if(DrgFlag){ BoxPos.x = CurPos.x - OldCurPos.x; BoxPos.y = CurPos.y - OldCurPos.y; }
}
MFCをでコードを組んでいて、Onpaintで描画しようと思っています。
あるダイアログボックスの中に、Edit Controlを4つ、ボタンを1つ用意し
ボタンを押した瞬間に、Edit controlに入れられた値をパラメータとする四角形
をビューウィンドウに描画するようにしたいのですが、

Onpaint関数だと、ボタンを押した瞬間には描画してくれません。
又、Invalidate();を使うとビューウィンドウではなく、ダイアログボックスの中に
描画されてしまいます。

何か良い方法はありませんでしょうか?
よくわからんけど、RedrawWindow()じゃダメ?
106104:04/09/05 11:03
一部追加。

void CChildView::OnBnClickedOk()
{
Invalidate();
OnPaint();
}
ボタンが押された時に呼び出される関数OnBnClickedOk()の中で上のように
書くとダイアログボックスの中に描画されてしまいます。
RedrawWindow()やupdatewindow()でもうまくいきません。
OnBnClickedOk()メソッドの中で再描画をコードしてはいけないのでしょうか?
>>106
OnPaint()が、CChildViewのメンバ関数だからじゃね?
描画すべき親の関数を呼び出してみては?
>>104
矩形表示用のウィンドウと値設定用のダイアログがあるのかな?
それなら値を格納する変数はとりあえずグローバルにしておいて
ダイアログのボタンを押したときに表示用ウィンドウ側に、
WM_PAINTメッセージでも送ってやったらどうだべ?
で表示用ウィンドウ側ではそのデータを元に矩形を描くと。
109デフォルトの名無しさん:04/09/05 16:46
String Tableでは扱えない大きさの文字列をリソースにして読み込みたいのですがよい方法はありませんか?
main関数があるソースの場合
cout <<を使えば、そこを通る値が確認できデバッグしやすいのですけど、
MFCでコレに近いことってできませんかね。

ある場所を通る値を簡単に出力できるような方法がないですかね?
>>110
trace
MessageBox
>>109
バイナリリソースにして埋め込んでは伺か?
114109:04/09/05 19:56
それを読み込む方法がわからないです
115デフォルトの名無しさん:04/09/05 20:01
#pragma once
というのは、どこまで制御が及ぶんですか?

#pragma once
#include "a.h"
#include "b.h"
#include "c.h"

だと、"a.h" "b.h" "c.h"全てに制御されますか?
>>114
LoadResource(hModule, FindResource(hModule, lpName, lpType));
117デフォルトの名無しさん:04/09/05 20:33
#pragma onceまで
>>116
できました。ありがとうございます
>>117
挟むんですか、なるほど。
ありがとうございます。
いきなりで申し訳ないですが質問させてください。

MDIのプログラムで別スレッドで1秒ごとにデータを受けながらそれを表示する
というようなプログラムを作っていたのですが、たまにその表示が固まってしまい
更新しなくなってしまいました。(このときCPU稼働率が100%になっていた)

これは 「for」もしくは「while」の条件文がどこかでおかしくなっている、と判断して
よいのでしょうか?
上の二つ以外にも可能性がありえるとしたら教えてください。

Win2k/VC6++
エスパー登場
>>120
そうじゃないの?
123デフォルトの名無しさん :04/09/06 16:38
標準コントロールのエディットボックスIDC_Aがあるとします。
直接コーディングでSetDlgItemText(hdc,IDC_A,"aaaa\r\naaa")
とすると自動で改行表示さます。
しかし、別のエディットボックスに同じように「aaaa\r\naaa」と手で入力し、
それをGetDlgItemTextして、
その文字列をIDC_Aにセットすると改行されないのは
どういう仕組みなんでしょうか。
124デフォルトの名無しさん:04/09/06 16:46
.net XP

sinやcos、tanを使いたいのですが、
 error C2668: 'sin' : オーバーロード関数の呼び出しを解決することができません。
などというエラーが出てしまいます。
変数=sin(数値);
という形にしているのですが使い方が違うのでしょうか?
>>124
数値の型がまずいんじゃね?
>>123
前者はキャリッジリターン(0x0d)と改行(0x0a)の文字コードになる。
後者はただの「\r\n」という文字列。
127デフォルトの名無しさん:04/09/06 17:11
>>125
kakudo(float型)=sin(20);
という形にしていますが、PIも使えないようなのでラジアン云々の計算すらできないです。
128125:04/09/06 17:13
>>127
ダメダメ
kakudo(float型)=sin((double)20);
129デフォルトの名無しさん:04/09/06 17:19
>>128
oops..
ありがとうございます。
sin・cos・tanはエラーが出なくなりました。

・・・その中に使う円周率のPIが使えないのですが、PIの前後に何か付くのでしょうか?
 error C2065: 'PI' : 定義されていない識別子です。
3.14159・・・でも誤差は僅かなのですがほぼ正確な円周率を使いたいです。
131デフォルトの名無しさん:04/09/06 18:30
>>130
自分でやらないと駄目なのか(;´Д`)
PIと書いて、カーソル合わせると
#define PI 3.141592653589793
とツールチップでヒントが出るので、どっかに定義されてはいるみたいだな
ただ、どのヘッダーをincludeすれば良いのかは分からない・・・
(なら、ヒント出すなよ・・・)
>>123
ソースコード中の「\r\n」と通常(この場合エディットボックス)の「\r\n」は意味が違うよ。
エディットボックスに入力された「\r\n」はプログラムと違ってエスケープシーケンスとして認識出来ないよ。
だから、エディットの「\r\n」はコード上での「\\r\\n」と同義になるよ。
134デフォルトの名無しさん:04/09/06 19:53
余計な問題が出ますたorz

selectのcase内で宣言したR[][]をグローバル変数R2[][]に入れるという作業をしたいのですが
>: error C2059: 構文エラー : ']'
「R2[][]=R[][];」をするとこうなりました。
*R・R2は2×2の行列
行列の中に行列を入れると言う動作は1発でできないのでしょうか。
できないならできないで2重ループで1つずつ処理すれば大丈夫そうだけど・・
135デフォルトの名無しさん:04/09/06 20:38
構造体かmemcpy
どこに定義されてるかわからんようなのはgrepかけるなりwinの
検索なりで探せよド素人が。
137デフォルトの名無しさん:04/09/06 20:50
VC++初心者です。
よろしくお願いします。

DHCP環境のWin2000/XPマシンがあります。
このマシンの
・IPアドレス
・サブネットマスク
を取得したいのですが、どのようにすればよろしいのでしょうか?
固定IPなら、gethostbynameが使えるのですよね。。。

今日一日、ネットで私なりに色々検索したのですが、分かりませんでした。
手がかりだけでも良いので、ご教授よろしくお願いします。
138デフォルトの名無しさん:04/09/06 20:51
>>135
レスありがとうございます。
構造体・・・かorz
139137:04/09/06 21:00
> 固定IPなら、gethostbynameが使えるのですよね。。。

hostsファイルに自分のホスト名とIPアドレスがあれば、と言うことですよね。
そのIPアドレスが固定じゃない(hostsにIPアドレスが記述されていない)DHCP環境では、
どうしたら良いのか。。。
>>138
memcpyでいいやん
>>137
> このマシンの
> ・IPアドレス
> ・サブネットマスク

そもそもそれ違ってるだろ
システムにアドレスがあるんじゃなくてアダプタに付いてるもんなんだから
142デフォルトの名無しさん:04/09/06 21:41
memcpyは初めて聞いたので使い方がビミョンヌ(´・ω・`)
memcpy(R2,R,2)?;
>>142
MSDN読め
144デフォルトの名無しさん:04/09/06 21:55
MSDNに書いていることって初心者には難しい(知らない言葉が出てくる)のはどうにかならないものかorz
とりあえず組みなおした後適当に試してみます。
>>120
凄い質問だなw
さて問題です。織田信長はどうでしょう?
みたいな。
おまいら標準Cの関数はマスターしたほうがいいぞ、できないと書けるコードが少なすぎるマになるぞ
147デフォルトの名無しさん:04/09/07 00:09
132じゃないんですが、気になったので・・・
PIってどこで定義されてるか、どのようにすれば
分かるのでしょう?
148デフォルトの名無しさん:04/09/07 00:12
MSDNでPIを検索
149147:04/09/07 00:13
>>148
それは既に試みました
3.1415あたりで検索かけりゃわかりそうなもんだが・・
ありゃ、確かにHITしないな
152147:04/09/07 00:23
うーん・・・
難しそうですね。
そんなに重大問題では無いので、きっぱり諦めます。
DirectXSDKにあった
#define D3DX_PI ((FLOAT) 3.141592654f)
154137:04/09/07 10:24
>>141
そうですね。
では表現を正しくして、複数LANカードがささっているDHCPマシンの
・IPアドレス
・サブネットマスク

を知るには、どうすれば良いのですか?
VC++6を使用しています。
ダイアログボックス内に配置したスタティックテキストに線を描画させることが出来ません。
スタティックテキストのIDは「IDC_CANVAS」としました。
*.exeファイルを実行すると、ウィンドウは開かずにダイアログボックスのみを開くようにしてあります。

//関係のある部分のみ抜粋
/* global変数 */
HDC hdcMemCanvas; /* キャンバスのメモリデバイスコンテキストのハンドル */
HBITMAP hbmCanvas; /* キャンバスのビットマップのハンドル */
HBITMAP hbmDefCanvas; /* キャンバスのデフォルトビットマップのハンドル */
/* ここまで */

BOOL CALLBACK DialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam){
/* case WM_INITDIALOG内 */
HWND hwndCanvas; /* キャンバスのウインドウハンドル */
HDC hdcCanvas; /* キャンバスのデバイスコンテキストハンドル */
RECT rectCanvas; /* キャンバスの矩形 */

/* キャンバスのためのメモリデバイスコンテキストを作成する */
hdcCanvas = GetDC(hwndCanvas);
hdcMemCanvas = CreateCompatibleDC(hdcCanvas);
ReleaseDC(hwndCanvas, hdcCanvas);
/* キャンバスのためのビットマップを作成する */
GetClientRect(hwndCanvas, &rectCanvas);
hbmCanvas = CreateCompatibleBitmap(hdcMemCanvas, rectCanvas.right, rectCanvas.bottom);
/* ビットマップを選択する */
hbmDefCanvas = SelectObject(hdcMemCanvas, hbmCanvas);
/* case WM_INITDIALOG内はここまで(以下の処理は省略) */

Draw(hWnd);
} /* DialogProcここまで */
157156(続きです):04/09/07 13:33
/* 線の描画 */
Draw(HWND hwndDlg){
MoveToEx(hdcMemCanvas, 30, 30, NULL);
LineTo(hdcMemCanvas, 200, 200);
SendDlgItemMessage(hwndDlg, IDC_CANVAS, STM_SETIMAGE,
(WPARAM)IMAGE_BITMAP, (LPARAM)hbmCanvas);
}


スタティックテキストの位置と、線を描画する座標は合っています。
どこがオカシイのでしょうか?ご教授願います。
158137:04/09/07 13:41
>>155
うわぁー。これで解決するかもしれません!
早速試してみます。
ありがとうございます。
スタティックテキストに直接、線なんて描けるの?
スタティックコントロールの派生クラスを作って
そこのPaintかなんかで描画した方が簡単なような
MFCでコーディングしているとどうしてもドキュメントクラスに処理が集中してしまうのだが
どうしたらいいのだろうか。処理の意味的にビュークラスやアプリクラスには入れられない。

メニュー処理、ダイアログ表示、処理実行等、ドキュメント変更にかかわるもの全てドキュメントクラス上にあります。
MFCのアプリってのはこういうものなのでしょうか?
HDC hdc;
hdc=GetDC(GetDlgItem(hDlg,IDC_EDIT));//(GetDlgItem(コントロールの親ハンドル,コントロールのID)
MoveToEx(hdc, 30, 30, NULL);
LineTo(hdc, 200, 200);

って感じに簡単にエディットボックス内に線が引けた。
162156:04/09/07 15:10
>>159 >>161
レスありがとうございました。
>>161氏の方法で、スタティックテキストに線を描くことが出来ました。
OS再インスコするのですが,VC6.0のカスタマイズのファイルって
バックアップできますか?
.hファイルにクラスのメンバやメンバ関数をいれ、
.cppファイルに関数の中身を書くというのはよく行うこと
なんでしょうか。
みなさんはどのようにファイルをまとめていらっしゃいますか?
かなり気になる==
もしいいサイトあったら教えてほしいです。よければお願いします。
>>164
テンプレート以外は普通そうしないか?
>>164
そんな感じで問題ないと思うけどね。
余程短いコードならヘッダに直接書いちゃう事もあるけど。
>>160
釣りか?

ドキュメントが処理ではなく、ドキュメントへ「通知」すると考えれば、
自然と各ビューに処理が分散される。
そもそもコマンド系がアプリやメインフレームに少なかったり、
ダイアログの処理がダイアログになかったりするなら、
なにか根本的な考え方に問題がある。
コマンドがアプリやメインフレームに集まる方こそおかしくないか?
アプリは GetViewList/GetDocumentListとか、Application.Exit Application.Clone とかだけでいいと思うんだが。
>>165 >>166
レスありがとうございました。
そうですか。なんかちょっと別の方法を期待してたのですが。
でも、そうと分かればしばらくその方法でいこうと思います。
慣れるまで。

続けて質問すみません。
WM_のウィンドウメッセージをキューから削除するような関数って
有りませんか。ちょうど、SendMessageやPostMessageの逆みたいな
関数。本やリファレンス調べてみたけど見つからない。
有りそうな関数だと思うんだけど。やろうとしているのは
ウィンドウ作成時にWM_ACTIVATEを呼びだすのを止めたいのですが。
でもでも、DefWindowProcに送らなくても大丈夫か。。?
実装してるコードが気になるが、リファレンスで探してみるも
また見つからない。検索の仕方難しい。
フラグで処理すればいいかも知れないが、何かとできない処理が
見つかればすぐにフラグが思い付く私は、、、、(ry
長文スマソ。。
GetMessageでもPeekMessage(PM_REMOVE)でも。
171デフォルトの名無しさん:04/09/08 02:48
デスクトップ上のマウスの動きをプロシージャに送りたいのですが、どのようにしたら宜しいのでしょうか?
SetCapture()を使ったのですが、全然WM_MOUSEMOVEとかのメッセージがきません・・・
>>171
timerセットして、GetCursorPos()で監視とかではダメ?
>>171
マウスフック
SetCaptureはドラッグしている間しか効かなかった気がする。
174デフォルトの名無しさん:04/09/08 18:13
VC++6.0 MFCを使ったダイアログベースのシリアル通信アプリケーションを作りたいのですが、
受信したものを表示させるところで行き詰っています。

char型の受信バッファをエディットボックスにいい感じに表示するにはどーすれば良いですか?

受信バッファ rcvBuf
エディットボックスのID IDC_EDITrcv
といった感じで、

ReadFile(hComm, rcvBuf, dwCount, &dwRead, NULL);//ファイルからデータを読み取る(char)
CString aiu;
rcv = rcvBuf;
SetDlgItemText(IDC_EDITrcv,rcv);

と、今はこんな感じです。

何やら無理やりCStringにしてるんですが、charのままエディットに表示できたりしないですか?
あと、これでも表示されるんですが、0x40と16進で表示させたいにもかかわらず ・@と文字コードで表示されてしまいます。

ご覧の通り初心者ですが、何かアドバイスお願いします。
175174:04/09/08 18:16
すいません、訂正です。

ReadFile(hComm, rcvBuf, dwCount, &dwRead, NULL);
CString rcv;
rcv = rcvBuf;
SetDlgItemText(IDC_EDITrcv,rcv);
>>175
普通にこうじゃないの?
SetDlgItemText(IDC_EDITrcv, rcvBuf);
177176:04/09/08 18:47
ゴメン 0x40 みてなかった・・・
178169:04/09/08 18:56
>>170
削除じゃ無くて拾えば良かったんだ。
ありがとです。
179174:04/09/08 19:47
>>176
すんません、普通に
ReadFile(hComm, rcvBuf, dwCount, &dwRead, NULL)
SetDlgItemText(IDC_EDITrcv,rcvBuf);
で表示できますね。無駄にCStringにしてました。意味なかったっぽいです。
↑これでchar型のままエディットボックスに表示できたのはいいんですが、
やはり、文字コードの・@と表示されてしまいます。

ちなみに、
SetDlgItemInt(IDC_EDITrcv,dwCount);
とすると、16と表示され、受信データは16バイトのはずなのですが、先頭の40しか表示できていないのも気になります。

まずは@の文字コードを40と表示できるようになってから16バイトすべて表示させてやろうと考えております。

何度も書き込み申し訳ありません。
そら0x40は@だからなあ・・・・そう表示されちゃうべ。
通常の数字やアルファベットはそのまま表示して、特定のコードだけ
16進で表示しようとしてるんかね?
1815歳の女をレイプマン SS:04/09/08 20:11
ss(おしゃれやん芸人)は和田明子を車で引かしたのでしょうか。
182デフォルトの名無しさん:04/09/08 21:51
すみません・・・間違えて書き込んでしまいました
>>172さん>>173さん
どうもありがとうございました。
フックでやってみます
184179:04/09/08 23:30
>>180
>通常の数字やアルファベットはそのまま表示して、特定のコードだけ
>16進で表示しようとしてるんかね?

そうです。
@にならないように、0x40、もしくは40とエディットボックスへ表示するにはどうしたら良いでしょうか。
>>184
sprintf(mojiretu, "0x%x", suuji)
186184:04/09/08 23:50
>>185
ReadFile(hComm, rcvBuf, dwCount, &dwRead, NULL)
sprintf(rcvBuf,"0x%x",rcv)
SetDlgItemText(IDC_EDITrcv,rcv);
ということでしょうか。

何はともあれアドバイスありがとうございます。
現在は開発環境が無いため、明日朝一でアドバイスを元に試行錯誤してみます。
>>186
逆だよ。一桁づつしか変換できないし。

sprintf(rcv, "%#x", rcvBuf[0])
SetDlgItemText(IDC_EDITrcv, rcv);

188184:04/09/09 00:07
>>187
あ、はい。。
ご指摘感謝です。
ちょっと気になることがあるので教えてください。

1、 TypeA& func() { return *new TypeA; }

2、 game->fire(new CBullet(iX+12,iY-6,0,-10,game));

↑のコードはどっちもネットで見つけたものなんですが、どこにもdeleteが書いてないんですがこれってメモリリークにならないんですか?
前者は大抵の場合リークになるだろうな。
ただ、際限なく増えつづけるような悪質なものとは限らない。

後者はfireの中でdeleteしてるかもしれないしなんともいえない。
>>190
レスどうもです。
やっぱりリークするんですか。
ネットに載せるくらいだから間違いないんだろうな〜と思ってたんですが、そうでもないみたいですね・・・。
すっきりしました。
>>191
リークするかどうかは、newのオーバーライドやその後のコードによるんだよ。
参照にしたものからわざわざポインタを取り出してdeleteする事もできるし、
ヒープ以外から確保するようにnewをオーバーライドしているかもしれない。

ついでに言えば使い方次第ではdeleteしなくても間違いじゃない。
ネットに載せてあるソースなんて、大抵間違いだらけ
194デフォルトの名無しさん:04/09/09 15:35
VC++6を使用しています。
ウィンドウを作らずにダイアログボックスのみを開くプログラムを作成しています。

プログラム実行と同時に線を描画させたいのですが、上手くいきません。

・global変数として「HDC hdc_field」を作成。
・ダイアログプロシージャ関数の case MW_INITDIALOG 内で hdc_field = getDC(hWnd);
@↑のgetDCの命令の下に、線を描画させる関数を配置。
A線を描画させる関数を、ダイアログボックスに配置したボタンを押したときに呼ぶ関数内に配置

Aでは線が描かれるのですが、@では線が描かれません。
同じ関数を呼び出しているのに、どうしてなのでしょうか?
また、プログラム実行と同時に線を描画させるにはどうしたら良いのでしょうか?
(ウィンドウを開くプログラムではこのような問題は生じなかったのですが…)

よろしくお願いします。
>>194
WM_INITDIALOGが送られてくる時点ではまだダイアログは画面に表示されてないから何描いても無駄。
WM_PAINTに処理書くとか、WM_INITDIALOGでWM_APP+nをpostしてそこで描くとか。
ありがとうございました
197194:04/09/09 16:22
>>195
むむ、そうですか。やってみます。
ありがとうございました。


>>196
自分の番号と、レスアンカーを付けた方がよろしいかと。
198デフォルトの名無しさん:04/09/10 05:36
えーとC言語歴一週間のヘタれですが
これからVC++とMFCというやつで色々作って行こうと思ってます。
ベクターとかで公開してそこそこダウンロードしてもらえる様な物を作るのが当面の目標です。

この版見ているとMFCが難しいと言う意見が多いんですが
実際自分でちゃんとしたアプリが作れる様になるには平均的にどのくらいかかるもんなんですか?
その辺は人によりけりだというのは百も承知ですが
参考までに最低でもこの位の期間が必要だというのを教えていただければ幸いです。
下積みの有無によるものが大きい。
MFC使った事なくても、JavaAppletとかで画面イベントに慣れていれば1ヶ月くらいでいけるかも。
200198です:04/09/10 06:35
>>199
レスどうもです。
下積みですか。でも自分は下積みどころかプログラムするのも初めてなんですよ・・
こんな感じだとやっぱり結構時間がかかるんでしょうね・・

それともう一つお聞きしたいのですが
ボーランドのC++ビルダーとかは使いやすいと言う意見が多いのですが
具体的にどの辺がMFCと比べて使いやすいのか教えて頂けると助かるのですが。
場合によってはそちらの方に乗り換えようかとも考えていますので。
コードを書かなくても外見だけは作れる
>>200
そういう考えかたならVBを勧める
パソコン買ったけど使えなくて挫折する
VC買ったけど使えなくて挫折する
どっちもよく聞く話
全く経験ない場合は、CとC++をやってから、MFCに移行だけど、はっきり言って
相当に時間がかかるし、エネルギーも必要。大抵の人は挫折を途中にはさみ
ながら、紆余曲折を経て目的に到達というところだろう。

趣味でなく、学生とか仕事だとしたら、向けられるエネルギーも多いだろうから
一気に行ける場合もあるかも知れない。

いずれにせよプログラミングってのは、ただパソコンいじるのと別次元の難しさ
があるから、あんまり甘い期待を持たないことだ。
205デフォルトの名無しさん:04/09/10 12:12
マルチメディアタイマーを使用しています。Visual C++だと
#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")
を書けばうまくいくのですがBorland C++だとうまくいきません。
リンクができないところが原因だと考えています。設定の仕方を教えてください。
また時間の精度として1msを必要としていてマルチメディアタイマーを使っています。
もし他に何かいい方法をご存知でしたら教えてください。詳しくお願いします。
はじめまして
厚かましいお願いなんですが、VC++6.0のMSDNコレクションのCDの中身を
アップしてくださいませんか?ヘルプが使えなくて困っています。
だめならそのCDが売っている所を教えていただけると嬉しいです。
>>205
Borland C++の事など知ったこっちゃありません
>>205
パフォーマンスカウンタ使えば?
普通のMSDNライブラリなら秋葉の怪しい店で売ってる。

210デフォルトの名無しさん:04/09/10 12:29
>>208
もしよければなにか具体的に使用したプログラムの例はありますか?
>>210 こんな感じかなぁ。
#include <iostream>
#include <windows.h>
using namespace std;

int main(void)
{
LARGE_INTEGER freq, now, old;
UINT r = 60;

QueryPerformanceFrequency(&freq);
while(!(GetKeyState(VK_RETURN) & 0x80)){
cout << "fps: " << r << endl;

QueryPerformanceCounter(&now);
while(now.QuadPart - old.QuadPart < freq.QuadPart / r){
QueryPerformanceCounter(&now);
}
QueryPerformanceCounter(&old);
}
return 0;
}
>>206
犯罪を犯せというお願いですか。
凄いですね。
厚かましいとかいう次元の問題ではないですね。
夏ですね。
214デフォルトの名無しさん:04/09/10 13:46
>>211
親切にしていただきありがとうございます。試してみます。
215206:04/09/10 14:44:44
すみませんでした。
秋葉原を探してみます。
216デフォルトの名無しさん:04/09/10 14:54:08
>>215
だから、なんで>>3じゃダメなんだ?
217デフォルトの名無しさん:04/09/10 15:42:05
>>211
Borland C++ではまたエラーがでてしまいました。>>211さんはVisual C++ですか?
もしBorland C++でのやり方を知っていたら教えてください。
218デフォルトの名無しさん:04/09/10 15:48:35
★初心者にVisual C++を教えるスレ★ Part14

Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。
219デフォルトの名無しさん:04/09/10 19:14:37
>>206
MFCとかATLは無理だけど、PlatformSDKのドキュメントなら
PSDK Updateについてくるからそれ使えよ。
他のが見たければMSDN Library Online使うしかないけど。
220デフォルトの名無しさん:04/09/10 21:26:25
>>206は発想が割れ厨だろ。マンドクセ。
221デフォルトの名無しさん:04/09/11 00:12:42
まじめに、どこから手をつけたら良いかわかりません。
みなさんがプログラミングを始めたきっかけとかどういった感じに勉強したかを教えてください。
222デフォルトの名無しさん:04/09/11 00:29:21
結局やる気の問題じゃないかな。
当然まず環境から揃えなきゃならんけど。
223デフォルトの名無しさん:04/09/11 00:48:58
>>221
べーマガを書店で見掛けたから。
224デフォルトの名無しさん:04/09/11 01:03:59
>>221
消防のころ電気屋でパソコンを見て欲しくなった。
買ってもらえなかったんでチラシの裏にBASICでプログラム書いてた。
(チラシの裏でゲームはできなかったので。)
225デフォルトの名無しさん:04/09/11 09:48:33
>>221
とりあえず入れ物から行く人が多いんじゃないかな?
まずVC買って、自分のカネで用意したからにはそれなりにやろうという気になるし。
後は書籍だろ。他人の推薦とかより立ち読みして自分に合ったの見つける方が良い
とオレは思うけど。
226デフォルトの名無しさん:04/09/11 13:34:46
VC2003のエディタで質問なんですが、
選択した範囲のインデントを整形してくれるショートカットキーって
どうやるんでしたっけ?
なんかやり方忘れたのか、はたまた効かなくなってるのか・・・

for(;;){
a=0;
}

↓(Alt + ?)

for(;;){
    a=0;
}

こうなるヤツです。

227デフォルトの名無しさん:04/09/11 15:18:45
ツール
オプション
テキストエディタ
228デフォルトの名無しさん:04/09/11 15:26:09
>>224
私も買ってもらえなくて(小3くらい.),
べーマガとか月刊マイコンなんか買ってリストを読んでたなぁ.
さすがに224さんみたいに処理系手に入る前に自分で書くようなことはしなかったですけど.
229デフォルトの名無しさん:04/09/11 18:04:19
CString strから'\n'を判定して1行ずつ文字列を得たい場合どうすればいいですか?
230デフォルトの名無しさん:04/09/11 18:10:16
>>227
ちがうんです><
スマートインデントじゃなくて、後からインデントを一発で整形するヤツです!
みんな使わないのかなぁ・・・
231デフォルトの名無しさん:04/09/11 18:19:39
Atl+F8だろ。
232デフォルトの名無しさん:04/09/11 18:31:09
VC++6.0を会社の研修で使ってます。
自宅でも勉強しようとVC++.net2003を購入したんですが
Win32コンソールでソース書いて開始してもコマンドプロントが実行後すぐに
終了してしまいます。
どこか設定で終了させないようできるのでしょか?

#include <stdio.h>
void main(void)
{
printf("テストです。\n");
}

などと書いても一瞬表示されて自動終了します。
コンパイルもビルドもエラーはありません。
会社で使っているVC++6.0では表示されたあと何か
キーを押すと終了されるようなっています。
ちなみに会社も自宅もWinXPです。
233デフォルトの名無しさん:04/09/11 18:33:17
>>231
ありがとう!それを手掛かりに、
オプション→キーボード マップ スキームを「Visual Studio 6」
に設定したら直りました。
快適快適☆
234233:04/09/11 18:34:10
>>232
あ、それ知ってますよ
Ctrl + F5
です
235232:04/09/11 18:46:13
>>234
ありがとうございました!
非常に助かりました。感謝します!
勉強がんばるぞ!
236デフォルトの名無しさん:04/09/11 19:43:59
すいません。Visual C++ 6.0 でメンバテンプレートを
コンパイルするには何かコツがあるんでしょうか?

いま手元にソースや環境がないので詳細な例とか
エラーメッセージとか出せないので申し訳ないんですが、

class MyClass {
 template <class Type>
 static bool fetchValue(Type & value);
}

こういった感じのコードをコンパイルできないんです。
gccとかVisual C++ .NETでは通るのに。。

何か関連する情報をご存じでしたら教えていただけませんか?
237232:04/09/11 20:16:02
すいませんもうひとつ質問させてください。
VC++6.0のときのようにワークスペースを切り替えできるようなものはVC++.net2003ではどのように設定すればいいのでしょうか?

ソリューションエクスプローラからスタートアッププロジェクトに設定でことをすませておりますが、
以前のようにワークスペースをメニューバーから簡単に切り替えられないものかと思います。
どうぞご教授お願いします。
238デフォルトの名無しさん:04/09/11 20:16:46
>>236
VC6はテンプレートに完全に対応してないとか聞いたが
239デフォルトの名無しさん:04/09/11 22:14:43
>>236
typoだと思うけど
template <class Type>
class MyClass {
...
でしょ?
とりあえず必要十分なソースを出してくれ。
話はそれから。
240デフォルトの名無しさん:04/09/11 22:21:16
>>239
メンバテンプレートって言ってるから>>236であってると思うけど。
241239:04/09/11 22:30:39
>>240
なるほど、それで分かった。
VC6 はメンバテンプレートには対応してないんだ。
俺、VC6 しか使ってないから、>>239みたいのでも
メンバに使ってればメンバテンプレートって言うのかと思ってたよ。orz

>>236さん、あきらめてください。
242デフォルトの名無しさん:04/09/11 23:14:41
>>236のコードは、VC6でも通るぞ。
ただ、

MyClass::fetchValue<char>(0);

という感じで、型指定をしている場合は通らないハズ。
自動的に型を判別出来る場合は通る。
243デフォルトの名無しさん:04/09/11 23:19:46
>>236
class MyClass {
public:
template <class Type>
static bool fetchValue(Type & value)
{
value = Type();
return true;
}
};

int i;
MyClass::fetchValue(i);

VC++6SP6で通ったけど素直に.NETに移行した方がいいと思う。
244デフォルトの名無しさん:04/09/12 00:13:47
MFCなんですが、ダイアログベースでメニューを追加したんですが、
メニューの所が窪んだ感じ(視覚的に)なって、動きには関係ないんですが、
どうにかあの窪み(?)を無くせませんか?
VC++2003です。
245虎夫:04/09/12 02:38:59
現在作っているプログラムで、
割り込みによって一定時間ごとにデータを取得しております。

このとき割り込みの周波数を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の命令がくることはないとします。)
246デフォルトの名無しさん:04/09/12 04:46:42
>>242
>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ではできないということなんですよね。。。
247デフォルトの名無しさん:04/09/12 05:51:49
>>246
>こんなことはVC++6ではできないということなんですよね。。。
うむ。

VCToolKitとか、VC2005Expressβとか落として使ってみるのも手だけど、
おそらく、たくさんコードを書き換えないと動かない予感......
248デフォルトの名無しさん:04/09/12 08:01:39
>>245
プログラミング以前の問題
249デフォルトの名無しさん:04/09/12 09:03:11
>>245
A,Cの処理は10ms以内に収まるのであれば割り込みトリガそのもので
シーケンシャルに動かして、Bの処理は割り込みトリガからスレッド起動で
処理するとか。A,CとBは同期してる必要がなければ、ね。
250デフォルトの名無しさん:04/09/12 14:26:19
これ初めて使うんですが、
何かサンプルコードとかがあって、わかりやすいHPあれば教えて下さい。
251デフォルトの名無しさん:04/09/12 14:30:01
252デフォルトの名無しさん:04/09/12 14:30:26
VCを勉強するのに最適な本、教材があれば教えて下さい。
253デフォルトの名無しさん:04/09/12 14:31:01
>>251
d。勉強してきま
254デフォルトの名無しさん:04/09/12 15:03:18
>>252
最適は人によってそれぞれ。
よって答えることは不可能。
255デフォルトの名無しさん:04/09/12 15:44:44
初めまして、C++初心者なのですが、さっそく質問です。
例えば、coutで"数値を入れてください"と表示させて
数値を入れた後に"数値を入れてください"の部分が消え
数値を入れた後の答えだけがでるようにするにはどうすればいいのでしょうか?
それとdos画面でreturn 0;とcoutの間に改行を入れるにはどうしたらいいですか?
ご教授お願いします。
256デフォルトの名無しさん:04/09/12 16:09:55
>>255
完全なスレ違い
それはVisual C++ではなくてC++
257デフォルトの名無しさん:04/09/12 16:17:21
>>255
system("cls");
258デフォルトの名無しさん:04/09/12 17:39:26
>>256
失礼しました。

>>257
できました!!ありがとうございます。
259偏差値37:04/09/12 17:44:15
今日VisualC++.NETを買ってきました。
プログラミング経験は無いです。
よろしくおねがいします。
260デフォルトの名無しさん:04/09/12 17:58:54
cl.exeの
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vccore/html/_core_.2f.o.asp
の/Oオプションって複数していできるんですか?
例えば「/O2 /Ot」とか?
261デフォルトの名無しさん:04/09/12 21:47:55
出来るよ。
ただし、組み合わせによっては無効になるものもある。
262デフォルトの名無しさん:04/09/13 03:36:10
環境:VC++.NET 2003

A, B, Cという3つのプロジェクトがあって、
BはAのソースとヘッダを、CもAのソースとヘッダを
自らのものと混ぜて一緒にコンパイルしたいのです。
このとき、BやCのソリューションエクスプローラに
Aのソースとヘッダを登録しないとだめなのでしょうか。
Aの構成を変えたときに、BとCの両方を変更するのが
面倒くさくて…。
263デフォルトの名無しさん:04/09/13 05:11:31
DevPartner Profilerの.NETバージョン(7.0)を落としたんですが、VC++7.0で使えません。
ネイティブコードでも使えるようなこと書いてあったんですが、どうすればいいんでしょうか。
ちなみに使えないというのは、プロファイラを有効にして実行しても何も起こらないって意味です。
誰か助けてください。
264デフォルトの名無しさん:04/09/13 08:48:56
265デフォルトの名無しさん:04/09/13 13:35:26
VC6と.NETの違いってなんですか?
経験だと.NETアプリって重いから移行したくない…。
日曜プログラマみたいな自分でも移行してたほうがいいですか?
266デフォルトの名無しさん:04/09/13 14:09:05
>>265
VC.NETは.NETアプリだけでなく、
従来通りのWin32ネイティブのアプリも作成可能
VC6 = Win32アプリ
VC.NET = Win32アプリ or .NETアプリ
移行の必要はさほどないと思います。
267デフォルトの名無しさん:04/09/13 14:46:54
質問があります。

Win2000/VC++環境にて、LANアダプタのDHCPの設定(Enable/Disable)は
どのようにすれば取得できるのでしょうか?
色々調べたのですが、解りませんでした。
ご教授、宜しくお願いします。
268偏差値37:04/09/13 15:53:03
新VisualC++.NET入門 ビギナー編 林晴比古
という本を買ってきました。
269デフォルトの名無しさん:04/09/13 16:17:43
>>268
で何よ?
270デフォルトの名無しさん:04/09/13 16:44:12
NET版はどうなんだろ?

http://hp.vector.co.jp/authors/VA023882/review.html
新VisualC++6.0入門 ビギナー編 林晴比古
> やさしすぎて、内容的には、MFCプログラミングのほんの触りだけという感じなので、
> この本だけで何かを創るのは不可能でしょう。
> また、サンプルソースの所々にちょっと不適切と思われる部分が見られます。
271偏差値37:04/09/13 17:24:00
>>270
3部に分かれてますね。

・VC++.NETの操作法
・VC++.NETを使ったプログラミング
・C++の説明
の3つです。。。Amazonのレビューにもありましたがマニュアルって感じです。
書店でVC++.NETの本を探したのですが他の本は体系だてて説明していないのでこれにしました。
272デフォルトの名無しさん:04/09/13 17:27:08
>>268
同じ本持ってるけど、結構いい
273デフォルトの名無しさん:04/09/13 17:46:03
vc++6使用です。

ダイアログボックスベースのファイルを作っています。
*.exeファイルのアイコンの設定方法がわかりません。

ウィンドウベースの場合では、int WINAPI WinMain関数中に
WNDCLASSEX wcl;
char iconName[] = "IDI_ICON1";
wcl.hIcon = LoadIcon(NULL, iconName);

とすることでアイコンを設定できますが、ダイアログボックスベースの場合は
どこに、どのように既述をすればよいのでしょうか?よろしくお願いします。
274デフォルトの名無しさん:04/09/13 18:03:46
SetIcon
275デフォルトの名無しさん:04/09/13 18:04:33
HICON hIcon;
hIcon=(HICON)LoadImage〜
って感じでアイコン読み込んで
SendMessage(hDlg,WM_SETICON〜
でメッセージ送ればできるのではないだろうか。多分。
276デフォルトの名無しさん:04/09/13 19:04:02
>>267
GetAdaptersInfo関数かなあ。
複数ネットワークカードがささってる場合の処理に気をつけた方が
よさそう。(IP_ADAPTER_INFOのNextに次のへのポインタ、など。)
277デフォルトの名無しさん:04/09/13 19:30:53
どっかスレと似たような質問と回答だな
278デフォルトの名無しさん:04/09/13 22:05:16
新VisualC++.NET入門 ビギナー編 林晴比古
いいんだけどさ・・・・ちっともシニア編が出ない訳よ。
近刊ってなってから1年経つんだけど、もう出すの辞めたの?
頼むよ晴比古クン。
279デフォルトの名無しさん:04/09/13 22:19:26
280デフォルトの名無しさん:04/09/13 22:34:12
もうVC++6.0入門シニア編を脳内変換するしかなお
281デフォルトの名無しさん:04/09/14 00:52:02
基本クラスのメソッド内で派生クラスのメンバを使わせる方法ってありませんか?

class 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); //ここ
}
}
こんな感じの使い方がしたいです。即席で作ったので間違ってるかも。
へぼへぼ。
282デフォルトの名無しさん:04/09/14 00:57:33
DataがPhotoを継承するの?
283デフォルトの名無しさん:04/09/14 01:02:52
>>281
Photoで
virtual Point& getPoint() = 0;
ってやってDataで
Point& getPoint() {
return pt;
}
って実装させればいいじゃん。
284デフォルトの名無しさん:04/09/14 01:18:10
ウィンドウを半透明にしたいのですが、ソースの一番上で、

#define _WIN32_WINNT 0x0500

としてるのですが、コンパイル時に
error C2065: 'WS_EX_LAYERED' : 定義されていない識別子です
となって、コンパイルできません

WinUser.hの中を検索したのですが、WS_EX_LAYERED というものが見つかりませんでした・・・
わかるかた、よろしくお願い致します
285デフォルトの名無しさん:04/09/14 01:25:03
>>282 >>283
Photoクラスをそのまま使い、Dataクラスは
Data1、Data2とかそれぞれ固有のメンバを持つ
クラスを作成しようとしてます。
だから、Dataクラスが基本で、Photoクラスを
派生にしました。
うーん、やっぱり派生クラスでデータを吐き出して
基本クラスで読み込むしかないのかなぁ...
それとも、継承を逆にするか、もう一回考え直します。
質問する事で頭の中が整理されたような気がします。
する前はパニック状態でした。ありがとうございました。
自分で考えるしか無さそう...
286284:04/09/14 01:26:03
すみません。開発環境を書き忘れました

WindowsXP、VC++6.0 です。
287デフォルトの名無しさん:04/09/14 01:26:04
>>284
MS行って最新のPlatform SDKダウンロードして来い
288デフォルトの名無しさん:04/09/14 01:37:52
プラットフォームSDKで導入されたから
CDからインスコしただけのVCのヘッダには
当然入っていない。VC++6でしょ?
289284:04/09/14 02:38:36
>>287さん,>>288さん
重ね重ね申し訳ございません
ttp://www.microsoft.com/msdownload/platformsdk/sdkupdate/
で Select All SDKs でインストールしましたが、同じエラーが出てしまいます・・・
290デフォルトの名無しさん:04/09/14 03:10:59
ディレクトリを設定する。リストの一番上にSDKを持ってくる。
291デフォルトの名無しさん:04/09/14 03:18:04
>>284
#ifndef WS_EX_LAYERED // 念の為、トラブル回避
#define WS_EX_LAYERED 0x00080000
#endif
↑を、自分のソースにコピペすればいいよ。
292デフォルトの名無しさん:04/09/14 03:31:30
>>285
template<class D> class Base {
public:
 void Draw() {
  static_cast<D*>(this)->Draw();
 }
};

class Derived : public Base<Derived> {
public:
 void Draw()
 {
  // 略
 }
}
293デフォルトの名無しさん:04/09/14 03:38:49
WTLキタ━
294デフォルトの名無しさん:04/09/14 09:02:36
>>276
ありがとうございます。
295デフォルトの名無しさん:04/09/14 10:43:25
>>289
スタートメニュー -> Microsoft Platform SDK -> Visual Studio Registration -> Register PSDK Directories with Visual Studio
296デフォルトの名無しさん:04/09/14 18:59:19
AlphaBlend関数を使おうとしてコンパイルしたら通りました。
・・・がビルドしようとしたら以下のようなリンクエラーが出ました。

error LNK2001: 外部シンボル "__imp__AlphaBlend@44" は未解決です
fatal error LNK1120: 外部参照 1 が未解決です。

こういった場合どうすればいいんでしょうか?
誰か知っている方がいましたら教えていただけませんでしょうか。
お願いします。
297デフォルトの名無しさん:04/09/14 19:53:34
すみません初心者すぎる質問なんですけどよかったら答えてくれたらうれしいです

string 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にしちるし編集する時にはエンターで改行も出来ます
298285:04/09/14 20:00:31
>>292
はっきりとは理解できないのですが(勉強不足)
派生クラスのメソッドが基本クラスになってる(?)。すごい
ある一つのメンバが基本クラスにコピーされているのでしょうか

結局、継承を逆にするとスムーズにいかないので派生のメンバを
渡すことにしました。というか、継承してないです。。。
基本クラスをメンバに持たせたらごく自然に上手くいきました。
お騒がせしました。恥。。。ホントすみません。
299デフォルトの名無しさん:04/09/14 20:03:15
>>297
"\r\n"
300デフォルトの名無しさん:04/09/14 20:04:55
>>297
msimg32.libをリンクしろ
301デフォルトの名無しさん:04/09/14 20:05:20
>>296だった・・・
302デフォルトの名無しさん:04/09/14 20:06:27
>>297
あとinsertより
str += filename[i];
と書いたほうが見やすいと思う。
303デフォルトの名無しさん:04/09/14 20:29:44
>>299
>>302
お〜ありがとうございます m(_ _)m
勉強になりました
304デフォルトの名無しさん:04/09/15 00:31:54
>>300

どもども。出来ました〜。
305284:04/09/15 01:09:12
>>290さん
Program Filesの中探してたらありました!どうもありがとうございます

>>291さん
直接書くっていう方法もあったんですね。今後何かあったらやってみます。

>>295さん
私のではなぜかスタートメニューにありません・・・
306デフォルトの名無しさん:04/09/15 11:22:01
>>305
なけりゃ実物を探せよ。
つーか別ユーザのスタートメニューに入ってるんだろ。探せよ。
307デフォルトの名無しさん:04/09/16 06:16:55
OnKeyDownで、アローキーの左と下、右と上、等の同時押しの判定はどうやるんですか?
308デフォルトの名無しさん:04/09/16 11:54:02
Borland CでのBGIによるgraphics.hの内容をVisual C++で描きたいのですが
書き換えの仕方を教えてください。
309デフォルトの名無しさん:04/09/16 12:19:15
>>308
そういう問題じゃがいも無い
310デフォルトの名無しさん:04/09/16 12:21:57
>>307
if((GetKeyState(VK_UP) & 0x8000) && (GetKeyState(VK_DOWN) & 0x8000)){
 MessageBox("!");
}
311デフォルトの名無しさん:04/09/16 12:36:45
>>310
ありがとうございます
312デフォルトの名無しさん:04/09/16 16:42:51
mozi配列に代入した平仮名(カタカナ含む)をローマ字に変換してans配列に代入したいのですが上手くいきません。
説明しづらいので簡略化したソースは、

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文内の処理が実行されてしまします。
初歩的な質問だと思いますがアドバイスお願いします.
313デフォルトの名無しさん:04/09/16 16:49:49
>>312
ひらがなは2バイト文字だ。
314デフォルトの名無しさん:04/09/16 16:57:45
あんまり難しいこと考えずに文字列扱いたいならCStringとか使えば?
315312:04/09/16 17:28:41
レスありがとうございます。
>>313
if(strncmp ( mozi , "ひ" , 1 ) == 0 ) {
の1を2にしたらできました。2バイトってのは解ってたんですがstrncmpの使い方が悪かったんですね。

>>314
初耳だったんですがぐぐってみたら便利そうですね。早速試してみます.
316偏差値37:04/09/16 19:13:59
簡単なタブブラウザが作りたいのですが
ダイアログベースでも出来ますか?
317デフォルトの名無しさん:04/09/16 22:34:54
プログラミング超・ド・素人ですがプログラムを組まなくならなければなりません。
まずどういうソフトを作りたいか概要を書きます。
パルスパターンジェネレーター(以下PPG)で任意のパターンを発生させるためにテキストデータから
そのPPGに合うデータを作らなくてはなりません。そこでテキスト→バイナリー変換のプログラムを作りたいのですが
MFCで組、GUI環境で波形を確認しながら作りたいです。
何からやったらいいですか?PPGのバイナリーデータはすでにあります。
環境
Win2000 VC++6.0 です。どうか教えてくださいです。
バイナリの勉強もしなければならないので何か参考になる書物、サイトもお教えください
318デフォルトの名無しさん:04/09/16 22:44:35
入門書にtypeinfoというものがでてきて質問なのですが
書籍ではVC++6.0は/GRコンパイルオプションを指定しなければならないとあるのですがどのように指定するのか手順が載っておらず、どうにも困っています。
そのままコンパイルすると警告が出てしまい、実行するとエラーで強制終了してしまいます。
よろしければご指導おねがいします。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1074774948_34/code.txt ←ソースです。
警告:'typeid' が /GR- を使用したポリモーフィック型 'class Base' で使用されています; 動作結果は保証されません。 ←エラーメッセージです
319デフォルトの名無しさん:04/09/16 22:46:05
/GR オプションは、実行時にオブジェクト タイプをチェックするコードを追加します。このオプションを指定すると、コンパイラが _CPPRTTI プリプロセッサ マクロを定義します。特に指定しない限り、このオプションはクリア (/GR-) されます。

開発環境でこのオプションを指定するには、[プロジェクト] メニューの [設定] をクリックします。次に、[C/C++] タブをクリックし、[カテゴリ] ボックスの [C++言語] をクリックします。

ラインタイム型チェックの詳細については、「C++ ランゲージ リファレンス」の「ランタイム タイプ情報」を参照してください。
320デフォルトの名無しさん:04/09/16 22:46:22
書き忘れました、VC++6.0使用でwindowsXPsp1使用です。
321デフォルトの名無しさん:04/09/16 22:52:40
>>319
ありがとうございます、実行できました
322デフォルトの名無しさん:04/09/16 23:23:42
.NETの入門書見ながらVC++6.0で勉強してるんですが、
プロパティーウィンドウのメッセージの追加ボタン(?)
(この機能を使うと自動的に関数やメッセージハンドラが追加されるらしい)
が見当たりません。6.0でやるにはどうしたらいいですか?
323デフォルトの名無しさん:04/09/16 23:36:51
>>322
VC++6では、ClassWizardと呼ばれる機能です。
324323:04/09/16 23:38:31
325デフォルトの名無しさん:04/09/16 23:53:09
>>323
ありがとうございます〜!
しかし、ClassWizardの項目が選択できない(灰色)のですが…
326デフォルトの名無しさん:04/09/17 17:53:53
作成したプロジェクトの名前を途中で変更することって、できませんか?有ったら教えて下さい。
プロジェクトをまるまるコピーする事が多いので、どれがどんなプログラムか
分かりにくいです。
327デフォルトの名無しさん:04/09/18 00:33:38
>>326
できる。project fileの内容を変更すればいい。
328デフォルトの名無しさん:04/09/18 02:37:32
すいません。CListBoxについて教えてください。
やりたいことは、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の組み合わせでも出来なかったので
よい方法があれば教えてください。よろしくです。
329デフォルトの名無しさん:04/09/18 02:54:23
m_list.AddString("(- -;)");
m_list.DeleteString(0);
m_list.SetCurSel(49);
330328:04/09/18 13:44:20
>329
ありがとうございます。
みごと出来ました!
331デフォルトの名無しさん:04/09/18 15:19:45
ファイルのプロパティを表示させる関数とかってありますか?
あったら何関数を使ったら良いのか教えてください。

よろしくお願いいたします。
332デフォルトの名無しさん:04/09/18 15:52:03
特定のウィンドウのタイトルバーの高さのサイズを変更したいのですが、
できますでしょうか?
自分で擬似タイトルバーを作成すればできると思いますが、できれば、
標準のタイトルバーで実装したいです。
GetSystemMetrics(SM_CYCAPTION);
で、タイトルバーの高さが取得できるのは、分かったのですが、
タイトルバーの高さの設定方法は、分かりませんでした。

どうぞ、宜しくお願い致します。
333デフォルトの名無しさん:04/09/18 17:07:17
>>331 SHMultifilePropertiesとか
334デフォルトの名無しさん:04/09/18 17:08:06
>>332
できない。
自分でタイトルバーを書くのは、DrawCaptionと言うのがあるのでそれを使って書くしかないと思う。
335& ◆oUgkzAA5Yw :04/09/18 18:11:23
あのう VC の _setjmp() と _setjmp3() の違いを
教えていただきたいのですが。。。
336デフォルトの名無しさん:04/09/19 06:04:48
そんな関数あるんだ
たぶん一生つかうことないんじゃないか?
337デフォルトの名無しさん:04/09/19 06:38:41
ウィンドウの上のコントロールにWS_TABSTOPの属性をつけたのに[TAB]で移動できないんですけど何が原因なんでしょうか
338デフォルトの名無しさん:04/09/19 09:21:15
>>337
IsDialogMessage
339デフォルトの名無しさん:04/09/19 21:22:04
>>338
IsDialogMessage(hWnd, &msg)
見たいにして使ってみたんですけど[tab]を押したときにフォーカスがどこかに行ってしまいました orz
調べてみたところモードレスダイアログによく使われているんですけど
親ウィンドウ(メインウィンドウ)に直接コントロールを置いているんですけどこの関数は使えるのですか?
340デフォルトの名無しさん:04/09/19 22:53:14
MFCでFormViewを選択すると、
CFormViewの印刷サポートは使用できません
とでるんですが、印刷はできないんですか?
341デフォルトの名無しさん:04/09/19 22:56:03
>>339
MSDN読めよ。
>Although the IsDialogMessage function is intended for modeless dialog boxes,
>you can use it with any window that contains controls, enabling the windows
>to provide the same keyboard selection as is used in a dialog box.
342デフォルトの名無しさん:04/09/19 23:52:38
>>340
できますよ
343340:04/09/20 00:10:15
>>342
(・∀・)グラッチェ!
344元unixプログラマ:04/09/20 00:22:53
VC++6上で、wininetを使ってHTTPSクライアントを書いています。

あるWEBサーバに接続したあとで、どうすれば、現在接続中の
クライアントのIPアドレスを知ることができるでしょうか。
IPアドレスが複数ついているマシンを使っているときはどうすれば。

345デフォルトの名無しさん:04/09/20 04:30:24
すいません、ダイアルアップについて質問です。
VC++6.0(2000/XP)でRASDial関数を実行するとエラー(668)になります。
問題のソースは以下です。
===============
memset( &entry, '\0', sizeof( RASENTRY ) );
memset( &rasprm, '\0', sizeof( RASDIALPARAMS));
rasprm.dwSize = sizeof( RASDIALPARAMS);
dwSize = entry.dwSize = sizeof( RASENTRY );
lstrcpy( rasprm.szEntryName, lpRasEntryName);
dwret = ::RasGetEntryDialParams(NULL, &rasprm, &bret);
dwret = ::RasGetEntryProperties( NULL, rasprm.szEntryName, &entry, &dwSize, NULL, NULL );
lstrcpy( rasprm.szPhoneNumber, entry.szLocalPhoneNumber );
dwret = ::RasDial( NULL, NULL, &rasprm,NULL, (void *)&RasFunc,&m_hrasconn);
===============
ちなみに、ユーザ名、パスワード、電話番号は取得できています。
エラー情報から接続スピードを下げるとかそんなことが書いてありますが
普通にrasdaialで繋がるので、プログラム的に問題があると思っています。
何か設定(処理手順)で見落としているんでしょうか?
わかる方おりましたら教えてください。
よろしくお願いします。
346339:04/09/20 07:48:00
解決しました、コントロールにWS_EX_CONTROLPARENTを指定していたので動作がおかしかったようです
ありがとうございました!
347デフォルトの名無しさん:04/09/20 23:06:02
Intellisenceが働かない関数があるのですが、それはしかたのないことなのでしょうか?
どこかを設定すればよかったりするのですか?
348デフォルトの名無しさん:04/09/21 00:41:03
>>347
*.ncbのファイルを削除するとよかったりする
349デフォルトの名無しさん:04/09/21 09:07:21
VisualCでファイルを選択して読みこんだりできますよね?
例えば、あるフォルダFolder1にName1.txtとかName2.txtとかってあるのを
1つ選択するみたいな。

じゃあ、こんなことできますかね?
あるFolder1に3つのテキストファイルa.txt, b.txt, c.txtに対して
a.txtをひらくと残りのb.txt, c.txtも読みこめるようなことってできます??
フォルダFolder1, Folder2, ...というふうにフォルダがたくさんある中で、
これら全てのフォルダの中にa.txt, b.txt, c.txtといった3つのファイルがあるとします。
350 ◆FIcNi4f8js :04/09/21 09:09:47
>>349
マルチにつきレス禁止
351 ◆FIcNi4f8js :04/09/21 09:10:58
>>344
複数IPが割り当てられたクライアントの場合は
接続に使われた1つ分のIPしか分からない。
352デフォルトの名無しさん:04/09/21 13:27:42
VC++.netでSQLデータベースにアクセスするのに最小限必要なソースとはどのようなものでしょうか?


というか、
CDatabase を使ってOpen()をやるのだろうと思ったのですが
"afxdb.h"をインクルードするだけで

error LNK2019: 未解決の外部シンボル __beginthreadex が関数 "public: int __thiscall CWinThread::CreateThread(unsigned long,unsigned int,struct _SECURITY_ATTRIBUTES *)" (?CreateThread@CWinThread@@QAEHKIPAU_SECURITY_ATTRIBUTES@@@Z) で参照されました。
error LNK2019: 未解決の外部シンボル __endthreadex が関数 "void __stdcall AfxEndThread(unsigned int,int)" (?AfxEndThread@@YGXIH@Z) で参照されました。


何が問題なのでしょうか?
353デフォルトの名無しさん:04/09/21 13:32:03
一面の菜の花 
一面の菜の花
一面の菜の花
一面の菜の花
一面の菜の花
一面の菜の花
一面の菜の花
微かなる麦笛
一面の菜の花

上の山村暮鳥の詩を表示するプログラムをできるだけ少ない文字数で
つくりたいんですがどうしたらいいですか?
354デフォルトの名無しさん:04/09/21 13:33:10
ATOMってなんですか?
355デフォルトの名無しさん:04/09/21 13:49:05

int i=0;
while(i<7){
if(i==6){
printf("微かなる麦笛\n一面の菜の花");
break;
}
printf("一面の菜の花\n");
i++;
}
356デフォルトの名無しさん:04/09/21 13:55:31
>>355
for(int i=0; i < 7; ++i)
printf("一面の菜の花\n");
printf("微かなる麦笛\n一面の菜の花");
357デフォルトの名無しさん:04/09/21 13:57:52
for(int i=0; i < 9; ++i) {
if(i==7)
printf("微かなる麦笛\n");
else
printf("一面の菜の花\n");
}
358デフォルトの名無しさん:04/09/21 14:04:40
#define a "一面の菜の花\n"
#define b "微かなる麦笛\n"
for(int i=0;i<7;i++)
printf(a);
printf(b a);
359デフォルトの名無しさん:04/09/21 14:06:41
VCと関係ないのに釣られるなよ
360デフォルトの名無しさん:04/09/21 14:16:40
>>352
MFC?
ウイザード使ってないのか?
361デフォルトの名無しさん:04/09/21 14:17:09
一面の菜の花 一面の菜の花 一面の菜の花  
一面の菜の花 一面の菜の花 一面の菜の花
一面の菜の花 一面の菜の花 一面の菜の花
一面の菜の花 一面の菜の花 一面の菜の花
一面の菜の花 一面の菜の花 一面の菜の花
一面の菜の花 一面の菜の花 一面の菜の花
一面の菜の花 一面の菜の花 一面の菜の花
微かなる麦笛 雲雀のお喋り 病めるは昼の月
一面の菜の花 一面の菜の花 一面の菜の花

すいませんスレ違いみたいなんですけどついでに上の詩もいいですか?
  
362デフォルトの名無しさん:04/09/21 14:22:54
#define a "一面の菜の花 "
for(int i=0;i<7;i++)
printf(a a a +"\n");
printf("微かなる麦笛 雲雀のお喋り 病めるは昼の月\n");
printf(a a a);
363デフォルトの名無しさん:04/09/21 14:22:56
>>361
質問する前にROMっとけ
そういう質問向きのスレが見つかるまで質問するな
364デフォルトの名無しさん:04/09/21 14:28:30
LINK : fatal error LNK1181: 入力ファイル "dinput8.lib" を開けません

ビルドするとこんな↑エラーが出るのですが、どうすればいいのですか?
365デフォルトの名無しさん:04/09/21 14:34:19
>>360
コンソールアプリケーションです。

新規作成→プロジェクト→win32プロジェクト→
アプリケーションの設定→コンソールアプリケーション
366デフォルトの名無しさん:04/09/21 14:46:33
>>364
dinput8.libでぐぐれば一発
367デフォルトの名無しさん:04/09/21 15:22:14
MFCでのプログラムを昨日はじめたばかりの初心者です。
SDIでスケルトンを生成し、プログラムを開始したはいいものの
マウス関連処理で困っています。

マウスのスクロールボタン(真ん中)を押して、
イベントを発生させたいのですが、クラスウィザードでメッセージを見ても
それらしきものがありません。(スクロールはありますが)
CView::OnMButtonDown を手動でインプリメントしたのですが、
機能はしてくれませんでした。
この場合、どのように対処したらよいでしょうか?
よろしくお願いします。

開発環境:VC6.0, WinXP Pro
368デフォルトの名無しさん:04/09/21 15:28:01
>>367
ハンドラの追加でフィルタを「ウィンドウ」にすれば出てくる。
369367:04/09/21 15:36:47
わかりました!
ありがとうございました!
370352:04/09/21 17:17:25
VC++.netでSQLデータベースにアクセスするためには何か設定が必要なのでしょうか?
どこ調べても簡単なソースだけ書いて
こうすればSQL操作ができるとかあって何か設定が必要であるかなんかはわからないんですが

SQLサーバはすでに動いています。
ユーザとデータベースも作ったのでアクセスはできると思うのですが


String *query = "SELECT * FROM table1";
SqlConnection *sql = new SqlConnection();
sql->ConnectionString="server=localhost;database=database1";
sql->Open();   
SqlCommand *sqlCommand = new SqlCommand(query, sql);


sql->Openの時点でSystem.Data.dllのエラーがどうとか
この方法以外でもっとシンプルでわかりやすい方法があればそちらを使いたいのですが.
localhostのところを実際のIPアドレスに変えてもだめです
371デフォルトの名無しさん:04/09/21 17:45:29
SP6についての質問です。

今日、今更PS6が出てるのに気付いてあわてて導入したんですよ。
構造体の要素を変更しても、入力候補の方で更新されないバグが直るかなー。
ぐらいの気持ちで入れたんです。

それなのに適用後、とりあえず確認のためと思い、作成中のプログラムをコンパイルしてみたら
何故かコンパイルエラーが出てしまいまして・・。

stdarg.h(48) : fatal error C1001: 内部コンパイラ エラー
(コンパイラ ファイル 'msc1.cpp', 行番号 1794)

というエラーが、2回でてしまうのですよ。
その2つが指す行は共に同じ場所で、stdarg.hの

typedef char * va_list;

という場所です。
ここから、恐らく可変長引数の周りでなにかしらの不具合が起こっていると思い、可変長引数を
ひとまずコメントアウトしてみたら(可変賞引数を使った関数は今後の為に作っておいたのですが、
メインプログラムではまだ未使用な状態でした。)今度は例のエラーが出る回数が3回に増えてしまいました。
お手上げ状態です。(´・ω・`)

尚、他のプログラムも複数試しましたが、それらはどれも問題なく動きました。
よりによって数ヶ月かけて書いてるプログラムがコンパイルエラーなのですよ(つд`)

どなたか対処法をご存知の方がいらっしゃいましたら、どうかご教授ください。
よろしくお願いします。


372デフォルトの名無しさん:04/09/21 18:20:03
多重継承についての質問なんですが、
階層の深さとかに限界があるのでしょうか?
VC++(.NET 2002)では、コンパイルはとうるのですが、ただしく動作をしません。
メモリへの不正アクセスのようなエラーがでます。
しかし、まったく同じコードをIntelC++ですと問題なく動作します。
なにがご存知でしたら教えてください。
373デフォルトの名無しさん:04/09/21 18:20:20
C1001の場合は、エラー発生個所と問題の個所に関連が無い事も多いよ。

テンプレートクラスの中にネストしたテンプレートクラスを作ったりすると、
デバッグモードでのみSTLのヘッダでエラーが起こったりする場合があるし。
もちろん、該当クラスが依存しているところでSTLを利用していなくても。
374デフォルトの名無しさん:04/09/21 18:40:12
多重形状のエラーですが、0xC0000005がでます。
class A

class B virtual public A

class C virtual public A

class D virtual public B, virtual public C

class E virtual public B, virtual public C

class F public D, public E
というような継承をしています。
class Fから class Aの関数をコールしている場所でエラーが
発生します。
よろしくお願いします。

375371:04/09/21 18:56:32
自己解決致しましたので報告します。

コンパイルモードをデバックモードにしたら正常にコンパイルできたので、
リリースモードでリビルトしてみたところ、正常にコンパイルできました。
気が動転して、足元を見損なっていました。
お騒がせして申し訳ありませんでした(´・ω・`) < こんなことに2時間費やしちゃったよ。

>>373
レスありがとうございました。
1001という数字が少しトラウマになりました(´・ω・`)
376デフォルトの名無しさん:04/09/21 19:04:32
星野仙一
377デフォルトの名無しさん:04/09/21 19:13:11
おとといM$のサイトからC#の評価版をおとしてみた。
たとえば「Console.」を打てばその次に来る候補が
でていき長い物やよく使わないメソッドなどは大変
楽であった。このような機能はVISUAL c++ でも
搭載されているの?インテリセンス?だったっけ。
378デフォルトの名無しさん:04/09/21 19:14:48
もちろん。
入力補完機能が付いていない開発環境は
今では見向きもされないだろう。
379デフォルトの名無しさん:04/09/21 19:18:50
>>378
お前は、今、Del厨犬厨Java厨等、様々な厨を敵に回した。
380デフォルトの名無しさん:04/09/21 19:22:37
Delphiの開発環境って入力補完機能無いの?
JavaでもEclipseくらいならあるんじゃないの?無いの?
381デフォルトの名無しさん:04/09/21 19:24:55
>>379
まじで?!ネタですか?
382デフォルトの名無しさん:04/09/21 19:25:32
>>380
弁解しても無駄。
俺がお前の立場なら一人では出歩かない。
383デフォルトの名無しさん:04/09/21 19:41:47
へいきへいき Visual J++があるよ
384デフォルトの名無しさん:04/09/21 21:43:55
ただの入力補間ではなくて、クラスやメソッド名を打ち
込むときに終わってからではなく数文字打ているときに
候補一覧が出てくる素早さや、何のショートカットキーを
使わず自動的にとまったところでも出てくるとこがいい。
あとEMACSキーカスタマイズがついてたこと。これは俺に
とっては夢のようだ!ちなみにこれはC#トライアルバージ
ョンでC++はショートカットキーを押さないと候補が出てこ
なかった。
385デフォルトの名無しさん:04/09/21 22:58:23
あるプログラムでデバッガを使用しようとするとSTRSTR.ASMのパスを入力してください と出ます。
そして自分にはまだ理解できない混合モードになってしまいます。
少し前までは出ていなかったのでテキスト形式のソースプログラム上で一行ずつ実行など行えていました。
そして他のワークスペースのプログラムではデバッガはいつも通り使用できます。
混合モードとは何か、こんなダイアログが出たときどうすればいいか調べたのですがわかりませんでした。
Visual C++6.0を使っています。こんな質問ですいません。よろしくおねがいします。
386デフォルトの名無しさん:04/09/22 00:03:20
>>385
VC6でもデバッグモードなら呼び出し履歴から
エラーの発生箇所がわかるんでない?

>混合モードとは何か、こんなダイアログが出たときどうすればいいか調べたのですがわかりませんでした。
余力があればアセンブラについて勉強すると幅が拡がるかモナー。
387デフォルトの名無しさん:04/09/22 06:17:51
>>385
自分で書いたソース以外の所で止まってるから
388デフォルトの名無しさん:04/09/22 08:52:00
自分で書いた以外ソース以外が、表示されている時
誤って変更&保存しても、大丈夫ですか?
389デフォルトの名無しさん:04/09/22 11:17:55
> 自分で書いた以外ソース以外
混合モードで表示されてるコードを編集してしまって大丈夫かってこと?
それだったら、混合モードじゃ編集は出来ないと思うぞ。
390デフォルトの名無しさん:04/09/22 12:31:35
>>389
混合モードで、アセンブラが表示されるんですが、
その時ソースも開けるようになって(例えばwinfrm.cpp)
そこでは、編集も出来てしまうんです・・・
これいじると、取り返しの付かない事になりそうで・・・
どうなんでしょう?

// This is a part of the Microsoft Foundation Classes C++ library.
ちなみに、一行目には、このようにコメントされています。
391デフォルトの名無しさん:04/09/22 12:34:21
流れ図書いたことある人っている?
資格試験の問題と、教本でしか見たことない
392デフォルトの名無しさん:04/09/22 12:47:37
>>391
http://www.staedtler.co.jp/products/06_template/01-other-template/index.html
昔はこういうテンプレートと字消し板使ってた。
Windowsは手続き型じゃないし
393352:04/09/22 13:00:14
質問が流れて
>>352
誰か何かヒントを下さい〜
394デフォルトの名無しさん:04/09/22 13:08:17
よく分からんがとりあえず
#include <process.h>
をインクルードしてみろ。
それと、プロジェクトの設定のC/C++タブのところにあるコンボボックスから
コード生成を選び、マルチスレッド対応のランタイムライブラリを指定して
リビルドしてみろ。
解決しなかったらまたいらして下さい。
395デフォルトの名無しさん:04/09/22 13:23:46
>>352
本も見ないでやってるとは、超初心者か?超ベテランか?
おそらく仕事でやってるんだろうけど、
本の値段より時給の方がはるかに安いのか?
396デフォルトの名無しさん:04/09/22 14:00:22
>>394
優しさをうまく表現できない不器用な人
397デフォルトの名無しさん:04/09/22 14:21:29
CPUがSSE3に対応しているかどうかをプログラム中で取得したいのですが
どうしたら良いのでしょうか?
よろしくお願いします。
398デフォルトの名無しさん:04/09/22 15:48:43
>>397
アセンブラのcpuid命令で取得出来たと思う。
399デフォルトの名無しさん:04/09/22 15:55:00
MFC(VC6で作成)の質問です。
スプリットウィンドウを CSplitterWnd で複数作成して、
そのスプリットウィンドウのどこかでイベントを発生させたら、
すべてのスプリットウィンドウを更新するにはどうしたらいいんですか?
400デフォルトの名無しさん:04/09/22 16:01:30
>>390
つーかwinfrm.cppを書込み禁止にしておけばいいし。
そうじゃなくても、あとから上書きすればいいし。
また、編集できるつっても、どーせアセンブラ言語の行は
変えられないんでしょ?
変えられたとしても、C++のソースに反映されないでしょ?
反映されたとしても、winfrm.cpp をまるごと上書きすればいいし。
また、編集
401デフォルトの名無しさん:04/09/22 16:03:58
>>399
UpdateAllViews
402399:04/09/22 16:20:01
>>401
ありがとうございます。
こんな関数があるんですね。
これは C***View でマウスとかの取得をしても
できるものなんですか?
C***Doc.cpp の何処かに記述するんですよね?
結局やりたいことは、OpenGL の描画を同期させたいのですが。
連続質問で申し訳ありません。
403デフォルトの名無しさん:04/09/22 20:23:10
>>399
GetDocument
404385:04/09/22 22:08:39
ありがとうございます。レス遅れました

>>386さん 

>VC6でもデバッグモードなら呼び出し履歴から
エラーの発生箇所がわかるんでない?

そうなんですかぁ。呼び出し履歴というものをちょっと調べてみます。

>余力があればアセンブラについて勉強すると幅が拡がるかモナー。

そうなんですか。まだまるっきしCしか使えないのでちょっとしたら手を出したいと思います


>>389さん

>自分で書いたソース以外の所で止まってるから

これはそういうことなんですかー。デバッガがドコで停止したか調べてみたら
strstrをあるワークスペースAのプログラムから呼び出そうとしたときでした。
他のワークスペースBのプログラムでstrstrを実行しても平気なので、
Aのstrstrに関係する内容をいつの間にか変更していたのでしょうか。
新しくワークスペースBを用意してAの物を持ってきたら
Bではデバッガが止まる事はありませんでした。

ありがとうございました。



405399:04/09/23 01:30:01
>>403 さん
できました!感謝です!
406デフォルトの名無しさん:04/09/23 10:36:27
コピペミスって
class foo : public foo {
になったクラスのメンバ関数内でインテリセンス起動→VC6いきなり落ちる。
たのむよ〜。原因がわからなくてもう少しで最インスコしてたよ。
407デフォルトの名無しさん:04/09/23 14:19:24
手持ちのVC6で試したところ
スマートポインタ(std::auto_ptrやboost::shared_ptr)の->演算子にはインテリセンスが効きません
最新のVCでも同じでしょうか?
408デフォルトの名無しさん:04/09/23 15:06:12
いえ、VC7.1では、しっかり表示されます。
409407:04/09/23 15:46:04
>>408
おお。すばらしい。
そろそろ買い換えるとするか。
410& ◆R7PNoCmXUc :04/09/23 16:45:47
__FILE__ マクロを wchar_t 型にできないでしょうか。。

void DebugAssert(bool ok, wchar_t* file, int line);
#define ASSERT(b) DebugAssert((b), __FILE__, __LINE__)

こんなんしたいんですけど。。
411デフォルトの名無しさん:04/09/23 17:00:06
>>407
プロジェクトにヘッダを追加すれば表示されるんじゃないの?
412デフォルトの名無しさん:04/09/23 17:05:38
>>410
#define TOWSTR(s) L##s
TOWSTR(__FILE__)
413デフォルトの名無しさん:04/09/23 17:33:28
質問です。BitBlt関数で描画が上手くいきません。
背景の上に絵を表示させたいのですが、張り付けた部分が
下の背景の色で塗りつぶされます。
StretchBltとBitBltを混ぜて使ってます。AlphaBlendも
後から使おうと思ってます。混ぜて使うとき、注意すべき点は
何か有りませんでしょうか。多分そこから失敗してると思うので。
414デフォルトの名無しさん:04/09/23 17:58:08
質問:
VC++5.0 の英語版はどこで買えますか?
御存知のかたいらっしゃったらご教示下さい。
415352:04/09/23 18:00:03
管理ツール→データソース→追加 が必要だったとは
これで一応SQLデータソースに接続でき、先の問題は解決しました。

しかし...

CDatabase data;
try{
data.OpenEx( NULL, 0);
}catch(CDBException* e){

このようにして手動でデータソースを選ぶと、正常に動作します。
このときのdata.GetConnect()の内容を控え

ダイアログを出さないようにしたいのでこのようにしました。
data.OpenEx( connectstring, CDatabase::noOdbcDialog );

しかしdata.GetConnect()で取れる文字列を完璧にコピーして入れても

CDBExceptionが
「データソース名および指定された規定のドライバが見つかりません。」

noOdbcDialogを指定した場合のみ上の例外が発生します。
これは何故なのでしょうか
416デフォルトの名無しさん:04/09/23 18:31:43
>>413
それだけじゃちょっと厳しい気がするなあ。
とりあえず何処で描画してるかってのがまずわからんと。
417デフォルトの名無しさん:04/09/23 18:41:19
>>413
どうせMERGECOPYとかにしてるんだろうよ。
マスクとかその辺から勉強し直せよ。
418407:04/09/23 19:53:11
>>411
だめでした。
インテリセンスがオペレータオーバーロードもしくは、テンプレート含みには
対応していないと思われます。
419407:04/09/23 20:39:07
と思って簡単なサンプルで試したらちゃんと表示されているじゃないかぁぁ

struct S { int a; };
template<typename T> struct B {
 T *v;
 T * operator-> () { return v; }
};

B<S> b;
b->                 // インテリセンスが効く
std::auto_ptr<S> p (new S);
p->                 // 効かない

ClassViewでauto_ptrをみるとメンバに THROW0() や初期化子の _Ptr() がある!
420デフォルトの名無しさん:04/09/23 22:36:02
本に付属していたサンプルプログラムを実行してみようとしたのですが、
旧バージョンで生成されたプロジェクトで、
新しいファイル形式に変更してビルドしてみても
proto.obj : error LNK2001: 外部シンボル ""int __cdecl D3Z_CreateDirectDraw
(struct HWND__ *)" (?D3Z_CreateDirectDraw@@YAHPAUHWND__@@@Z)" は未解決です
….\Debug/proto.exe : fatal error LNK1120: 外部参照 5 が未解決です。
とエラーが出てしまいます。
どのサンプルを実行してみても同じ状態になってしまい、
一歩も進むことが出来ません。どうすればいいのでしょうか。
421デフォルトの名無しさん:04/09/23 22:39:06
ddraw.libをリンクすように設定し直せ
422デフォルトの名無しさん:04/09/23 22:39:51
>>420
D3Z_CreateDirectDrawのあるライブラリをリンクして下さい。
423デフォルトの名無しさん:04/09/23 22:41:50
あ、421だけど多分違うな・・まあ該当するlibってことで。
424デフォルトの名無しさん:04/09/23 22:43:30
ファイルを読み込んで、文字とキーワード(unit 30)
のような文字列をfgetsで読み込んで返した文字列の中からスペースの
後のキーワードを見つける方法を教えてください。
425デフォルトの名無しさん:04/09/23 22:46:00
読み込んで返した文字列の中からスペースの位置を
見つけてその場所より後の部分を抽出とか
色々
426デフォルトの名無しさん:04/09/23 22:55:26
>>424
CommandLineToArgvW()を使ってみるとか
427デフォルトの名無しさん:04/09/23 23:06:42
ありがとうございました
428デフォルトの名無しさん:04/09/23 23:17:37
>>425
スペースの見つけかた教えてください。
>>426
それってmain関数ですか?
429デフォルトの名無しさん:04/09/23 23:42:33
>>428
VisualC++やる前にCかC++を勉強した方がいい。
430デフォルトの名無しさん:04/09/23 23:50:21
ごめんなさい
勘違いしてました。
自分Cの話でした!
431デフォルトの名無しさん:04/09/24 01:26:46
CListViewの特定のカラムにプログレスバーを表示したいんだけど
どうすればいいの?
432デフォルトの名無しさん:04/09/24 01:36:29
CListViewの子としてプログレスバーを作る。
LVM_GETITEMRECTとかLVM_GETITEMPOSITIONとかで
プログレスバーを作るべき座標は得られる。
433420:04/09/24 01:48:53
お答えいただいて有難うございます。
どうやらDirect3z.libに有るらしいのですが、リンクの方法が解りません。
プロジェクトの設定のリンクからオブジェクト/ライブラリモジュールに
Direct3z.libと入れてみても以前のエラーメッセージと、
link.exe の実行エラーというのが表示されてしまいます。
連続質問で申し訳ありませんが、どうしたらいいのでしょうか。
434デフォルトの名無しさん:04/09/24 01:52:13
>>433
link.exe の実行エラーと言われても、エスパーじゃないのでわからん。
435420:04/09/24 02:09:32
ただlink.exe の実行エラーとだけ表示されて、他には何も書いて無いんです。
ツール/オプションのディレクトリタブからも
Direct3z.libの有るファイルを設定しましたが、
依然としてエラーが出てしまっています。
…諦めて新しい本を買った方が良いでしょうか?
436デフォルトの名無しさん:04/09/24 03:06:56
>>433
もうDirect3z.libのフルパスを書いちゃえよ
437420:04/09/24 03:23:24
D:\Direct3D Programming Guide Book\Direct3Z\Direct3z.lib
です。度々すいません。
438デフォルトの名無しさん:04/09/24 03:29:16
#pragma comment(lib, "D:/Direct3D Programming Guide Book/Direct3Z/Direct3z.lib ")

を、ソースのファイルのどっかに入れてみたらどうや?
439420:04/09/24 05:04:48
>>438
有難うございます。ですがやはりリンクで躓いてしまいます。
440デフォルトの名無しさん:04/09/24 09:30:45
>>435
本についてるのはサンプルだから、そのまんま使う必用はない。
自分で新規プロジェクトの作成から順番にやっていくのが無難。
それができないと自作のプログラムは作れない。
441デフォルトの名無しさん:04/09/24 11:10:52
>>420
ぐぐれば、答えが出てるような気が......
442デフォルトの名無しさん:04/09/24 11:16:14
VC++5.0 はもう手に入らないのですか?
サポートの対象外でも構わないから、なんとか手に入れたいのですが。
出来ることなら英語版が好ましいです。
443デフォルトの名無しさん:04/09/24 11:50:08
>>442
Yahooオークションとか中古ソフト屋を探してみれ
444デフォルトの名無しさん:04/09/24 11:55:24
445デフォルトの名無しさん:04/09/24 12:11:05
vc++に限った質問ではないかもしれませんが、ここで質問します。
SDK, vc++6.0です。

以下のように構造体変数を宣言しました。
enum{
  SET_A,
  SET_B,
  SET_C
} state = SET_A;

stateがSET_Aのときには0を、SET_Bのときには1を、SET_Cのときには2を返す
ような関数は存在するでしょうか?よろしくお願いします。
446デフォルトの名無しさん:04/09/24 12:20:07
>>445
それは構造体じゃないし、そこで関数使う必用ないし、スレ違い
447デフォルトの名無しさん:04/09/24 12:21:12
>>445
state == SET_A ? 0 : state == SET_B ? 1 : state == SET_C ? 2 : -1;
448デフォルトの名無しさん:04/09/24 12:22:25
>>445
enumは0から順番に値を割り当てるんじゃなかったっけ?
449デフォルトの名無しさん:04/09/24 12:24:35
DDV 機能を利用してエディットボックスの数値入力範囲を設定しているのですが、
入力範囲を 0 〜 int の最大値2147483648を指定し、入力すると範囲外の数値として
再入力を求められてしまいます。

何が間違っているのか教えていただけませんでしょうか?
環境はVS2002です
450デフォルトの名無しさん:04/09/24 12:31:39
MS固有の__declspec(selectany)はどのバージョンから対応しているとか
そういう情報はどこかに載ってないでしょうか?
例えばクラスを作るとヘッダに自動的に挿入されるこれ。

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

1000より新しいバージョンで対応してるんだなとわかります。
selectanyは_MSC_VERがいくつ以上なら対応しているんでしょうか?
451デフォルトの名無しさん:04/09/24 12:31:46
>>449
数字いろいろ変えてやってみろ
452デフォルトの名無しさん:04/09/24 12:34:55
>>449
intの最大値は2147483647だ。
453デフォルトの名無しさん:04/09/24 12:36:19
>>448
しかも最初の一個だけ明示的に与えてやれば、
あとはインクリ
454デフォルトの名無しさん:04/09/24 12:41:27
0-2147483647までの
2147483648個
455デフォルトの名無しさん:04/09/24 12:44:58
金enum元大統領
456デフォルトの名無しさん:04/09/24 12:45:58
なんでINT_MAXを使わないの?
しかもintは実装依存…もしVC++以外にソースを持っていくような事が
あったら困ることがあるから最大値ぎりぎりまで使うならlong intに
した方がよいです
457デフォルトの名無しさん:04/09/24 12:48:47
もしくはint32_t
458デフォルトの名無しさん:04/09/24 12:50:47
DDV使ってるソースを、VC以外に持っていくことはないだろ w
459デフォルトの名無しさん:04/09/24 12:52:14
>>451 >>452 >>454

ありがとうございました、個数と最大値を見間違えていました・・・

>>456

うう、知りませんでした
ご指摘ありがとうございます
460デフォルトの名無しさん:04/09/24 12:55:56
>>458
将来VC++のintのビット長が変わる、なんていうことないとも限らないし、
もしそうなったら、それだけで多くの箇所を変更しなければならなくなる。
少しでも危険が考えられることは、簡単な事であればなるべく安全な物に
置き換えるのがよい。
461デフォルトの名無しさん:04/09/24 13:04:43
64bit環境でもVC++のintは32bitだからなあ。
そう心配すんなよ。
462デフォルトの名無しさん:04/09/24 13:06:28
そもそもマジックナンバーは良くない。
463デフォルトの名無しさん:04/09/24 13:08:14
互換性よりintの最大値ということをアッピールするためにINT_MAXを使う
という意味の方が重要かもしれん。
464デフォルトの名無しさん:04/09/24 13:14:39
>>462
DDX/DDVの設定ダイアログで、最大値・最小値にマジックナンバー以外を
入力出来るのかい?
465デフォルトの名無しさん:04/09/24 13:22:56
>>464
出来なくても適当な値入れて手作業で修正すればよかろう。
466デフォルトの名無しさん:04/09/24 13:39:06
>>465
ここは初心者スレだぞ。
偉そうなことだけ言ってないで、何処を修正すればいいか教えてやれよ。
467デフォルトの名無しさん:04/09/24 14:34:10
>>466
DoDataExchangeメンバ関数のDDV_MinMaxIntのところ。
468デフォルトの名無しさん:04/09/24 23:26:34
>>466
いくら初心者でも分かりそうなもんだが
469デフォルトの名無しさん:04/09/24 23:33:49
CXxxDoc 内で定義したメンバ変数 y に
((CXxxDoc*)GetDocument())->y
でアクセスできるのはなぜですか?
メモリ的にどうなってるんですか?
470デフォルトの名無しさん:04/09/24 23:37:10
なぜなぜな〜に?
471デフォルトの名無しさん:04/09/25 00:18:13
最近、BorlandのつかえないコンパイラからVCに乗り換えた初心者です。
Viewについての質問です。
Viewは基底クラスをいくつかのViewから選択できますよね
ですが、エクセル見たいな入力可能なGridをViewに選択することは
できないのですか?
472デフォルトの名無しさん:04/09/25 00:31:59
ListViewでがんがるか、ActivXとかでMSDBGridを使う
473デフォルトの名無しさん:04/09/25 03:10:32
いまウインドなしのdllからウインドを生成したいのですが、
WNDCLASSにセットするHINSTANCEはどうすれば取れるのでしょう?
そもそもこれは何のためにセットするのでしょうか?
あとでアイコンとか取得したいときに必要になるからGetWindowLongで取得できるように
WNDCLASS作成時にセットするだけですか?もし使う予定がないならNULLでよいですか?
それとも必要ですか?もしそうならdllのようにクライアントアプリケーションのプロセス内にロードされる
場合、クライアントアプリケーションのHINSTANCEを使っても良いのですか?

いろいろお聞きしますがよろしくお願いします。
474デフォルトの名無しさん:04/09/25 05:31:32
>>473
DLL側のHINSTANE/HMODULE。
これの意義はウィンドウクラスの所有権を把握するために使うのだったと思う。
(WindowsはEXEがアンロードされるときにそこが所有するウィンドウクラスを自動的に破棄するようになっている。DLLのクラスは9x系だけ自動破棄)

>WNDCLASSにセットするHINSTANCEはどうすれば取れるのでしょう?
取り方はDllMainでグローバル変数にコピーしておくか、あるいはDllMainでウィンドウクラスを作るのが一般的だと思う。
475デフォルトの名無しさん :04/09/25 05:52:01
質問 VC6.0を使用しているのですが、
templateのアロー演算子のoperatrorのオーバーロード
がうまくいきません。
そういうものなのでしょうか?
template <class T>
class Hoge
{
public:
T* operator->() { return m_p; }
private:
T*m_p;
};
476475:04/09/25 05:52:50
”の”がいっぱい。。
477デフォルトの名無しさん:04/09/25 06:47:32
CreateCompatibleDC(NULL)と
CreateCompatibleDC(hdc)とでは具体的にどう違いますか?
478デフォルトの名無しさん:04/09/25 07:57:58
>>475
どう上手くいかないんだ?
479デフォルトの名無しさん:04/09/25 07:58:39
>>477
hdcがプリンタDCだったり情報DCだったりしたときに出来上がるDCの形式が違う
480デフォルトの名無しさん:04/09/25 11:13:50
そもそもCreateCompatibleDC(NULL)
って、どんな DC が作られるの?
何のコンパチを作るのよ?
481デフォルトの名無しさん:04/09/25 12:28:12
>>480
ヘルプも読んでないくせに態度がでかいぞ。
482デフォルトの名無しさん:04/09/25 12:28:44
BOOL CxxxDlg::PreTranslateMessage(MSG* pMsg)
          :
   char d=(TCHAR)pMsg->wParam;
   if (d == 'A') …
   if (d == ??)

バックスペースが押されたか判断したいんですが、
??の部分はどの様に記述すれば良いのでしょうか?

483デフォルトの名無しさん:04/09/25 12:32:54
"BS" もしくは "BackSpace"
キーボードによって違うから気をつけろ
484デフォルトの名無しさん:04/09/25 12:34:57
VK_BACK
485482:04/09/25 13:03:19
ありがとうございます
486デフォルトの名無しさん:04/09/25 13:07:10
487デフォルトの名無しさん:04/09/25 13:30:28
>>486
お気に入りに登録しました
488デフォルトの名無しさん:04/09/25 14:39:45
>482
if (d == 'A') … <- 右親指を立ててる顔に見えなくもない。
489テスト:04/09/25 14:57:58
d='A';
490デフォルトの名無しさん:04/09/25 14:59:10
d=(^ _^)
491テスト:04/09/25 15:07:07
d=(T_T);
492デフォルトの名無しさん:04/09/25 15:14:38
d(^-^)b
493テスト:04/09/25 15:48:22
q=('A');
494デフォルトの名無しさん:04/09/25 16:54:26
UTF-8でXMLファイルを出力したいんですがどうしたらいいんでしょうか?

fp=fopen("〜.xml","a");
char * pstr = sjisToUtf8("変換する文字");
fput(pstr,fp);

ってな感じでやってます。
495デフォルトの名無しさん:04/09/25 17:10:19
,"a")オイオイマジカヨ
496473:04/09/25 17:18:18
>>474
ありがとうございました。助かりました。
497デフォルトの名無しさん:04/09/25 17:33:47
vc++6です。
友人から、「WinProcって何?」と訊かれて言葉に詰まってしまいました。
どのように説明すれば良いのでしょうか?
よろしくお願いします。
498デフォルトの名無しさん:04/09/25 17:51:31
qsort()に渡すような感じで
RegisterClass()に渡すためのもの
499デフォルトの名無しさん:04/09/25 19:36:46
自分のIPアドレスを取得したいんですけど、
自分のIPアドレスを取得する関数って何ですか?

よろしくお願いします。
500デフォルトの名無しさん:04/09/25 19:38:41
>>499
逝ってよしです
501デフォルトの名無しさん:04/09/25 19:46:27
またこの質問か
502デフォルトの名無しさん:04/09/25 19:57:27
GetIpAddress()
503デフォルトの名無しさん:04/09/25 20:43:31
>>494
MultiByteToWideChar() で SJIS -> UTF-16
WideCharToMultiByte() で UTF-16 -> UTF-8
504デフォルトの名無しさん:04/09/25 22:29:01
それって文字コードを変換するやつとちゃうんか?
>503
505デフォルトの名無しさん:04/09/25 23:20:07
>>504
そうですが何か?
506デフォルトの名無しさん:04/09/26 03:47:57
コンボボックスのストリング型をchar型に直したんだけど、
このchar型をさらに16進表示にしたいのです。

CString writeblock;
m_COMBO_writeblock.GetWindowText(writeblock);
char wb[1];
strcpy(wb, writeblock);
char Write[13] = {・・,・・,〜, wb[1], ・・, ・・,}

こんな感じで
例えば、コンボボックスの04を0x04といった感じでwbに入れてやりたい
んですが、今のままだと、34となってしまいます。
wb[1]に04となるようにしたいのですが、分かりません。
どなたか良い方法教えてください。
507デフォルトの名無しさん:04/09/26 04:35:02
about:blank
これがエクスフローラ開くとどうしても最初に立ち上がってしまう
これって治せるのかな?
508デフォルトの名無しさん:04/09/26 05:20:57
>>507
とりあえず"エクスフローラ"の作者かサポートに質問
509デフォルトの名無しさん:04/09/26 10:36:43
VC++6を使っています

質問なのですが、実行結果をテキストファイルに出力するには
どうしたらよいでしょうか?
100万個ほどの数値の統計を取りたいのですが、
DOSプロンプト上には最後の1000個ほどの結果しか残らないので
困っています。

初心者な質問ですが、よろしくお願いします。
510デフォルトの名無しさん:04/09/26 10:41:13
こりゃまたずいぶん
511デフォルトの名無しさん:04/09/26 10:43:06
stdout=fopen(hogehoge);
512デフォルトの名無しさん:04/09/26 10:54:45
>>509
それだとメモリを増設しないといけないな。
スレ違いなのでここまで。
513デフォルトの名無しさん:04/09/26 11:05:31
>>509
とりあえずデータがテキストファイルになれば良いのだったらリダイレクトが簡単.
例えばhoge.exeってプログラム名だったら
hoge.exe > hage.txt
って感じで入力すると,画面に出力されてたものがhage.txtに出力できますよ.
514デフォルトの名無しさん:04/09/26 11:19:33
>>513
それはスレ違い。
ここはVC++のスレ。
515509:04/09/26 11:33:54
こんなに早く質問に答えていただいてありがとうございます。
とりあえず>>513の方法で出来たので、しばらくはそれでいこうと思います。

何分、Cを始めたばかりの未熟者ゆえ・・・。変な質問しちゃって
すいませんでした。とても助かりました。
516デフォルトの名無しさん:04/09/26 11:35:43
>>513
それは承知.ただまぁ509が解決する際の選択肢になればいいからね.
517516:04/09/26 11:38:18
516は514へです.

>>515
使い難さを感じたら511あたりも検討してください.
518デフォルトの名無しさん:04/09/26 13:09:49
>>514
VC++でリダイレクトを使ったらいけないのか?
519デフォルトの名無しさん:04/09/26 13:42:45
VC++でソケット使えるからソケットプログラミングの話もここでいいですか?
520デフォルトの名無しさん:04/09/26 13:43:04
>>518
リダイレクトはシェルの機能。
シェルスレでやれ。
521デフォルトの名無しさん:04/09/26 13:49:17
>>519
ネットワークプログラミング相談室 Port10
http://pc5.2ch.net/test/read.cgi/tech/1090385857/l50
522デフォルトの名無しさん:04/09/26 14:00:10
>>520
解決方法がスレ違いの内容だからって一言もそれに触れなかったら
質問者はいつまでたっても回答を得られないぞ。バカジャネーノ。
523デフォルトの名無しさん:04/09/26 14:03:20
質問の解決を第一に考えようよ.(なんか,みなさん縦割好きだね.行政みたいだ.)
509に513は問題ないでしょ?
そのあと更に509さんがリダイレクトについて質問してきて
長くなりそうだったら誘導すればいいんだし.
524デフォルトの名無しさん:04/09/26 14:05:56
プログラミング始める前にパソコンの使い方ぐらい覚えろよ。
CUIのプログラム作っててCUIが使えないんじゃ話しにならん。
525デフォルトの名無しさん:04/09/26 14:14:11
そうだぞ、
ダブルクイックも出来ないで
プログラミングなんて100年早いわ。
526デフォルトの名無しさん:04/09/26 14:25:00
>>524は初心者に対して偉そうにしたいだけ w
527デフォルトの名無しさん:04/09/26 15:31:58
ダブルクィックって何?聞いたこと無いんだが…
528デフォルトの名無しさん:04/09/26 15:34:18
ダブルクイック
ディスクトップ
ワーニング
アップリケーション
529デフォルトの名無しさん:04/09/26 15:36:11
スッタク
530デフォルトの名無しさん:04/09/26 15:58:39
VisualC++で.NETアプリケーションの開発をやるメリットって何かあります?
531デフォルトの名無しさん:04/09/26 16:07:25
.NET対応アプリケーションを作れるというのが
メリットでは?
532デフォルトの名無しさん:04/09/26 16:10:08
MC++ってSTL使えますか?
std::vector<CView*> VecView;
なんて書いたら怒られました
533デフォルトの名無しさん:04/09/26 16:13:25
MC++ってなんだよ
VC++なら使えるぞ
534デフォルトの名無しさん:04/09/26 16:37:22
ManagedC++だろ
535デフォルトの名無しさん:04/09/26 16:45:03
Microsoft C++ に決まってるだろ。
536デフォルトの名無しさん:04/09/26 16:47:39
クズばっか(w
537デフォルトの名無しさん:04/09/26 17:20:56
俺様用のメモ

C言語なら俺に聞け! Part 91
http://pc5.2ch.net/test/read.cgi/tech/1095180315/l50
C++相談室 part35
http://pc5.2ch.net/test/read.cgi/tech/1093958200/l50
【初心者歓迎】C/C++室 Ver.9【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1094494997/l50
ぼるじょあがC/C++の宿題を片づけますYO! 31代目
http://pc5.2ch.net/test/read.cgi/tech/1095075678/l50
538デフォルトの名無しさん:04/09/26 19:15:28
WM_COMMANDのwParamの上位ビットには何が記録されているのでしょうか?
入門書では下位ビットにコントロールやメニュー項目などの識別子が入っているとあるのですが上位ビットについては省かれていて非常に気になります。
539デフォルトの名無しさん:04/09/26 19:23:32
>>538
The high-order word specifies the notification code if the message is from a control.
If the message is from an accelerator, this value is 1.
If the message is from a menu, this value is zero.
540デフォルトの名無しさん:04/09/26 20:56:51
>>538
素でMSDN知らなそう
http://msdn.microsoft.com/library/
541デフォルトの名無しさん:04/09/26 21:13:17
VC++.NET 2005 のβ版いれたらVC6.0のファイルの関連付けが全部ぶっ飛んでしまったのですが、
2005をアンインストールしても直りませんでした。
元通りにもどすにはVC6.0を再インストするか、手動で一つ一つ関連付けしていくしかないのでしょうか?
542デフォルトの名無しさん:04/09/26 22:05:09
>>540
素でMSDNってどういうものなんでしょう。。。
543デフォルトの名無しさん:04/09/26 23:51:31
Win32SDKの日本語に翻訳したお勧めの書籍を教えてください
544デフォルトの名無しさん:04/09/27 00:27:10
>>506です。誰か教えてぇぇ
545デフォルトの名無しさん:04/09/27 00:36:38
>>544
wb[1] = atoi(writeblock);
546デフォルトの名無しさん:04/09/27 01:05:22
>545

うそつき
547デフォルトの名無しさん:04/09/27 04:23:41
>>544
_tcstol(writeblock, NULL, 16);
548デフォルトの名無しさん:04/09/27 07:09:47
ListView の特定のカラムにプログレスバーを入れたいけど
無理?
549デフォルトの名無しさん:04/09/27 07:25:45
オーナードローしろ。
プログレスバーを配置する事もできるけど
リストアイテムの数だけ作る事になるから
何万ものウインドウを作る事になる。
550デフォルトの名無しさん:04/09/27 07:35:53
>>548みたいな質問する初心者が
その程度のアドバイスでできたら
1年後は優秀なクラッカーになるだろう
551デフォルトの名無しさん:04/09/27 09:28:06
>>548
つーか最近見たよね
その同じ質問
552デフォルトの名無しさん:04/09/27 14:51:56
CWebBrowser2で表示したページが
NotFoundであることを取得するにはどうしたらいいでしょうか?
553デフォルトの名無しさん:04/09/27 21:05:10
ウェブ CWebBrowser2 の検索結果のうち 日本語のページ 約 30 件中 1 - 10 件目 (0.21 秒)

予想される検索キーワード: Iwebbrowser2

Win32API 質問箱
... 17 名前: デフォルトの名無しさん 投稿日: 2001/06/04(月) 22:55 >>15 IWebBrowser2
を使えばできる。 18 名前: 17 投稿日: 2001/06/04(月) 22:55 VC持ってるなら、CWebBrowser2
のソース見れば?汚いけど。 19 名前: デフォルトの名無しさん ...
pc.2ch.net/tech/kako/991/991576947.html - 101k - キャッシュ - 関連ページ

IEコンポーネントを使い倒すスレ
... 使用している単純なサンプルなどあればいいのですが・・・ 26 名前:
デフォルトの名無しさん 投稿日: 2001/02/27(火) 15:25 ↑ CWebBrowser2
も使ってはいけないってこと? それなら、難しくて分からないや。 27 名前 ...
piza.2ch.net/tech/kako/982/982930049.html - 63k - キャッシュ - 関連ページ
554デフォルトの名無しさん:04/09/28 00:03:13
VC7で無名namespaceの変数を使うと、入力補助(メンバとかの自動候補)や
型や引数のポップアップが出なくなるんですが、何か対処方法あります?
555デフォルトの名無しさん:04/09/28 00:21:47
VC++.NETでSTLは使えないの?????
556デフォルトの名無しさん:04/09/28 00:38:54
だ か ら 〜
ListView の特定のカラムにプログレスバーを入れたいけどどうすればいいの?
557デフォルトの名無しさん:04/09/28 00:40:09
特定のカラムの上にプログレスバーを描画すればいいだけ
558デフォルトの名無しさん:04/09/28 09:35:04
559デフォルトの名無しさん:04/09/28 12:01:47
APIを使用したwindowsプログラミングを学習中なのですがウインドウプロシージャのswith文でbreakを記述しないのはなぜなのでしょうか?
switch (message)
{
case WM_DESTROY:
// ウインドウが破棄されたときの処理
PostQuitMessage(0);
return 0;
default:
// デフォルトの処理
return DefWindowProc(hWnd, message, wParam, lParam);
}
↑こんな具合に。
C++を勉強していたときにはswithはbreakを記述しないとすべての処理を行ってしまうため、必ず記述するものだとあったのですが。。
560デフォルトの名無しさん:04/09/28 12:07:07
>>559
returnしなければね
561デフォルトの名無しさん:04/09/28 14:04:33
windowsプログラミングではswithでbreakの代わりにreturn 0が使用できると言うことでしょうか。
ブレイクとリターンでは意味合いが変わってくるような気もするのですが、どちらの手法を利用するべきなのでしょう?
562デフォルトの名無しさん:04/09/28 14:06:11
>553
検索してもわからなかったから質問したんですけど
563デフォルトの名無しさん:04/09/28 14:08:55
>>561
returnしないとDefWndowProc呼んじゃうんだよ、デフォルト処理したくない時はreturn
564デフォルトの名無しさん:04/09/28 14:15:02
>>561
swithじゃなくてswitch break return のことなら C/C++スレへ
別にWindowsでもVC++特有の問題でもない。
565デフォルトの名無しさん:04/09/28 14:16:02
>>561
これを追ってみるといい
#include <iostream>
using namespace std;
void hoge (int p) {
switch (p) {
case 0:
cout << "0" << endl;
return;
case 1:
cout << "1" << endl;
break;
case 2:
cout << "2" << endl;
case 3:
cout << "3" << endl;
break;
}
cout << "last" << endl;
}
int main () {
hoge (0);
cout << "----" << endl; hoge (1);
cout << "----" << endl; hoge (2);
return 0;
}
566デフォルトの名無しさん:04/09/28 14:19:10
>>561
そもそもbreakとreturnの意味が違うってところまで分かってんならもう少し考えたら
分かるだろうよ。switch文ならbreakっていう決まりがあるわけじゃなくて、breakの機能
が必要だからそこに入れるってことだろ。
567デフォルトの名無しさん:04/09/28 14:48:04
そんなことに熱くなるより>554も答えてくださいよ皆の衆
568デフォルトの名無しさん:04/09/28 14:55:43
>>567
普通はそういうことがあっても気にしない。
気にする人は自分で解析するんじゃないか?
569デフォルトの名無しさん:04/09/28 15:36:20
インテリセンスに頼るような奴は修行が足りない。
570デフォルトの名無しさん:04/09/28 15:45:15
携帯普及率の増加に比例して電話番号を覚えられない人も増加しているのは有名な話。
571デフォルトの名無しさん:04/09/28 21:03:30
>>565
わかりやすいコードありがとうございます。
動かしてみたらリターンとブレイクで処理に違いがあることがわかりました。
572デフォルトの名無しさん:04/09/28 22:28:21
>>570
何の関係があんだよ。おまいバカだろ(w
573デフォルトの名無しさん:04/09/28 22:32:41
>>572
バ、バカだとぉぉ!!!!
キサマぁぁぁあぁ
574デフォルトの名無しさん:04/09/28 22:37:34
>>572,573
まぁまぁまぁまぁ
575デフォルトの名無しさん:04/09/28 22:45:21
Ω ΩΩ<お、お前らおちおちおちけもつっうつ
576デフォルトの名無しさん:04/09/28 23:14:05
いや、馬鹿だとは思わないよ。実際には結構頭いいんだと思う。でも
時々、深く考えないでカキコしちゃうことがあって、しかもそういう時に
限っていらん所を突っつく奴が出て来るから、結局かかないでいい恥を
掻いてしまうタイプなんだと思う。まあ、犬に噛まれたと思えばよし。
577デフォルトの名無しさん:04/09/28 23:20:12
つか、Doc/Viewってなんだよ。まじ意味わかんねー
BCBに浮気から本気になりそうな悪寒
578デフォルトの名無しさん:04/09/28 23:24:08
1.25ジゴワット
579デフォルトの名無しさん:04/09/28 23:55:22
>>577
データの保持や操作はDocumentで管理し、Viewはユーザーとの対話/表示に専念させよう
という概念。
580デフォルトの名無しさん:04/09/28 23:57:22
>577
Doc/Viewなんてわかんなくても無問題
ダイアログベースから始めるべし
つーか、いきなりDoc/ViewはRPGでゆーとLV1でラスボス戦に匹敵w
581デフォルトの名無しさん:04/09/29 02:14:41
>>568-569
そりゃないぜセニョール
インテリセンスが使えるのを前提でクソ長い名前をつけまくったんだよ。
いちいちコーディングのたびにネームスペースをコメントアウトして
書き終わってからまた戻してる現状・・・
582デフォルトの名無しさん:04/09/29 06:40:50
あのう大変あつかましいのですが
簡単な画像ビューアーなどを作ったりしたことがある
職歴無しの現在無職の28歳なんですが
それでもPGできますでしょうか?
やっぱりNEにさせられるんでしょうか?

釣りでもネタでもないです。マジレスなので
ここだと実際にPG経験者がいるみたいなので
リアリティのある返答が期待できると思いまして。
スレ違いかもしれませんがお願いします
583デフォルトの名無しさん:04/09/29 06:55:32
***すれ立てるまでもない質問はここで 第59刷*** (ム板)
http://pc5.2ch.net/test/read.cgi/tech/1095070402/
スレッドを立てるまでもない質問雑談スレ16 (マ板)
http://pc5.2ch.net/test/read.cgi/prog/1089465975/

聞くなら、この辺りがスレ的には正しいかも。
584582:04/09/29 06:58:03
>>583
すみません移動します
ありがとうございました
585デフォルトの名無しさん:04/09/29 14:36:48
>>552を教えてください。
ヒントでもかまわないので・・・
586デフォルトの名無しさん:04/09/29 15:03:44
HTTP/1.1 404 Not Found

VC持ってるなら、CWebBrowser2
のソース見れば?汚いけど。
587デフォルトの名無しさん:04/09/29 18:22:25
BitBlt等で描画できますが、ピクセル単位ではなく
ピクセルより細かく描画することってできませんでしょうか?
最初は1ピクセルで動かして2ピクセルにすると
2倍の速度になってしまうので、急なスピードアップになってしまいます。タイマー使わなくても遅いので細かくする必要があるかなと思いまして。
588デフォルトの名無しさん:04/09/29 18:34:10
>>587
ピクセル以下って何?
589デフォルトの名無しさん:04/09/29 18:38:14
>>587
ピクセルって最小単位だよ?
例えば、点を動かしたいのなら、座標、移動速度のベクトル、を点ごとに
保持し、
次の座標=現在座標+移動速度のベクトル×時間
という計算をすれば次の時間の座標が解かるでしょ
座標というデータを実数型にして、描画するときは小数点以下を切り捨てれば良い
590デフォルトの名無しさん:04/09/29 18:43:59
>>589
プログラム一周してくるのが遅いから
1ピクセルをより早く動かすことができないのです。
かといって2倍の2ピクセルにすると速すぎるし。
別に特別重い処理をしてる訳でも無さそうです。
描画の数増やしても遅くならないし。
591デフォルトの名無しさん:04/09/29 18:52:42
>>590
べつに整数倍で動かさなくても良かろう。
>>589の言ってるように移動量を実数倍で持てばいい。
例えば1.5づつ動くとすると
1.5 3.0 4.5 6.0 7.5…
小数点以下を切り捨てれば
1 3 4 6 7…
となって、全体でみると1.5づつ動いてるように見える。
592デフォルトの名無しさん:04/09/29 19:04:48
勘違い。move_size=1;
y+=move_size;みたいな使い方してたのが間違いだった。
線形補間使えば、精度上がるんだ。
それともyとmove_sizeを実数型にするか。
>>588~>>591
みなさんありがとうございました。
593デフォルトの名無しさん:04/09/29 19:05:28
質問です。トラックバーなのですが
case WM_CREATE:
ic.dwSize = sizeof(INITCOMMONCONTROLSEX);
ic.dwICC = ICC_BAR_CLASSES;
InitCommonControlsEx(&ic);
hTrack = CreateWindowEx(0,//拡張ウィンドウスタイル
TRACKBAR_CLASS,//ウィンドウクラス
"",//ウィンドウの名前
WS_CHILD | WS_VISIBLE | TBS_ENABLESELRANGE | TBS_FIXEDLENGTH ,//ウィンドウスタイル
25, 7, 150, 15,//位置、大きさ
hWnd,//親ウィンドウ
(HMENU)0x10,//コントロールID
hInst,//インスタンスハンドル
NULL);
このように宣言し、
case WM_HSCROLL:
iPos = SendMessage(hTrack, TBM_GETPOS, 0, 0);
wsprintf(szStr, "%d", iPos);
SetWindowText(hEdit,szStr);
iPosはint型で、szStrはchar型です。
SetWindowTextでエディットコントロールへ
トラックバーの位置を表示しようとしたのですが、取得できていません。
初心者な質問ですみません。
594デフォルトの名無しさん:04/09/29 22:36:11
DLL作りたいんですが、コンパイル時に

mfcs42d.lib(dllmodul.obj) : error LNK2005: __pRawDllMain はすでに ModArtDLL.obj で定義されています
mfcs42d.lib(dllmodul.obj) : warning LNK4006: __pRawDllMain は ModArtDLL.obj で定義されています; 2 つ目以降の定義は無視されます
ライブラリ Debug/ModArtDLL.lib とオブジェクト Debug/ModArtDLL.exp を作成中
Debug/ModArtDLL.dll : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました
link.exe の実行エラー

というエラーが出てコンパイルできません。
595デフォルトの名無しさん:04/09/29 22:41:53
フーン よかったね
596デフォルトの名無しさん:04/09/29 22:42:06
>>594
DllMain()が定義されてるとか?
597デフォルトの名無しさん:04/09/29 22:46:58
>>596
それは消しました
598デフォルトの名無しさん:04/09/29 23:00:02
自己解決したからえーわ
つかえねーなお前等
599デフォルトの名無しさん:04/09/30 17:23:55
>598
まったくもって同意だ。
600デフォルトの名無しさん:04/09/30 18:29:57
>>598-599
つかえねーなお前等
残ってる質問全部答えてみろよ。
601デフォルトの名無しさん:04/10/01 00:12:15
ちょっとMFCにて質問です
CMyDialog.cpp(独自のクラス)から、CxxxViewクラスの関数を使うため、
#include "CxxxView.h" を冒頭に入れたら、
error C2143:構文エラー:':'が'*'の前にありません。
error C2501:'CxxxView::CxxxDoc' : 識別名を宣言するのに、型が指定されていません。
error C2501:'CxxxView::GetDocument' : 識別名を宣言するのに、型が指定されていません。

と怒られてしまいました・・・
どうしたら良いでしょう?
602デフォルトの名無しさん:04/10/01 00:16:18
>>601
MFCの前にC++の勉強をお願いします。
603デフォルトの名無しさん:04/10/01 00:31:56
>>601
#include "CxxxView.h"
の前に
#include "CxxxDoc.h"
を挿入
604601:04/10/01 00:40:49
>>603
おお!感謝です!
605デフォルトの名無しさん:04/10/01 02:05:53
VisualStudio.NET 2003について質問です。
ビルドする際にビルド番号の自動インクリメントを行いたいのですが、
アドインを探してみてもVC6用しか見つかりませんでした。
マクロを組むしかないのでしょうか?
606605:04/10/01 02:11:31
すみません。自己解決しますた
607デフォルトの名無しさん:04/10/01 02:45:12
CreateFile("test.bmp", 以下略);の戻り値(HANDLE型)
とHBITMAPって同じ扱いができますか?
ReadFile( (HANDLE)hBMP, pBMP, 略); //キャストOK??
要はHBITMAPの色情報にアクセスしたいんです。
HANDLEでBitBltができるならHANDLE使うのもOKだけど。
608デフォルトの名無しさん:04/10/01 04:05:20
>>607
できません。
609デフォルトの名無しさん:04/10/01 19:33:19
VisualC++.NETであるディレクトリにあるテキストファイルを全てコンボボックスのデータに入れたいのですが、
どうすればいいですか?
ディレクトリのパスはCString型の変数で受け取ります。
610デフォルトの名無しさん:04/10/01 19:47:16
>>609
検索キーワード教えてやるよ。
CFileFind
CComboBox::AddString
611609:04/10/01 19:50:07
>>610
ありがとうございます。
612デフォルトの名無しさん:04/10/01 22:07:56
>>608
それでプログラム走らせたら、エラー起こっちゃった。
レスありがと。
613デフォルトの名無しさん:04/10/01 23:56:25
>>612
余計なお世話かもしれないけど、
ビットマップファイルを読みたいんだったら
LoadImage で LR_LOADFROMFILE を指定すればできるよ。
614デフォルトの名無しさん:04/10/02 00:32:04
エディタ作ろうと思うんだけど、注意する部分って何?
615デフォルトの名無しさん:04/10/02 00:34:30
よく、ぐぐる事
616デフォルトの名無しさん:04/10/02 01:06:58
>>613
どうもありがとう。
BMPファイルを直接アクセスしようと試みてます。
が、なかなかうまくいかなくて。。。調べ不足気味です。
617デフォルトの名無しさん:04/10/02 01:15:52
>>616
BMPファイルの構造
------
BITMAPFILEHEADER
BITMAPINFOHEADER
RGBQUAD[(1<<bpp)<=256 ? (1<<bpp) : 0 ]
ビットデータ

ビットは高さが正のときは下から、負のときは上から、
横幅は確か4バイトアラインになってた気がするので注意。

別にファイル直接操作しなくても
LoadImage で LR_CREATEDIBSECTION して
GetObject で DIBSECTION が取って来れるが。
618616:04/10/02 02:58:15
あるBMPファイルを読み込みそのデータをもとに
hForeBMPを作成しようとしてます。
おそらくアクセスエラーだと思うんですが、
どこが間違ってるんでしょう?
あとDWORD単位でデータの改変できないのかな。
サンプルとか見てみると皆BYTE使ってるし。
最初DWORDで試みたけど同じくダメでした。
617さんレスありがとうです。

DWORD iFileSize=0;
BYTE *pReadData, *pData;

//ここは関係有りませんがpData取得の為載せました。
hForeDC=CreateCompatibleDC(NULL);
hForeBMP=CreateDIBSection(hdc,&biInfo,DIB_RGB_COLORS,(void**)&pData,NULL,0);
SelectObject( hForeDC, hForeBMP );

//ハンドルの取得
HANDLE hBMP=CreateFile(FileName,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
iFileSize=GetFileSize( hBMP,NULL );
//ハンドルから読み込み
pReadData=(LPBYTE)HeapAlloc( GetProcessHeap(), 0, iFileSize );
ReadFile( hBMP, pReadData, iFileSize, NULL,NULL );
CloseHandle(hBMP);
//色データ位置へ
pReadData=(BYTE*)(pReadData+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER));
pData=(BYTE*)(pData+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER));
619616:04/10/02 02:59:10
続きです。長文ごめんなさい。

//データの改変
int max=0,min=width;
for(int i=0; i<height; i++){
for(int j=0; j<width; j++){
if(pReadData[j*3+i*height]==0x00 &&
pReadData[j*3+i*height+1]==0x00 &&
pReadData[j*3+i*height+2]==0x00) { //黒なら白に
pData[j+i*height]=GaugeColor & 0xff; //B
pData[j+i*height+1]=(GaugeColor>>8) & 0xff; //G
pData[j+i*height+2]=(GaugeColor>>16) & 0xff; //R
}else{ //白なら黒に
pData[j+i*height]=0x00;
pData[j+i*height+1]=0x00;
pData[j+i*height+2]=0x00;
}
}
}
HeapFree( GetProcessHeap(), 0, pReadData );
620デフォルトの名無しさん:04/10/02 03:50:07
>>619
"j*3+i*height"とか"j+i*height"のあたりがダメダメ。
もう一度サンプルをよく見てみ。
621614:04/10/02 03:55:38
開発はVC++.netですが、
Win32APIとか覚えないといけませんか?
622>>619:04/10/02 06:30:50
void CBbbDlg::OnButton1()
{
  // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
  CString fname = "c:\\test.bmp";
  HANDLE hFile = CreateFile(fname, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

  DWORD FileSizeH, FileSizeL;
  FileSizeL = GetFileSize(hFile, &FileSizeH);

  LPBYTE lpBMP = new BYTE[FileSizeL];
  DWORD dwRead = 0;
  ReadFile(hFile, lpBMP, FileSizeL, &dwRead, NULL);

  LPBITMAPFILEHEADER pFileHeader;
  LPBITMAPINFOHEADER pInfoHeader;
  pFileHeader = (LPBITMAPFILEHEADER)(lpBMP);
  pInfoHeader = (LPBITMAPINFOHEADER)(lpBMP + sizeof(BITMAPFILEHEADER));

  int offset = pFileHeader->bfOffBits;
  LPBYTE pPixcel = lpBMP + offset;
  int PixBuffLen = FileSizeL - offset;

  int BmpHeight = pInfoHeader->biHeight;
  int BmpWidth = pInfoHeader->biWidth;

  CloseHandle(hFile);
623>>619:04/10/02 06:31:42
  //変換(24bitのみ)
  ASSERT(pInfoHeader->biBitCount == 24);

  int x, y;
  LPBYTE p = pPixcel;
  for(y = 0 ; y < BmpHeight ; y++)
  {
    for(x = 0 ; x < BmpWidth ; x++)
    {
      if(p[0] == 0 && p[1] == 0 && p[2] == 0)
      {
        p[0] = 0xFF;p[1] = 0xFF;p[2] = 0xFF;
      }
      else if(p[0] == 0xFF && p[1] == 0xFF && p[2] == 0xFF)
      {
        p[0] = 0;p[1] = 0;p[2] = 0;
      }
      p += 3;
    }
  }

  HWND hWnd = GetSafeHwnd();
  HDC hDC = ::GetDC(hWnd);
  int lines = ::StretchDIBits(hDC, 0, 0, BmpWidth, BmpHeight, 0, 0, BmpWidth, BmpHeight, pPixcel, (LPBITMAPINFO)pInfoHeader, DIB_RGB_COLORS, SRCCOPY);
  ASSERT(lines == BmpHeight);
  ::ReleaseDC(hWnd, hDC);

  delete [] lpBMP;
}

でどうかな?
624デフォルトの名無しさん:04/10/02 14:44:12
>>623
BMPの1行分は4バイトアラインになっていることは考慮しているかい?
625デフォルトの名無しさん:04/10/02 15:30:01
4バイアラン
626デフォルトの名無しさん:04/10/02 16:04:26
File View の外部依存関係ってなんなんでしょうか?
というのも、参考書買ってサンプルプログラムで勉強しているんですが、
外部依存関係のところに宣言だけしてあって肝心の定義がみあたらないんです・・・。
627623:04/10/02 17:15:29
>>624
考慮してませんでした。
とりあえずyのループで次のようにポインタ調整追加してみますた。
  for(y = 0 ; y < BmpHeight ; y++)
  {
    for(x = 0 ; x < BmpWidth ; x++)
    {
      略
      p += 3;
    }
    if((BmpWidth * 3) % 4) p += 4 - ((BmpWidth * 3) % 4);
  }

へんなやり方でスマソ。もっとスマートな回答者、よろ。
628デフォルトの名無しさん:04/10/02 17:30:53
やだ
629616:04/10/02 17:35:17
622さんのコード真似てみました。
GetFileSize関数の戻り値がいつもlongの最大値に
なってしまうんですが、どういうことなんでしょうか。
どのファイルを指定し取得しても、ファイル名をデタラメにして
取得(そしたら新規ファイルができると思ってやりました(調べて無いです))しても同じ結果で、42..(略)が戻ってきます。
原因はこれだと思いますが、コードも一応....

BYTE *pWriteData;
hForeDC=CreateCompatibleDC(NULL);
hForeBMP=CreateDIBSection(hdc,&biInfo,DIB_RGB_COLORS,(void**)&pWriteData,NULL,0);
SelectObject( hForeDC, hForeBMP );

//ハンドル取得
HANDLE hBMP=CreateFile(FileName,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
DWORD FileSizeL=GetFileSize( hBMP,NULL );
if(!hBMP) DebugMSG("File=%s:hBMP is NULL");
//ハンドルからデータを取得
LPBYTE pReadData = new BYTE[FileSizeL];
DWORD dwRead=0;
ReadFile( hBMP, pReadData, FileSizeL, &dwRead,NULL );
CloseHandle(hBMP);
630616:04/10/02 17:39:12
続き。
//オフセット値を求めてピクセル情報の位置へ
LPBYTE pPixel[2]; //[0]:読み込み側、[1]:書き込み側
for(int i=0; i<=1; i++){
LPBYTE pData = (i==0)? pReadData : pWriteData;
LPBITMAPFILEHEADER pFileHeader = (LPBITMAPFILEHEADER)(pData);
LPBITMAPINFOHEADER pInfoHeader = (LPBITMAPINFOHEADER)(pData+sizeof(BITMAPFILEHEADER));
int offset = pFileHeader->bfOffBits;
pPixel[i] = (BYTE*)(pData+offset);
}
以上です。アラインは無視。
スプライトっぽい使い方をしたいので、元画像もしないといけないっぽいから....。このコードどうでしょうか。。。
//データの改変
LPBYTE pr=pPixel[0],pw=pPixel[1];
int max=0,min=width;
for(int i=0; i<height; i++){
for(int j=0; j<width; j++){ //黒なら任意の色へ
if(pr[0]==0 && pr[1]==0 && pr[2]==0){
pw[0]=GaugeColor & 0xff; //B
pw[1]=(GaugeColor>>8) & 0xff; //G
pw[2]=(GaugeColor>>16) & 0xff; //B
}else{ //白なら黒へ
pw[0]=0, pw[1]=0, pw[2]=0;
}
pw+=3;
pr+=3;
}
}
delete[] pReadData;
631616:04/10/02 17:39:57
ごめん。変なところに文章はいった。
632デフォルトの名無しさん:04/10/02 17:40:07
単にファイルのパスが間違ってるだけだろ。
それよりファイルハンドルにhBMPとか名前つけるのやめれ。
633デフォルトの名無しさん:04/10/02 17:55:14
アンチハンガリアンキタ━━(゚∀゚)━( ゚∀)━(  ゚)━(  )━(  )━(゚  )━(∀゚ )━(゚∀゚)━━!!!!!
634デフォルトの名無しさん:04/10/02 18:07:11
900
635デフォルトの名無しさん:04/10/02 18:18:10
HANDLEとHBITMAPは違うってことじゃないのか?
636デフォルトの名無しさん:04/10/02 18:22:35
>>632
・ファイルハンドルに対して"BMP"という名前は相応しくないから止めろ
・ハンガリアン記法は止めろ
・その他の理由
どれだろう
637デフォルトの名無しさん:04/10/02 18:28:36
「ファイルハンドルに」としてるから1番。
638デフォルトの名無しさん:04/10/02 18:45:36
VC++ってカコイイUIを作るのには不向きなの?
BCBだと簡単にカコイイUIが作れるからそう思ったのですが
みなさんどうでしょうか?
639デフォルトの名無しさん:04/10/02 18:49:33
>>638
作る人のセンスと能力次第
640デフォルトの名無しさん:04/10/02 19:06:28
BCBとVC++ってそんなにUI作る環境違うの?
641デフォルトの名無しさん:04/10/02 19:33:05
>>629
CreateFile()が失敗したときの戻り値はNULLではなくINVALID_HANDLE_VALUE だ。
どんなサンプルを参考にしたんだ。
642デフォルトの名無しさん:04/10/02 20:47:47
>>638
JavaならカコイイUIが作れるぞ。
643デフォルトの名無しさん:04/10/02 20:51:04
そういやWTLのメーリングリストにJavaと組み合わせたの投稿されてたな。
http://groups.yahoo.com/group/wtl/message/10066

ここスクリーンショット。
http://www.terrainformatica.com/org/j-smile/index.htm
644デフォルトの名無しさん:04/10/02 22:10:12
>>642
釣りはやめて下さい。
645デフォルトの名無しさん:04/10/02 23:08:47
VC++6.0SP6なんだけど、全てのC++例外をキャッチしようと
try {} catch(...) {}
と書くとアクセス違反のような構造化例外?もキャッチしてしまいます。
throwで投げられた例外のみキャッチする方法はないでしょうか?
例外の基本クラスを統一するとかしないと駄目ですか?
646デフォルトの名無しさん:04/10/02 23:12:47
javaならスッキリ例外処理が書けます。
647デフォルトの名無しさん:04/10/03 01:12:36
std::stringで書式指定で値をセットしたい
std::string str;
str.sprintf("%d\t%d",1,2);
なんて出来ないの?
648デフォルトの名無しさん:04/10/03 02:20:22
>>647
#include <iostream>
#include <sstream>
#include <boost/format.hpp>
using namespace std;
int main () {
ostringstream oss;
oss << boost::format ("%d\t%d") % 1 % 2;
string str (oss.str ());
return 0;
}
649デフォルトの名無しさん:04/10/03 04:16:21
#include <iostream>
#include <boost/format.hpp>
using namespace std;
int main () {
  string str(boost::str(boost::format ("%d\t%d") % 1 % 2));
  return 0;
}
650デフォルトの名無しさん:04/10/03 04:24:07
>>647
boostが嫌ならcout風に使うstringstreamか、それも嫌ならCStringにする。
651デフォルトの名無しさん:04/10/03 04:27:23
#include <boost/format.hpp>
using namespace std;
int main () {
string str ((boost::format ("%d\t%d") % 1 % 2).str ());
return 0;
}
652デフォルトの名無しさん:04/10/03 05:13:45
ここはVC++スレか?
653デフォルトの名無しさん:04/10/03 11:37:43
VC++スレだ。
654デフォルトの名無しさん:04/10/03 17:55:03
ダイアログベースで印刷プレビューを表示したいんですが
どのようにすれば良いのですか?
655デフォルトの名無しさん:04/10/03 17:56:03
自前で出す。
656デフォルトの名無しさん:04/10/03 17:58:16
あーあ、FormViewベースで作っとけばよかったのに。
657654:04/10/03 18:07:19
>>655
>>656
やっぱり・・・_| ̄|○
658デフォルトの名無しさん:04/10/03 19:58:23
ダイアログベースやFormViewベースを好む香具師は℃素人確定でつ
659デフォルトの名無しさん:04/10/03 20:00:05
えー?ドユコトデスカー?シャチョー(´Д`;)
660デフォルトの名無しさん:04/10/03 20:11:56
まだ入手すらしてなくて恐縮なんですけど、
出来る限り安くVC++を入手するには、どうすればいいんでしょう?
7000円とか、8000円とかは高くて・・・・・
661デフォルトの名無しさん:04/10/03 20:13:29
http://pc5.2ch.net/test/read.cgi/tech/1095325802/
7000円よりは安いと思う
662デフォルトの名無しさん:04/10/03 20:18:04
>>660
winnyなんてどうかしらん?
663デフォルトの名無しさん:04/10/03 20:20:40
winnyはやめとけ。便利だとは思うけど、際限が無くなるからさ。
Spokeも安いけどさ、それならオークションで落としたほうがまだ安いよ?
664デフォルトの名無しさん:04/10/03 20:25:07
オークションはなぁ・・・
前にβ版を詳しくないとか言い訳して製品版として売ってたやついたからなぁ・・。
しかもノークレームだよ。
665660:04/10/03 20:30:15
皆さんアドバイスありがとうございます。
カリキュラムを確認したところ、C言語でした。

Winnyはさっぱりわかりません。
オークションって、詐欺にあったりしませんか?
666デフォルトの名無しさん:04/10/03 20:31:44
>>665
その話題は別スレだろ。
マルチは氏ね。
667デフォルトの名無しさん:04/10/03 20:32:24
C言語の講義だけだったらフリーのコンパイラだけでいいじゃん。
どうせ数値計算ぐらいだろ。
668デフォルトの名無しさん:04/10/03 20:35:37
マルチかよ。
オークションで詐欺って、おまえみたいな無知が引っかかるんだよ。
669デフォルトの名無しさん:04/10/03 21:34:30
秋葉のワゴンで外国人がVS6.0Professionalを5千円で売ってたぞ。
670デフォルトの名無しさん:04/10/03 22:06:24
マジ質問です。
VC++ってコントロールが凄く少ないじゃないですか?
C***Viewでも数少ないですよね?
どうやってUIを作成していくのでしょうか?
なにか良さげHPありませんか?
671トーシロ:04/10/03 22:38:29
UIってなに?ユーザーインターフェイス?
672デフォルトの名無しさん:04/10/03 22:46:54
>>671
さがってよいぞ
673デフォルトの名無しさん:04/10/03 22:51:03
>>671
そう。
CUI=文字だけのインターフェース
GUI=ウインドウとか絵とかマウスとか使ったインターフェース
PUI=ロボットが見ぶり手ぶりしたり、マウスが画面の端にぶつかったりするとマウスが物理的に動かなくなったり、人の直観で操作・認識できるインターフェース。
674デフォルトの名無しさん:04/10/03 23:04:14
>>670
少ないって何が足りないんだ?
具体的に何がないか書けよ
675デフォルトの名無しさん:04/10/03 23:19:09
VC#とVC++を比較すれば一目瞭然
676デフォルトの名無しさん:04/10/03 23:29:24
アクティブXコントロールの追加で幾らでも入れられるから
別にどうでもいい
677デフォルトの名無しさん:04/10/03 23:49:55
そのアクティブXコントロールをどこに配置すればいいのかがわかりません。
VC#みたいにフォームにポトってわけじゃないですよね?

それともCFormViewでポトってやるんですか?
678デフォルトの名無しさん:04/10/03 23:50:27
VC++でもポトだよ。
679デフォルトの名無しさん:04/10/03 23:53:24
VC++6.0だとメニューのプロジェクトへ追加ー>コンポーネントおよび
コントロールから選ぶんだけど.netだとどうなっているのかな。
680デフォルトの名無しさん:04/10/03 23:56:02
質問なんですが

Visual C++ 6.0 Standard

Microsoft Visual C++ .NET Standard 2003

この2個は何か違いがあるのでしょうか?
681デフォルトの名無しさん:04/10/03 23:57:38
managed C++のサポートと
ISO C++のサポートと
ユーザーインターフェイスかな。
682680:04/10/04 00:00:08
初心者なんですが

買うとしたらどっちの方がいいでしょうか?

今のところ無償のを使っているのですが
かってみようかなぁと思いまして
683デフォルトの名無しさん:04/10/04 00:00:45
VC6何年前のだと思ってんだよ。
684デフォルトの名無しさん:04/10/04 00:38:42
ttp://hp.vector.co.jp/authors/VA019882/tips/data/data01.htm#018
で紹介されている関数を応用してプログラムを組んでいたのですが、
コンパイルをすると this->getFiles(FileFind.GetFilePath() , bSubFolder , csFileArray );のところで

>グローバル関数にアクセスするための 'this' ポインタがありません。
>左側がクラス、構造体、共用体へのポインタではありません。

というエラーが出てしまいます。C++は入門書を持っていないのでthisの意味がよく分からないのですが、
どういう物なのでしょうか?googleで検索をかけても「"this" は一般すぎる言葉のため、 検索には使用されていません。」
と出てしまい、調べらません。
685デフォルトの名無しさん:04/10/04 01:03:53
>>684
+thisとすれば一般的な言葉も検索できますよ。
686デフォルトの名無しさん:04/10/04 01:05:41
>>685
おお、本当だ!!ありがとうございました。
687デフォルトの名無しさん:04/10/04 01:07:18
あほ?構造体ポインタ変数宣言してないだけだろ
688デフォルトの名無しさん:04/10/04 01:24:06
構造体ポインタ変数宣言…?
参考にしたソースには書かれていなかったのですが、どのように宣言すればいいのでしょうか?
689デフォルトの名無しさん:04/10/04 01:25:27
>>688
相手がわからないと思って適当な事言ってるだけだから気にしちゃだめだよ。
690デフォルトの名無しさん:04/10/04 01:37:18
>>684
そのままコピペでもしたからだろ?
そのTipsはクラスのメンバ関数として作られることを前提にしてるから、
グローバル関数にしても使えない。
どこかのクラスに入れるか、this->を消せばOK
691デフォルトの名無しさん:04/10/04 01:39:04
>>658
詳しく説明して下さい
692デフォルトの名無しさん:04/10/04 01:43:47
おお、+つけりゃストップ語も検索できるのか。
実はCOMが検索できんで困ってたんだ。トンクス
693616:04/10/04 01:44:55
HBITMAPのことを質問した者ですが、みなさんありがとうございました。
>>632さんの仰る通りパス間違ってました。CreateFile関数の
場合、パスが厳しくチェックされるみたいですね。あと
戻り値がINVALID_HANDLE_VALUEというのも参考になりました。

SetPixel関数を使えばしっかり任意の色に塗られるのに
バイト単位で書き込む(pPixel[0]=0xffみたいに)と白の斜線に
なってしまうという疑問が出たのですが、ここはSetPixelでごまかしときます。。。
ともあれ、解決できたんで、ありがとうございました。
694デフォルトの名無しさん:04/10/04 01:51:33
>>689
(゚д゚)ノ ハイ
>>690
なるほど。一箇所でしか使わないしわざわざクラスにする必要もないかなーと思って作らなかったのです。
消したらうまくいきました。ありがとうございました。
695695:04/10/04 15:11:50
DualCPUをフル稼働させてプログラムを走らせたいのですが・・
#include <stdio.h>
#include <time.h>
#include <windows.h>
#include <winbase.h>
/**************/
/* メイン関数 */
/**************/
void main()
{
clock_t start, end;
start = clock();
void * hProcess;
int fRet;

hProcess=GetCurrentProcess();
fRet=GetProcessAffinityMask(hProcess,&dwProcessAffinityMask,&dwSystemAffinityMask);
fRet=SetProcessAffinityMask(hProcess,dwProcessAffinityMask);
//SetProcessAffinityMask(hProcess,4);

for(;;){
printf("表示\n");
}

end = clock();
printf("処理時間: %f秒\n", (double)(end - start) / CLOCKS_PER_SEC);
}

と参考書通りに書くと,dwProcessAffinityMask,dwSystemAffinityMaskが定義されていません。
とエラーがでます。何度かエラー解除を試みているのですが,エラーが消えません。
目的はDualCPUのフル稼働です。並列処理ではありません。誰か教えてください。
696デフォルトの名無しさん:04/10/04 15:25:55
その参考書無茶苦茶だな
697デフォルトの名無しさん:04/10/04 15:35:31
winapp error LNK2019: 未解決の外部シンボル _main が関数 _mainCRTStartup で参照されました。
winapp fatal error LNK1120: 外部参照 1 が未解決です。

というエラーがでます。どうしてですか?
698デフォルトの名無しさん:04/10/04 15:39:54
>>697
コンソールプログラムを作るための設定になっているから。
699デフォルトの名無しさん:04/10/04 15:43:11
アフィニティーマスクって数字を指定しないと駄目では?
CPU1なら0
CPU2なら1
だったかな?
700デフォルトの名無しさん:04/10/04 15:45:03
有難うございます。そこで、win アプリケーションでしたところ、ビルドは
できたのですがデバッグで、このようにでました。
'WinApp.exe': 'C:\WINNT\system32\NTDLL.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'WinApp.exe': 'C:\WINNT\system32\KERNEL32.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'WinApp.exe': 'C:\WINNT\system32\USER32.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'WinApp.exe': 'C:\WINNT\system32\GDI32.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'WinApp.exe': 'C:\WINNT\system32\imm32.dll' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'WinApp.exe': 'C:\WINNT\system32\ADVAPI32.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'WinApp.exe': 'C:\WINNT\system32\rpcrt4.dll' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
プログラム '[1760] WinApp.exe: ネイティブ' はコード 87 (0x57) で終了しました。

これはなんですか?
701デフォルトの名無しさん:04/10/04 15:46:47
リンクするライブラリが違う悪寒
702デフォルトの名無しさん:04/10/04 15:59:53
>'WinApp.exe': 'C:\WINNT\system32\rpcrt4.dll' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
このような内容の行は無視しても大丈夫

ついで言うと >>697
よく分からなかったらエラー番号の上にカーソル持っていって F1 キー
703デフォルトの名無しさん:04/10/04 16:04:31
704デフォルトの名無しさん:04/10/04 16:04:43
'WinApp.exe': 'C:\WINNT\system32\NTDLL.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'WinApp.exe': 'C:\WINNT\system32\KERNEL32.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'WinApp.exe': 'C:\WINNT\system32\USER32.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'WinApp.exe': 'C:\WINNT\system32\GDI32.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'WinApp.exe': 'C:\WINNT\system32\imm32.dll' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'WinApp.exe': 'C:\WINNT\system32\ADVAPI32.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'WinApp.exe': 'C:\WINNT\system32\rpcrt4.dll' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
プログラム '[1760] WinApp.exe: ネイティブ' はコード 87 (0x57) で終了しました。

と表示されます。どうしてですか?
705デフォルトの名無しさん:04/10/04 16:06:22
>>695

マルチスレッドプログラミング相談室 その2
ttp://pc5.2ch.net/test/read.cgi/tech/1037636153/
706デフォルトの名無しさん:04/10/04 16:07:20
コンパイルのオプション全部書け
707デフォルトの名無しさん:04/10/04 16:24:27
マルチうぜぇ。
相手にする香具師もうぜぇ。
708デフォルトの名無しさん:04/10/04 16:26:32
お前が一番ウザイ↑
709デフォルトの名無しさん:04/10/04 16:31:06
704ですが、わかりません。教えてください。
710デフォルトの名無しさん:04/10/04 16:33:08
ageんな
711デフォルトの名無しさん:04/10/04 17:36:37
>>709
いい加減にしろ。向こうのスレでも答えてもらってんだろ。
712695:04/10/04 17:43:52
695です。
#include <stdio.h>
#include <time.h>
#include <windows.h>
#include <winbase.h>
/**************/
/* メイン関数 */
/**************/
void main()
{
HANDLE hProcess;
int fRet;
DWORD dwProcessAffinityMask,dwSystemAffinityMask;

hProcess=GetCurrentProcess();
fRet=GetProcessAffinityMask(hProcess,&dwProcessAffinityMask,&dwSystemAffinityMask);
fRet=SetProcessAffinityMask(hProcess,1);

for(;;){
printf("表示\n");
}
}
と書き直したらエラーは消えるのですが,CPUは以前と1/4しか使っていません。
どうすればCPUをフル稼働させることができますか?教えてください。
713デフォルトの名無しさん:04/10/04 18:09:10
ぎゃはははは
714デフォルトの名無しさん:04/10/04 19:04:41
15秒間フル稼働のプログラム↓

#include <stdio.h>
#include <windows.h>
#include <process.h>
#include <stdlib.h>
#include <time.h>

static
void task(void* id){
SetThreadAffinityMask(GetCurrentThread(),1UL<<atoi((char*)id));
clock_t start=clock();
printf("タスク%sの開始\n",id);
while(clock()-start<15*CLOCKS_PER_SEC){
//何か
}
printf("タスク%sの終了\n",id);
}

main(){
HANDLE t1=(HANDLE)_beginthread(task,0,"1");
task("0");
WaitForSingleObject(t1,INFINITE);
return 0;
}
715デフォルトの名無しさん:04/10/04 19:09:24
( ´,_ゝ`)プッ
716695:04/10/04 19:23:17
ありがとうございます。
試してみたいと思います。
717デフォルトの名無しさん:04/10/04 21:53:24
VC++6.0でツールボックス(?)ボタンとかテキストとか貼りつけるやつ
が出てこなくなりました。どうしたら表示できますか?
かれこれ1時間近く探してます・・。・゚・(ノД`)・゚・。
718デフォルトの名無しさん:04/10/04 22:04:47
あった━━━━(Д゚(○=(゚∀゚)=○)Д゚)━━━━━!!
719デフォルトの名無しさん:04/10/05 01:38:08
左側にツリービューコントロールがあり、ツリーから選んだ項目が右側に出る
という設定ダイアログを最近よく見かけるようになりました。(WinAMPやOpenJane等で使われている)
こういうダイアログは自作なのでしょうか?
720デフォルトの名無しさん:04/10/05 02:13:32
そりゃあ、勝手には出来ないわな
721デフォルトの名無しさん:04/10/05 10:10:16
>>720
いやそういう意味ではなく
ツリービューを配置したダイアログを作成して、ツリー項目が選択されたら子ダイアログを右側に表示
とかそういうコードをシコシコ書いているのか、
SHBrowseForFolderみたいに一発で表示できるとか、
MFC等のライブラリにそういうものがあるのかな、と。
722デフォルトの名無しさん:04/10/05 12:28:53
最近でもないけどね。netscapeではずっと前からそういう設定ダイアログに
なっている。
>ツリービューを配置したダイアログを作成して、ツリー項目が選択されたら子ダイアログを右側に表示
とかそういうコードをシコシコ書いている

たぶんそうでしょう。これ自体は数行で書けるから技術的な問題は
ほとんど無いかと。
723デフォルトの名無しさん:04/10/05 12:38:12
>>719
OpenJaneは確かデルファイでオープンソースでは?

winampのリソース見てみたけど、右側のダイアログはこんな感じ。
(左側は実際のWinampの設定画面)
http://v.isp.2ch.net/up/3c1e4e393976.png
724デフォルトの名無しさん:04/10/05 17:25:55
>>721
明らかに見た目も機能も(右クリックへの対応など)ばらばらなのに同じAPIで実現されてるわけ無いだろ。
725デフォルトの名無しさん:04/10/05 23:35:51
よく、ちょっと変わったListViewのアプリケーション見かけますよね?
あれって、
CListCtrlから派生クラスを作成(例えばCListCtrlEx)するんですよね?
そのCListCtrlExをViewに選択するときってどうするんですか?
プロジェクト作成時のViewはCViewでも良いのでしょうか?
726デフォルトの名無しさん:04/10/05 23:48:36
>>721
漢なら自作するに決まってるだろ。
コモンダイアログすら使うことは許さん。全て自前で書け。
727デフォルトの名無しさん:04/10/05 23:57:03
>>726
みたいなバカはシカトでOKだよ
そのCListCtrlExクラスのインスタンスを作成してCreateを呼べばCViewに表示されるよ
728デフォルトの名無しさん:04/10/06 00:47:24
なんでVC++なの?
BCBじゃだめ?
729デフォルトの名無しさん:04/10/06 01:46:12
そんなしけた燃料投下でこの俺様が釣られるかクマー
730デフォルトの名無しさん:04/10/06 02:01:09
すんません、糞な質問で申し訳ないのですが
リソースエディタでは256色までのBitMapファイルしか
取り込めないのでしょうか?
クライアントに32Bitや16BitのBMP画像を表示するには
どうすればいいのでしょうか・・・。
CHtmlViewを描画の基本クラスにすれば
画像ファイルを指定して読み込んで表示できるようですが、
CViewを使ってやるにはどうすればよいのでしょう。
ほんとアホな質問で申し訳ありません。
環境はWindowsXP:Home,VisualC++6.0です。
731デフォルトの名無しさん:04/10/06 08:16:37
>>730
アホな質問はよそでしてください。
732デフォルトの名無しさん:04/10/06 08:54:38
エクセルみたいな表型式にしたいんだけど、
グリッドコントロールみたいのないの?
VC.NET(アンマネージ)
733デフォルトの名無しさん:04/10/06 12:51:01
あるよ
734半日潰れた:04/10/06 17:18:41
MFCでstrncpy使うと、debugビルド時に'\0'を
勝手に付加してコピーしてくるんですけど・・・
なんなの?
735デフォルトの名無しさん:04/10/06 17:20:04
デバックビルドだと配列が0クリアされるからじゃねーの。
736734:04/10/06 17:24:22
>>735
すまん・・・
その通りでした。orz
軽く聞き流してやって下さい・・・
737デフォルトの名無しさん:04/10/06 19:19:25
【無料】Visual Studio 2005 Express【Beta】
http://pc5.2ch.net/test/read.cgi/tech/1091543344/269
から移動してきました。

2003 向けのプロジェクトを読み込んで、makefile を作るにはどうしたらいいですか?
それを使って、Visual C++ Toolkit 2003 でビルドしたいんです。
738デフォルトの名無しさん:04/10/06 19:49:30
無理
739デフォルトの名無しさん:04/10/06 22:07:13
VC6+MFCです。
ドキュメントクラスで、ワーカースレッド立ち上げて、
そこから、Viewクラスに情報を渡したいんですが、
こういう場合、一般的にはどうするのでしょうか?

グローバルでやりとりもスムーズも余りきれいにはいかないですし、
Documentクラスのポインタをワーカースレッドに渡して仲介すべきなのか、
Viewのポインタを渡した方がいいのか、、、スマートな方法を教えてください。
よろしくおねがいします。
740デフォルトの名無しさん:04/10/06 22:33:48
UpdateAllViews
GetDocument
741739:04/10/07 00:04:10
レスどうもです。
すみません、UpdateAllViewsだと、Viewのイベントになりますよね。

補足ですみません、しばらく考えましたが、
ワーカースレッドから、Documentにメッセージを送れるとよさそうです。
SendMessageでいけるかと思ったのですが、ハンドルがもちろん無いので駄目でした。

ワーカースレッドから、Documentにメッセージを送る方法はあるでしょうか?
742デフォルトの名無しさん:04/10/07 00:20:23
Documentクラスになんかメンバ関数を作ってその中に必要な処理を書く
Documentクラスのポインタをワーカースレッドに渡して仲介
スレッドの中からそのポインタで上のメンバ関数を実行
743739:04/10/07 09:18:10
なるほど、そうですね。
明解、ありがとうございます。
そうすると、ワーカースレッドがDocumentの型を意識する事になるので、
ちょっと躊躇していましたが、仕方なさそうですね。
ありがとうございます。
744デフォルトの名無しさん:04/10/07 13:29:30
>>743
そもそもドキュメントに対してなんらかの処理をするワーカスレッドが
ドキュメントの型に依存してないわけが無いのではなかろうか・・・。
745デフォルトの名無しさん:04/10/07 14:45:29
ビットマップファイルをリソースに追加できません。

マイピクチャフォルダに入っているビットマップは、リソースに追加可能なのですが、
このフォルダ以外の場所においてあるビットマップはリソースに追加できません。

やったことは
リソースビューの .rc を右クリック → リソースの追加 → Bitmapを選択してインポート
→ ビットマップファイルを選択 → 開く

これで、なぜかマイピクチャに入っているものは追加可能でしたが、それ以外のフォルダや
マイピクチャ下に作ったフォルダの中に保存していたビットマップは開くボタンを押してもリソースビューに追加されませんでした

追加したいファイルのあるフォルダはどこかに事前に登録しておく必要とかあるのでしょうか?
それとも、ビットマップを追加するとき制約でもあるのでしょうか?

解決方法を教えてくださいm(_ _)m

Visual C++ .NET 2003
Windows XP home SP2
746デフォルトの名無しさん:04/10/07 15:53:52
>>745
ソース階下のRESフォルダに入れてみては?
あと、ファイル名が全角とか。
747745:04/10/07 16:21:40
>>746
レスありがとうございます。

それもやってみたのですが、だめでした。

ファイル名はすべて半角英文字です。
748デフォルトの名無しさん:04/10/07 16:24:45
スレ違いかもですが・・
YahooでVisual C++6.0欲しさにオマケソフトが色々付くと有ったVisualStudio6.0買ったんですが
肝心のC++6.0がセットアップできませんorz というかC++のCDがありません;
ひたすら検索しても妙な説明ページに引っかかりまくるばかり・・
どなたかセットアップ方法紹介しているサイトなり有ったら教えてください、
変な欲出さなきゃ良かった・・ ||orz 
749デフォルトの名無しさん:04/10/07 16:37:11
MFCスレにも書かせてもらったのですが…
子ウィンドウにタブとかスライダー等、色々配置したいのですが
どうすればいいか迷っています。
プロパティシートを使えばという気もしますが
[OK]ボタン等が必要ないので、他にいい方法があれば
教えていただけませんでしょうか?
よろしくお願いします。
750デフォルトの名無しさん:04/10/07 16:38:27
>>748 残念
751616:04/10/07 16:49:06
CDないならセットアップの仕方調べてもしょうがないんじゃ...
752デフォルトの名無しさん:04/10/07 16:53:21
>>749
1時間も経たんのにマルチポストするような香具師には答えたくない
753デフォルトの名無しさん:04/10/07 17:19:55
MCIの質問です。よろしく。
CD再生しようとしているんですが
TMSF(トラック:分:秒:フレーム)で取得したDWORD値
をどうすれば秒に変換できますか?
というかそもそもそれは再生位置の移動(シーク)だけに使用
する値なんでしょうか。だったら、
別の方法で取得しなければいけませんが。
754デフォルトの名無しさん:04/10/07 19:26:05
>>745
ルートにビットマップファイルを置いて読み込んでみたら?
フォルダ名・ファイル名だけでなく、Pathの途中にスペース、
全角等があると、読み込めない筈。
755デフォルトの名無しさん:04/10/07 19:38:09
スレ違いかもしれませんが、他に見当たらなかったので質問させてください。

VB6.0でラベルをフォームに配置するときに、メニューバーで配置するのではなく、
コードを使って座標などを指定して配置したいのですが、どのようにすればいいのでしょうか・・?

また、lineメソッドなどで書いた図形が、他のアプリと重なった時に消えないようにするには
どうすればいいのでしょうか。
どなたかお願いします。
756デフォルトの名無しさん:04/10/07 19:41:57
すぐ下にあるんだが・・・

VBプログラマ質問スレ(6.0以前) Part38
http://pc5.2ch.net/test/read.cgi/tech/1095673000/l50
757デフォルトの名無しさん:04/10/07 19:55:53
すいません・・そっちできいてきます。
758デフォルトの名無しさん:04/10/07 22:37:52
自作アプリに、ユーザ認証機能(ログイン画面)を追加したいのですが、
そういうDLLはありますでしょうか?
ご存知のかた教えていただけると助かります。
759745:04/10/07 23:36:24
>>754
まったくそのとおりです。
ルートフォルダなら問題なくできました。
いろいろ試したところ、パス名に全角文字が入っていた場合に読み込みできないことがわかりました。

ありがとうございました。
760デフォルトの名無しさん:04/10/07 23:58:18
VC++って最初のウィザードでViewを選択したら(簡単に)変えらんないの?
クライアント領域に一つのViewしかつくれないの?(分割しなかったら)

ほんとつかいずれーよなw
761デフォルトの名無しさん:04/10/08 00:49:21
>>760
...
762デフォルトの名無しさん:04/10/08 00:52:09
ageて煽りたい年頃なので放置してやってください
763デフォルトの名無しさん:04/10/08 13:08:05
VC++のエディタで列番号を1行目の上に表示する方法教えてください。
764デフォルトの名無しさん:04/10/08 13:12:08
できない
765デフォルトの名無しさん:04/10/08 13:15:14
>>764
サンクス。
ほかの場所にでも無理ですか?
(右下の貧弱なのだけ?)
766デフォルトの名無しさん:04/10/08 14:29:03
>>763
つか、VC++のバージョンを書いとけよ…

VS2003だったら、
オプション -> テキストエディタ -> C/C++ -> 全般
にある
767デフォルトの名無しさん:04/10/08 15:25:57
このスレも.NET以前と以降に分けた方が良さそうな悪寒
768デフォルトの名無しさん:04/10/08 17:18:44
managedC++スレあるじゃん。
769デフォルトの名無しさん:04/10/08 17:20:41
次スレ立てる香具師はタイトルにどっちか書いておけ
770デフォルトの名無しさん:04/10/08 17:40:25
VC 6.0 を使っています。
MFC AppWizard(exe)で作ったプログラムではメインをいじったりできませんか?
というかメイン関数を見ることすら出来ないんですが・・・。
771デフォルトの名無しさん:04/10/08 17:47:10
>>770
何をしたいのか知らんが、WinMainはMFCの中にある。
772デフォルトの名無しさん:04/10/08 17:57:12
レスありがとうございます。
ええ。実はそれ自体は知っているんですが,どうにかしていじれないですか?
やっぱり1から自分で作らないとダメでしょうか?
773デフォルトの名無しさん:04/10/08 18:11:09
>>772
何をしたいのか知らんが、大抵のことはWinMain()以外で充分できる。
774デフォルトの名無しさん:04/10/08 18:11:37
どういじりたいのか書かないので何とも言えんが
どうしてもWinMainをいじりたいなら当然自分で作らないとダメ。
775デフォルトの名無しさん:04/10/08 18:13:05
>>772
メッセージで動くから、メインなんかいじってもしょうがない。
776デフォルトの名無しさん:04/10/08 18:44:24
ディレクトリのパスを受け取って、その中の全てのテキストファイルに対して作業をする為に以下のようなコードを書いたのですが、
1ファイル目はうまくいくのに2ファイル目以降がfin.open((LPCTSTR)(dirname + "\\" + filename));でオープンに失敗してしまいます。
while(getline(fin, line))の部分をコメントアウトすれば成功するので、おそらく原因はそこなのでしょうが、何故なのかがわかりません。
出来れば解決法も含めて教えてください。開発環境は Visual C++.NETです。

CString dirname; /* ディレクトリの名前 */       CString filepath; /* dirname\*.txtに適合するファイルのパス */ 
CString filename; /* dirname\*.txtに適合するファイル名 */       CFileFind FileFind;
BOOL bfnf; /* FileFind.FindNextFile()の成否 */       string line; /* ファイルから1行読み込む時のバッファ */
ifstream fin;

filepath = dirname + "\\*.txt";
if(!FileFind.FindFile(filepath)) return FALSE;// dirname\*.txtなるファイルを取得。なければ終わり
do{
 bfnf = FileFind.FindNextFile();
 if(!FileFind.IsDots()){// .\や..\の除外
  filename = FileFind.GetFileName();
  fin.open((LPCTSTR)(dirname + "\\" + filename));// dirname\filenameのファイルを開く(CString->char*)
  if(!fin)return FALSE; // ファイルのオープンに失敗したらFALSEを返し終了
  while(getline(fin, line)){// 1行取って来る(失敗したら終了)
  /* 色々な作業 */
  }
 fin.close();
 }
}while(bfnf);
777デフォルトの名無しさん:04/10/08 19:22:32
777
778デフォルトの名無しさん:04/10/08 19:48:01
>>776
「色々な作業」でFileFindかなにかを壊している悪寒。
whileブロックをコメントアウトしたら動くのなら、少しずつ戻していってどこで動かなくなるか試してみ。
#ソース晒した方が早そうだが。
779776:04/10/08 20:28:29
>>778
ありがとうございます。/* 色々な作業 */の所は今の所全てコメントアウトしているので、
多分関係ないのではないか、と思います。

2ファイル目でfin.openが失敗して(多分) if(!fin)が成り立ってreturn FALSE実行される↓
fin.open((LPCTSTR)(dirname + "\\" + filename));// dirname\filenameのファイルを開く(CString->char*)
if(!fin)return FALSE; // ファイルのオープンに失敗したらFALSEを返し終了
while(getline(fin, line)){// 1行取って来る(失敗したら終了)
/* 色々な作業 */
}
fin.close();

if(!fin)が成り立たず、全てのファイルでfin.openが成功しているのを確認↓
fin.open((LPCTSTR)(dirname + "\\" + filename));// dirname\filenameのファイルを開く(CString->char*)
if(!fin)return FALSE; // ファイルのオープンに失敗したらFALSEを返し終了
// while(getline(fin, line)){// 1行取って来る(失敗したら終了)
// /* 色々な作業 */
// }
fin.close();

こんな感じです。
 
780デフォルトの名無しさん:04/10/08 20:56:11
>>779
getline()の第2パラメータの型とlineの型を調べよ。
#少なくとも>776はコピペミスしてそうだ。
781マイク ◆yrBrqfF1Ew :04/10/08 20:58:47
std::ifstream::clear()じゃないよな?
782776,779:04/10/08 22:16:18
>>781
それだ!!というかこんなのあったんだ…fstreamとか使うの初めての上適当にやってたので全然知りませんでしたorz
1つめのファイルのgetline(fin,line)がFALSEになった時にfinのファイルストリームがEOFにセットされてるから必要になるんですね。
ありがとうございました。
>>780さんもありがとうございました。
783デフォルトの名無しさん:04/10/08 23:04:45
>>766
> VS2003だったら、
> オプション -> テキストエディタ -> C/C++ -> 全般
> にある
列を上に表示するオプションなんてないぞ??
784デフォルトの名無しさん:04/10/08 23:27:35
ちゃんと探せ
785デフォルトの名無しさん:04/10/09 00:38:18
Visual C++6.0をDOSプロンプトでコンパイルするにはどうすればいいかを調べています
 
VCVARS32.BATを実行した際に、
環境変数のための領域が足りません
と表示される場合には、
どうすればよいのでしょうか?
今からC言語を勉強しようとしている初心者です。
よろしくお願いします
786デフォルトの名無しさん:04/10/09 01:09:17
なぜ今更C言語なのかしらん?
787デフォルトの名無しさん:04/10/09 01:13:53
788デフォルトの名無しさん:04/10/09 01:45:41
グローバル変数と引数/返り値なしの関数で
いっぱいのwin32 C++のソースを元にして、
さらに進めていかなくてはいけない状況です。
VS2003で、整理してクラス化するのに
うまい方法はないでしょうか。

JavaやVS2005のC#やVBにはリファクタリングと
いう便利な機能があると聞いたのですが
C++>C#という変換というのもなさそうですし、
かといって手作業でとなると膨大で悩んでいます。
789デフォルトの名無しさん:04/10/09 02:22:26
>>788
弊社の優秀なスタッフが動作検証まで含めてクラス化を行ないます。
規模によりますが、ほぼ0からの設計と同程度の時間と費用が掛かるとお考えください。
790デフォルトの名無しさん:04/10/09 02:33:25
あるベンダーから配布されたActiveXコントロールを使用しようと
思ってるのですが
ダイアログベースじゃないアプリの場合、コントロールはどこに
貼り付ければいいのですか?
791デフォルトの名無しさん:04/10/09 02:47:50
ウィンドウに貼り付けて下さい。
792デフォルトの名無しさん:04/10/09 03:05:50
ウィンドウってなに?
793デフォルトの名無しさん:04/10/09 03:14:45
お前が今見ているもの
794デフォルトの名無しさん:04/10/09 03:15:04
795デフォルトの名無しさん:04/10/09 03:19:27
>>793
おまえバカだろ?
どうやって貼るんだよ
ダイアログベースじゃないっつってんじゃんよ
マジ死んでくれ
796デフォルトの名無しさん:04/10/09 03:30:50
まあもちつけド素人
797デフォルトの名無しさん:04/10/09 03:34:23
なんで餅つかなきゃなんねーんだよ
ばかかおめー
798デフォルトの名無しさん:04/10/09 03:44:59
>>796
餅はカロリー高いんだよ!
氏ね
799790:04/10/09 03:55:56
すみませんホントにどなたか教えていただけないでしょうか・・?
ちなみに>>795とか>>797はわたしではありません。
800デフォルトの名無しさん:04/10/09 04:20:02
フォームビュー使えば。
801デフォルトの名無しさん:04/10/09 04:38:45
CViewから派生させた独自のViewをつかっているので無理
802デフォルトの名無しさん:04/10/09 05:28:34
>790
ActiveXコントロールといってもいろんな種類があります。
単なるDLLとして使うのであれば.hをインクルードして
.libをプロジェクトに追加します。
803デフォルトの名無しさん:04/10/09 08:29:16
そのActiveXの作者サイドに聞けばいいじゃん。
804デフォルトの名無しさん:04/10/09 12:36:30
>>789
委託できるほど研究費がもらえた際にはぜひ貴社に。
むぅ、機械科が作ったソースなんて・・ orz
805763:04/10/09 12:56:44
>766
>784

VS>ツール>オプション>テキストエディタ>全般。。。
列表示が見つかりません。
VS>ツール>オプション>テキストエディタ>C,C++>全般。。。
にも見つかりません。

.NETなんですが、
.NETって2003ですよね。
806デフォルトの名無しさん:04/10/09 15:59:06
VC6でも、VS2003でも
列の表示できないな。

VSで行の表示が追加されたぐらいだ。
807デフォルトの名無しさん:04/10/09 17:00:31
列の表示って一見役に立ちそうでまったく役に立たないからな。
808デフォルトの名無しさん:04/10/09 17:06:58
>806
そうですか、ありがとうございました。

>807
そんなことはないですよ、かなり役に立ちます。
809デフォルトの名無しさん:04/10/09 17:21:54
つーか、なんでもVisualStudioでやろうとするのが間違い。
適当なテキストエディタ用意してVisualStudioに登録しておくのがいいかと。
810デフォルトの名無しさん:04/10/09 17:29:26
エディタはVisualStudioのものを使用するに限る。
811デフォルトの名無しさん:04/10/09 17:35:35
>809
ツール>外部ツール?
あれは新しく開くから使いにくいのだけれど、ほかに方法があるのか?
812デフォルトの名無しさん:04/10/09 17:57:40
そりゃぁ毎回新しく開くエディタが悪い。
813デフォルトの名無しさん:04/10/09 20:42:32
Addin
814デフォルトの名無しさん:04/10/10 01:15:43
VC++6のときにあった
プロジェクトへ追加 コンポーネントおよびコントロールは
VS2003でなくなっちゃったの?
815デフォルトの名無しさん:04/10/10 02:06:05
...
816デフォルトの名無しさん:04/10/10 16:09:29
詳しい人教えてください。

CImageで読み込んだ画像をIntegerのフィールドに
転送したいのですが、GetPixelを使うと遅すぎてつらいです。
なにか良い方法はないでしょうか。

画像サイズは4800 x 4800 の、BITMAPを読み込んだものです。
色数は 1ビット、および8ビット(モノクロ256階調)です。
転送先は、new int[4800*4800] で、書き込みは、転送元が
白でないなら、intの特定のビットをONにしています。

高々25Mピクセルの転送に数分(1.4GHz)かかっているので
多分関数オーバーヘッドおよびGetPixelの過剰な処理が効いているのだと考えています。

メモリ転送系で一気にバッファに写す、あるいは少なくとも
CImageの各ピクセルにポインタで直接アクセスしたいのですが。
817デフォルトの名無しさん:04/10/10 16:13:27
>>816
それだけの大きさの画像なら、自前でbmpを読むか外部のライブラリを使うなどしたほうが無難な気がする。
818デフォルトの名無しさん:04/10/10 16:18:05
>>816
CImage::GetBits()
819デフォルトの名無しさん:04/10/10 16:54:09
>>817
若かったころは.magを読み込んで使うミニゲームなど作ったもんですが。
(ロジックの解説を読んでローダを自作しました)
ちかごろとんと根気が無くなってしまいました。

>>818
一度GetBits()を使ったことがあるのですがなんか上手くいかなくて。

たとえば、各ピクセル1バイトなら、GetBits()が返すのが
バッファの先頭バイトなので、
unsigned char* pcTop = (unsigned char*) CImage.GetBits();
と仮定して
cPixelValue = pcTop[4800*y + x];
みたいな感じですか。

あるいは一気に行くことができるのか・・・。

unsigned char pcMegaBuffer = new unsigned char[4800*4800];

memcpy(pcMegaBuffer,pcTop,4800*4800);

820デフォルトの名無しさん:04/10/10 17:04:33
>>819
BMPの1ラインは4バイトアラインになっていることに気を付けよう
821デフォルトの名無しさん:04/10/10 17:10:05
と思ったけど、4800ピクセルなら関係ないか
822デフォルトの名無しさん:04/10/10 17:40:09
>>820,821
すみません。よくわかりません。
16ビット時代のintegerのバイト並びがひっくり返ってるとか
その手の話でしょうか。

あるいは一行の最低単位が4バイトで端っこに余白が出るとか
そっち系ですか?

823デフォルトの名無しさん:04/10/10 17:40:48
そっち系です
824デフォルトの名無しさん:04/10/10 17:54:07
>>823

ありがとうございます。

今、GetBits()を使って得た番地をもとに
1ピクセル1ビットのフィールドをintのフィールドに転送する
ループを組み立て中なので、まもなく勝利か玉砕の報告を
させていただきます。m(_ _)m
825デフォルトの名無しさん:04/10/10 18:10:49
>>788
リファクタリングは「機能」ではない。
826デフォルトの名無しさん:04/10/10 18:50:17
>>816
GDI++はアホのように重いから・・・使うな。
827デフォルトの名無しさん:04/10/10 19:35:13
>>826
そんなもん人の勝手
828デフォルトの名無しさん:04/10/10 20:37:25
とりあえず動作しました。

 踏んだ地雷
・GetBits()が返していたのは実は「ビットマップバッファの末尾近く」のほうで
 そこから先をアクセスしようとしてアクセス違反。(前回の失敗はこれらしい)

 自爆
・向きを間違えて水平鏡面転送してしまい、確認するのに小1時間。

 埋め込んだ地雷
・「末尾近く」ってどこ?なんか転送がずれるんですけど。
 とりあえず謎の定数を埋め込んでおおむね転送可能にしたけれど
 完全に一致してるんだろうか。

・仕様
 最終1ラインでアクセス違反が出るので最後1ラインだけ転送せず。
 まーいーや。端っこはどうせ使わないし。ケンチャナヨ〜

というわけで3分近くかかるため敬遠されていた函数群が
1秒強まで短縮できたので、判定は「大勝利」ということで。

皆様有難うございました。m(_ _)m

さて、飯でも食いながら戦後処理(ソースをにらんで作ったきり忘れ去られた
函数群を発掘する。動作不明のショートカットキーを紙に書き出す)でも
はじめます。

829デフォルトの名無しさん:04/10/10 20:43:50
>>828
CImage::GetBits()は
「返されるポインタは、座標 (0, 0) のピクセルを指します。」
らしいよ。
830デフォルトの名無しさん:04/10/10 20:50:38
bmpは上下反転している罠。
831デフォルトの名無しさん:04/10/10 21:17:55
このサイトのプログラムはレベル高いほうなのか?
http://deepbluesky.hp.infoseek.co.jp/index.html
832デフォルトの名無しさん:04/10/10 21:23:04
>>831
そのサイトのどこにプログラムが?
833デフォルトの名無しさん:04/10/10 21:28:39
表示でソースで見れるんじゃないですか?
834デフォルトの名無しさん:04/10/10 21:51:17
>>830
だから?
835デフォルトの名無しさん:04/10/10 22:50:51
天地無用
836デフォルトの名無しさん:04/10/10 22:58:19
つか、もうVC++の時代は終わったから初心者諸君
無理して勉強する必要はないよ
837デフォルトの名無しさん:04/10/10 23:31:40
またDel厨か!!
838デフォルトの名無しさん:04/10/10 23:32:40
いえ、C#厨ですが、何か問題でも?
839デフォルトの名無しさん:04/10/11 03:34:56
Visual C++で質問があります。
ダイアログボックスにドラッグドロップを使って、ファイル名を選択できるように
したいのですがやり方がわかりません。
プロパティで"ドラッグドロップを許可"にチェックをいれましたが、ここから先が
わかりません。ご教授ねがいます。
840デフォルトの名無しさん:04/10/11 04:34:44
以下のプログラムをWinXPで実行すると問題ないんですが
以前、9x系OSで試した所、失敗した様な記憶があります。
テストしようにも、今現在 9x系OSの環境が無いのでテスト出来ません。
宜しければどなたかお教え願いませんでしょうか?

CFile File;
char path[_MAX_PATH];

::GetModuleFileName(NULL, path, _MAX_PATH);
if(!File.Open(path, CFile::modeRead)){ TRACE("Error!\n"); }
File.Close();
841デフォルトの名無しさん:04/10/11 06:59:04
>839
とりあえずヒント
1.ダイアログボックスの「ドラッグドロップを許可」を有効にする
2.「WM_DROPFILES」メッセージハンドラを用意し、処理する
842デフォルトの名無しさん:04/10/11 08:33:09
>>840
ファイル共有違反になるね。
CFile::modeRead | CFile::shareDenyWrite
なら開けるよ。
843デフォルトの名無しさん:04/10/11 11:12:42
>>841
アドバイスありがとうございます。 
力不足により、まだ解決していないため、再度アドバイスお願いします。

ダイアログボックスの「ドラッグドロップを許可」を有効にし、
WM_DROPFILESのメンバ関数OnDropFiles(HDROP hDropInfo) を作成するところまでは
できましたが、ファイルをドロップしても、この関数が呼ばれません。
この関数が呼ばれれば、処理はなんとかなると思うのですが、関数が呼ばれない理由がわかりません。
844デフォルトの名無しさん:04/10/11 11:29:34
DragAcceptFiles
845デフォルトの名無しさん:04/10/11 12:04:17
>843
試してみたら確かに呼ばれない・・・と思ったらCAboutBoxに作ってた。

後は、ClassViewからCHogeDlgを右クリックして「Windows メッセージハンドラの追加」
「クラスで使用可能なメッセージ用フィルタ」を「ウィンドウ」にして「W_DROPFILES」を選択し
「ハンドラの追加」ボタンをクリックしてますか?

当方、VC++6.0(SPなし)にて呼ばれることを確認。
846デフォルトの名無しさん:04/10/11 12:45:46
>>845
アドバイスどうもです。
845さんが書かれている通りのやり方で、メンバ関数OnDropFiles(HDROP hDropInfo)を
インプリしてますが、未だに上手くいってません。

>>844,845
DragAcceptFiles() をOnInitDialog() に書いて見ると、全てのダイアログでOnDropFilesが
呼ばれるようになりました。 ですが、ドラッグドロップを許可」を有効にてある、ダイアログ
だけは、反応がありません。

再度質問ですが、
1. ダイアログのプロパティで 「ドラッグドロップを許可」を有効にした場合、DragAcceptFiles()を
記述する必要があるのか?
2. 記述する必要がある場合、どこに記述するのか?

もしわかりましたら、よろしくお願いいたします。
847デフォルトの名無しさん:04/10/11 12:58:52
>>846
自己レスです。

状況がわかりにくくすみません。もう一度整理します。
やりたいことは、ダイアログアプリケーションに貼り付けた、エディットBox で、ドラッグ&ドロップをしたい です。
エディットBoxのEditプロパティで「ドラッグドロップを許可」を有効にしていますが、OnDropFiles が上手くよばれません。

試しに、 全体のダイアログプロパティで同様のことをやってみたら、OnDropFilesが呼ばれました。
先ほど自分で質問した、"DragAcceptFiles() をOnInitDialog() に書いて見ると〜" というのは、たぶんこのことと
同じことをやっているのだとようやく理解できました。

エディットBoxでドラッグ&ドロップを受けたい場合には、なにか特別のやり方があるのでしょうか?
848デフォルトの名無しさん:04/10/11 13:28:42
>846
1.どちらかを行えばいい。両方やると重複するだけ。
2.記述する場所について特に決まりはない。OnCreateやOnInitDialogなど。

>847
CEditをサブクラス化すればできなくはないが、
よりお手軽な方法はダイアログ内の座標で判断するとか。
849デフォルトの名無しさん:04/10/11 13:56:35
D&Dをエディットだけに限定したいなら
エディットをサブクラス化して、エディット宛てのWM_DROPFILESを処理するのが簡単なのでは。
850デフォルトの名無しさん:04/10/11 14:04:13
親のOnDropFilesが呼ばれているから
子供(Edit)のOnDropFilesが呼ばれていないだけでは?
(メッセージは1つしか飛ばない)
851840:04/10/11 17:10:04
>>842
なるほど、そうでしたか。
お陰で解決出来そうです。
情報をありがとうございました。
852デフォルトの名無しさん:04/10/11 17:29:15
みなさん、ぶっちゃけ、Document/Viewつかってる?
漏れはいっつもダイアログベースばっかりだから疑問に思いました。

Document/Viewだとコントロール使えないから不便で仕方ない
FormViewつかえばいいが、それだったらはなからダイアログベースで問題ない
853デフォルトの名無しさん:04/10/11 17:38:59
>>852
君はVBを使ってた方が良い
854デフォルトの名無しさん:04/10/11 19:19:39
basicはかけません
855デフォルトの名無しさん:04/10/11 23:12:09
>>852
Document/Viewなんてそんなにこだわる必要ないよ
ほとんどの人は
Documentについて知り過ぎたView
Viewについて知り過ぎたDocument
なんて実装してるから、Document/Viewの意味がない
856デフォルトの名無しさん:04/10/11 23:24:36
過ぎたの度合いに寄るが
ふつうViewはDocumentを熟知している。
857デフォルトの名無しさん:04/10/11 23:27:38
ドキュメントへの依存が非常に強固なのはDoc/Viewの特徴だろ。
それを避けたければ、コントローラを分離してあるMVCを採用するべきだし
当然関連が分散して保守もその分難しくなる。
858デフォルトの名無しさん:04/10/11 23:45:09
Viewが多数存在し、それぞれが連動させようという状況で、Doc/Viewの方がすっきりすると思う
厄介なのはビューがドキュメントをひとつしか扱えない点とか、ダイアログ表示にしずらい部分か
859デフォルトの名無しさん:04/10/12 00:10:08
>>858
なにいってるの?
まったく意味がわかないんですが
860デフォルトの名無しさん:04/10/12 00:10:17
しづらい
861デフォルトの名無しさん:04/10/12 00:16:20
>>848
とりあえず、ダイアログでメッセージを受け取る方法でプログラムを完成させました。
いろいろとアドバイスありがとうございました。

862デフォルトの名無しさん:04/10/12 00:25:24
C:\Program Files\Microsoft Visual C++ Toolkit 2003\vcvars32.bat
cl /01 main.cpp /LD /link user32.lib /def:ts.def

とやると、windows.hが無いぞと怒られます。
Microsoft Visual C++ Toolkit 2003を使ってるのですが、どうやれば良いのでしょうか?
863デフォルトの名無しさん:04/10/12 01:12:09
Toolkit 2003 単体だけでは無理
864デフォルトの名無しさん:04/10/12 01:15:44
CScrollViewが派生元Viewを使っているのですが
スクロールバーが表示されないのですがどうすれば
表示されるのですか?
865デフォルトの名無しさん:04/10/12 01:23:39
>CScrollViewが派生元Viewを使っているのですが
状況がわからんん
866デフォルトの名無しさん:04/10/12 01:26:14
わからんなら書き込みするなぼけ
867デフォルトの名無しさん:04/10/12 01:30:27
「ですが」がくどいYO!
868デフォルトの名無しさん:04/10/12 01:46:11
わからんなら書き込みするなぼけ
869デフォルトの名無しさん:04/10/12 02:01:30
>>864
CScrollViewがウィンドウサイズとスクロール ビューのサイズを比較して、必要なら表示される。
表示がはみ出しているのにスクロールバーが表示されないなら、SetScrollSizes に
指定しているサイズが小さすぎるということ。
870デフォルトの名無しさん:04/10/12 02:03:28
書き込みするなぼけ
871デフォルトの名無しさん:04/10/12 02:09:42
>>869
Thanx
872デフォルトの名無しさん:04/10/12 02:37:01
質問 !!!

皆さん、なぜVC++を使われるのですか?
圧倒的にC++Builderの方がGUIは作りやすいと思うのですが・・・
873デフォルトの名無しさん:04/10/12 03:05:14
>>872
自分の場合は、まだ、プログラムを覚えようとしていた時、
買ってもらったのがVC6(アカデミック)だったからかな。
2つ買うのはもったいないでしょ。

商用ソフトを作るときは、BCCでコンパイルしてexeを作る。
Win32API直書きで作るけど、どちらの場合も作りにくいと思った事は無い。
874デフォルトの名無しさん:04/10/12 03:55:59
>>872
圧倒的情報量の多さ、高機能なエディタ、コンパイラの最適化が優秀、一応M$製...etc

やっぱり使っている人間が多いというのが大きいかも(必然的に情報量が多くなるので)。
875デフォルトの名無しさん:04/10/12 04:15:12
そうだな。昔コンパイラ買おうとした時にボーランドのは老舗とか
盛んに言っててパッケージのデザインも暗くて重苦しい感じだったし、
書籍とかもあんまり無かったのでどうかなぁ〜と思って躊躇した。
VC++は書籍も多かったから色々調べるのに便利だろうし
何より明るいパッケージで取り掛かり易そうな感じがしたからだな。
まあ、何も分からないで買ったんだが、今になってみれば正解だった。
ボーランドはインプライズと社名を変えて再びボーランドに戻る
なんていうことしてるから、やっぱりなんか不安な印象がある。
876デフォルトの名無しさん:04/10/12 04:46:59
少し前からいるその変な奴にマジレスすんな。
877デフォルトの名無しさん:04/10/12 14:06:29
パッケージの色合いで決める875は、表紙の絵で売上が決まるエロ小説愛読者
と同じルーチンの匂いがする。
878デフォルトの名無しさん:04/10/12 20:11:47
このスレは、諸々の事情で VC++ を使用せざるを得ない
奴らが集まるスレだろ。他の言語の素晴らしさを語りたい奴らは
他所でやれ他所で。('A`)
879デフォルトの名無しさん:04/10/12 20:14:26
インテリヘンスまんせー。
880デフォルトの名無しさん:04/10/12 22:55:02
win32 apiの接頭詞 接尾詞が読めずこんがらかる
ことが多くて困ってます。
接頭詞の略語を解説したページをご存知ありませんか。

http://www.google.com/search?num=50&hl=ja&inlang=ja&ie=Shift_JIS&oe=Shift_JIS&q=api+%95%CF%90%94+%90%DA%93%AA+lp&lr=
と検索してみましたがなかなかヒットしませんでした。
hInstanceのhやlp〜も最初は分からなかったし、
今でも謎なのはLPCTSTR・・
LP-CT-STRだとすると、CTって何だろうとか(^^;

特に2文字略語ですが、機能を理解すれば自明ですけど
理解する過程が大変です。なにとぞ宜しくお願いします。
881デフォルトの名無しさん:04/10/12 22:56:41
>>880
CTはconstだったはず
ちがったっけな

ハンガリアン記法

で検索汁
882デフォルトの名無しさん:04/10/12 23:00:41
>>881
惜しい。
C は const
T は TEXT(らしい。なぜか。おれはTRANSITIONALのほうがふさわしいと思ってるが・・・。
LPCSTR/LPCWSTRもある。
883デフォルトの名無しさん:04/10/12 23:15:10
Visual Studio 2005Express Β1を使っているんですが、
dllファイルを使用するときに、ファイルをそのプロジェクトや
systemディレクトリにコピーせずに、
includeファイルやlibファイルみたいに読込先を指定して
読み込む方法は無いですか?
884デフォルトの名無しさん:04/10/12 23:23:50
>>883
1年くらい前にちょろっとやっただけなんですっかり忘れたが、
そん時のソース発見した。
遅延読み込みを使用する。

#include <delayimp.h>
#pragma comment( lib, "delayimp.lib" )

をヘッダに入れて

FARPROC CALLBACK DelayLoadHook(unsigned dliNotify, PDelayLoadInfo pdli)
{
if ( dliNotify==dliNotePreLoadLibrary )
{
TCHAR dllPath[MAX_PATH];
PathCombine( dllPath, _T("DLLの場所\\"), pdli->szDll );
return reinterpret_cast<FARPROC>( LoadLibrary( dllPath ) );
}
else return 0;
}

とか作って

extern "C" PfnDliHook __pfnDliNotifyHook2 = DelayLoadHook

っていれる。
コンパイラオプションで目的のDLLを遅延読み込み指定する。

で出来ると思う。
多分。
885デフォルトの名無しさん:04/10/12 23:51:03
TTCHAR
LPlong poniter
hhandle
Cconst
886デフォルトの名無しさん:04/10/13 00:42:42
881 882 885さん、レスありがとうございます。

ハンガリアン記法は一般的なものだと思ってたんですが、
もともとMSの人の発案なんですね。検索したらいくつか
略語の解説がみつかりました。

CTでひとまとまりだと思ってたら、まさか一文字が略語とは
気づきませんでした。女子高生のさらに上をいきますね(^^;



887デフォルトの名無しさん:04/10/13 09:27:24
*用途で覚えておこう

Cが付くのはconstで読み出し用
Cなしは書き込み用

Tが付くのはUNICODE互換でワイドとの切り替えあり
888デフォルトの名無しさん:04/10/13 13:21:31
STLPortってなんですか?
889デフォルトの名無しさん:04/10/13 14:34:26
参考書をみた

入力

動いた

ちょっと変えてみる

で?

何も得ない

って状態なんだが・・・・・・
あと、コンパイルに時間が掛かるのは仕方ないのかな・・・・・・(体感10秒くらい)
890デフォルトの名無しさん:04/10/13 15:00:10
>>889
ああ、30分とか1時間とかじゃないんだ
幸せだな
891デフォルトの名無しさん:04/10/13 15:08:56
>>889
プリコンパイル済ヘッダー
#include "stdafx.h"

ってのを使うと、コンパイルが速くなるよ。
新規にプロジェクト作って、
標準的な"Hello World! アプリケーション"
で作ると、stdafx.hとか、stdafx.cppってのが作られるけど、
これらが速くしてくれる。

今はちょっと長々と説明できないんで、これにて。
892デフォルトの名無しさん:04/10/13 15:09:58
未だにVC++5.0使ってます。

lseek64()を使ってますが、2GB以上のファイルを扱えず、
2の31乗以上の値を指定するとエラーになります。

どうすればいいですか?
893889:04/10/13 15:16:18
>>891
dクス。やってみる。
894デフォルトの名無しさん:04/10/13 15:17:42
>>892
OSとHDDのフォーマット方法も関係するけど
895892:04/10/13 15:19:15
>>894
OSはWinNT4.0SP6、HDDはNTFSです。

ソースファイルに何らかのマクロを定義すれば扱えるように
なるとか、そういう方法があればいいのですが・・・
896デフォルトの名無しさん:04/10/13 16:56:43
>>889
新規プロジェクトで、初めからstdafx.hとかある場合は、
そのstdafx.h内で、よく使うヘッダーをincludeする。

手動でやる場合は、
:stdafx.h、stdafx.cppを新規にプロジェクトに追加
(どっか別に新規プロジェクト作って、そのstdafx.h、stdafx.cppを持ってきた方が無難かも)
:よく使うヘッダーは、stdafx.hでincludeする。
:すべてのcppファイルの先頭で、stdafx.hをincludeする。
:プロジェクト「設定」>「c/c++」>カテゴリ「プリコンパイル済みヘッダー」>「プリコンパイル済みヘッダー(,pch)を使用」
:「このヘッダーまで」の欄に「stdafx.h」を入力してOK。

これで速くなると思う。初回は変わらんかもしれんけど、ちょっとした修正程度なら、抜群に速くなると思う。
ただ俺もそこまで詳しくないから、足りん部分があるかもしれんけど、
とりあえず俺はこれで毎回1分30秒くらいかかってたのが、3〜5秒になった。
897デフォルトの名無しさん:04/10/13 17:04:16
別に時間なんかかかってないだろ
アホな初心者の独り言だってば
898デフォルトの名無しさん:04/10/13 17:32:21
>>892
long 桁以上なら2回に分けてseekする。
899デフォルトの名無しさん:04/10/13 19:56:27
>>898
2回に分けただけじゃ2^33-2バイトしか扱えないぞ。
900デフォルトの名無しさん:04/10/13 22:08:10
んじゃ、3回に分けようか。
901デフォルトの名無しさん:04/10/13 23:05:32
>>887
const 定数はそういう意図がなんですか。
TextはそれでUnicodeなんですね。

意味が分かると段々ソースを眺めても頭痛がおこら
なくなりました。ありがとうございます。
脳内の問い合わせエラーが減ったのかも(^^;
902デフォルトの名無しさん:04/10/13 23:09:07
>>901
Unicodeじゃねーよ・・・何勝手にあさっての方向に脳内補完してんだよ。
903デフォルトの名無しさん:04/10/13 23:13:22
>>902
ちょっと知ってるからって偉そうにすんなよ
ヲタ君w
904デフォルトの名無しさん:04/10/13 23:16:24
UNICODE対応が
_UNICODE,UNICODEと二つに分かれてるのは何でだろ
905デフォルトの名無しさん:04/10/13 23:27:32
hoge.hを編集中にhoge.cppを編集したい、また逆に
hoge.cppを編集中にhoge.hを編集したいことってありますよね?

その際にキーボードから一発でできませんか?
BCBだとCtrl+F6でいけるんだけど・・・

VS2003を使っています。
906デフォルトの名無しさん:04/10/13 23:31:45
そんなアドインマクロをどこかで拾った事あるよ VC6.0だけど
まぁ難しくないから作ってみれば
907デフォルトの名無しさん:04/10/13 23:39:39
あんたアフォでつか?
作れるくらいなら最初から質問しない
908デフォルトの名無しさん:04/10/13 23:50:48
>>904
_UNICODEはOS依存APIの切り替え指定、UNICODEはCRTのテキストルーチンマッピング(_tcs系)
909デフォルトの名無しさん:04/10/14 00:03:47
>>908
逆だったと思うが…
910デフォルトの名無しさん:04/10/14 00:08:35
de aruka. taigi >>902
911デフォルトの名無しさん:04/10/14 08:27:38
Windowのサイズを変更したいんだけど、どうすればいいの?
912デフォルトの名無しさん:04/10/14 09:01:48
>>911
Alt+Space S ← で幅を変えられる。
高さを変えたいなら ↓ だ。
913デフォルトの名無しさん:04/10/14 09:46:27
>>905
その質問と回答って最近別スレで見た
マルチはだめだよ
914デフォルトの名無しさん:04/10/14 12:56:48
>>912
SetWindowPosのことだと思われ。
分かってて書いてるのかも知れんが。
915デフォルトの名無しさん:04/10/14 15:50:01
916デフォルトの名無しさん:04/10/14 18:13:11
始めまして VC初心者です
Win2k VC6 を使ってます。

指定したディレクトリ以下のファイル・サブディレクトリ(もちろん中身あり多階層)
全てを削除するプログラムを書きたいのですがさっぱりわかりません。
ファイルを消すのは FindFirstFile と FindNextFile で検索して
順次 DeleteFile で消していくという方法でできたんですが、
ディレクトリが絡んでくるとさっぱりわかりません・・・ orz
とくに多階層になってるとどのような手法で消していけばいいのかさっぱり・・・

どなたかこのド素人に手法を伝授してください
917デフォルトの名無しさん:04/10/14 18:51:06
>>916
*全体をループで構成する
*見つけたのがディレクトリなら中身がないか確認する
*中身を消す(中身に中身があったらまたループ)
*中身がなくなったらディレクトリを消す
*全部なくなるまで繰り返す
918デフォルトの名無しさん:04/10/14 18:51:30
>>916
DeleteAllFile(char *){
フォルダを見つけたらDeletAllFile();
}
みたいな感じで再帰的にやってみたら?
919デフォルトの名無しさん:04/10/14 18:53:23
>>916
system("deltree /y 削除したいディレクトリ");
920デフォルトの名無しさん:04/10/14 18:57:48
ゴミ箱に移動汁
921デフォルトの名無しさん:04/10/14 19:08:49
SHFileOperationでいっぺんにできなかったっけ
922916:04/10/14 22:01:47
アドバイスありがとうございます
なるほどなるほど関数作って while あたりでループ組んで
FindFirstとNext でフォルダを見つけたら再帰的に自分与呼び出せばいいわけですね
で、ファイルがなくなった時にそのフォルダを消してから return していけば
全てのファイル処理が終わったときには全部のファイルとサブディレクトリが消えてるってわけですね。
確かにこれならいけそうです。
この方法なら応用すれば、指定ファイルだけ消していったりもできそうですしね。
ありがとうございます。この方法でがんばってみます!
923デフォルトの名無しさん:04/10/14 22:11:31
>>922
boostだと
#include <boost/filesystem/path.hpp>
#include <boost/filesystem/operations.hpp>
int main () {
boost::filesystem::path dir ("hoge");
boost::filesystem::remove_all (dir);
return 0;
}
でhoge以下が消せます
924デフォルトの名無しさん:04/10/14 23:09:23
Visual Studio 2003ですが、プロジェクトのDEBUGディレクトリに
IDE上でファイルをコピーするには、どうすればいいんでしょうか?
プログラムから、カレントディレクトリにある画像ファイルを読み込みたいんですが。
925デフォルトの名無しさん:04/10/15 00:19:39
VS2003を使っているのですが、Bitmapをうまくリソースに追加できません。
アイコンのような画像なら読み込めるのですが、
写真などは何度やってもできません。
宜しくご指導お願い致します。
926デフォルトの名無しさん:04/10/15 00:49:54
>>754辺り
927925:04/10/15 00:53:43
ありがとうございました。
できました。
928デフォルトの名無しさん:04/10/15 01:12:24
Appウィザードで適当なプロジェクト名をつけた。ABC
するとCABCView,CABCDoc等ができるがこれを簡単に変更することはできませんか?
929デフォルトの名無しさん:04/10/15 01:24:27
ウィザードでプロジェクト作るときに変更できるよ。
930デフォルトの名無しさん:04/10/15 01:34:06
コードフォーマットの整形はどうやるんですか?
931デフォルトの名無しさん:04/10/15 02:16:10
>>929
プロジェクトを作ってしまった後に変更したいのですが
無理ですか?
932デフォルトの名無しさん:04/10/15 02:34:18
>>931
全部書き換えればいいじゃん。
933デフォルトの名無しさん:04/10/15 02:38:04
>>932
おまえ、バカだろw
934デフォルトの名無しさん:04/10/15 02:42:41
>>933
>931よりはましだと思う。
935デフォルトの名無しさん:04/10/15 02:48:26
 VC2003学生限定PACKを買いました。現在は評価版を使ってます。
新しいプロジェクトを造ろうとメニューを見るとマネージドC++プロジェクトのアイコンがありません。
評価版には入ってないのでしょうか。
936デフォルトの名無しさん:04/10/15 04:10:34
全部書き換えるくらいの根性が無くてどうする。
やれ
937デフォルトの名無しさん:04/10/15 05:21:57
>>936
君らが書いてるような小さなサンプルプロジェクトならいいんだけどねw
938デフォルトの名無しさん:04/10/15 05:30:05
>>937
大規模開発やってらっしゃるのですね・・・
アドインがあるのでインストールしてください。
というか、おそらくすでにインストールされているはずです。

あなたのプロジェクトの命運は、私たち2チャンネラに左右されるわけですね。
微力ながら一生懸命尽くしたいと思います。
939デフォルトの名無しさん:04/10/15 05:45:58
>>935
コンパイルオプション。
940デフォルトの名無しさん:04/10/15 06:09:28
>>937
お前本当にプログラム作れんのか
書替えツールを自作すればいいんだよ役立たず
941デフォルトの名無しさん:04/10/15 06:11:55
というかAppWizardで作られるファイルなんてそんな多くないはずだが。
942デフォルトの名無しさん:04/10/15 06:22:56
馬鹿ばっかり
943デフォルトの名無しさん:04/10/15 06:33:23
>>940
じゃ、おまえは必要なものすべて自作してるのか?
「やってますが、なにか?」なんて台詞吐くつもりなら
最低でもOSから自作してね
944デフォルトの名無しさん:04/10/15 06:35:58
ここで煽ってる暇あったら書き換えろ。
AppWizardで作ったならファイル数は10もないだろ。
945デフォルトの名無しさん:04/10/15 06:36:04
 ∧∧   Sir!
. ( ゚Д゚)ゝ スレのタイトルを読み直した方がよろしいかと思います!
 |  |
946デフォルトの名無しさん:04/10/15 06:37:59
誰が必要なものすべて作れなんて話してるんだ
947デフォルトの名無しさん:04/10/15 07:08:57
作らなくても在りますよ^^
948デフォルトの名無しさん:04/10/15 08:20:58
928 :デフォルトの名無しさん :04/10/15 01:12:24
Appウィザードで適当なプロジェクト名をつけた。ABC
するとCABCView,CABCDoc等ができるがこれを簡単に変更することはできませんか?

932 :デフォルトの名無しさん :04/10/15 02:34:18
>>931
全部書き換えればいいじゃん。

933 :デフォルトの名無しさん :04/10/15 02:38:04
>>932
おまえ、バカだろw

936 :デフォルトの名無しさん :04/10/15 04:10:34
全部書き換えるくらいの根性が無くてどうする。
やれ

937 :デフォルトの名無しさん :04/10/15 05:21:57
>>936
君らが書いてるような小さなサンプルプロジェクトならいいんだけどねw
949デフォルトの名無しさん:04/10/15 10:00:17
検索&置換すりゃええんでねぇのか。
100、200くらいなら書き換えるのも大変じゃないだろうに。
ファイル名だって、10本そこそこだろう。
950デフォルトの名無しさん:04/10/15 14:39:57
バカにされたからどんどん話を大きくしようとしてるのがバレバレだね。
951デフォルトの名無しさん:04/10/15 15:06:42
ファイルの書き換えもできないのに大規模開発かよ
952デフォルトの名無しさん:04/10/15 15:38:17
ほんと、ここ奴らってショボイのしか書いたことないんだね
そうファイル数100を超えるような中規模程度のものすら
知らないんだろうhw
953デフォルトの名無しさん:04/10/15 15:44:23
だからスクリプトでも組めよ 無能だなぁ
954デフォルトの名無しさん:04/10/15 15:47:34
なんかすごいことになってるなw
というかプロジェクト作り直せ
955デフォルトの名無しさん:04/10/15 16:00:03
>>928
自分は、コンソール/ウィンアプリでしかやった事無いけど、
同じようにプロジェクト名を変えたくなった事がある。

自分の場合は、新しいプロジェクト(ワークスペース)を作って、
そのワークスペースのフォルダに全てのファイルをコピー。

ウィンドウ上のコマンドのプロジェクト→プロジェクトへ追加→ファイル
を選んで、ファイルを新しいプロジェクトに追加する。

それからビルドすれば完成。
956デフォルトの名無しさん:04/10/15 16:01:12
↑真性アフォハケーン
957デフォルトの名無しさん:04/10/15 16:05:41
100で中規模?ありえねぇ・・・。
958デフォルトの名無しさん:04/10/15 16:09:05
>>952
元の質問>>928がAppWizardが作ったファイルを変更したいって質問だろ。
他のファイルが100あろうが関係無い。
959デフォルトの名無しさん:04/10/15 16:35:49
>>958
同意。

もしかして、大規模(?)プログラムの全部の関数を、
Doc,Viewに突っ込んでるのかも知れん。
Document クラスに500近く関数あったら萎えるなぁ。
960デフォルトの名無しさん:04/10/15 16:48:04
だから手作業で直すのに時間かかりそうなら
スクリプトでもいいし、マクロでもいいし、簡単なプログラムでもいいし、
それなりに頭使えばたいして時間はかからんだろう。
それぐらいできないようならプログラマには向いてない。
961955:04/10/15 16:53:16
>>956
すまん。そのタイプのプロジェクトはやった事無かったから。
962デフォルトの名無しさん:04/10/15 16:53:34
そろそろ次いってみよう
963デフォルトの名無しさん:04/10/15 17:10:42
たくさんレスしてもらって
幸せな奴だな。
964デフォルトの名無しさん:04/10/15 17:30:54
次スレたってる?
965デフォルトの名無しさん:04/10/15 17:55:21
ちんこはたってますが、なにか?
966デフォルトの名無しさん:04/10/15 18:05:42
ワークスペース名を(WORKSPACE)します。
ある構造体をViewヘッダファイルで宣言します(構造体名:KOZO)。
その構造体を引数とした関数を作成します。(関数名Func)

そうすると、void CWORKSPACEView::Func(KOZO *kozo)
というのができあがりますが、ClassViewから、その関数名を
ダブルクリックしてもジャンプできません。

そこでKOZOの前にCWORKSPACEView:を追加するとジャンプできるのですが、
kozo->と書いたときに現れるメンバが自動表示されません。

これはどうすれば表示されるようになるのでしょうか。もしくはジャンプする方法で
何か違う方法があるのでしょうか。
967デフォルトの名無しさん:04/10/15 18:32:12
>>966
とりあえずコンパイル通れば、あとは気にしない。
ジャンプしたいところにマークでもつけとけばいい。
968デフォルトの名無しさん:04/10/15 19:13:46
あのC言語って何ですか?C言語ってD前だからC何ですか?
969デフォルトの名無しさん:04/10/15 19:15:35
ボケたつもりなんだろうが
そ の 通 り だ
970デフォルトの名無しさん:04/10/15 19:28:13
大規模開発やっているなら、すでにアドインが入っているはずですよ^^
上司か同僚に聞いてみたらいいですよ^^

入っていないなら、あなたのプロジェクトは手作業で書き換える開発スタイルだってことです^^
971デフォルトの名無しさん:04/10/15 20:05:38
>>968
メイドさんしぃしー(製作・販売ライブドア)がこの言語によって作られたから。
972デフォルトの名無しさん:04/10/15 20:56:49
#include <functional>
struct Equala : public binary_function < CDeviceBase*,CDeviceBase*,bool >
{
public:
bool operator()(CDeviceBase* lhs,CDeviceBase* rhs) const
{
return *lhs == *rhs;
}
};

*******\Device.h(34): error C2504: 'binary_function' : 定義されていない基本クラスが宣言されています。
ってなんで?
973デフォルトの名無しさん:04/10/15 21:00:51
>>972
std::binary_function
?
974デフォルトの名無しさん:04/10/15 21:33:03
>>973 さん
マジありがとうございます。
解決できました。

感謝感激
975デフォルトの名無しさん:04/10/15 21:40:47
さて蒸し返すぞ。
ファイルが100あろうがなんだろうが打ち変えろ。
置換で一つ一つ確認しながらやれば一日でできるだろ。

そもそもそんな規模のものにABCとかつけるなよ。
976デフォルトの名無しさん:04/10/15 21:50:04
次スレは、どこかのスレを乗っ取りたいな。
JavaスレあたりでVCの話がしたい・・・
977デフォルトの名無しさん:04/10/15 22:03:03
VCは糞
Windowsアプリの作成はBCB最強
まちがいない
978デフォルトの名無しさん:04/10/15 22:27:08
979デフォルトの名無しさん:04/10/16 03:15:24
エディットコントロールに文字を転送して表示してるのですが
なぜかアルファベットが2バイト文字のようにすこし大きくなります。
表示された文字を別のメモ帳にコピペするとふつうの1バイト文字になります。なぜでしょうか?
お願いします。教えてください。お願いします。お願いします。お願いします。
980デフォルトの名無しさん
どこかにスクリーンショットでもUPしてみたら