2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:03/06/22 20:15
タイトルの通り、Visual C++ 初心者用スレッドです。

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

  質問の仕方については次のページが大変参考になります。
  http://www.hyuki.com/writing/techask.html
  http://www.geocities.co.jp/Beautycare/4965/public/template.html

■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
 (MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。

前スレや関連スレは >>2-5 あたりに。

2 :デフォルトの名無しさん:03/06/22 20:15


/** 過去スレ **/
Part5   http://pc2.2ch.net/tech/kako/1048/10486/1048698321.html
Part4   http://pc2.2ch.net/tech/kako/1044/10441/1044196393.html
Part3   http://pc2.2ch.net/tech/kako/1038/10381/1038160750.html
Part2   http://pc3.2ch.net/tech/kako/1030/10309/1030985362.html
Part1   http://pc3.2ch.net/tech/kako/1023/10235/1023530449.html

/** 関連スレ **/
■ VisualC++(MFC限定)相談室 MFC7.dll■
http://pc2.2ch.net/test/read.cgi/tech/1047949606/l50
Win32API 質問箱 Build12
http://pc2.2ch.net/test/read.cgi/tech/1056033645/l50
C++相談室 part20
http://pc2.2ch.net/test/read.cgi/tech/1055162298/l50
C/C++の宿題やらせてください。9代目
http://pc2.2ch.net/test/read.cgi/tech/1055944101/l50

/** 外部リンク **/
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
MSDN ライブラリ
http://www.microsoft.com/japan/msdn/library/
Google
http://www.google.co.jp/

3 :デフォルトの名無しさん:03/06/22 20:16
VC++は死滅

4 :デフォルトの名無しさん:03/06/22 20:26
>>1
<< "乙";

5 :デフォルトの名無しさん:03/06/22 21:25
>>1
グッジョブ!

6 :デカパン:03/06/22 21:44
>>1
乙だす!

7 :デフォルトの名無しさん:03/06/24 06:21
VisualC++6.0を使用していますが、コンパイルした後のアセンブラコードを見るためには
どうしたらよいのでしょうか?
コンパイルオプションを見たのですが、それらしいものは書いてありませんでした…。

8 :デフォルトの名無しさん:03/06/24 10:04
ダイアログベースのアプリケーションで、クラスウィザードからコントロールに
メンバ変数を割り当てると、そのダイアログクラスのコンストラクタに

//{{AFX_DATA_INIT(ダイアログクラス)

//}}AFX_DAT_INIT

というのができて、その中でメンバ変数の初期化をしてくれてますが、
この中の処理(たとえば初期値とか)って書き換えてしまっていいん
でしょうか?
それとも、これはクラスウィザードが使う部分なのでいじるとまずいん
でしょうか?

厨な質問と思うのですが、教えてください。

9 :デフォルトの名無しさん:03/06/24 12:02
>>7
"混合モード" で表示じゃダメ?

10 :デフォルトの名無しさん:03/06/24 13:06
>>8
自分で変更してOK

11 :デフォルトの名無しさん:03/06/24 15:47
フォントをリソースなどで埋め込んで、アプリからそのフォントを使用したいのですが
可能でしょうか?
よく、PowerPointやPDFで配布用にフォントを埋め込むことがあると思うのですが。

12 :11:03/06/24 15:51
もしくは、システムのフォントディレクトリ(?)にフォントをコピーしなくても
プログラムと同じディレクトリにおいても利用できるような方法はありませんか?

13 :デフォルトの名無しさん:03/06/24 16:22
割り込みスマン!
もまいら教えてくさい。
プリプロセッサ定義にUNICODEと_UNICODEがあるのですが
これらはどうちがうのですか?
MFCのコードを見ると、どちらかが定義されているときは
他方も定義されるようになっているのですが。。。


14 :デフォルトの名無しさん:03/06/24 17:31
endlと'\n'って普通どっちを使えばいいんですか?
あと、C++で標準入出力はcoutとcin使えばいいんですよね?

15 :デフォルトの名無しさん:03/06/24 18:07
>14
endlは改行した上にフラッシュされる。
endlを使いましょう

16 :魔王みそちる ◆xuU0ZqjUEo :03/06/24 19:12
.NETが糞。糞。ってよく聞きます。
どうして糞なんですか。
糞だとしたら使う開発環境は
VC++.NETよりもVC++6.0のほうがいいってことですよね。

17 :デフォルトの名無しさん:03/06/24 20:05
>>13
Cライブラリ用とWinAPI用。

18 :13:03/06/24 20:33
>>17
サンクスコ!!

19 :8:03/06/24 23:31
>>10
ありがとうございます。
今までは怖くてOnInitDialogでわざわざもう一度設定し直して
たんですが、これで安心して直せます。


20 :デフォルトの名無しさん:03/06/25 08:24
リストビューやツリービューの上などにバーみたいなのを作って
「×」ボタンを表示するにはどうやったらいいんでしょうか。


21 :デフォルトの名無しさん:03/06/25 08:40
>>20
IEをSPY++で調

22 :デフォルトの名無しさん:03/06/25 10:20
コンボボックスの動作がおかしいので解決方法をおしえてください。
猫でもわかるの18〜20章をやっているのですが、
http://www.kumei.ne.jp/c_lang/index_sdk.html
コンボボックスをクリックしてもドロップダウンリストが正しく表示されず、
小さな青いバーがすぐ下にでてくるだけで、文字が一切出てこないのです。
文字の代入が失敗しているのかとおもって以下の(WPARAM)ComboNoの部分を1にしてみたりしましたがきちんと代入はされているようです。
for ( i = 0; i <= 3; i++ )
SendMessage(GetDlgItem(hDlgWnd, IDC_COMBO1), CB_INSERTSTRING, (WPARAM)i, (LPARAM)combostr[i]);
SendMessage(GetDlgItem(hDlgWnd, IDC_COMBO1), CB_SETCURSEL, , 0L)
HPには乗っていないようですが、コンボボックスが押されたときの表示処理をなにか書かなければいけないのでしょうか?
それともリソースエディタに何か問題があるのでしょうか?

VC++6.0Sp5

23 :デフォルトの名無しさん:03/06/25 10:27
>>22
コンボボックスのドロップダウンリストの高さが足りないだけ

24 :デフォルトの名無しさん:03/06/25 11:02
>>22
リソースエディタで、コンボボックスの▼をクリックしてみなよ。下に伸ばせるようになる

25 :20:03/06/25 11:18
>>21
Spy使ってみたけどよく分からないです。ReBarがあるみたいだったけど。
SplitterWndを使っているので、CreateViewのあとに
m_wndFolderDB.Create(m_wndSplitter.GetPane(0,0), IDD_DIALOGBAR, CBRS_TOP, 1);
とかやってみたんですが、うまくいきませんでした。

26 :22:03/06/25 11:56
>23

>24

ありがとうございます。解決しました。
コンボボックスのプロパティばっかり見てました。
まさかマウスで下に伸ばすことができるとは・・・。
_| ̄|○

やっぱり何か本買っておいたほうがよさそう・・・。

27 :デフォルトの名無しさん:03/06/25 15:09
WndProcはどこから呼び出しているのですか?GetMessage(&msg,NULL,0,0)、
TranslateMessage(&msg)、DispatchMessage(&msg)のどれかだと思うのですが。

28 :デフォルトの名無しさん:03/06/25 17:45
>>22
MoveWindowとかでテキトーに伸ばしたら?

29 :デフォルトの名無しさん:03/06/25 19:11
DIBSectionなんですけど、簡単なクラスにしてダブルバッファリングに使ってます。
bmpを読み込んで表示、ペンやブラシを使った描画なんかもとくに問題ありません。

それで今度、画像バッファのピクセルデータを直接弄って、バックバッファに
転送すると(BitBlt)、以前の画像のままでどこも変わっていません。
データを弄った後に、StretchDIBitsでbmpを画像バッファに転送してやり、それから
画像バッファからバックバッファにBitBltしてやるとうまく行きます。

まあ当然かな?とも思いますけど
弄ったデータ->画像バッファ->バックバッファ->画面DC
っていう流れは普通ですか?(バックバッファに直接書けと言うのはナシでお願いします)


30 :デフォルトの名無しさん:03/06/25 22:17
指定したディレクトリ内のファイル名とサブディレクトリ名を表示させたいのですが

プロジェクトがこのソリューション構成で選択されていないため、このプロジェクトの構成はスキップされました。

GetFileSystemEntriesの引数照合がうまくいきません

というエラーが出てしまいます
現在、WIN32コンソールプロジェクトで作ってますが
どのプロジェクトを使った方がいいのでしょうか?
C++.NETを使ってます

どこが間違ってるんでしょうか?わかる方いらっしゃいましたらよろしくお願いします

#include "stdafx.h"
#include <afx.h>
#include <windows.h>

#using <mscorlib.dll>
using namespace System;


int _tmain(int argc, _TCHAR* argv[])
{
  char StrPath[255];//対象フォルダ用の文字列宣言
  char Str_Filename_Array[1024][255];   //ファイル名格納変数
  //対象フォルダパスの入力
  scanf("%s", StrPath);

  Str_Filename_Array[0]=Directory.GetFileSystemEntries(StrPath);
  printf("%s",Str_Filename_Array[0]);
}

31 :デフォルトの名無しさん:03/06/26 03:52
以下のようなエラーが出ているのですがどうやって解決するかわかりません。

c:\〜\include\vector(132) : error C2036: 'struct Cab::_cab_token_t *' : サイズが定義されていません。

おそらくヘッダに問題があるのではないかと思うのですが、エラーの意味自体
ほとんど理解できずにいる状態で参っています。
まさかvectorいじれというわけではないでしょうが・・・

分かる方いらっしゃれば宜しくお願いします。

32 :デフォルトの名無しさん:03/06/26 09:01
>>31
コンパイラ エラー C2036
'class-key' : サイズが定義されていません。
指定された識別子は宣言されずに、そのアドレスが使われました。
宣言されていないオブジェクトのサイズを使うことはできません。
次にこのエラーの例を示します。

struct A* pA;
struct B { int i; };
B* pB;
void main()
{
 pA++; // エラー、A のサイズは分かりません
 pB++; // OK, B は宣言されています
}

/////

つまりは、vecotr のテンプレート引数に渡した構造体の宣言が怪しいと思われ。


33 :30:03/06/26 10:16
WIN32コンソールプロジェクト.NETのプロジェクトで作成したら
プロジェクトがこのソリューション構成で選択されていないため、このプロジェクトの構成はスキップされました
というエラーは解消されたのですが

error C2065: 'Directory' : 定義されていない識別子です。
error C2228: '.GetFileSystemEntries' : 左側がクラス、構造体、共用体ではありません。

エラーが出てしまいます
解決策がありましたらよろしくお願いします
ソースは>>30のままです

34 :デフォルトの名無しさん:03/06/26 10:58
初めてのプログラム板に流されてきました。
@
もし
 A かつ B
ならば
 not B にして、C する

A
もし
 A かつ not B
ならば
 B にして、C する

これを書けばこんな感じなのでしょうか?
if A and B then not B C
if A and not B then B C

@A両方を行いたいのですが、永遠にループしてしまいます。
そうではなく
 @の場合はAを一度行って終わり。
 Aの場合は@を一度行って終わり。
このようにしたいのですがどうすればよいでしょうか?

どうぞよろしくお願いします。

35 :_:03/06/26 10:58
http://homepage.mac.com/hiroyuki44/

36 :デフォルトの名無しさん:03/06/26 13:11
(゚Д゚)

37 :デフォルトの名無しさん:03/06/26 13:16
>>34
http://pc2.2ch.net/test/read.cgi/php/1056078605/112-

38 :デフォルトの名無しさん:03/06/26 16:13
アプリケーションが起動して、メインウィンドウを表示するとき
ShowWindowに渡すフラグって、何にするのがいいの?

MFCのソース見ると SW_SHOWNORMAL 使ってるし、
>初めてウィンドウを表示するときには、このフラグを指定してください。
ってMDSNにも書いてあるが、じゃ SW_SHOWDEFAULT はいつ使うのかと。
SW_SHOWDEFAULT の方が行儀いい...?

39 :デフォルトの名無しさん:03/06/26 19:09
Visual C++を買うと、Windowsのアイコンやビットマップファイルが手に入ってましたよね?
インストールしても見つかりませんが、どこにあるんでしょう。
単体VC++でなくて、MSDEVを買わないと無いのかな?

40 :デフォルトの名無しさん:03/06/26 19:24
需要と供給のバランスが悪い。

41 :デフォルトの名無しさん:03/06/26 19:49
■■■かわいそうな「ゲーム君」を2ちゃんの力でトップにしよう!■■■

HSPプログラムコンテスト2003オンライン投票
http://www.onionsoft.net/hsp/contest2003/entryn1.html

HSPプログラムコンテスト2003に一番乗りで出展したものの               
Windowsに標準でついてくるゲームを手軽に起動できるという(というかただのショートカットつめあわせ)
しょーもないプログラムでたたかれまくっているプログラミング暦3年(!)の高校生の
作品、ゲーム君をみんなの力で一位にしよう。              
【【【 投票方法 】】】            
http://www.onionsoft.net/hsp/contest2003/entryn1.html の一番下、エントリーNo8の「ゲーム君」
評価を「A」で選んでコメントを記入して「送信」(コメントいれるとなおよし)            
http://www.onionsoft.net/hsp/contest2003/eval/eval.cgi?md=cmt&id=8
でいままで送信されたコメントが見えるよ!(けっこう笑える)             
順位 http://www.onionsoft.net/hsp/contest2003/eval/eval.cgi            

42 :デフォルトの名無しさん:03/06/26 19:51
あの、レジストリキーの名前の最大長ってどれくらいなんでしょうか。
RegEnumKeyEx()にバッファサイズがあるんですけど、何いれればいいのか
わかりません。

43 :デフォルトの名無しさん:03/06/26 22:23
おながいします。m(__)m
GDI+を使うために最新のPlatformSDKをインストールしたのですが
VC6のインクルードファイルやライブラリファイルのディレクトリ
の優先順位先頭にそのPlatformSDKのフォルダを指定して良い
ものでしょうか?
というのが、現在の先頭はデフォルトのDeveloperStudioの
VCフォルダになっているのですが、その中のヘッダファイルと
同名のファイルがPlatformSDKにもあるもので。。。
ちなみにPlatformSDKのフォルダを最下位にすると、GDI+を使用
するときに、ULONG_PTRという型が無いといって叱られます。
BaseTsd.hというファイルがインクルードされているのですが
現在インクルードされているVCの方では型が宣言されていなくて
PlatformSDKのほうでは宣言されているようです。
長文しみません。。。


44 :デフォルトの名無しさん:03/06/26 22:25
>>38
http://www.microsoft.com/JAPAN/developer/library/jpuipf/_win32_showwindow.htm

>>39
アプリケーションの追加と削除の、VC++のセットアップから追加・削除できる(ハズ)。
インストールしてるなら、VC++に関連するフォルダを死に物狂いで探すべし。

>>42
http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_regenumkeyex.htm
http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_regqueryinfokey.htm




…つーか、少しは調べようぜ……
…つーか、釣りじゃねぇよなぁ?

45 :デフォルトの名無しさん:03/06/26 22:43
>>43
新SDKを、新規ディレクトリにインストールすると、そんな感じに困ったことになった気がする。
なもんで、そのとき私は、
新SDKの include と lib ディレクトリの内容を丸々
旧SDKの include と lib ディレクトリに上書きしてしまった。
とりあえずこれで問題なく動いてくれたと思う。

まぁやるんであれば、当然ながら
ファイルバックアップしてからやりなされ。

46 :38:03/06/26 22:46
>>44 ども。CWnd::ShowWindow() のほうだけ見てますた(;´Д`)

47 :43:03/06/26 22:49
>>45
レスありがとうございますm(__)m
やっぱり上書きするしかないですか。。。
既存のがあるのでコワいのですが、僕も
バックアップとってやってみますネ。
どうもです。。。




48 :42:03/06/26 23:49
>>44
ありがとうございます。

49 :デフォルトの名無しさん:03/06/27 00:43
>43,>45
待て待て!別の場所にインストールしても
新SDKのinclude,libを最優先にすればそれでいいはずだぞ。

VisualC++付属のPlatform SDKは、あれは要するにVC++発売時点での
Platform SDKがオマケで付いてきてるだけなんだから。

新Platform SDKのヘッダと、VC++のMFCやATLのヘッダを一緒に
使ってうまくコンパイルできないようなことが希にあるが、
適当に対処するかMSに文句を言ってくれたまえ…。

50 :デフォルトの名無しさん:03/06/27 00:54
>>40 同感。あまりに多すぎると順に片づける気力もなくなっちゃうぞ

>>34 どこかのスレに既に回答あり。これじゃいけないの?
if (A){ B= !B; C; }

>>27
Windows2000でMFCアプリを動かしたときのコールスタックの一部はこんな風になる。
AfxWndProcBaseがMFCのWindowProcだ。

AfxWndProcBase(HWND__ * 0x001303f6, unsigned int 273, unsigned int 32784, long 0) line 220 + 21 bytes
USER32! UserCallWinProc@20 + 24 bytes
USER32! DispatchMessageWorker@8 + 264 bytes
USER32! DispatchMessageA@4 + 11 bytes
CWinThread::PumpMessage() line 853

>>29
> それで今度、画像バッファのピクセルデータを直接弄って、バックバッファに
のあたりの言ってることが分からない…。

51 :デフォルトの名無しさん:03/06/27 02:05
VisualC6で、F7を押すと変更の有無に関わらず
全ファイルがリビルドされるようになってしまいました。
元に戻す方法があれば教えてください!

52 :デフォルトの名無しさん:03/06/27 06:59
>>51
日付設定がおかしくなってんじゃないの?
Windowsの設定と対象ファイルのタイムスタンプを確認しる

53 :デフォルトの名無しさん:03/06/27 09:14
>>52
全くそのとおりでした。
ありがとうございました。

54 :デフォルトの名無しさん:03/06/27 10:56
やっぱ探したけど、VC++単体だとアイコンやビットマップファイル無さそうです。
どこからか入手出来ないかな?

55 :デフォルトの名無しさん:03/06/27 11:43
>>54
VC++単体は持ってないので分からないけど
もしかしてCD-ROMの方に収録されてるんじゃ?

56 :デフォルトの名無しさん:03/06/27 13:55
>>54
C:\Program Files\Microsoft Visual Studio\Common\Graphics\Icons\Win95\
にあったけど。VCのCDを *.ico *.bmp で検索すれば出てくるんじゃないかな。

//俺は、そういうアイコンは ExtractIconEx() とか SHGetFileInfo() で
//OSの実行ファイルから直接アイコン取得して表示してるよ。

57 :デフォルトの名無しさん:03/06/27 17:44
WinSockを使って非同期のネットワーク接続を
実現するプログラムをDLLで作りたいんですが、
どうしたらいいのかさっぱりです。
なにか参考にできるような資料はありますでしょうか?
わかりにくくてすみません。

58 :デフォルトの名無しさん:03/06/27 17:52
>57

本屋行けばいいんじゃねーの?

59 :デフォルトの名無しさん:03/06/27 18:05
VC++6.0のインテリセンス(メンバ自動表示)が働かなくなってしまったんですが、
どうやったら復活しますか?
「ツール」−「オプション」ではチェック入ってます。

60 :デフォルトの名無しさん:03/06/27 19:22
>>59
プロジェクトの.ncbファイルを削除してリビルド
してみたら。

61 :デフォルトの名無しさん:03/06/27 19:31
>>60
ありがとうございます。
出るようになりました。

62 :デフォルトの名無しさん:03/06/28 00:15
>>57
・DLLの作り方を勉強する。(簡単なモノから作る)
・WinSockの本でネットワークにアクセスする勉強をする。

この二つを分けて勉強すれば辿り着く。ガンガレ!
言っとくがマジレスだ。

63 :デフォルトの名無しさん:03/06/28 00:40
「かちゅ〜しゃ」のように、スプリッターウィンドウの中のビューを切り替えるには
どうすればいいのでしょうか?

64 :デフォルトの名無しさん:03/06/28 05:16
#include <cmath>

int main(){
std::sqrt(1);
return 0;
}

このファイルをBorland C++でコンパイルするとエラーは出ないのに
Visual C++でコンパイルすると
error C2653: 'std' : 識別子がクラス名でも名前空間名でもありません。
というエラーが出てしまいます。
なぜなんでしょうか。

65 :デフォルトの名無しさん:03/06/28 07:58
cmath.h

// cmath standard header

#if _MSC_VER > 1000
#pragma once
#endif

#ifndef _CMATH_
#define _CMATH_
#ifdef _STD_USING
#undef _STD_USING
#include <math.h>
#define _STD_USING
#else
#include <math.h>
#endif /* _STD_USING */
#endif /* _CMATH_ */

/*
* Copyright (c) 1994 by P.J. Plauger. ALL RIGHTS RESERVED.
* Consult your license regarding permissions and restrictions.
*/

66 :64:03/06/28 14:51
>>65
解決しました。
ありがとうございました。

67 :デフォルトの名無しさん:03/06/28 15:50
画像の情報を生成して(ドットごとの色を指定して)
ビットマップで書き出したいのですが、参考書籍や
サイトでお勧めのものがあったら教えていただけませんか?
とりあえずぐぐってみたものの、有力なサイトは見つかりませんでした。

GUIメニューで画像の保存とかを選ぶのではなく、
プログラムを走らせたら勝手に書き出してくれるようなのを作りたいです。

68 :デフォルトの名無しさん:03/06/28 21:24
>67
猫でもわかる〜のSDK第2章に載ってる罠

69 :デフォルトの名無しさん:03/06/28 21:38
MFCを学ぶのに最適なページ知りませんか?

70 :デフォルトの名無しさん:03/06/28 21:41
>69
ttp://www.yahoo.co.jp/

71 :デフォルトの名無しさん:03/06/28 21:42
>>69
http://www.mfckitty.org/

72 :デフォルトの名無しさん:03/06/29 02:09
  r‐-‐- ⌒ヽ
  | | | ||  i i'^i
  h_,|_,|_,ノ( ノ|/ |
 | ``".´ ´"  ノ
 人  入_ /~
 |     /
 |    |
 |    ';      ,,----、,,,,,,,,,、、
 |    ';     / ,,-‐―、ヽヽヽヽ
 |    |    〔/     ))))ヾヽヽ
 |    ト   /.,,,,、、 ,ヽξ\Ξ/
 |    \   / ==/  .,==-   レi!
 ヽ     |\〔、 ,(_,、ノ( "",,ノ:: 6)  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ';    ノ  λ:" ‐=‐^ン ...::::: |/  < さいたま〜!(@w荒
  ト   ノ   λ:::::. .::.. ::...::::::/     \__________
   \ ̄     \::::::::::::::// ._
    \      \__/   `ヽ
      |                \
      |      / ̄ヽ        ヽ
      |     HardRock     ヽ i
      |      ヽ_/        |  ヽ     / さ、さいたま〜!! /

73 :デフォルトの名無しさん:03/06/29 10:59
>>64
おれは、stdは省略して「::」だけでやってる。
これだとVC++でも、BC++でも、コンパイル通る。

ちなみに、ほんとにノーマルのBC++?
CompilerとかBuilderとか後ろに付くやつじゃなくて?

74 :名無し@沢村:03/06/29 16:03
おまいら、くだらん質問する前に少しは調べろ。
http://www.codeproject.com/

75 :.:03/06/29 17:55
質問です。

表示後に、「閉じる」ボタンで非表示にしたモードレスダイアログが再表示できなくて困ってます。
ShowWindow(SW_SHOW)で再表示しようとすると、ウインドウハンドルがないといって怒られます。

ShowWindow(SW_HIDE) ⇔ ShowWindow(SW_SHOW)
の切り替えをするときに、ほかに何かしなければならないのでしょうか?

MainFrmにて
m_pCDialog = new CDialog(CWnd::GetDesktopWindow());
if (m_pCDialog->GetSafeHwnd() == NULL)
{
  m_pCDialog->Create();
  m_pCDialog->MoveWindow(0, 0, 90, 90, TRUE);
  m_pCDialog->SetImageNum((unsigned int)pDC->m_uiNumCameras);
  for (unsigned int i = 0; i < pDC->m_uiNum; i++)
  {
    m_pCDialog->Set(i, pDC->a.GetInfo(i), pDC->a.GetBuffer(i));
  }
  m_pCDialog->ShowWindow(SW_SHOW);
}

CDialogにて
CDialog::OnHide()
{
  ShowWindow(SW_HIDE);
}

としています。

76 :名無し@沢村:03/06/29 20:28
>>75
そりゃあ「閉じる」ボタンを押した後にDestroyWindow()が呼び出されているんでしょうなあ。

77 :貧乏脱出!これであなたはお金持ち:03/06/29 20:49
普通に働いてお金持ちになれるのは全体の1%のみって本当!?
本当にお金持ちになるにはやはり「副収入」が必要!
一日30分 おうちでコピペ、コピペ!
嘘だと思うんならランキング見てみてくださいよ↓↓
(直リン不可)
http://www.adultshoping.com/addclickport.cgi?pid=1053353765(直リン不可)

...../////

78 :デフォルトの名無しさん:03/06/29 21:30
>>75
>MainFrmにて
>m_pCDialog = new CDialog(CWnd::GetDesktopWindow());
>if (m_pCDialog->GetSafeHwnd() == NULL)
この辺のコードはMainFrmのどこに入ってんの?

79 :.:03/06/29 22:06
ありがとうございます。

>>76
DestroyWindow()を呼び出している覚えはないんですが、
どこか裏で呼び出されているってことでしょうか?

>>78
えーっと、このダイアログを呼び出すためにつくったボタンのイベントハンドラの中で呼んでます。
はじめMainFrmのコンストラクタで呼んで、親(MainFrm)のウインドウハンドラ
をダイアログに渡そうと思ったんですが、うまくいかなかったので...
その後、MainFrmを前面に出したくなったので、デスクトップのウインドウハンドラを渡してますが。

どのタイミングでダイアログのインスタンスを作っていいのかいまいちよくわかってません。


80 :デフォルトの名無しさん:03/06/29 22:16
http://book-i.net/ad02/

81 :デフォルトの名無しさん:03/06/30 01:04
>>79
・「CDialog」の部分は、本当は違う名前という理解でOK?
・DoModal()してないので、DestroyWindow()は呼ばれてないと思う。
・「ウインドウハンドラ」ではなく「ウインドウハンドル」
・再表示させるときの ShowWindow(SW_SHOW) はどんな風に呼んでるの?

82 :デフォルトの名無しさん:03/06/30 01:10
>ShowWindow(SW_SHOW)で再表示しようとすると、ウインドウハンドルが
>ないといって怒られます。

一番大事なこの部分のコードとエラーメッセージを書いてくれないとな

83 :デフォルトの名無しさん:03/06/30 01:19
>>79
Dialog::OnCloseに掛。


84 :デフォルトの名無しさん:03/06/30 07:56
>>79
>このダイアログを呼び出すためにつくったボタンのイベントハンドラ
m_pCDialog という名前から察するに、CDialogクラス(あるいはそれを継承したクラス)のポインタが
CMainFrameのメンバ変数として宣言されていると思うけど……
イベントハンドラが2回以上呼び出された場合の処理は?
どこかでdeleteしてる?

85 :.:03/06/30 11:55
>>81
>・「CDialog」の部分は、本当は違う名前という理解でOK?
OKです。
>・DoModal()してないので、DestroyWindow()は呼ばれてないと思う。
なるほど
>・「ウインドウハンドラ」ではなく「ウインドウハンドル」
失礼しました。
>・再表示させるときの ShowWindow(SW_SHOW) はどんな風に
こんな感じです。

if (!m_pCalibDialog->IsWindowVisible())
{
  m_pCDialog->ShowWindow(SW_SHOW);
}

ちなみに、閉じるボタンのところで、
ShowWindow(SW_HIDE);
Sleep(1000);
ShowWindow(SW_SHOW);

とやっても、再表示されませんでした。


>>79
Dialog::OnClose()だと特別な処理かなにかがされるのでしょうか?
プログラム実行中はダイアログは1つだけを表示、非表示にしてつかいたいので
Destroyはしたくないのですが。

>>84
上のように、唯一のダイアログを使いたいので、MainFrmのデストラクタでのみdeleteしてます。

86 :_:03/06/30 11:57
http://homepage.mac.com/hiroyuki44/jaz04.html

87 :81:03/06/30 17:11
>>85
んー、問題ないように見えるけどねぇ

やっぱ、変なとこで DestroyWindow()してんのかな。
そこから攻めたほうがいいかも。

>ちなみに、閉じるボタンのところで、
>ShowWindow(SW_HIDE);
>Sleep(1000);
>ShowWindow(SW_SHOW);
うちではできたがなぁ。

88 :デフォルトの名無しさん:03/06/30 22:25
>>85
唯一のダイアログということだけど、

>>79
>どのタイミングでダイアログのインスタンスを作っていいのかいまいちよくわかってません。
作るのはメインフレームのOnCreateでいいんじゃないかい?

ボタンのイベントハンドラで
>m_pCDialog = new CDialog(CWnd::GetDesktopWindow());
なんて書いたらメモリリークが激しく起こりそうな予感。
ちゃんとポインタを初期化してチェックもしてれば別だけど。


89 :.:03/07/01 00:06
>>87 ほかの方々
おかげさまで、少し進展しました。
CDialog の OnShowWindow() で CDialog の上に乗せるタブコントロールを
Create() していたのがまずかったようです。
お騒がせしました。

>>88
確かにメモリリークは起こりそうなのですが、上でも述べましたように、
MainFrmのコンストラクタで new CDialog(this) すると、怒られる現象に悩まされていて、
このようにしているわけでして。
でも、おっしゃるとおり、チェックしなければならないのでめんどうそうですね。

セオリーとしては new CDialog() はどこでするべきなんでしょうか?


90 :デフォルトの名無しさん:03/07/01 00:13
>>89
OnCreate()

91 :デフォルトの名無しさん:03/07/01 01:00
>MainFrmのコンストラクタで new CDialog(this) すると、怒られる現象

コンストラクタの段階ではメインウィンドウができてないので当然 this->m_hWnd
は NULLとなり、怒られる

92 :.:03/07/01 01:38
>>90
>>91
他みなさま、ありがとうございます。
あとは、何とかやってみようと思います。



93 :デフォルトの名無しさん:03/07/01 15:59
VC++6 です。
CArchive& ar があって、

 while (ar.ReadString(buf)) {
  TRACE("%s\n", buf);
 }

とかやっているのですが、ファイルの内容が表示される途中で、

 CArchive exception; EndOfFile.

とか表示されます。実際のファイルに EOF が入っているとかはないです。
try/catch を入れてみても catch できません。

exception が表示される原因は何なのでしょう?


94 :93:03/07/01 16:00
age ます……

95 :デフォルトの名無しさん:03/07/01 16:32
VC++.NETです(フォームアプリケーション)
今、読み込んだテキストファイルを文字コードや改行コードの変換
プログラムを作っているのですが

'型キャスト' : 'System::String __gc *' から 'const char *' に変換できません。
というエラーが出てしまい困っています
コード変換の為にfopenは欠かせないのでキャストが出来ないで困ってます
char型にキャストできる方法はありますでしょうか?

//ファイルダイアログボタンを押した時
private: System::Void button2_Click(System::Object * sender, System::EventArgs * e)
{
if(openFileDialog1->ShowDialog() == DialogResult::OK)
{
System::IO::StreamReader * sr = new
System::IO::StreamReader(openFileDialog1->FileName);
textBox1->Text=(sr->ReadToEnd());
label1->Text=openFileDialog1->FileName;

FILE *in_fp;
in_fp=fopen((const char *)openFileDialog1->FileName,"r");

sr->Close();
}

}

96 :デフォルトの名無しさん:03/07/01 18:15
ウインドウのボーダー、メニューバー、タイトルバーのサイズはどうやって求めれるでしょうか?
ウインドウのリサイズの時に困ってます。

横 描画領域+ボーダーx2
縦 描画領域+ボーダーx2+メニューバー+タイトルバー

と考えて、SetWindowPosでやろうとしているのですが、他に効率のいい事があればお願いします。

97 :デフォルトの名無しさん:03/07/01 19:27
>>96 AdjustWindowRect

98 :デフォルトの名無しさん:03/07/01 22:18
スレッド同士で何かしらの同期を取る一般的な方法ってどんな方法でしょうか?

99 :デフォルトの名無しさん:03/07/01 23:07
イベント、ミューテックス、クリティカルセクション、セマフォ

100 :デフォルトの名無しさん:03/07/01 23:08
セマフォ

101 :デフォルトの名無しさん:03/07/01 23:10
イベント、ミューテックス、クリティカルセクション、セマフォ
の内どれを使うかはMSDN読んでちょ


102 :名無し@沢村:03/07/02 00:57
>>96
CScrollView::ResizeParentToFit()

103 :デフォルトの名無しさん:03/07/02 12:04
>>98 グローバル変数(w

104 :デフォルトの名無しさん:03/07/02 12:08
>>96
GetSystemMetrics()見れ

105 :デフォルトの名無しさん:03/07/02 12:14
>>93
LPTSTR ReadString( LPTSTR lpsz, UINT nMax );
throw( CArchiveException );

ってあったけど、サイズ指定する必要あるのでは?

Bool ReadString(CString& rString );を通ってないって事だと思う


106 :デフォルトの名無しさん:03/07/02 16:52
スレッドの終了の仕方を教えてください。
ThreadFile(){
while(bflag!=1){・・・・・・
}
return 0;
}

ThreadEnd(){
bflag=1;
CloseHandle(hThread);
・・・・・・
}

※bflagはグローバル変数です。
このような感じで、終了させているのですがデバックしたところCloseHandle(hThread);の部分で例外処理が起きてしまいました。
解決方法をご教授していただけると幸いです。



107 :デフォルトの名無しさん:03/07/02 17:14
>>106
スレッドが実際終了したのかを確認せんとね。
WaitForSingleObject辺りを調べてみたら?

108 :デフォルトの名無しさん:03/07/02 17:14
CloseHandle の時の hTreadの値調べたいいんじゃない? NULLとかになってない?

109 :デフォルトの名無しさん:03/07/02 18:25
プログラム内での値をEXCELのファイルに書き出すこと
はできるのでしょうか。

例えば変数の変化していく値をEXCELの各セルに書き出したいのです。
とても難しいでしょうか。

110 :デフォルトの名無しさん:03/07/02 18:30
>>109
DDE使えば出来る。
・・・・・・・・・今更DDEもないかな・・・・・・・。

111 :デフォルトの名無しさん:03/07/02 18:51
>>109
オートメーション

112 :デフォルトの名無しさん:03/07/02 19:18
>>111
すいません。
オートメーションってなんでしょうか。


113 :デフォルトの名無しさん:03/07/02 20:28
>>112
初心じゃ無理、COMとOLEの知識が要る

114 :デフォルトの名無しさん:03/07/02 21:08
>>113
そうですか・・・
ありがとうございます。
テキストファイルの書き出しで我慢します。

115 :デフォルトの名無しさん:03/07/02 22:16
>>107
>>108
ありがとうございました。
その辺をもう一度調べてみます。


116 :デフォルトの名無しさん:03/07/02 22:26
>>109
私はヘタレなのでコンマで区切ってテキスト出力して、
EXCELにCSVとして読み込ませてました。

数値と文字列だけならこの方が楽なので

117 :デフォルトの名無しさん:03/07/02 22:30
>>116
別にヘタレでもないと思うよ。

118 :デフォルトの名無しさん:03/07/02 22:53
>>117 同感。

VC++.NETについて質問です。

方向キーなどのシステムキーの受け取り方がわからないです。ダイアログボックスにメッセージ
OnSysKeyDown() ( WM_SYSKEYDOWN ) を定義しても、システムキーを受け取ってくれない
のです。
HELPを見ると、「WM_SYSKEYDOWN」メッセージは「ALTキー + ??」に使われてしまっているようです。





119 :118:03/07/02 22:56
VC++6.0は、OnSysKeyDownでシステムキーを受け取ることができたはずですが・・。

よろしくおねがいします。

120 :デフォルトの名無しさん:03/07/02 23:01
方向キーはOnKeyDownじゃなかった?

121 :118:03/07/02 23:04
>>120
OnKeyDownも駄目でした・・・。

122 :デフォルトの名無しさん:03/07/02 23:18
>>118
ダイアログじゃなくて、ダイアログ内でフォーカスをもっているコントロールのWM_KEYDOWNが呼ばれてるはず


123 :デフォルトの名無しさん:03/07/02 23:19
PreTranslateMessage内でWM_KEYDOWNを監視かな

124 :118:03/07/03 00:04
>>123
PreTranslateMessageを使ってみたら、うまくいきました。

どうも、ありがとうございます。

125 :デフォルトの名無しさん:03/07/03 01:50
リソースのストリングテーブルって、何か「セグメント」っちゅーのがあって、
16個単位でロードされるのでメモリ節約云々てMSDNに書いてあるけど、要する
にリソースIDを

#define IDS_STRING_A1 1000
#define IDS_STRING_A2 1001
#define IDS_STRING_A3 1002
#define IDS_STRING_B1 1016
#define IDS_STRING_B2 1017
#define IDS_STRING_C1 1032

こんな風に16単位で使う場面ごとにグループ分けしとけばいいってことでつか?

126 :125:03/07/03 01:54
それとも先頭からIDが連番かどうかに関係無く16個まとめて(上の例では先頭の
1000から16個無いので、結局全部)ロードされるのでしょうか?

127 :  :03/07/03 10:25
スタティックライブラリを作ったのだけど、その後がよくわかりません。

ライブラリ用のヘッダファイルは
ツール→ オプション→ディレクトリ→インクルードファイル
にあるパスに置いとけば#include<>で読み込まれるけどlibファイルは
ツール→ オプション→ディレクトリ→ライブラリファイル
にあるパスに置いとくだけじゃ駄目なの?
プロジェクト→プロジェクトへ追加→ファイル
でlibを追加すればコンパイルできるけどCの標準ライブラリはそんなことしなくても使えるのは何故?
自分のライブラリもヘッダファイルをインクルードするだけで使えるようななりたい。
そしてデバック用とリリース用を使い分けないと警告が出るんだけどCの標準ライブラリはどのように自動的に選択されてるの?
またstdio.libとかstring.libとか見つからないけどどっかにあるの?


128 :デフォルトの名無しさん:03/07/03 11:12
プロジェクトー設定ーリンク のオブジェクト/ライブラリモジュール 

129 :95:03/07/03 12:22
やっぱりキャストは無理なんでしょうかね・・・
string* ならキャストが出来たのですが
肝心のchar型できません・・・

130 :127:03/07/03 12:28
>>128
ありがとう。確かにそこにライブラリ名を追加するとできた。
でも同じ名前のデバッグ用とリリース用のスタティックライブラリを同一パスに置けないから
片方の名前を少し変えるしかないね。違うパスにおいても片方がいつも優先されるから。
ヘッダファイルとライブラリの名前は違ってても大丈夫だった。
Cの標準ライブラリもこういうふうになってるのかな?

131 :デフォルトの名無しさん:03/07/03 12:56
>>127
printfとかが入っているのはlibc.libでは。


132 :127:03/07/03 13:22
>>131
ありがとう。ヘッダと名前が違ってもいいんだね。ライブラリは。


133 :名無し@沢村:03/07/03 13:39
>>127
ヌヒよ、ヘッダファイルに

#ifdef _DEBUG
#pragma comment(lib, "aho.lib")
#else
#pragma comment(lib, "baka.lib")
#endif

と書いておけ。

134 :デフォルトの名無しさん:03/07/03 13:54
>>129
CStringは使っちゃだめなの?
System::String_gcが何かわからん

135 :デフォルトの名無しさん:03/07/03 14:27
>>134
分からないなら答えるなよ

136 : :03/07/03 15:11
>>133
ありがとう。ヘッダのインクルードだけでリンクできたよ。
#pragmaは見たことあったけどどんな意味か調べたことなかった。役に立つね。



137 :名無し@沢村:03/07/03 16:51
>>95
System::String::CopyTo()でwchar_tの配列へ文字列をコピーする。
fopen()の代わりに_wfopen()を使う。

これでどうだ? 出来るかどうか知らないが。

138 :109:03/07/03 21:12
>>116
すいません。詳しく教えてくださいませんか。
なんとかして使えるようになりたいんです。

139 :デフォルトの名無しさん:03/07/03 21:17
>>138
単純に数値なり文字列なりをカンマで区切って書いていくだけ。

例えば、

1234,ああああ,abcd

なら、A1に1234、B1にああああ、C1にabcdが入るって感じ。
改行を入れればエクセル上でも次の行になる。
セル間を抜きたければ,,とすればいい。

140 :デフォルトの名無しさん:03/07/03 22:40
>>139
なんどもすいません。
CSVというのがよくわからなくて。。。
何か例を書いていただけるとありがたいのですが。

出力できるまでのプログラムを書いてくれるとうれしいです。

141 :デフォルトの名無しさん:03/07/03 22:42
>>140
甘えるなボケ
CSVくらい検索しろ

142 :デフォルトの名無しさん:03/07/03 22:49
>>140
EXCELでファイル保存するときにファイルの種類をCSVにして、
それをメモ帳か何かで見てみるとどんな風に成ってるか
分かりますよ

143 :デフォルトの名無しさん:03/07/03 23:04
>>142
甘えてました。調べてみます。すいません。レスを汚して

144 :デフォルトの名無しさん:03/07/03 23:05
>>140
CSVってのはカンマ区切りのテキストファイルだから例を挙げるまでも無いっしょ。
>>139に書いてあるような感じだよ。

1234,ああああ,abcd
2345,いいいい,bcde
3456,うううう,cdef
4567,ええええ,defg

みたいな。ファイルのopen,read,write,closeが解らないなら正直論外。
まずそこから勉強しる。


145 :デフォルトの名無しさん:03/07/04 00:37
CSVファイルの読み込みでできました。
ありがとうございます。

146 :デフォルトの名無しさん:03/07/04 00:45
CSVの処理は一見むちゃくちゃ簡単そうだけど、
文字列にカンマや制御コードやダブルコーテーションが入っている時の処理があるから
意外と奥が深いんだよな。とくにCSVの解析。

147 :デフォルトの名無しさん:03/07/04 11:03
Excelならタブ区切りの方がシンプルかもね

148 :デフォルトの名無しさん:03/07/04 11:37
Win32アプリで、標準Cのprintfの文字列が指定した桁より小さかったら、
スペースで埋める、-だったら、左寄せにするみたいなこと出来ますか?
やり方を教えてください。

149 :_:03/07/04 11:40
http://homepage.mac.com/hiroyuki44/hankaku02.html

150 :デフォルトの名無しさん:03/07/04 13:23
>>148
printf使えば?
ウインドウとかに表示するならsprintfで文字列作って表示。
もしくはCStringのFormat()。

151 :95:03/07/04 14:18
>>137
char g[100];
System::String::CopyTo(0,g,100,openFileDialog1->FileName->Length);

FILE *in_fp;
in_fp=_wfopen(g,"r");

これでやってみましたが
2 番目の引数を 'char [100]' から '__wchar_t __gc[]' に変換できません。
__gc 配列と Object * または Array * 間でのみ変換できます。

というエラーが出て出来ませんでした・・
CopyToの使い方が間違ってるのかな?

152 :デフォルトの名無しさん:03/07/04 14:35
>>150
できました。ありがとうございました。

153 :デフォルトの名無しさん:03/07/04 15:25
1つのプログラムの1セット全部(exe,cpp,dsw等)をCDを介して別のパソにコピーし、
dswを開いた所、ClassView情報ファイルにアクセスできませんと出て、また
ビルドした所、プログラム データベース '\debug\vc60.pdb' を開けません、とでました。
そこで、Debugフォルダの中の全てのファイルを消して、再度ビルドした所
できました。ただ、関数名を書いて(を書いた時に出てくる仮引数リストが出なく
なり、また、上の所の関数一覧表も表示されなくなりました。解決方法を教えて
ください。

154 :デフォルトの名無しさん:03/07/04 15:43
>CDを介して別のパソにコピーし、
実はリードオンリ属性がついたままという落ちではあるまいな

155 :デフォルトの名無しさん:03/07/04 15:56
>>154
そういう落ちになってしまいました。

一度消してしまうと、関数名を書いて(を書いた時に出てくる仮引数リスト
が出なくなり、また、上の所の関数一覧表も表示されなくなると言うのは
もう復活できないんですか?あと、この現象は、ソースをコピーしてビルド
した時などにも起こることがあります。

156 :153:03/07/04 17:14
初めの二つの問題は、ドラッグ→プロパティで一気に属性を変える事で
解決できました。また、後の二つの問題も同じ方法で解決できたのですが、
一度消してしまったので、だめになってしまったようです。

ユーザー関数があるという認識(仮引数-型-名前表示、ウイザードバーの表示)
を更新させるには、まず、ヘッダーファイルがあると認識されてなければ
ならないようです。新規にヘッダーファイルを作って、コピーする事で
その瞬間に、全てのユーザー関数が一度に認識されました。

ここでの認識されていないというのは、ビルド等は普通に行なえるが、
便利な機能が使えなくなっているということです。

認識されなくなったヘッダーファイルを認識させる方法があるなら教えてください。

157 :デフォルトの名無しさん:03/07/04 18:17
wstring ws = L"あ";

ws.c_str()が返してくれるのは、ASCIIでしょうか、ウニコードでしょうか。

158 :_:03/07/04 18:18
http://homepage.mac.com/hiroyuki44/hankaku02.html

159 :デフォルトの名無しさん:03/07/04 20:24
>>155
clwファイルやncbファイルを消す

160 :デフォルトの名無しさん:03/07/04 21:09
CPUの周波数によって表示を変えたり
メモリーの容量で表示を変えたり
HDDの容量で表示変えたり
OSによって表示変えたり実行できるOS制限したり

できませんか?  

161 :デフォルトの名無しさん:03/07/04 21:15
できますが、マルチなので教えません。

162 :デフォルトの名無しさん:03/07/04 21:20
どうやって?

163 :デフォルトの名無しさん:03/07/04 21:39
>>157
うに

164 :デフォルトの名無しさん:03/07/04 21:43
>>163
うにはねーべ
ユニだろ

165 :153:03/07/04 22:36
ncbは消してもダメでした。clwはありませんでした。用語的には、
ウィザードバーはこのファイルをトラッキングしていないと言うみたいです。

166 :無料動画直リン:03/07/04 22:38
http://homepage.mac.com/miku24/

167 :デフォルトの名無しさん:03/07/04 22:49
>>165
>clwはありませんでした
じゃ作れよ

168 :153:03/07/04 23:33
>>167
作るもんなんですか?ncbとかoptみたいに勝手に作られるタイプのものだと
思っていました。ただ、考えてみると、無いという事は消す必要が無いと
いう事で、作る必要も無いと思うのですが。どういうものなんですか?

169 :名無し@沢村:03/07/05 02:30
>>151
ヌヒよ、managed C++ の基本を勉強したほうがいいんじゃないのか?
そういう俺も使ったことはないんだが。

String* s = openFileDialog1->FileName;

__wchar_t g = __gc new __wchar_t[s->Length + 1];
s->CopyTo(0, g, 0, s->Length);
g[s->Length] = L'\0';

FILE* in_fp = _wfopen(g, L"r");

こんな感じでどうだ?
MSDNライブラリ見ながら適当に書いてみたが。

170 :デフォルトの名無しさん:03/07/05 03:28
初心者です。
「USB接続されている全デバイスの取得」や
「USB接続されているCF」を検索出来るような
APIってありますか?
宜しくお願いします。


171 :20:03/07/05 10:34
だれか(;´Д⊂)

172 :デフォルトでない名無しさん:03/07/05 10:49
>>171
Spy++でExplorerを見る位しましょう。


173 :20:03/07/05 10:55
>>172
>>25

174 :デフォルトの名無しさん:03/07/05 11:36
WTLのCPaneContainer/CPaneContainerImplを調べれ。

175 :20:03/07/05 13:32
>>174
ありがとうございます。早速調べてみます。

176 :153:03/07/05 15:58
できました。
プロジェクト→プロジェクトへ追加→ファイル→ファイルを選んでOKをクリック
です。複数を一度に行ないたい場合は、ドラッグしてOKをクリックでできます。
お答えいただいた方、ありがとうございました。

177 :デフォルトの名無しさん:03/07/05 16:07
エディットボックスやボタンを作ったんですけど
そのボタンをもう使わないからDELETEで消すとエラーが現れます。
そのボタンに関連のある変数を全て消してもエラーが出ることがあります。

使わないボタンを消すにはどうやって削除するといいんでしょうか。
今は可視ボタンを無効にして見えなくしてます。

178 :デフォルトの名無しさん:03/07/05 16:14
>>177
手動
Delphiなら自動なんだけどね

179 :デフォルトの名無しさん:03/07/05 17:00
またDel厨が出てきた。ウザイ。

180 :デフォルトの名無しさん:03/07/05 17:11
>>178
糞レスすんな。ハゲ。

>>177
どんなエラーか書かないと答えようがない。

181 :デフォルトの名無しさん:03/07/05 17:11
>>177
クラスウィザードから消そうよ。

182 :デフォルトの名無しさん:03/07/05 20:08
>>178
ほんとにウサイなDel房。


183 :デフォルトの名無しさん:03/07/05 20:13
>>181
消せないだろ?
手動で消せって警告でてくるのに

確認したのはVC6だけど

184 :デフォルトの名無しさん:03/07/05 20:25
変数しか消してないのか。ボタンのハンドラや他の関連するコードは消してないのか。

185 :デフォルトの名無しさん:03/07/05 20:27
C#なら楽なのに(激藁

186 :デフォルトの名無しさん:03/07/05 20:28
>>185
糞レスすんな。ハゲ。

187 :デフォルトの名無しさん:03/07/05 21:24
MFCを使ってソースを書いている場合にスレッドを作るときはCreatThreadで作ると終了時に例外処理は出やすくなるんですか?
ダイアログを終了させたときに例外処理が出てしまいます。
教えていただけるとうれしいです。


188 :デフォルトの名無しさん:03/07/05 22:55
>>187
関係ないと思われ。複数のスレッドから同時にオブジェクトを操作する
場合には非MFC時同様の注意が必要。

189 :デフォルトの名無しさん:03/07/05 23:03
>>187
Sleep等を入れると直ったりする。

190 :デフォルトの名無しさん:03/07/05 23:04
VS.NETで、windows.hをインクルードしてるのに
WS_EX_LAYERED
が、定義されてないってでるのは何でだろう

マウスをかざしたらインテリセンスが働いてちゃんとでてるのに

191 :名無し@沢村:03/07/05 23:22
>>190
_WIN32_WINNT を正しく定義していないから。

192 :デフォルトの名無しさん:03/07/05 23:49
>191
_WIN32_WINNTでぐぐったら猫でもわかるがヒットしました
基本中の基本だったんですね、すみません

193 :6:03/07/06 01:31
プログラミングをやってみたいと思い、visualc++.netを買ったんですが
C言語の知識がない為、使い方がわからない状態です。参考本というのも
.netに関して殆どなく、amazonで評判の良かった"やってトライ"を買った
のです初めからプログラミングされているサンプルを書き換えて行くともの
ばかりで、中途半端にしか理解出来ない状態です。
質問は二つなのですが、c++.netを使う上でC++6.0やC#の本は初心者に参
考になるでしょうか?0からプログラミングを組んで行く過程を載せている
ような参考書はないものでしょうか?

194 :デフォルトの名無しさん:03/07/06 01:39
>>6
0からプログラミングを組んで行く過程を載せている
ような参考書はないものでしょうか?

Cからやれ・・・
非常に地味に感じるかもしれないけど。
そんなに回り道ではない

195 :デフォルトの名無しさん:03/07/06 02:32
>>6(>>193)
>>194 氏の言うと通り、CやC++の基本の部分からやってみれ。
以外にも重要で、Win32プログラムを作る上でも、MFC使っていても
基本は使っていくもの。
それから「猫でもわかる」で、最初からやっていくのも手。

196 :デフォルトの名無しさん:03/07/06 02:55
金をどぶに捨てかけた>>193に乾杯

197 :デフォルトの名無しさん:03/07/06 03:05
むしろ>>193はw(略

198 :デフォルトの名無しさん:03/07/06 03:09
しっかしよくわからないものをよく買う気になるよなぁ

199 :デフォルトの名無しさん:03/07/06 03:32
「金をだしたら、モトをとるため意欲が出る」というヨタ話でも
真に受けたんではないか?

200 :デフォルトの名無しさん:03/07/06 05:35
金をどぶに捨てた>>193は完敗

201 :デフォルトの名無しさん:03/07/06 06:07
>>196-200←貧乏人


202 :デフォルトの名無しさん:03/07/06 06:08
おれもc++.netってただのC++6.0の次のバージョンだとおもってたw

203 :デフォルトの名無しさん:03/07/06 07:24
>>202
え?違うの?

204 :6:03/07/06 11:43
>>195「猫でもわかる」ですか。探してみます。
>>194,202,203
CとC++が同じ物だと思っていたのですよ。実際今でも違いがわかりませんが
C++.NET以外の参考書がc++.netに通用するかどうかが怖い所です。
>>196,197,200,201 お褒めの言葉どうも。(.ー.)
金をどぶに捨てるつもりはないんですがね・・・。
近い将来どうしても使わなくてはならないのです。

205 :デフォルトの名無しさん:03/07/06 12:21
いまどき通じるのか知らんが
C++の書籍=グラマー
VC++の書籍=リーダー

あと一緒だろうとたかをくくってボーランド系の本を買う儀式が
あなたを待っています

206 :デフォルトの名無しさん:03/07/06 13:01
★★★★★★★★★★★★★★★★★★★★

もうたまりません!!(・∀・)
(;´Д`)ハァハァ(;´Д`)ハァハァ
↓↓↓↓↓↓↓↓↓↓
http://www12.ocn.ne.jp/~sihori/adaruto1.htm

★★★★★★★★★★★★★★★★★★★★

207 :デフォルトの名無しさん:03/07/06 13:59
Cstring型に入っているshift_jis文字列をunicodeに変換する簡単な方法ってありますか?

208 :デフォルトの名無しさん:03/07/06 14:17
VC++でMFCの関数や使い方が乗っている詳しい本知りませんか?

209 :デフォルトの名無しさん:03/07/06 14:22
すいません、C++で生成されたクラスインスタンスの解放について質問があります。
以下のコード中の"※"が付いたコメント部分について、いったいどちらが正しいのでしょうか。

void test()
{
 int i,cnt;

 cnt = 3;

 // この↓クラスは定義/実装済みとして...
 TestClass *arrCls;
 arrCls = (TestClass*)malloc(sizeof(TestClass)*cnt);

 // こんな初期化はいらない?
 for(i=0;i<cnt;i++) arrCls[i] = *(new TestClass());

 arrCls[0].doSomething();

 // ※ 下でメモリをfreeにするなら、個別にdeleteはいらない?
 for(i=0;i<cnt;i++) delete &arrCls2[i];

 // ※ 上で個別にdeleteするなら、ここでfreeはいらない?
 free(arrCls2);

}


210 :デフォルトの名無しさん:03/07/06 14:30
メモリは動的に確保した分だけ解放しなければならない。

その前にvectorなりCArrayなり使ったほうが。

211 :209:03/07/06 14:35
>>210
ありがとうございます。で、その解放の方法について、知りたいんです。
>>209 のソースのように、mallocでメモリを確保して、そこで個別にnewしている場合、
delete するべきなのか、それとも freeで終わっていいのか、と悩んでいます。

> その前にvectorなりCArrayなり使ったほうが。
すいません、勉強(基礎固め)中なので、あえてこんな事しています(苦笑

212 :デフォルトの名無しさん:03/07/06 15:08
> for(i=0;i<cnt;i++) arrCls[i] = *(new TestClass());
これは、newしたインスタンスのコピーするわけで、
newした分がリークする。リークするので、deleteの
しようがない。

どーしてもmallocでいくなら、placement newを使うこと。

213 :名無し@沢村:03/07/06 15:22
>>207
CStringW(LPCSTR)

214 :209:03/07/06 15:25
>>212
すいません。気づきませんでした。
>>209のソースだと、deleteされるのは、コピーされた方ですね。

> どーしてもmallocでいくなら、placement newを使うこと。
..なるほど。..っていうか"placement new"の意味がわからないので、
ちょっと調べてみます。ありがとうございました。

215 :デフォルトの名無しさん:03/07/06 19:01
自分全く知識が無いんですが
まず何を見て勉強すればいいんでしょうか。
検索しても何が何やら・・・
本買った方がいいですかね?

216 :デフォルトの名無しさん:03/07/06 19:12
>>215
何がしたいの?趣味?仕事?

217 :デフォルトの名無しさん:03/07/06 19:21
>>215
付属品一通り目を通せ

218 :デフォルトの名無しさん:03/07/06 20:19
>>215
何のために買ったのですか?

219 :デフォルトの名無しさん:03/07/06 21:20
まぁ何も知らない人がVCを買っても、
VCをVCとして意味のある使い方が出来るまで数ヶ月〜数年かかるわな。

220 :デフォルトの名無しさん:03/07/06 21:24
ちょっと(不?)便利なエディタを買いました
ぐらいの認識を脱する頃には次のバージョンの告知がきてますた
BCCからはじめろっていうのはあながち間違ってないかも

221 :デフォルトの名無しさん:03/07/06 21:29
>>215
まず猫に逝け!
使い方が分からんの何にもならんからな。

222 :デフォルトの名無しさん:03/07/06 22:45
パッケージ品を買えば物事が解決すると思ってるんだろうな・・・

223 :デフォルトの名無しさん:03/07/06 23:07
べつに

224 :デフォルトの名無しさん:03/07/06 23:09
その点、割れ厨は有料無料どころか英語だろうが有効な情報を探すのに余念がないぞ
ページ単位で雑誌のスキャン画像が出回ってるのには驚いた
犯罪だけど熱心さだけは大したもんだよ

225 :デフォルトの名無しさん:03/07/06 23:16
コマンドラインアプリケーションを作っているのですが、
セットアップしたらPATH環境変数も設定されている状態に
したいのです。

セットアッププロジェクトでインストールフォルダの
パスをシステムのPATH環境変数に自動登録する方法が
分かりません。

どなたか、お教え下さい。

226 :デフォルトの名無しさん:03/07/06 23:49
>>225
ttp://forums.belution.com/ja/vc/000/053/01s.shtml

227 :デフォルトの名無しさん:03/07/07 00:05
コンボボックスの扱い方について質問です。
コンボボックスをダイアログに挿入し、変数のタイプをCComboBox、カテゴリをコントロールに設定し、
後は何も手を加えずに実行したところ例外処理が出てしまいました。
なぜでしょうか?
どう対処すればよいか教えてください。


228 :デフォルトの名無しさん:03/07/07 00:49
>>226
ありがとうございます。
これでうまくいくかと思ったのですが、
セットアッププロジェクトは環境変数を
変更(置き換え)してしまいます。
PATH変数の現在の値とインストール先の
フォルダのパスをマージするにはどうしたら
良いのでしょう?



229 :デフォルトの名無しさん:03/07/07 00:56
現在の値 + ";" + フォルダのパス を書き込め!

230 :デフォルトの名無しさん:03/07/07 01:21
>>229
セットアッププログラムなので、現在の値自身は
分からないのです。現在の値を取れるかと思い、
%path%を書いてみたのですが、レジストリに
%path%と書かれてしまって、登録前の値を取り出す
ことができませんでした。


231 :デフォルトの名無しさん:03/07/07 02:08
>>213
ありがとうございました
早速試してみます

232 :デフォルトの名無しさん:03/07/07 02:12
>>213
検索したらMSDNサイトに引っかかりました
これからは自分でもっと調べます
余計な手間かけてすみませんでした

233 :デフォルトの名無しさん:03/07/07 14:21
すいません。エラーが消えないので質問します。

新しいダイアログを作ってコンストラクタでそのダイアログを作成するようにしたら
エラーになりました。以下のことを行うまではエラーになりませんでした。

@新しいラジオボタンを以前にあったラジオボタンの数から追加した。

しかも、メインのダイアログとは別に2つダイアログを新しく作っているのですが、
そのうちの一つはダイアログの作成関数をコンストラクタで作っているのに
その関数をとばしてしまいます。

これはどういう原因なのでしょうか

234 :デフォルトの名無しさん:03/07/07 15:15
>>233
別なコンストラクタ呼んでねぇ?
引数確認しる

235 :95:03/07/07 15:37
>>169
教えてもらったやり方でやってみたらエラーがなくなりました
ありがとうございました

もう少し変数や関数の勉強します・・

236 :デフォルトの名無しさん:03/07/07 19:28
>>227
あれだな、リソースIDがバッティング(重複)してる可能性あり

resource.hを開いてそのコンボボックスのIDを確認しる
そんで別のコントロールに同値のIDが割り当てられてたら
そのIDを他のIDに変える

変えるIDはresource.hの下のほうに
#define _APS_NEXT_CONTROL_VALUE *** ***は数字
になってるからその数字を割り当てて
_APS_NEXT_CONTROL_VALUEの値を+1する

例えば #define _APS_NEXT_CONTROL_VALUE 32768 になってるなら
32768を割り当てて
#define _APS_NEXT_CONTROL_VALUE 32769 にする


237 :デフォルトの名無しさん:03/07/07 22:26
>>236
ありがとうございます。早速、調べてみます。
助かりました。

238 :デフォルトの名無しさん:03/07/07 22:55
文字の比較について教えてください。

char cBuff[]=" ";
strcpy(cBuff,m_edit);
if(strnicmp(cBuff,"M",1)==0)
{
・・・・・
}

文字列はエディットボックスからCString型で取得し、char cBuff[]にキャストしています。
ここで、エディットボックスに’M'を入れてデバックするとif文を通り抜けてしまい同じ文字だと認識してくれません。
どうしてでしょうか?教えてください。


239 :デフォルトの名無しさん:03/07/07 23:22
>>238
デバッグでifでブレークしてその時のcBuffの内容を見てみたら?

240 :デフォルトの名無しさん:03/07/08 00:38
もまいらGoogleが七夕バージョンになっていまつ^^

http://www.google.co.jp/

241 :デフォルトの名無しさん:03/07/08 00:56
>>240
おっ。いろいろなタイミングでかわるのは知っていたが、
ちゃんと国ごとにあわせているとは。やるな。

242 :デフォルトの名無しさん:03/07/08 14:01
自作のプログラムを実行すると、
「例外処理 (初回) は xxxxxxxxx.exe にあります: 0xC0000005: Access Violation。」
と出てしまいます。
プログラムの処理自体は終了しているみたいなんですが…。
原因とかわかりますでしょうか?

243 :デフォルトの名無しさん:03/07/08 14:41
>>242
多分メモリ関連。

244 :デフォルトの名無しさん:03/07/08 22:18
今月号のCマガを読んで多言語を扱うライブラリICUを使おうと思いました。
http://www.roguewave.co.jp/developer/info/icu/icu.html

しかしサンプルプログラムを動かすための開発環境のインストールや構築すらできません・゚・(ノД`)
Visual C++.NETで使いたいのですが誰か猿でもわかるように手取り足取り解説お願いします。
ほんとお願いします<(_ _)>

245 :デフォルトの名無しさん:03/07/08 22:28
スレッド内で、UpdateData(false)を使ってダイアログに表示しようと思ったんですが、
表示できませんでした。
スレッド内で得たデータをダイアログに常に表示しようとするときはどうすればよいんでしょうか?

246 :デフォルトの名無しさん:03/07/08 22:37
>>245
メッセージ飛ばすとか。
つーかダイアログに何を表示しようとしてるの?

247 :デフォルトの名無しさん:03/07/08 22:39
>>246
受信したデータの表示です。

248 :デフォルトの名無しさん:03/07/09 14:14
>>246
こんなことしてないか?

CHogeDlg::Hoge()
{
 AfxBeginThread( worker_thread, (LPVOID)this );
}

UINT worker_thread(LPVOID ptr)
{
 CHogeDlg* pDlg = (CHogeDlg*)ptr;

 pDlg->m_edit = "(゚д゚)ウマー";
 pDlg->UpdateData(FALSE);
}

249 :デフォルトの名無しさん:03/07/09 21:43
>>248
思いっきり似たようなことしてます・・・・(多分)

スレッドについて、それ以上にVC自体もまだまだ、勉強が足らない部分があるので、
良いアドバイスを頂けるとうれしいです。


250 :デフォルトの名無しさん:03/07/09 23:06
エクセルの表に書かれた文字や数字を書き換えたい場合
どんな関数を使えばよいのでしょうか?


251 :デフォルトの名無しさん:03/07/10 13:40
>>249
そのうちASSERTで怒られるよ。要はCWndオブジェクト(派生含む)は、他のスレッ
ドに持ち越せないということ。(MSDNの「MFCテクニカル ノート 3: Windows ハ
ンドルとオブジェクト間のマップ」参照)

スレッドには、ダイアログなりエディットボックスなりの HWNDを渡してSetWindowText
や SetDlgItemText など使うか、>>246のようにダイアログに文字列をユーザ定義
メッセージで送信(スコープに注意)して、ダイアログ側で更新処理をするとか、
いろいろ考えられる。

252 :デフォルトの名無しさん:03/07/10 23:01
すみません。
動的にビットマップ リソースを描き換える方法ってありませんか?

253 :名無し@沢村:03/07/10 23:11
>>250
ヌヒよ、それはVBAでスレ違いだが教えてやろう。
RangeオブジェクトのValueプロパティかFormulaプロパティを書き換えるんだよ。

254 :デフォルトの名無しさん:03/07/11 00:45
Visual C++のデバッカーが起動したときuserinitのせいでフリーズするんだけど、
おんなじ症状が出た奴いない?Windows2000でね。

255 :デフォルトの名無しさん:03/07/11 07:50
>>250
COMの勉強しなされ

256 :250:03/07/11 21:20
>>253>>255
ありがとうございます。
超初心者なもので・・・excelvbaについて勉強します。
ついでにCOMって何でしょうか?
すいません検索しても分からなかったもので


257 :デフォルトの名無しさん:03/07/11 22:03
DDEで逝け

258 :デフォルトの名無しさん:03/07/12 16:06
今日Visual C++.net standard 2003 を買ったのですが、インストール時に何も言わずに
インストーラが落ちます。同じ現象の方いらっしゃいませんでしょうか?何が悪いのか見当
も付かずに困っております。誰か助けて下さい。

環境:
WindowsXP Home Edition (sp とか Windows update は全部入れました)
Visual Studio 6.0 が入っていたのを普通にアンインストールした

手順:
Disk 1 で setup.exe を実行したら Prerequisties ディスクを求められたのでそれを入れて
インストール手順の 1 の "Visual Studio.NET 必須コンポーネント" は無事終了。

2 の "Visual C++.NET" に進むと Disk2 が求められるので入れると、必要ファイルをコピーし
始めているようなメッセージが出て来て、その後に「1,2分かかります」みたいなメッセージ付き
のプログレスバーの付いたダイアログが出て来て、その後にチラッと "Visual C++.Net セットアップ"
というタイトルのウィンドウが一瞬出たかと思ったらすぐ消えてその後何も起こりません。

Prerequisties の修復インストールを何度もやってみたりしたのですが、ここから先に全く進まな
いんです。どなたか解決策を御存知とか、心当たりのある方教えて下さい。お願いします m(__)m


259 :デフォルトの名無しさん:03/07/12 17:03
>>258
ご確認を
ttp://support.microsoft.com/default.aspx?scid=kb;ja;330733

下のほうの関連情報も要チェキ

260 :258:03/07/12 18:49
>>259
どーもです。でもそこは一応見たんですよね。
で、ウィルス関係のソフトも別に入れてないから関係無いだろうと思いつつ、
一応試してみたけどやっぱ何も変わらないのです。

下の関連情報の所にあるようなログを吐くようなところまですら行かないので何も手掛りが無い…

黙って落ちるインストーラーなんてどうしていいのか分かんないですよぅ。
このままインストール出来なかったら返品…出来ないんだろうしなぁ…。どうしよう…。

261 :デフォルトの名無しさん:03/07/12 21:15
>>260
サポートに問い合わせれ

262 :デフォルトの名無しさん:03/07/12 21:54
>>260
CD-ROMが破損してるんじゃないかい?
チェックサム(あるのか?w)汁。

263 :258:03/07/12 22:20
皆様ありがとうございますm(_ _)m
とりあえずこのまま分からなければサポートに問い合わせようとは思っているのですが、
まずは僕のマシンが悪いのかCDが悪いのかを切り分けるために月曜に仕事場のパソコンに
インストールしてみる事にします。
一応ライセンスとしては僕一人で使う分には複数台にインストールしても良いみたいなので。

264 :デフォルトの名無しさん:03/07/12 23:14
>>251
ありがとうございました。


265 :名無し@沢村:03/07/13 00:07
おまいら、VC++はためになるから、いろいろ勉強してみろ!?
おまいらは、タンスとかあってぜいたくだよ。なっとらんぞ!!!

http://jbbs.shitaraba.com/computer/7294/

266 :デフォルトの名無しさん:03/07/13 00:37

ブラクラ

267 :デフォルトの名無しさん:03/07/13 19:13
すみません。
混合モードがデバックすると突然出てしまうのですが、混合モードの見方を教えていただけませんか?

→5F42B249 cmp dword ptr [eax],1
こんな感じで出てしまうのですが 何を意味しているのかさっぱりわかりません。
お願いします.


268 :デフォルトの名無しさん:03/07/13 20:01
>>267
>>混合モードがデバックすると突然出てしまうのですが
コードペインを開いてる?

>>こんな感じで出てしまうのですが 何を意味しているのかさっぱりわかりません。
アセンブラ(ニモニック)

269 :デフォルトの名無しさん:03/07/13 21:21
すみません。
メニューやメッセージボックス等に割り当てられている
システムフォントを取得するには、どうしたら良いでしょうか?

270 :O塚:03/07/13 21:39
http://elife.fam.cx/a005/

271 :デフォルトの名無しさん:03/07/14 00:26
exe とか dll のバージョンってどうやって管理してますか?

1.xx.bbbb
で、x がマイナーバージョンで
b にビルド番号とかがくるかと思うんですが
そこまで管理してますか?



272 :デフォルトの名無しさん:03/07/14 01:06
デスクトップのリストビューを詳細表示に変更したいのですが
やり方がよくわかりません。
SetWindowLongでスタイルをLVS_REPORTにして、
ListView_InsertColumnで列を追加しても、ファイル名の列しか
表示させられません。しかも列見出しの部分はキャプションが
表示されないです。根本的にやり方間違ってますか?

273 :272:03/07/14 01:12
すいません、環境書き忘れました。
VC6 SDK(非MFC)でOSはW2Kです。
よろしくお願いします。


274 :デフォルトの名無しさん:03/07/14 02:41
外部エディタって使えますか?

275 :デフォルトの名無しさん:03/07/14 07:19
>>271
適 当

276 :デフォルトの名無しさん:03/07/14 16:36
>>271
MSのどっかの文章で以下のような記述を見たような気がする。

メジャー = 同じ製品シリーズだが、途中で開発を分岐したか、あるいははじめから別開発。基本的に下位バージョンとの互換性は考慮しない。
例)VC++6.0とVC++7.0

マイナー = 機能の変更・拡張があるが、可能な限り互換性を残したもの。
例)VC++7.0とVC++7.1

リビジョン = 仕様の変更は無いが不具合の修正を行ったため、アップデートの必要があるもの。
例)VC++6.0とVC++6.0 SP1

ビルド = 不具合の修正を行ったもの。公開しないかも。


.NETではまた違うわけだが。

277 :デフォルトの名無しさん:03/07/14 21:05
>>272
なんか足りない。
LV_COLUMN構造体辺り調べるとわかるかも。

278 :デフォルトの名無しさん:03/07/14 22:10
DWORD型で指定した値をTRACEで見るとき、%? でみればいいんですか。

279 :272:03/07/14 22:38
>>277
ListView_InsertColumnで、LV_COLUMNをパラメータとして
渡してるんですけど、全く無視されてる感じなんですよねぇ(´・ω・`)
そもそもデスクトップの場合、列見出しの要素はwindowsによって
初めから決められてる気がするんだけど、違うのかなあ・・・

280 :デフォルトの名無しさん:03/07/15 01:03
デバイスコンテキストのHDC構造体の
基本的な仕様の説明とその関連の応用例について、
比較的わかりやすくまとめてレポートされてあるサイトって
どこかにないでしょうか?



281 :280:03/07/15 02:18
訂正。HDCは構造体ではなくハンドルでした(´・ω・`)
VC++におけるハンドルの定義自体が概念的にいまいち理解できていませんが。

ハンドルって要約するとプログラム的に一体どのように処理されているのでしょうか?


282 :デフォルトの名無しさん:03/07/15 03:34
ハンドルの中の人も大変ですね

283 :デフォルトの名無しさん:03/07/15 07:57
>>281
別にそんなもん気にせんでもプログラミングは出来る!
つーか誰もしてねーだろ。

284 :山崎 渉:03/07/15 09:42

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

285 :デフォルトの名無しさん:03/07/15 10:14
質問です。
1. 複数のスレッドから、一つのウインドウにメッセージを Post or Send したときに、競合は発生しないで、
順番待ちするという理解でよいでしょうか?

2. 複数のスレッドで、一つの構造体を利用したいとき、クリティカルセクションを使うと思うのですが、
そのときに、構造体の変数ごとに、Lock, Unlock を呼び出す関数を定義するのは効率が悪くて大変です。(メンバがいっぱいある)
もっと効率のよい方法はないでしょうか。
例 bool Get〜〜1();
void Set〜〜1(bool abc);
bool Get〜〜2();
void Set〜〜2(bool efg)
      ・
      ・

286 :デフォルトの名無しさん:03/07/15 10:16
>>281
ハンドルは、ウインドウズ内部のリソースを隠すためのもので(直接扱うと危険)
リソースのポインタテーブルのIDみたいなもんだよ

287 :デフォルトの名無しさん:03/07/15 11:57
すみません。
uxtheme.dllを遅延読み込みにしたいのですが、出力ウィンドウに
「xxxx.obj : warning LNK4229: 無効なディレクティブ '/DelayLoad:uxtheme.dll' が見つかりました。無視します。」
と表示され、/DelayLoadインポートが認識されていないようなのです。
なので、WinXP以外のOSで、開発したアプリを起動させようとすると
「uxtheme.dllが見つかりません。」
というエラーメッセージが返ってきて起動しません。

#include <Delayimp.h>
#pragma comment(lib, "Delayimp.lib")
#pragma comment(lib, "uxtheme.lib")
#pragma comment(linker, "/DelayLoad:uxtheme.dll")

↑これでも通常通りuxtheme.dllが先に読み込まれてしまいます。
遅延読み込みにするにはどうしたら良いでしょうか?
開発環境はVC++.netです。

288 :デフォルトの名無しさん:03/07/15 12:06
>>287
DelayLoadは#pragmaで指定できない
プロジェクトの設定いじれ

289 :デフォルトの名無しさん:03/07/15 12:08
エディタ部分の質問なんですが、
ソースウィンドウでカーソルのある行に下線を出すことはできないのでしょうか?
カーソル行が認識しやすくなれば他の方法でも知りたいです。
ちなみにVC++6.0をつかってます。

290 :デフォルトの名無しさん:03/07/15 12:46
>>285
>2. 複数のスレッドで、一つの構造体を利用したいとき、

個々の変数を保護するんじゃなくて
操作(operation)を保護すべき。
そうでないと不必要に複雑になって破綻するかもね。

291 :山崎 渉:03/07/15 14:01

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

292 :デフォルトの名無しさん:03/07/15 15:17
FormViewに貼り付けたコントロールのサイズを
動的に変更するにはどうすればいいんでしょうか?
C#なんかでいうDockプロパティでの動作がしたいのです。

293 :285:03/07/15 16:42
>>290
なるほど、そうしてみます。ありがとうございました。

294 :デフォルトの名無しさん:03/07/15 20:39
>>292
MoveWindow

295 :デフォルトの名無しさん:03/07/15 20:57
>>292
SetWindowPos

296 :292:03/07/15 21:15
>>294
ありがとうございます。
試しにOnSizeでMoveWindow(0,0,cx,cy,TRUE)してみました。
解決しました・・と、思ったら・・

試しているのはListCtrlを貼り付けたFormViewなんですが、
ウィンドウサイズを小さくしてスクロールバーが出ると挙動が変です。
スクロールするとListCtrlの下にFormの地がでてきます。

元のFormを物凄く小さくしてみたり、OnGetMinMaxInfoで最小サイズを
決めてスクロールバーが出ないようにしてみたものの・・
スマートなやり方はあるんでしょうか?


297 :デフォルトの名無しさん:03/07/15 21:23
スクロールバーを出さなければ良いのならビュークラス内でSetoScrollSizeすれば良いかも

298 :デフォルトの名無しさん:03/07/15 22:39
ModifyStyle(WS_HSCROLL | WS_VSCROLL, 0);
でスクロールバー消せたかも

299 :292:03/07/15 23:39
>>297 ありがとうございます。
void CxxxView::OnInitialUpdate()に
SIZE total, page, line;
total.cx = total.cy = 1;
SetScrollSizes(MM_TEXT, total, page, line);
を足したら思いどうりの動作になりました。
問題は・・よく理解できてないこと(´・ω・`)ショボーン 精進します。

>>298
動作しないスクロールバーが出てしまいました。
私のやり方が悪かったのかもしれないですが。

>>295
今回は試しませんでしたが、MoveWindowと似たことが
出来るのかな? ありがとうございました。


300 :280:03/07/16 02:54
>>286
ありがとうございます。
なんとなくですが理解できました。
HDCについてはなんも解決しておりませんがw

301 :デフォルトの名無しさん:03/07/16 18:27
すみません。
コンボボックスのリスト部分の高さを、
リソースを編集する方法ではなく、
動的に変更するにはどうすれば良いでしょうか?

302 :デフォルトの名無しさん:03/07/16 19:18
>>301
試してないけど、 CComboBox::MeasureItem をオーバーライドして実現できないかな?

303 :デフォルトの名無しさん:03/07/16 19:22
>>301
MoveWindowとかウィンドウの大きさを変更する方法でOK。
コンボボックスの場合はウィンドウの大きさ=リストボックスまで含んだ大きさで、
選択文字列表示部はそのウィンドウの高さに依存しない。

304 :301:03/07/16 20:03
>>302 >>303
ありがとうございました。解決しました。

305 :デフォルトの名無しさん:03/07/16 23:54
VC++6.0(5.0かも?)でVISIOライクなソフトを作っています。
ビューに矩形や楕円などのオブジェクトを配置したりして
図を描いていく感じです。

そこで質問させてください。
ScrollViewを使って画面の拡大縮小をやろうとしています。

SetViewportExt と SetWindowExt を使って拡縮比を決めるのは
分かったのですが、 SetViewportExt と SetWindowExt どちらの
値を変更するのが一般的なのでしょうか?(楽に扱えるでしょうか?)

何段階かに拡大できるようにしているのですが、ビューをスクロールしても
常に画面の中心を拡大していく方法は無いのでしょうか?
ScrollToPosition(うろ覚え、違うかも)を使って真面目に計算するしか
無いのでしょうか?

すみません、まだ全然C++やVCに慣れていないもので的外れな質問かもしれませんが
よろしくお願いいたします。


306 :デフォルトの名無しさん:03/07/17 13:55
浮動小数点aがあたえれれたとき、少数以下n桁に四捨五入した文字列を返す関数を定義し、その動作を確認しなさい。
こんなレポートがでたのですがさっぱりわかりません。誰かわかりませんか?

307 :デフォルトの名無しさん:03/07/17 14:34
わかります。

308 :デフォルトの名無しさん:03/07/17 16:09
宿題スレで最近あったような気がする。>>306

309 :280:03/07/17 19:53
再び質問させていただきます。

HDC hDC = ::GetDC(0);

で得られるデバイスコンテキストのハンドルとは
一体どんな(どういう場面で使われる)デバイスコンテキストなんでしょうか?
以前、MSDNライブラリかどこかに書いてあったのを見たような気もするのですが、
今探すとどうも肝心なところが見つからないもので・・・

310 :デフォルトの名無しさん:03/07/17 20:28
>>309
スクリーンのデバイスコンテキストを取得する。
よく「デスクトップの」などと説明されてたりするが、
それだとデスクトップのリストビュー部分みたいな感じがするからよろしくないな。

用途はありがちなところでは、スクリーンキャプチャとかスクリーンに描画とか。
後者はプレゼン用のマーカーツールとかな。

MSDNには例によって英語版にだけ書いてある。
.NET以降の日本語版は新しくなってるようだが未確認。

311 :デフォルトの名無しさん:03/07/17 23:57
VC++で作られたソフトにはどんなものがあるの?

312 :デフォルトの名無しさん:03/07/17 23:59
Officeとか

313 :デフォルトの名無しさん:03/07/18 00:23
>>311
VC++

314 :デフォルトの名無しさん:03/07/18 07:36
>>313
はわっ!書かれてしまった!

315 :デフォルトの名無しさん:03/07/18 09:26
SDIでCSplitterWndを使い下の様なViewを作りました。
 A
┌──┬─────────┐
│    │                  │B
│    │                  │
│    ├─────────┤
│    │                  │C
│    │                  │
├──┴─────────┤
│                        │D
│                        │
└────────────┘
ウィンドウの高さを変更するときDの高さはそのままにしたいのです。
ただC,D間のバーを使っての変更は可能のままで。

CMainFrame::OnSizeでSetRowInfo(),RecalcLayout()をやってみたものの
どうもうまくいきません。Dの高さを保存しておけばよいのかとも思いますが
どのタイミングで保存すればいいのかも分かっていません。
何か良いやり方ありませんでしょうか?

316 :デフォルトの名無しさん:03/07/18 09:29
>>313
ソースは?

317 :デフォルトの名無しさん:03/07/18 10:00
>>316
VCワンポイント

318 :デフォルトの名無しさん:03/07/18 14:50
フルパスで指定したファイルが存在するかしないかを
返してくれるAPIってありますか?

GetFileAttributesが0xFFFFFFFFかそうでないかで
判定するとか、CreateFileを使っても良さそうですが、
なんかそのものズバリなAPIってないんでしょうか。

Is〜なんて名前で無いかとMSDNで探してみたんですが
見つけられませんでした。

319 :デフォルトの名無しさん:03/07/18 15:10
>>318
shlwapiにPathFileExistsというのがある。
別にGetFileAttributesでいいと思うが。マクロにでもしておけば。


320 :デフォルトの名無しさん:03/07/18 15:24
Shell API は遅いというイメージが。そんなことないですよねぇ?

321 :318:03/07/18 15:25
318です
319さん、早速ありがとうございます。
ズバリなAPIですね。やっぱり探し方が甘いのかしら。

マクロって#defineするやつですよね?
引数も取れるんですか。やってみます。
ありがとうございました。

322 :デフォルトの名無しさん:03/07/18 15:53
>>320
中で何やってるのか知らんから何とも言えん。
プロファイリングしてみるしかあるまい。

そういや昔Win32API質問箱でちょっとした話題になってたな。
GetAttributes、CreateFile、FindFirstFileのコストで。

>>321
#define IsExists(a) (GetFileAttributes(a) != 0xFFFFFFFF)

323 :318:03/07/18 16:14
322さんレスありがとうございます
引数を取れるっていう言い方はおかしかったですね。

FindFirstFileもありましたか。
ちょっと興味があるのでWin32API質問箱の過去ログあさってみます。

324 :デフォルトの名無しさん:03/07/18 17:28
初めて質問させて頂きます。よろしくお願いします。
開発環境はVC++6.0です。

まず、クラスAのprotectedメンバにクラスBを持たせます。
そしてクラスAのインスタンスを作成すると、クラスB→クラスAの順にコンストラクタが実行されることがわかったのですが、
この時クラスBではデフォルトコンストラクタが実行されているようです。

上記の状況でクラスBのデフォルト以外のコンストラクタを実行することは可能でしょうか?
(クラスAのコンストラクタのみを実行して、クラスA,そしてクラスA内のクラスBの初期化を完璧に行いたいのです)

また不可能である場合、クラスB内に初期化関数を用意しクラスA内から実行する方法では何か問題があるでしょうか?

325 :デフォルトの名無しさん:03/07/18 18:14
>>324
Aのコンストラクタで初期化記述子を使用すればよい
A::A() : m_B(1)
{
//m_BはBのインスタンス
}
「:」の後がそれ。あとはヘルプか参考書でも見て。

326 :デフォルトの名無しさん:03/07/18 18:18
class A{
 A(){m_pB = new CClassB(hoge);}
 ~A(){delete m_pB;}

protected:
 CClassB* m_pB;
}

327 :デフォルトの名無しさん:03/07/18 19:03
>>325 >>326
本当にありがとうございます。
すぐ試してみます。

328 :デフォルトの名無しさん:03/07/18 20:31
>>323
FindFirstFileは検索に使う奴だろ?
今回は使えん事は無いが面倒なだけだと思うが?

329 :デフォルトの名無しさん:03/07/18 20:42
存在するかどうか「検索」するんだし、CreateFileよりは引数も少なくて簡単だと思うが

330 :デフォルトの名無しさん:03/07/18 21:27
FindCloseするのがメンドリ

331 :デフォルトの名無しさん:03/07/18 21:35
>>328-330
Win32API 質問箱 Build10の>>254あたりから読んできなさい。

332 :デフォルトの名無しさん:03/07/18 21:54
そこまでわかるなら直リンすれや

333 :280:03/07/18 22:56
>>310

ありがとうございます。
ここでいうスクリーンというのはデスクトップ画面全体の画面領域との解釈でよいのでしょうか?


334 :デフォルトの名無しさん:03/07/19 03:12
>>333
画面全体ということでよろしい。

335 :280:03/07/19 11:53
>>334
了解です。
ありがとうございますた。

336 :デフォルトの名無しさん:03/07/19 22:23
Dlgクラス内の関数から何も派生、継承されていないNameというクラスを作りその中にa(int num,char *buff1)
という関数を作りデバックしたところ値はきちんとa関数に渡されるのですがその後、m_edit1=buffのところで
例外処理が出てしまいました。どうすればよいのでしょうか?
OnBUTTON1()
{ int i; char buff[8];CString cs; Name *pMyname; pMyname=new Name;
Updatedate(true);
cs=m_edit1;
strcpy(buff,cs);
i=1;
pMyname->a(i,buff);
m_edit1=buff;
Updatedata;
}

a(int num,char *buff1)
{
int num2;
char buff2[8];
num2=num+1;
strcpy(buff2,buff1);
strcat(buff2,"aa");
}

こんな感じで作ってみたんですが、うまく動きませんでした。
誰かご教授してくださると幸いです。



337 :デフォルトの名無しさん:03/07/19 22:29
>>336
すみません。上のUpdateData(true)とUpdateData(false)打ちミスしました。

338 :デフォルトの名無しさん:03/07/19 23:05
>>336
用語を正しく使って書き直し。

ところで、
>Updatedate(true);
>Updatedata;
これなんじゃい。

339 :315:03/07/19 23:30
まだ悩んでます〜w どなたか解決のヒントを・・
CSplitterWndの派生クラス作りつつ考えております。

新たな疑問なんですが
>>315の画面を作り、CとDの間の分割バーを左クリックすると
クリックしただけで下に2pixel分割バーが動いてしまうのですが
なぜでしょうか?他の分割バーは左クリックだけでは何も起こりません。


340 :デフォルトの名無しさん:03/07/20 00:41
>>336
strcat(buff2,"aa"); でバッファあふれてるんじゃねーか。

341 :セシル:03/07/20 17:50
usleep がつかえないんですけどどうしたらいいですか?

ちなみにエラーメッセージは

c:\program files\common files\system\mapi\1041\kita.cpp(19) : error C2065: 'usleep' : 定義されていない識別子です。
以上よろしくおねぎあします

342 :デフォルトの名無しさん:03/07/20 18:59
VCにusleep()は実装されていません(VC6以外は知らない)

Sleep()でも使ってください(ミリ秒単位)
マイクロ秒単位での中断なら無理だけど

343 :デフォルトの名無しさん:03/07/21 09:34
SP5をインストールしようとしてるんですが、「他のアプリが使用中」と言って、
MSVCP60.DLLがコピーできません。
ノートンとかを停止させてもダメ。
しょうがないからシステムフォルダに直接コピーしようとしたら、今度は
「Windowsが使用中だから」と言ってコピーできない。
どうしたらよいのでしょうか?

344 :デフォルトの名無しさん:03/07/21 10:01
.NETのSDKにはC++のライブラリが含まれていないようですが、
Platform SDKていうのをインストールすると、
タダでC++もコンパイルできるのですか?

345 :デフォルトの名無しさん:03/07/21 10:22
>>344
それはC++標準ライブラリが含まれているか?という質問か?
それともC++コンパイラが含まれているか?という質問か?

346 :デフォルトの名無しさん:03/07/21 13:15
>>343
それ、なるよね。
使用中のファイルを再起動時に置き変えるソフト、探すとあるはずだからそれ使う。

347 :344:03/07/21 13:48
>>345
C++標準ライブラリが含まれているか?という質問です。

348 :デフォルトの名無しさん:03/07/21 13:51
▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
▽激安 アダルトDVDが定価の価格関係なく1枚900円
▽      開店セール  見に来て!
▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
        アダルトDVDが激安販売中
         http://www.dvd-exp.com

       最短でご注文いただいた翌日にお届け!
         http://www.dvd-exp.com
        開店セール1枚 500円より

    セルビデオ店の人気商品が24時間お買い物が出来ます。
        時間をかけてゆっくり選んでください!
          http://www.dvd-exp.com
           DVDエクスプレス

今すぐ見にきてね!


349 :デフォルトの名無しさん:03/07/22 15:58
VC.netでリソースファイルが追加できんんす
なんでじゃろ

350 :デフォルトの名無しさん:03/07/23 14:17
オーナーデータリストの描画ってさ
リストが表示する時に表示するデータを
渡してやるって感じだと思うんだけど

元データの変更は検知してくれるのかい?

351 :デフォルトの名無しさん:03/07/23 15:02
>>350
再描画する部分のリストアイテムデータを持ってくるので、
元データ変わったらUpdateしよう。

352 :デフォルトの名無しさん:03/07/23 23:38
どうしても、解決できないんので教えてください。
現在、ファイルの中身を見ては処理、を指定フォルダ以下
全てのファイルに対して行っています。

プログレスコントロールを使いたいのですが、一度全ファイル数を
見てしまうと、結構なタイムロスになります。

これを解決する方法は無いでしょうか?

353 :無料動画直リン:03/07/23 23:38
http://homepage.mac.com/miku24/

354 :350:03/07/23 23:49
>>351 やっぱそうですよね。ありがと〜

355 :教えてください:03/07/24 00:09
VC++で、Waveでデータを波形にし、サンプリング周波数を出すプログラムはできたのですが、
波形の高い部分を見つけ、それをテキストに変換し保存するプログラムが分かりません。
どなたか、教えてくれませんでしょうか?
参考ソースがあるURLなどご存知でしたらお願いします。
せめて、音声データをテキスト変換するプログラムを教えてください。

お願いします。


356 :デフォルトの名無しさん:03/07/24 02:22
>>355
マルチたん(;´Д`)ハァハァ


・・・失せろや

357 :デフォルトの名無しさん:03/07/24 02:41
すみません。
エディット ボックスにて現在選択中の文字列の位置を
文字単位ではなくバッファ単位で取得するには
どうすれば良いでしょうか?

358 :デフォルトの名無しさん:03/07/24 03:24
>>357
長いテキストを編集するエディタを作っているのでなければ
GetWindowText() から取ってきて文字列を切り出せば
いいと思われ。

359 :357:03/07/24 10:49
>>358
解決しました。ご教授ありがとうございました。

360 :デフォルトの名無しさん:03/07/24 14:25
>>352
そんなにタイムロス出る? 一度列挙してしまえば、ファイルエント
リがしばらくはキャッシュされるので

列挙→再び列挙しながら処理 vs 列挙しながら処理

って、大して処理時間変わらないと思うんだけど。

361 :デフォルトの名無しさん:03/07/24 15:26
>>360
開始するまで待たされるのが嫌なんじゃないの?
まあ、プログレスバーを適当にするしかないかな。
サブフォルダが10個あったら1-1000のレンジにして1フォルダ辺り100ファイル扱えるようにする、
フォルダごとのファイル数が違っていても1フォルダ終わると1/10進む。
サブフォルダごとにそんな処理をやり、途中でファイルが増え過ぎたら、ちょっとプログレスを戻す。
そんなんしかなさそうだな。

362 :デフォルトの名無しさん:03/07/24 15:41
エクスプローラでファイルを大量にコピーするときもけっこういい加減だしな。

363 :デフォルトの名無しさん:03/07/24 16:39
漏れの妥協案は、ディレクトリごととかにファイル数を計数して総数に足していく。
グラフが後戻りするけどな。

もうちょっと手間かけるなら、プログレスバーを2本にして
処理するフォルダとフォルダ内のファイルでグラフを別けると後戻りしなくはなるな。

364 :デフォルトの名無しさん:03/07/24 17:12
処理する一方で、ファイル数数えるスレッドも動かす。これ。

数えてる間だけは、じわじわとバーを進めとく。(強気に進めると、後で数が
わかったときに進捗が戻ったりしてカコワルイことがあるから、弱気に進める)

365 :デフォルトの名無しさん:03/07/24 18:44
>>363
面倒だけど、後者が好きだな、漏れは。
全体の進捗と個々の進捗があると精神的にも優しいと思う。

366 :デフォルトの名無しさん:03/07/24 19:12
すみませんが、CEdit::CharFromPos の戻り値の
文字インデックスのバッファ単位から
文字単位を調べたいのですが、
どうすれば良いでしょうか?

367 :352:03/07/24 19:26
皆さんレスどうもです。

>>360
最初は設計の段階でそういう事を言われていたのですが、
実際にその処理をしてみて、以下のようになりました。

およそ2万ファイルを、三回試した平均です。
ファイル検索のみ・・・15秒
実際の処理のみ・・・17秒
両方併せた処理・・・32秒

最初はスレッドも考慮して作成していたのですが、スレッドから戻ってくる頃には
実際の処理も佳境に入っていて、プログレスバーの進み方が異常です。
更に、困ってるのはHDDのカリカリ音です。
出来ればファイル検索は一回にしたいので、>>363 氏のやり方でやろうかなと考えてます

ロジック的には
スレッドでディレクトリのファイル数を検索(サブディレクトリは含まず
併せて処理をして行き、スレッドの戻り値をプログレスバーにセットしたいと
思います。


368 :352:03/07/24 19:31
私はかなりの素人なのですが、意外にこういった手段って確立されてないのですね。
ノートンのスキャン中みたいな感じで進捗を表示したかったのですが、
レスを読んでみて、ああ、きっとノートンもアバウトなんだなぁって感じました。
皆さん、ありがとうございました。

369 :デフォルトの名無しさん:03/07/24 22:50
strcpy ではなく _mbscpy を使わなければ不具合でるってことあります?

370 :名無し@沢村:03/07/24 23:35
>>369
あります

371 :デフォルトの名無しさん:03/07/24 23:59
VC++は人気なくなった。
周りの人間で使える人はいない。
VC++は頭のいい奴が自慢をするためだけのソフト。
コードの再利用ができない。
作った人しかわからない。
VC++の需要は0になりつつある。
これからはC#の時代です。

372 :デフォルトの名無しさん:03/07/25 00:14
>>371
プログラマーのくせに全角英数字を多用していることから分かるように
あなたは出来損ないのプログラマーで、VC++に挫折したみたいですね。

373 :けけけ ◆rCmM5mBD26 :03/07/25 00:23
VC++はヘーゲルの精神現象学と同じです。
くだらない屁理屈と大して変わりません。
自分からスパゲッティソースコードにしてどうするのですか?
VC++はニヒリズムの波によって消去される。
けけけけけけけけけ。

374 :デフォルトの名無しさん:03/07/25 00:26
VBプログラマが紛れ込んでいる予感!!!

375 :デフォルトの名無しさん:03/07/25 00:32
>>368
ウィルスバスターでもファイル数の検索と、ファイルの検索を同時にやってるな。
結局それしかねーんじゃねーかな.

376 :デフォルトの名無しさん:03/07/25 00:34
>>371
> 周りの人間で使える人はいない。
それは単にお前の周りにいる人間が低レベル名だけだろ。
まぁお前の文章を見てるだけでも十分低レベルだと分かるがな〔w

377 :デフォルトの名無しさん:03/07/25 00:39
いちいち釣られんな

378 :けけけ ◆rCmM5mBD26 :03/07/25 00:40
いまどきC++使っている人はいません。
今はC#.NET、VB.NETが主流です。
VC++.NETはおまけで作られました。
ビルゲイツ会長に見捨てられたのです。
.NETの三種の神器でVC++.NETの話題なんか全く聞きません。
プログラミング業界の今後の趨勢が気になる次第である。

379 : :03/07/25 00:45
むしろC#の方が捨てられていく気がするけど・・・

MFC7ATL7とかの本とか出ないけどさすげ〜欲しい

380 :けけけ ◆rCmM5mBD26 :03/07/25 00:51
 Javaで実行効率が問題となった場合、言語のレベルで最初に疑うの
はインスタンスの生成と破棄の部分だろう。インスタンスの生成では
ヒープにメモリを確保するという重い処理が必要だし、インスタンス
の破棄のためのガベージ・コレクションはさらに重い処理だからである。
 結果として、大量のインスタンスを扱う場合は、生成と破棄の
オーバーヘッドを避けるためにインスタンスを使い回したりインスタ
ンスの粒度を大きくしたりすることになる。そして、ソース・コード
の可読性が落ち、バグの発生率が上昇し、プロジェクトが失敗する。
嘆かわしい話だ。
 そう、生成と破棄のオーバーヘッドを避ける抜本的な解決は、
生成と破棄のオーバーヘッドをなくしてしまうことなのだ。ヒープに
メモリを確保することなくインスタンスを生成し、ガベージ・コレク
ションに頼らなくてもメモリを破棄できる手段を用意すればよいので
ある。
 実際、生成と破棄のオーバーヘッドがないデータ表現の方式はJava
にも存在する。intやdoubleのような値型だ(Javaでは基本データ型と
呼ぶ)。値型はスタックに配置されるのでヒープにメモリを確保する
必要がない。値型のスコープは明確なのでガベージ・コレクションに
頼らずとも的確にインスタンスを破棄できる。これならオーバーヘッ
ドはほとんど発生しない。
 このように考えていくと、インスタンスの生成と破棄のオーバーヘ
ッドを回避する根本的な手段は新たな値型を定義可能にすることだと
分かる。C#には、この新たな値型を定義するための文法struct(構造
体)がある。C#に乗り換えたくなってこないだろうか?

381 :_:03/07/25 00:52
http://homepage.mac.com/hiroyuki44/jaz08.html

382 :デフォルトの名無しさん:03/07/25 00:54
>>380
コピペうざい。

383 :デフォルトの名無しさん:03/07/25 01:01
>>380
お前うざいし、C++使ったらそんな心配しなくていいし

384 :デフォルトの名無しさん:03/07/25 01:16
54 :鬱院生の卵 ◆rCmM5mBD26 :03/06/27 03:22 ID:1/U7Jb1+
>>34
>>43
誕生日おめでとう〜!!
(・∀・)\(・∀・) ナデナデ
あなた達におめでとうが言いたかったです。
つらいこともたくさんあるけどほんの少しの楽しい事、嬉しいことでも絶対生きていたらあると思うんだ。
とにかくおめでとうです。少し嬉しい気持ちになりました。

385 :369:03/07/25 01:18
>>370 具体例でおながいします

386 :デフォルトの名無しさん:03/07/25 01:43
>>385
unsigned charの文字列の場合、strcpy()ではキャストしなくてはならない。

387 :369:03/07/25 01:44
というか strcpy と _mbscpy 、ステップインしたらどっちも strcpyの
アセンブラルーチンに。引数の型が違うだけ?

388 :デフォルトの名無しさん:03/07/25 01:48
>>387
僕はそう認識しているけどね

389 :デフォルトの名無しさん:03/07/25 02:06
DirectMusicを使うのに"dmusici.h"をインクルードしようとしても
できません。警告分では
"fatal error C1083: インクルード ファイルがオープンできません。"
と出ます。Includeディレクトリも探したのですが、やはりファイルは
見つかりません。関係あるのかどうかわかりませんが、
winmm.lib dxguid.lib dsound.libはリンクさせてあります。

バージョンは6.0、OSは2000です。
どなたか教えてください。

390 :デフォルトの名無しさん:03/07/25 02:07
>>389
インクルードファイルがなかったらエラーになるに決まってるでしょ

391 :デフォルトの名無しさん:03/07/25 02:29
>>390
必要な宣言等をシコシコ自分で書けばエラーは出ない

392 :389:03/07/25 03:21
>>390,391
問題はインクルードファイル"dmusici.h"が無いことです。
DirectMusicのプログラムをを載せてあるサイト等でも
初めからあるのか何の説明もありません。

"dmusici.h"はどうやって入手するものなのでしょうか?初めから
あるものなのでしょうか?教えてください。

393 :デフォルトの名無しさん:03/07/25 03:24
SDK入ってないんじゃないか

394 :デフォルトの名無しさん:03/07/25 04:06
他のDirectXはどうですか?

395 :デフォルトの名無しさん:03/07/25 05:34
1. DirectX SDK 未インストール。
2. ファイルが壊れて、破損ファイルとして扱われ消えちまった。
3. 実はパスが通ってないだけ。
4. 妖精さんが消しちゃった。

どれかじゃないの?

396 :デフォルトの名無しさん:03/07/25 07:24
VisualStudio.NET2003のアカデミックはライセンス認証が必要ときいたのですがwinXPのものと同じと考えていいのでしょうか?

397 :389:03/07/25 11:52
原因わかりました。
   1. DirectX SDK 未インストール
でした。VC初心者なのでその辺が良くわかっていませんでした。
どうもありがとうございました。

398 :まこと:03/07/25 13:30
プログラム2:10進数の整数の桁数を表示する
例えば "12340" という整数が与えられたとき、5けたの数字であるから "5" を表示するようなプログラムを作る。

399 :デフォルトの名無しさん:03/07/25 13:37
CString s;
s.Format( "%d", 12345 );
SetDlgItemInt( IDC_EDIT1, s.GetLength() );

400 :デフォルトの名無しさん:03/07/25 14:01
わかりません。教えてくさい

401 :デフォルトの名無しさん:03/07/25 18:26
VC++ってコードはわかるけど
コードを書くまでがわからない
プロジェクトの作成?とか

402 :デフォルトの名無しさん:03/07/25 18:37
VS.NET2003インストールしてるんですけどどれぐらい時間かかるんでしょうか?
なかなか終わってくれないんですが、、

403 :デフォルトの名無しさん:03/07/25 18:48
MFCを使ったプログラムです。
peopleというクラスがあり、そこに文字列をprivateで、char name[]と宣言しています。
piblicでpeople(char p_Name[])とあり、これがコンストラクタです。

TESTViewクラスで、このpeopleクラスのオブジェクトを作りたいので、コンストラクタであるTESTView関数で、people("kazu")のように書いているのですが「'people::Name' : クラス、構造体、共用体のメンバは、初期化できません。」とエラーがでます。
peopleクラスのcharではなく、intとかなら具体化できるのですが、文字列の扱い方がよくわかりません。
アドバイスをお願いします。


404 :デフォルトの名無しさん:03/07/25 18:50
メンバの配列変数は初期化できませむ

405 :403:03/07/25 18:55
あ・・・
>>peopleというクラスがあり、そこに文字列をprivateで、char name[]と宣言しています。
は、char name[10]の間違いです。

406 :デフォルトの名無しさん:03/07/25 18:56
まず、CStringやstd::stringじゃダメなのか。
どうしてもcharにしたいなら、
メンバをchar name[128]にするとか、char* nameにしてコンストラクタでnewするとか。

407 :403:03/07/25 18:58
>>404

となると、この場合はpeopleクラスのname変数に文字を入れたいのですが、どうやるべきでしょうか・・・


408 :デフォルトの名無しさん:03/07/25 18:58
>>405
people(const char* pName){lstrcpy(name, pName, 10);}

409 :デフォルトの名無しさん:03/07/25 18:58
>>403
MFCならCStringは?

410 :デフォルトの名無しさん:03/07/25 18:59
>>408はlstrcpynだった

411 :403:03/07/25 18:59
ごめんなさい・・・CStringでよいかもしれません。
かなり知識がないのでわかりませんでした。
試してみます

412 :デフォルトの名無しさん:03/07/25 19:04
エディタを他のに変えてみたいんですけどどうすればいいですか?

413 :デフォルトの名無しさん:03/07/25 21:47
質問させて下さい
今、練習で、簡易ワープロ作ろうとしています
半角英数なら普通にできるのですが
日本語を入れようとすると
字を決定する前のひらがなを打ったり
漢字に変換している途中は
ウィンドウ下部に書かれてしまい
決定するまでカレットの場所に行ってくれません
OnKeyDownには入ってくれますが
そもそも座標の与え方がわかりません
どなたか教えてくれませんでしょうか
よろしくおねがいします

414 :デフォルトの名無しさん:03/07/25 21:50
>>413
CWnd::SetCaretPos()

415 :414:03/07/25 21:57
スマンIMEか。ImmSetCompositionWindow()だな。

416 :413:03/07/25 23:11
>>415
できました
正直言うとすぐにできたわけではないのですが
ImmSetCompositionWindowをヒントに
いろいろ調べて解決できました
ありがとうございました
お世話になりました

417 :デフォルトの名無しさん:03/07/25 23:24
MFCでプログラムを組んでいます。
int型の数字とCString型の文字を、CString型に同時に入れる方法はあるでしょうか。
AfxMessageBoxで表現したいのですが、CString型じゃないと使えません。
int型の数字も同時にAfxMessageBox関数で表現したいのです。

418 :デフォルトの名無しさん:03/07/25 23:30
>>417
CString::Format

419 :デフォルトの名無しさん:03/07/26 00:02
>>418

ありがとうございます。
ついでなのですがCString型からcharに変換できるでしょうか。
調べたところ、LPCTSTR(ここにCStrint型のものを入れる)でできるようなのですが、「'const char *' は 'class CString' と間接操作のレベルが異なります。」とエラーがでます。
なお、ここで調べました
ttp://www.asahi-net.or.jp/~yy6m-wd/kuma/vctip/string.htm#CstrToChar


420 :デフォルトの名無しさん:03/07/26 00:05
>>419
C言語の基礎からやることをお勧めする。

421 :デフォルトの名無しさん:03/07/26 01:00
>>419
MSDNライブラリ中の、CStringクラスメンバをくまなく探すなり

422 :デフォルトの名無しさん:03/07/26 08:55
こんにちわ。
VC++を勉強しようと思っています。
解説本でお勧めのものはあるでしょうか?
プログラミング自体初めてです。
よろしくお願いします。

423 :デフォルトの名無しさん:03/07/26 09:03
>>422
とりあえず、この辺から始めてみては。
http://dir.yahoo.co.jp/Computers_and_Internet/Software/Programming_Tools/Programming_Languages/C_and_C__/

漏れは職業プログラマではないけど、ある程度覚えてしばらく経つまで本は買わなかった。

424 :デフォルトの名無しさん:03/07/26 09:32
だから入門書に載ってるようなことを質問する奴が絶えないわけか・・・

425 :デフォルトの名無しさん:03/07/26 10:30
>>419
俺はGetBufferを使ったりするんだけど・・・・

426 :デフォルトの名無しさん:03/07/26 13:17
>>424
ということはあなたは本を買って勉強したんですよね?

427 :デフォルトの名無しさん:03/07/26 13:43
>>419 のエラーをわざと出そうと思ったけど出ねー。
どんなシチュエーションで出る?
試したテスト↓
CString str = "test";
const char* p = str; // ノーエラー
char buf[100];
strcpy(buf, str); // ノーエラー
printf(buf, "hoge %s hage", (LPCTSTR)str); // ノーエラー

428 :デフォルトの名無しさん:03/07/26 14:50
>>426
まともな奴は最初に入門書くらい買うでしょ

429 :デフォルトの名無しさん:03/07/26 15:31
>>427
それでエラーが出ないのは当たり前なわけだが

430 :デフォルトの名無しさん:03/07/26 17:16
>>426
参考図書の話ならスレ違い。

431 :デフォルトの名無しさん:03/07/26 19:29
#include<iostream>
using namespace std;
int main()
{
int d,b,c,a,t;
cout<<"揚力を入力してください";
cin>>a;
d=a*a;
cout<<"翼面積";
cin>>b;
cout<<"揚力係数";
cin>>c;
t=d*b*c;
cout<<t;
}
上記のような、プログラムをかいたのですがVisaul C++のほうから、コンパイル後に
実行すれば問題なく動作するのですができた、実行ファイルを実行すると最後の値を入力し終えた後に
怒涛の勢いで終了してしまいます。
メモを取れるくらいの間、表示させとおくのは、どうしたらいいでしょうか?

432 :デフォルトの名無しさん:03/07/26 19:31
Sleepつーか終了直前にキーの入力とか待てば良いのでは?

433 :デフォルトの名無しさん:03/07/26 19:33
意味不明。
コマンドプロンプトから実行すれば?

434 :デフォルトの名無しさん:03/07/26 19:34
>>431
DOS窓で実行すれ

435 :デフォルトの名無しさん:03/07/26 20:28
つーかVC++スレのネタじゃねー名。

436 :デフォルトの名無しさん:03/07/26 22:31
>>433
さすがに意味不明ではないでしょ

437 :デフォルトの名無しさん:03/07/26 22:32
むしろFAQだよな

438 :デフォルトの名無しさん:03/07/27 03:40
>>431
最後の行にキー入力待ちを置いて、
入力後に終了させようにすれば?

439 :デフォルトの名無しさん:03/07/27 13:48
MFCでウインドウをエクスプローラ形式で作った場合
左側のツリービューのスタイルはどうやって変更?
ちぇっくボックスつけるとか点線つけるとか・・

440 :デフォルトの名無しさん:03/07/27 14:58
WM_CREATEをオーバーライドして基本クラスのOnCreate()呼ぶ前に引数のスタイルメムバいじるか、
ウィンドウが作成された後ならModifyStyle(Ex)()かSetWindowLong()

441 :名無し@沢村:03/07/27 15:04
>>439
PreCreateWindow()

442 :デフォルトの名無しさん:03/07/27 16:00
ModifyStyleでできました。さんくすです

443 :デフォルトの名無しさん:03/07/27 16:33
エクスプローラで項目を右クリックすると、プログラムの実行が停止するか、Explorer.exe が CPU を 100 パーセント使用する

http://support.microsoft.com/default.aspx?scid=kb;ja;819946

開発には向いてないようですね。XP。
Microsoft Windows Server 2003まで対象ですが…。
使うなって事でしょうか?


444 :デフォルトの名無しさん:03/07/27 16:42
>>443 この問題、開発とどーいう関係が? ShellExtentionとかかな?

445 :デフォルトの名無しさん:03/07/27 16:42
かなり前、C++を勉強し始めた頃
MFCはバグが多いから使わない方がいいと言われて
現在まで使用せずにいたのですが、
現在は使った方が良いんでしょうか?
又は使っても大丈夫でしょうか?
使用しても無問題ならMFCについて勉強したいのですが
前に言われた言葉が引っかかっており
躊躇しております。

446 :デフォルトの名無しさん:03/07/27 17:15
>>445
Win32APIを理解してるなら大丈夫。

447 :デフォルトの名無しさん:03/07/27 17:31
>>446
445じゃないけど
それは、MFCを知らなくても大丈夫っていうことなのか
> MFCはバグが多い
っていうのに対して大丈夫って言ってるのか
よくわからん


448 :デフォルトの名無しさん:03/07/27 17:37
MFCのバグと思ったら自分のバグだったりする
コンパイラ通ってもエラー出ることって結構あったな、厨房の頃は(;´Д`)

MFCってそんなバグ多くないと思うが、あってもMFCソース見れるし
msdnドキュメントに嘘つかれたことならあるが



449 :デフォルトの名無しさん:03/07/27 17:42
VCのSTLにもバグがあるよ。

こう言うと>>445はSTLも使わないのだろうか

450 :445:03/07/27 18:30
>>446-449
なるほど、使っても大丈夫みたいですね
MFC勉強しよう〜
>>449
それはライブラリっすよねぇ
先輩にライブラリに頼るな。自分の力で作り上げろ〜
とか言われて使わせて貰えんかったなぁ。
先輩ももういないし、今から勉強してみるかなぁ

451 :デフォルトの名無しさん:03/07/27 18:34
標準ライブラリも使わせないような奴は単なるアホだ

452 :デフォルトの名無しさん:03/07/27 18:37
車輪の再開発とは…
なんという先輩だ

453 :デフォルトの名無しさん:03/07/27 18:51
そういう先輩に限って普通に
#include <stdio.h>
とか書いてるはず。
後輩「これもライブラリですよね・・・」
先輩「いや、これはいいんだ。」

てめーの基準は何だよ!!

454 :デフォルトの名無しさん:03/07/27 19:40
>>450
使っても大丈夫みたいですね。
じゃなくて大丈夫だから、マイクロソフトが入れてるんだろ?

455 :デフォルトの名無しさん:03/07/27 19:43
そのセムパイに、MFCにはどんなバグがあるか聞いてみるといいよ

456 :デフォルトの名無しさん:03/07/27 19:55
多分、その先輩はboostとか知らないな(w

使いまくったれ

457 :デフォルトの名無しさん:03/07/27 20:21
>>443
何を今更って感じだな。
XPでVCを使うほどストレスたまるモンはそうそうない。まだ98で使ってた方がマシ。

458 :デフォルトの名無しさん:03/07/27 20:57
VCでつくったソースを配布することになったのですが
個人情報とか漏れますか?
デバッグビルドだとwindowsに登録した名前が漏れるらしいですが
それ以外にもあれば教えてください

459 :デフォルトの名無しさん:03/07/27 21:02
>>458
割れで作ったものなら逆汗して
シリアルキーを調べればバレます。

460 :デフォルトの名無しさん:03/07/27 21:20
>>459
((((;゚Д゚)))ガクガクブルブル

じゃなくって本名とかHDDのフォルダ名とかあまり知られたくないのです
VCのことではないですが環境変数の値を実行ファイルに残したままのものがあった
と聞いたので警戒しています
この前登録名バレてヘコんでますがソースを見てもらうメリットも捨てがたくて質問しました

461 :デフォルトの名無しさん:03/07/27 22:05
>>460
ユニコードの罠に気をつけながらバイナリエディタ使って検索してみればいいんでないの。

462 :デフォルトの名無しさん:03/07/27 22:37
うむ。デバッグビルドだと、バイナリぱっと見ただけでも、ソースファイルの
フルパスが入ってますな。

ってか、デバッグビルドのバイナリ配布するの?
MFCとかCRTのデバッグ版DLLのバージョン問題もあるっちゅーか、配布
禁止じゃなかったっけ?

463 :デフォルトの名無しさん:03/07/27 22:46
デバッグ版DLLは配布禁止。

464 :学生:03/07/28 00:48
唐突に失礼します。
LPCTSTRって何?何バイトの変数なんでしょうか?

465 :名無し@沢村:03/07/28 00:55
>>464
Win32では4バイト

466 :_:03/07/28 00:56
http://homepage.mac.com/hiroyuki44/

467 :デフォルトの名無しさん:03/07/28 00:58
エディタの文字サイズ小さくしたいんだけどどうやっらたできますか?
VC++6.0です

468 :デフォルトの名無しさん:03/07/28 01:00
>>457
変わった人ですね

>>462
スタティックリンクすればOK

469 :デフォルトの名無しさん:03/07/28 11:23
ツール→オプソン→書式

470 :デフォルトの名無しさん:03/07/28 18:42
>>469
ありがとうございますです

471 :デフォルトの名無しさん:03/07/28 21:40
すみません。
ラジオボタンは1つのダイアログにつき
オンの状態に出来るのは1つだけですが、
これを、複数オンの状態に出来るようにするため
には、どうすれば良いでしょうか?

472 :デフォルトの名無しさん:03/07/28 21:49
グループボックス

473 :デフォルトの名無しさん:03/07/28 22:15
>>471
コントロールをタブオーダー順に並べたとき、
(グループの先頭のラジオボタン)と、
(グループの最後のラジオボタンの次のコントロール)に
Groupプロパティを設定します。
ああメンドクセー。

474 :デフォルトの名無しさん:03/07/28 22:37
グループボックスにあるラジオボタンのどれかが変更されたときに
拾えるメッセージってありますか?
BN_CLICKEDをラジオボタンごとに持たせるのは何か、嫌で。

475 :デフォルトの名無しさん:03/07/28 22:45
SSE2で整数の内積演算のプログラミングをしたいのですが、
本がなくてさっぱりわかりません。
例えば、unsigned char a[8] b[8]との内積の和
a[0]*b[0]+a[1]*b[1]+....
をSSE2で書くと、どのようになるのでしょうか。
よろしくお願いします。
また、MMXで書いたものはあるのですが、
SSE2に直すことでさらなる速度アップは望めるのでしょうか。

476 :デフォルトの名無しさん:03/07/28 22:51
RS232CをとおしてXmodemでデータを送信するプログラムを作りたいのですが
どうすればいいでしょうか
データの送受信はできているのですがネット上いろいろ探しても
プロトコルを設定する方法がわかりません
これだけでは情報が足りないかもしれませんが
これでわかる方がいたらよろしくおねがいします


477 :デフォルトの名無しさん:03/07/28 23:24
>>474
CWnd::GetCheckedRadioButton()

478 :デフォルトの名無しさん:03/07/28 23:30
デバッグしてたら
INT 3
で止まるんですけど、INT 3って一体どういう処理をしているのでしょうか?

479 :471:03/07/29 00:01
>>472 >>473
どうもありがとうございました。

480 :デフォルトの名無しさん:03/07/29 00:09
>>478
intはソフトウェア割り込み
オペランド3はブレイクポイント・割り込み

Foo() {
_asm int 3;
}
実行するとメッセージが表示されて実行が停止される(Debugビルドで確認)


Var() {
ASSERT(FALSE);
}
アサート表示後、再試行ボタン押下→デバッガの混合モードでみると
int 3から復帰していることが確認可能

アセンブラ詳しくないのでこの辺で...

481 :480:03/07/29 00:10
8086アーキテクチャーの話ね
他のアーキテクチャの話は知らないのでご容赦

482 :478:03/07/29 00:22
>>480-481
なんとなくわかりました。
どうもありがとうございました。

483 :名無し@沢村:03/07/29 01:02
>>474
ヌヒよ、親ウィンドウのOnCommand()でまとめて処理すればいいんじゃなかろうか

484 :デフォルトの名無しさん:03/07/29 03:04
せっかくだから俺はON_COMMAND_RANGEを選ぶぜ

485 :デフォルトの名無しさん:03/07/29 08:37
C++.NETでリソースエディタでツールバーに新しいボタン追加したんだけど
押した時の処理の追加の仕方がわからんです。
どうやればよいの??

486 :デフォルトの名無しさん:03/07/29 11:42
CString str = _T("str");
CTypedPtrArray<CPtrArray, CStringArray*> paStrA;
CStringArray* pStrA = new CStringArray;
pStrA->Add(str);
paStrA.Add(pStrA);
paStrA.GetAt(0)->RemoveAll();
paStrA.RemoveAll();

でメモリーリークするのですが、どこがおかしいの?


487 :???:03/07/29 11:44
告白したいけど、自分に自信がない。それでも胸の奥が苦しくて・・・
そのような方、諦めないで。
ここでは、異性に効果を発揮する香水、合法ドラッグなどがおかれています。
小売価格一万円以上の品が、半額以下の値段で取引されています。
是非ここでゲットして、貴方の気持ちを打ち明けて下さい。
相手の方も、きっとそれを待っていますよ。

↓のURLの頭にhを付けて、コピー、ペーストして下さい。

ttp://www.adultshoping.com/index.cgi?id=1057809839


488 :486:03/07/29 11:47
あ、deleteぬけてた すまん

489 :デフォルトの名無しさん:03/07/29 11:49
アダルトDVDが
 最短でご注文いただいた翌日にお届け!
         http://www.dvd-exp.com
        開店セール1枚 500円より


490 :デフォルトの名無しさん:03/07/29 11:57
>>489
そのよりって言うの好きじゃない。ボッタ栗バーと同じ。

491 :デフォルトの名無しさん:03/07/29 14:24
識者の方宜しくお願いいたします。
VC++6.0英語版の開発環境にて、0x5cを含む二バイト文字(SJIS)を表示させたい場合、
0x5cを含む対象文字に\を付加することで、正しく表示されることは知っていますが、
\文字を付加せずに、他の方法で正しく表示させることは出来ますでしょうか?
(英語版の環境は変更できないんです…)


492 :デフォルトの名無しさん:03/07/29 14:38
・文字列は全部リソースに放り込む。
・UTF-8で入力する

493 :デフォルトの名無しさん:03/07/29 14:51
>>485
あーそれ俺も知りたい。VC++.NETのToolBarエディタから
イベントハンドラの追加できないすよね?
いまんとこ、すげー面倒な方法でやってます。
1)ダミーのAcceleratorエントリを追加し、ID_HOGEというIDをつけておく。
2)AcceleratorエディタでID_HOGEのイベントハンドラを追加する。
3)ToolBarエディタで目的のボタンにID_HOGEを与え、イベントハンドラと結合
4)Acceleratorエディタに戻ってID_HOGEを削除
われながら馬鹿な方法だと思う。。。

494 :デフォルトの名無しさん:03/07/29 15:00
>>492
ありがとうございます。
リーソースファイルを修正できないのと、Win95でも動作させなくてはならないため、
教えていただいた方法は難しいかと思います。
再度条件をまとめますと以下になります。

・開発環境VC++6.0英語版(Win2000英語版上)
・作成した実行ファイルは日本語版のWin95からWinXPまで動作させる必要がある。
・messageboxを含むソースのみ修正可能。現状文字コードはSJIS


495 :デフォルトの名無しさん:03/07/29 15:58
>>494
いつごろのMS-Cだったか、昔は/Jオプションを指定すると、
文字列リテラルや文字定数の0x5cの直後に\を付加してくれた。
さすがに今のVC++6の/Jオプションにそんな機能はないかねえ。
やはりゴリゴリと\をつけまくるのがいいのでは。
その程度のフィルタコマンドなら間単に作れるでしょ。

496 :デフォルトの名無しさん:03/07/29 17:39
fscanfでテキストファイルの読み込みをしようとしたのですが
実行するとASSERTE(stream != NULL)みたいなエラーが出てしまいます.
テキストファイルのほうになにか問題があるのでしょうか?

497 :デフォルトの名無しさん:03/07/29 19:30
>>483
あ・・・そうですね。
それでいきます。
どうも。

498 :485:03/07/29 20:01
>>493
おおお〜!どもです。
別の方法見つかるまで使いますっ!

499 :デフォルトの名無しさん:03/07/29 20:11
>>491
割れを使うな!以上!

500 :デフォルトの名無しさん:03/07/29 20:22
>>496
ちゃんとオープンできてる?
ファイルが存在する?
モードまちがってない?
ファイルに排他ロックがかかってない?

501 :デフォルトの名無しさん:03/07/29 20:23
500とられた(T_T)

502 :デフォルトの名無しさん:03/07/29 20:25
☆★ 新商品 ゾク・ゾク 入荷!! 急げ〜!! ☆★☆
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
☆★ 送料激安!  スピード発送!  商品豊富!   
★☆      http://www.get-dvd.com        
☆★ 激安DVDショップ 「GETDVDドットコム」 
★☆      http://www.get-dvd.com        
☆★ 今すぐアクセス Let’s Go!   急げ! 
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★


503 :デフォルトの名無しさん:03/07/29 21:31
自分で作ったのクラスからビュークラスの関数呼ぶって事は普通しないんすか・・・?
やり方わからん

504 :デフォルトの名無しさん:03/07/29 21:56
20分前〜俺は〜馬鹿だった〜
・・・あほなこと言ってごめんなさい

505 :デフォルトの名無しさん:03/07/30 09:25
>>495

どうもです。やはりその方法しかなさそうですね…
sedで置換してみます。
ありがとうございました。


506 :デフォルトの名無しさん:03/07/30 13:34
Enemy *pEnemy;

pEnemy = new Zako;

クラスへのポインタ宣言をしておいて、
あとからnewでオブジェクトを作ろうとすると、

error C2061: 構文エラー : 識別子 'Zako';

と出てしまいます。どうしてエラーなのでしょうか?

507 :デフォルトの名無しさん:03/07/30 13:53
>>506
includeしてないだけじゃ?

#include "Zako.h"

508 :デフォルトの名無しさん:03/07/30 14:58
今、学校でVC++6を弄んでるんですが、入門書のおすすめなどありましたら教授ください。

学校なので、MFCライブラリリファレンスの類は、全種あるのですが、なにぶん内容が難しすぎて…(汁)
今現在、参考にしてるのは、「独習C++」、「新VisualC++6.0入門(ビギナー編)」です。

やはり次に進むべき道は、「新VisualC++6.0入門(シニア編)」でしょうか…?
しかし通販じゃないと近所にはなさげな悪寒…

自分の知識としては、Cの基礎を一通り学んだ程度です。

509 :デフォルトの名無しさん:03/07/30 15:26
猫でもわかる、でいいじゃん。
本がいいと言うなら、いちおう本にもなってたはず。

内容が優れてるかと言われれば疑問だが、入門には良いと思われ。
林晴比古も悪くないけどね。

学校でとりあえず必要としてるだけならいきなりMFCでもいいけど、
まともに覚えたいんなら、まずはSDKオンリーで仕組みから理解していくべきだと思う。


510 :デフォルトの名無しさん:03/07/30 15:39
だから、本はスレ違いなんだよ

511 :デフォルトの名無しさん:03/07/30 16:08
C++はCをマスターしてから勉強したほうがいいですか?

512 :sage:03/07/30 16:08
初心者に教えるスレだからいいと思うけどね。
自分は林晴比古の新VisualC++6.0入門シリーズで勉強した。
がんばってくれ。

513 :508:03/07/30 16:21
>>509
なるほど…猫わかもたしか本になってたんですよね…一度調べてみます。
(やっぱり本がいいです;)

>>510
すいません、スレを検索した限り、他に適当なスレが見当たらなかったのでここで質問させてもらいました。
くだ質とかの方がよかったですかね…?

>>512
このシリーズで攻め続けようか、他に乗り換えようか、少し悩んでます…<林先生の本

514 :デフォルトの名無しさん:03/07/30 16:58
初心者に推薦図書スレを教えるのが筋だと思うが・・・

515 :デフォルトの名無しさん:03/07/30 18:44
http://aiton21.tripod.co.jp/a.JPG
OKとキャンセルボタンいっこずつしかおいてないのに
リビルドしてもこんなんに表示されちゃうのなんでですか??

516 :デフォルトの名無しさん:03/07/30 18:45
てか三回くらい作り直しました。。。
ありえねえええ

517 :デフォルトの名無しさん:03/07/30 18:51
ああきにしないで

518 :デフォルトの名無しさん:03/07/30 20:54
教えてください。
いま自分のViewにCListCtrl m_listがあるとします。
ここでこのm_listにアイテムを追加するときにSetItemDataで構造体アドレスをセットしたいです。
この構造体はそのアイテムに関連する情報を保持しており、リストにアイテムを挿入するときにnewします。
問題なのはこのViewがDistructされるときにこのm_listがデストラクトされてもnewした構造体は自動では解放されません。
あるいはDeleteAllItemsなどを呼び出したときとか。
Viewのデストラクタでdelete m_list.GetItemData(i);などとしても
もしリストにSetItemDataしてなければ変なアドレスでdeleteしそうです。
こういうケースではどういう対処が良いですか?
CListCtrlを派生してInsertやDeleteItem系のメソッドを絞って提供し
アイテムの追加や削除を全部管理しないと無理ですか?



519 :デフォルトの名無しさん:03/07/30 21:04
>>513
最初は林の本でも大丈夫だと思うけどね。
ちょっと実力がついてきたなと思ったら用途に合わせたものを買えばいい。

520 :デフォルトの名無しさん:03/07/30 21:23
>>518
うん。

521 :518:03/07/30 22:08
そうなんですか。そこを何とか。どなたか良いお知恵を。
もしくは普通こうやる、とか。
お願いします。

522 : :03/07/30 23:04
>>518
仮想リストにすれば?

523 : :03/07/30 23:06
>>521
SetItemData してなければ、GetItemData では 0 が帰って来る。と思う。
もし違ってたらゴメン。で、LVN_DELETEITEM だかなんだかの通知を受けて
0 じゃなければ、delete する。

あるいは new したものは View のメンバ変数 CTypedPtrList<hoge> m_items;
とかに全部入れといて、view のデストラクタで全て delete する。


524 :デフォルトの名無しさん:03/07/30 23:07
VC++6.0でmakeファイル使ってる人っています?
VCってmake使えるの?

525 :デフォルトの名無しさん:03/07/30 23:09
>524
nmakeってあるはずだよ。
さがしてみそ

526 :デフォルトの名無しさん:03/07/30 23:14
>>525
確かにありますね。
nmakeってコマンドラインから使うんですか?
IDEからは使えないんですか?


527 :デフォルトの名無しさん:03/07/30 23:14
☆★ 新商品 ゾク・ゾク 入荷!! 急げ〜!! ☆★☆
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
☆★ 送料激安!  スピード発送!  商品豊富!   
★☆      http://www.get-dvd.com        
☆★ 激安DVDショップ 「GETDVDドットコム」 
★☆      http://www.get-dvd.com        
☆★ 今すぐアクセス Let’s Go!   急げ! 
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★


528 :名無し@沢村:03/07/30 23:16
学校のおじさんのつくったVisualC++真面目に勉強している、へたれたちのいるスレはここですか?


529 :518:03/07/30 23:24
みなさま。ありがとうございます。
よくかんがえたらViewのデストラクタより先にm_listがなくなっていそうです。
そこでいちばん簡単な方法としてm_listにSetItemDataしたものを別個にリストにして
保持しておくことにします。なんか無駄な気もしますが。


530 :518:03/07/30 23:27
>>522
仮想リストとは何ですか?


531 :デフォルトの名無しさん:03/07/31 00:06
すみません。文字列をdouble型に変換したいのですが、

 CString str = 2.5584;
 double don = atof(str);

とした時、donの値が"2.5583999999…"になってしまいます。
この原因が全く判らないで困っています。
どなたか解決策をご教授してください。

532 :デフォルトの名無しさん:03/07/31 00:07
1/3 = 0.3333333....

533 :デフォルトの名無しさん:03/07/31 00:34
>>531
double型は2進数であらわされます。
ですので、10進数小数を2進数に直すと丸め誤差が生じます。
つまり、double型では、正確に2.5584を表すことは原理的にできないのです。

別に実害はないので気にせず行くのがよいでしょう。

534 :デフォルトの名無しさん:03/07/31 01:22
>>531
有限小数、無限小数などで検索汁

535 :デフォルトの名無しさん:03/07/31 02:23
>>530
仮想リストビューで検索しなさい

536 :デフォルトの名無しさん:03/07/31 08:52
CObjectの派生クラスで、リソースに登録してあるアイコンのハンドルを取得するには
どうすればいい?ロードアイコンとかセットアイコンとかいっぱい試したけど
自分じゃむりだった・・。

537 :531:03/07/31 08:56
>>533
そうだったんですか。ありがとうございました。
でも、こっちでは、どうしても文字列"2.5584"を
正確な数値でdouble型に変換したいのですが、
良い方法はないでしょうか?

538 :デフォルトの名無しさん:03/07/31 09:24
>>536
そういうときは、まずはキーワード羅列して検索

ttp://www.google.com/search?num=50&hl=ja&lr=lang_ja&q=%83A%83C%83R%83%93+%83n%83%93%83h%83%8b+%83%8a%83%5c%81%5b%83X

539 :デフォルトの名無しさん:03/07/31 09:31
>>537
double型では、正確に2.5584を表すことは原理的にできないのです。
                         ~~~~~~~

540 :デフォルトの名無しさん:03/07/31 09:49
>>537
計算するときに小数点第5位以下を四捨五入すると貸して自分で工夫するしかねーよ。
小数を正確に表すことは出来ん。あきらめな。

541 :デフォルトの名無しさん:03/07/31 09:50
>537
doubleでは不可能。
誤差が嫌なら小数部と整数部に分けてintに格納とか。
演算出来ないけど。

542 :531:03/07/31 13:35
>>539-541
そうですか。わかりました。
どうもありがとうございました。

543 :デフォルトの名無しさん:03/07/31 14:25
ピクチャボックス、またはエディットボックス上に
bold表示で文字を表示させたいんですけど
どういう関数を使えばいいんでしょうか

544 :デフォルトの名無しさん:03/07/31 14:31
エディトボックスについては、SetFontすればよろし。

545 :デフォルトの名無しさん:03/07/31 15:25
>>538
しました。そこも見たとおもいます。
アプリケーションクラスでロードアイコンすると、
Debug Assertion Failed!が出て、ビルド自体できないんすよね。
ちなみに出てるファイルはafxwin.inlのline26です。コードは
HICON hIcon = NULL;
hIcon = LoadIcon(IDR_MAINFRAME);
if (hIcon == NULL)AfxMessageBox (_T("アイコンがロードできません"));
でappクラスのコンストラクタに入れてます

って書いて、まさかと思って違う関数に入れたら通ったヽ(´∀`)/

546 :デフォルトの名無しさん:03/07/31 15:52
Appクラスのコンストラクタってあんた・・・

547 :デフォルトの名無しさん:03/07/31 16:18
いや、とりあえずどこでもいいからつっこんでコンパイラ通したかったんすよ笑
てかCImageListのadd関数にハンドル渡すとまたDebug Assertion Failed!が
でるうううう!また俺馬鹿なことやってんだろうなぁ。。。泣

548 :デフォルトの名無しさん:03/07/31 16:32
人間は生まれながらにして自由だが一方で鉄の鎖に繋がれている。
ルソーの社会契約論にそうある。
人間が家畜化してるらしいよ。

549 :デフォルトの名無しさん:03/07/31 16:59
ままままじでわからんです!
appのInitInstanceの最後に

HICON hIcon = NULL;
hIcon = LoadIcon(IDR_MAINFRAME);
if (hIcon == NULL)AfxMessageBox (_T("アイコンがロードできません"));
data.Treeimage.Add(hIcon);

TreeimageはCImageListです。この状態でリビルドしてもエラーでないんすけど
ブレークポイントで調べると四行目のAdd関数の時にDebug Assertion Failed!
がでます。なんか悪い事してる・・・?

550 :デフォルトの名無しさん:03/07/31 17:40
>>549
せっかくアサーションが発生しているなら、
CImageListのソースを見てみろよ。

551 :デフォルトの名無しさん:03/07/31 18:05
>>550
エラーのとこに出てるフォルダ名vs70buildsで検索かけたけどでない。
インクルードフォルダもみたんですけど・・・。
ソースどこにあるんすか??
ソース見ろってことは俺悪い事してるのか

552 :デフォルトの名無しさん:03/07/31 18:10
>>551
インストール時にMFCのソースも入れましたか?

553 :デフォルトの名無しさん:03/07/31 18:22
あった!!!!けど、意味不明・・・。
BOOL Arrange(UINT nCode);
でエラーなんですけど、うぅ〜

554 :デフォルトの名無しさん:03/07/31 18:24
{ ASSERT(m_hImageList != NULL); return ImageList_AddIcon(m_hImageList, hIcon); }
こっちでした。あ”ぁ〜・・・・・・・

555 :デフォルトの名無しさん:03/07/31 18:25
>>553
それってCListCtrlじゃないの?

556 :デフォルトの名無しさん:03/07/31 18:26
>>554
Create()してないでしょ。予想通りだけど。

557 :デフォルトの名無しさん:03/07/31 18:35
笑っちゃうくらい凄いっすね。。。
まじ尊敬しちゃう・・・。ありがとうございました!!

558 :デフォルトの名無しさん:03/07/31 20:05
>556
>>appのInitInstanceの最後に
だからね。Create()が通ってるわけもない。

559 :デフォルトの名無しさん:03/07/31 20:17
え、普通にCreateしたらできましたよ。
てか、今度はプログラム自体のアイコンが変わっちまいました・・・。
もう一時間格闘したよ・・・

560 :デフォルトの名無しさん:03/07/31 22:16
すいません。メモリ確保について質問です。

int x = 160;
int y = 30000
int *image = (int *)malloc( sizeof(int) * x * y );

for(i = 0 ; i < x * y; i ++)
image[i] = 0;

としたのです。このとき、i = 0でなぜかエラーになってしまいます。
デバッグするとimage[0]にメモリが確保されていないように思います。

これはどういう対処をすればいいのでしょうか?

561 :デフォルトの名無しさん:03/07/31 22:21
>>560
callocを調べてみると幸せになれるかも。

562 :デフォルトの名無しさん:03/07/31 22:44

覗いたが価値!ウキウキしますよ♪

http://angely.h.fc2.com/page004.html

563 :デフォルトの名無しさん:03/08/01 00:01
>>558
意味わかんねー

564 :デフォルトの名無しさん:03/08/01 00:19
最小化をするとタスクバーにアイコン化されるようにする
コードを教えて下さい

565 :_:03/08/01 00:19
http://homepage.mac.com/hiroyuki44/hankaku09.html

566 :559:03/08/01 00:41
たのむ・・・。もう・・・つかれた・・・。お、おしえてくんなまし

567 :名無し@沢村:03/08/01 00:47
>>564
WS_EX_APPWINDOW

568 :デフォルトの名無しさん:03/08/01 01:04
プログラムが分かる先輩が辞めてしまいいきなりC言語を見てくれって言われたんで
すけど全く分かりません!

LIBCD.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です
byrhkprt.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exeの実行エラー

とエラーが発生するのですが何が原因なのでしょうか?
過去レスで
プロジェクトー設定-リンク で設定とあったのですがそのプロジェクトが見当たりま
せん。
使っているのはc++4.0です。
バージョンが古いのでしょうか?
教えてください。


569 :デフォルトの名無しさん:03/08/01 10:41
AdjustWindowRectで、メニューバーが複数行になる場合でも1行分のサイズしか返さないんですが
正しい値を得る方法はありませんか。
というかこれできないとこの関数の存在意義ないじゃないですか!おかしいですよ!


570 :559:03/08/01 12:35
アイコンのIDをIDRにしてた・・・。ごめん俺・・・俺・・・逝ってくるわ・・・

571 :デフォルトの名無しさん:03/08/01 17:33
激しく厨な質問で申し訳ないのですが、
Platform SDK でHeader: 〜〜.idl
と書かれているものはどのようにして呼び出せばいいのでしょうか?
どうやら、COMみたいなのですが、Prog id もCLSIDもわからず…


572 :571:03/08/01 20:08
詳しく言うとIStaticPortMappingインターフェイスを取得したいんですが…

573 :デフォルトの名無しさん:03/08/01 22:37
idl自体はmidlでコンパイルすればいいが、
PlatformSDKなら、コンパイル済みな、同名.hが付属しているはず。

574 :デフォルトの名無しさん:03/08/01 23:13
OfficeXPとかSleipnirみたいに、ツールバーとかメニューを
かっこよくするにはどうすれば??

575 :571:03/08/01 23:13
NATUPnP.hだけでなくNATUPnP.idlすらありませんでした(汗

576 :デフォルトの名無しさん:03/08/01 23:24
どこを探した?

577 :571:03/08/01 23:31
HDの中すべて探したんだけど(検索した)
SDKを落としなおすしか…

578 :デフォルトの名無しさん:03/08/01 23:37
ふーむ。

C:\Microsoft SDK\Include のディレクトリ

2001/05/30 18:20 67,477 natupnp.h
2001/06/03 22:49 10,086 natupnp.idl

579 :571:03/08/02 00:09
そもそもPlathome SDKがはいってなかった予感
インスコ中でし

580 :デフォルトの名無しさん:03/08/02 01:20
>>574
自作。

まあ、冗談はともかくとして、Sleipnirはこれ。
http://www.bcgsoft.com/

フリーでなんとかしたかったら、CodeGuruとかCodeProjectとかviksoe.dk
あたりから拾ってくるとか。

581 :山崎 渉:03/08/02 02:06
(^^)

582 :デフォルトの名無しさん:03/08/02 06:20
>>560
iはちゃんと定義されているのか?

583 :デフォルトの名無しさん:03/08/02 07:09
VS.NETのMFCで拡張子を追加したくて、ファイルの種類エディタを開きたいんですが
表示メニューにエディタがなくてできないんですがどうすればいい??

584 :デフォルトの名無しさん:03/08/02 11:33
VS.NETのWindows Installer作成機能で、
インストールの最後に「Windowsを再起動しますか(Y/N)」
というダイアログを出して再起動するようなものを作りたいんですが、
標準の機能だけでは無理なんでしょうか。

カスタム動作用のプログラムを作る必要がありますか。
でもその再起動用プログラムまでインストールする必要がありそう
なのが気になります。


585 :_:03/08/02 11:38
http://homepage.mac.com/hiroyuki44/

586 :無料動画直リン:03/08/02 11:38
http://homepage.mac.com/miku24/

587 :デフォルトの名無しさん:03/08/02 11:42
インストールが必要な再起動プログラムってどんなだよw

588 :デフォルトの名無しさん:03/08/02 14:22
>>587
おまえ、メジャーリーグ級の馬鹿だな。
カスタム動作用のdllもインストーラに含めるって意味に決まってるだろ。

589 :デフォルトの名無しさん:03/08/02 15:30
猫でもわかるプログラミングのSDK編
第6章 簡単なメニューのところでお聞きしたいことがあるのですが、

Visual C++ .NET だとリソースエディタを使ってメニューを作成すればいい
というのは分かったので、実際にメニューを作ったのですが、
メニューバーそのもののIDの設定の仕方が分かりません。
メニューバー上で右クリックしても設定できないようですし・・・。

それと、IDが設定できれば
myProg.lpszMenuName = "メニューバーそのもののID";
とすれば良いと認識しているのですが、間違っているでしょうか?

590 :583:03/08/02 15:33
めんどいから素直にMFC組みなおすわ

591 :デフォルトの名無しさん:03/08/02 15:52
>>589
Resource View内の項目を右クリープロパティ

592 :デフォルトの名無しさん:03/08/02 19:57
>>591
Menuが空じゃないと設定できなくない??

593 :デフォルトの名無しさん:03/08/02 22:35
>>584
この順序でやってみよう。
(1)本当にOSの再起動が必要かどうか見直す。
アプリの作りを変えられないだろうか。
(2)InstallShieldかなにかを買う予算がないか交渉してみる。
(3)あきらめられないかどうか検討する。

(4)もしも、どーーーーしてもVS.NETでやらなくてはならいならば…
まずWindows Installer SDK(Platform SDKの一部)のドキュメントを熟読する。
orcaとmsi編集ツールを駆使するのだ!


594 :593:03/08/02 22:39
>593に追加。
(4)は結局はmsiのプロパティをちょこっと変更すればいいだけなんだけど。
VisualStudioのビルドに組み込むのが大変だし管理しづらくなるので
全然お勧めしない。

595 :583:03/08/03 13:31
つりーで苦戦してる。MFCでエクスプローラースタイルでつくって
GetTreeCtrl()でアイテム追加してるんだけど、
ttp://aiton21.tripod.co.jp/a.JPG
みたいになって、TVI_ROOT指定でもこれの上にアイテムが追加できない。
このもう一個上にアイテム追加するにはどうすれば?

596 :595:03/08/03 14:33
上ってのは階層の話です。。。

597 :デフォルトの名無しさん:03/08/03 14:45
>>595
これは全部ルートになってる
先にルート作って、そのときに返ってくるHTREEITEMを使って子を作る

598 :595:03/08/03 15:01
TVS_LINESATROOT指定してたあああああああ!!
597さんまじすいません。。。
つくづく自分はばかだなぁと・・・・

599 :デフォルトの名無しさん:03/08/03 18:42
CString iconname;
Treename = "icon";
HICON iconname;
間接操作のレベルが異なるって出るんだけど、
どうすればCStringの文字列でHICONを作れる??

600 :デフォルトの名無しさん:03/08/03 18:42
あれ。。。
CString iconname;
iconname = "icon";
HICON iconname;
だよ

601 :デフォルトの名無しさん:03/08/03 18:50
きのせいだよ

602 :デフォルトの名無しさん:03/08/03 19:17
もうめちゃくちゃだな

603 :584:03/08/03 22:29
>>593
解説ありがとうございます。
(1)は仕組み的にだめだったので、いまは(3)でやっています。
#やっているというかなにもしていないというかw

VS.NETのインストーラ作成機能はしょぼいんですね。
SDKのドキュメントにはいろいろ書いてあるっぽいのに
なぜできないんだろうと思っていました。

(4)はおすすめでないとのことなので、(3)を検討してみようと思います。
しかし8万か22万ですか...。
とはいえ、SDKのドキュメントを理解するのは大変そうですし。


604 :デフォルトの名無しさん:03/08/04 18:26
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999294620&res=81
に貼ってあるリングバッファのソースなのですが、
何処が悪くてコンパイルが通らないのか皆目検討がつきません。
どなたかご教授お願いします。

605 :デフォルトの名無しさん:03/08/04 18:49
>>604に書いてある質問なのですが、
どういうエラーが出てコンパイルが通らないのか皆目検討がつきません。
どなたかご教授お願いします。

606 :デフォルトの名無しさん:03/08/05 08:15
>>605
コンパイルとおったのですか?
下のはVCが吐いたエラーログです。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/999294620_82/CRINGBUFF.plg

ちなみにコードは書くだけかいてあるんですが、何で見っけてくれないのでしょう??
環境はVC6sp5です。どなたかご存知ありませんか??

607 :デフォルトの名無しさん:03/08/05 11:28
>>606
簡単に言うと、おまいが test.cpp から呼び出した

int CRingBuff::Out
bool CRingBuff::In
CRingBuff::CRingBuff

は実体がねぇぞってコンパイラ様がお怒りに
なってるってこった。


608 :604&606:03/08/05 19:07
書いてあるのだけど、何で見つけてくれないんだろ・・・。
うーん。
もうちょっと考えてみます。
#今見て気づいたけど、エラーログとIDEのエラー表示が若干違うな・・・。

>605&607
レスThx!

609 :デフォルトの名無しさん:03/08/07 00:49
もまいら教えてくさい!!
VS6.0なのですが、上書きのときのエディタの
キャレットが通常のときと一緒なのですがVS.NETの
ように上書きのとき幅広にしてわかるようにできないものでしょうか?

610 :デフォルトの名無しさん:03/08/07 01:52
DLLプロジェクトからLIBファイルを作成するにはどう
すればいいのでしょうか?


611 :デフォルトの名無しさん:03/08/07 03:48
Cを知らないとC++を習得するのは無理ですか?

612 :デフォルトの名無しさん:03/08/07 03:52
>>611
んなこたぁない。

613 :_:03/08/07 04:01
http://homepage.mac.com/hiroyuki45

614 :デフォルトの名無しさん:03/08/07 10:40
>>611
C++はCの拡張規格であるから、
C++でCの基本的な書式や関数はだいたいそのまま使える。
だから書式がC++より単純なCの方からやり始めた方が、
プログラミングの勉強がしやすい。

いきなりクラスとかコンストラクタとか聞かれてもわけ分からんでしょ?


615 :デフォルトの名無しさん:03/08/07 10:59
いきなりポインタとか聞かれてもわけ分からんと思うが

616 :デフォルトの名無しさん:03/08/07 11:28
なんで初心者用のguiを主体にしたC++のプログラム勉強のページとか本とかないんですか?(あってもちょっとしか載ってない)
魔法の文いっぱいでも良いから、誰か作ってよ!
exeファイルにならないとおもしろくないよぉ!

617 :デフォルトの名無しさん:03/08/07 11:46
>>616
面倒でも最初はコンソールで
しこしこやったほうがいいだろうねぇ

どうしてもやりたいなら簡単なダイアログベースで
やればいいと思われ。

618 :デフォルトの名無しさん:03/08/07 11:52
そこでBCBなんですっ!!
GUI主体のC++だから初心者でも安心
MFCと同じ、なんて考えてる人は一度触ってごらんよ
世界が変わるよ

619 :デフォルトの名無しさん:03/08/07 11:58
>>616
そりゃ、VC++ は基本的に“GUI を主体にしていない”からですよ。

620 :デフォルトの名無しさん:03/08/07 12:09
ウインドウズ同士の(移動、サイズ変更時の)当たり判定って簡単にやれる方法(APIとかで・・・)ないっすか?
一応チャイルドウインドウ限定ということで・・・。

spy++見ても、あるウインドウがWM_SIZINGとか来てるときに他のウインドウに重なっても、
重なられたウインドウってメッセージとかきてないみたいなんですよね。

やはり古典的な方法でやるしかないのでしょうか?

621 :620:03/08/07 12:10
すいません、win32apiのみで、MFCは使用してないっす。

622 :デフォルトの名無しさん:03/08/07 13:10
>>610
libファイルってDLLと同じ場所に勝手にできるんじゃなかたっけ?

>>620
SDK32:重なったウィンドウの表示されている部分を調べる
ttp://support.microsoft.com/default.aspx?scid=kb;ja;75236

「古典的な方法」って IntersectRect()を使うことかな?

623 :620:03/08/07 13:44
>>622
ありがとうっす。なんとかなるかな?

古典的な方法・・・ゲームみたいにそれぞれ個別に自前でチェック・・・。

624 :620:03/08/07 14:25
>>622
なんとかうまくいきそうです。ほんとありがとうございました。


625 :610:03/08/07 16:12
>>622
>libファイルってDLLと同じ場所に勝手にできるんじゃなかたっけ?

すんません。クラスをエクスポートしていませんでした。
全く何もエクスポートしないとlibはできないんですね。


626 :デフォルトの名無しさん:03/08/07 16:40
初心者用HP参考にしてなんとかやってる者でつが、
DirectInputの初期化で手間どってます
// DirectInput の初期化
ShowWindow(SW_SHOW);
167res = DirectInputCreate(AfxGetInstanceHandle(), DIRECTINPUT_VERSION, &m_pDInput, NULL);
if( res != DI_OK )
{
170res = DirectInputCreate( AfxGetInstanceHandle(), 0x0300, &m_pDInput, NULL);
if( res != DI_OK )return 1;
}
res = m_pDInput->CreateDevice( GUID_SysKeyboard, &m_pDInputDev, NULL);
res = m_pDInputDev->SetDataFormat(&c_dfDIKeyboard);
res = m_pDInputDev->SetCooperativeLevel( AfxGetMainWnd()->m_hWnd, DISCL_NONEXCLUSIVE | DISCL_FOREGROUND);
m_pDInputDev->Acquire();
上をビルトすると
c:\Download\Lv2_Src\MainFrm.cpp(167): error C2065: 'DirectInputCreate' : 定義されていない識別子です。
c:\Download\Lv2_Src\MainFrm.cpp(167): error C2440: '=' : ''unknown-type'' から 'HRESULT' に変換できません。
c:\Download\Lv2_Src\MainFrm.cpp(170): error C2440: '=' : ''unknown-type'' から 'HRESULT' に変換できません。
こんなエラーが出てきます。解決策教えて下され

627 :デフォルトの名無しさん:03/08/07 20:26
>>626
鬱だ氏のう DirectX (Part 9)
http://pc2.2ch.net/test/read.cgi/tech/1054553472/


628 :悩み常駐:03/08/07 20:43
winapiで、フォーカスのない時でも、キーイベントを監視したい、つまり、
常駐プロがラムを作成したい、誰か、教えてください。help help help


629 :デフォルトの名無しさん:03/08/07 21:04
>>628
> 常駐プロがラムを作成したい

ごめん、少しワロタ

630 :フック船長:03/08/07 21:53
>>628
SetWindowsHookとかそのあたりを使おう。

631 :デフォルトの名無しさん:03/08/08 06:36
何気にMSDNライブラリを見るやつでwebみたらタブブラワザなんじゃ、、

632 :デフォルトの名無しさん:03/08/08 12:37

外のフォルダにあるアイコンファイルを、現在のプロジェクトに
追加したいのですが、リソースビューで
「リソースの追加」→「インポート」として、他フォルダのアイコンファイルを
選択して「開く」としても何も起こらないのです。

「リソースの追加」の「インポート」ってどの様にして使うのですか?
全く何も起こらないのですが


633 :デフォルトの名無しさん:03/08/08 13:28
>>632
パスに日本語を含むフォルダからはリソースがインポートできない。
VS.NETのバグと思われ。これVS.NET2003では直ってますか?

634 :デフォルトの名無しさん:03/08/08 14:04
>633
どうもありがとうございます。
しかしVC.NETのバグだったとは・・・。
そういうバグ情報ってどこから仕入れているのですか?


635 :デフォルトの名無しさん:03/08/09 06:21
SDIでリストコントロールとかツリーコントロールを作って、OnCrickのメッセージを
拾い選択されているアイテムの情報を得ようとしても、一回目のクリックは前回クリック
した位置のアイテム情報を拾ってしまうんですが、これを回避する手段はありますか?
UpdateDataをしてみたり2回GetSelectedItemをしてみても最初のクリックで拾うのは
無効なデータ(戻り値が0x00000000)になってしまいます

VC6SP5 Win98SEです。

636 :デフォルトの名無しさん:03/08/09 10:53
>>635
>一回目のクリックは前回クリック した位置のアイテム情報を
一回目にクリックしたのになんで「前回」があるの?

637 :デフォルトの名無しさん:03/08/09 17:01
if(前回のアイテム == NULL)
return;

みたいなのではダメなのか?


638 :デフォルトの名無しさん:03/08/09 17:05
と思ったらなんか勘違いしてた
636同様よく分からん


639 :635:03/08/09 19:42
>一回目にクリックしたのになんで「前回」があるの?
分かりづらくてすみません。一回目では前回の情報はありませんから
必ず失敗するんです。

クリック位置 : GetSelectedItemの戻り値
  一個目  :  失敗
  二個目  :  一個目のハンドル
  三個目  :  二個目のハンドル
  四個目  :  三個目のハンドル
    ・           ・
    ・           ・
という状況なんです。ちなみに同じアイテムを二回クリックすれば
そのアイテムのハンドルは得られるんですが、そんなことする必要の
あるソフトなんて見たことないですし・・・

640 :デフォルトの名無しさん:03/08/09 19:57
あ、わかった。
OnLbuttonDown(){
i = GetSelectedItem()
DefWindowProc()
}
みたいなことになってるでしょ。

641 :635:03/08/09 20:41
>>640
なってます。微妙に違いますが↓

OnClickTree(){
  m_hSelectedTreeItem=m_cTree.GetSelectedItem();
  TRACE(HTREEITEM[%08X]が選択されました\n",m_hSelectedTreeItem);

ってなってます。ほかにどうすればいいのか知らないので・・・

642 :デフォルトの名無しさん:03/08/09 20:58
HitTestとGetCursorPos使って判定してくらはい。
http://www.codeguru.com/forum/printthread.php?threadid=231232

643 :デフォルトの名無しさん:03/08/09 21:23
TVN_SELCHANGEDじゃあかんのか

644 :635:03/08/09 21:33
>>642
参考にしてみたところ嘘みたいに動くようになりますた。ありがd

645 :635:03/08/09 21:37
う゛っSELCHENGEDならGeteSelectedItemでも出来るのね・・・

646 :デフォルトの名無しさん:03/08/10 11:43
ソースを眺めてると標準ライブラリのstringでなくCStringを使ってる香具師が多いようですがCStringがstringより優れてる点ってどの辺りでしょうか

647 :デフォルトの名無しさん:03/08/10 12:08
MFCがインターフェースとしてCStringを使っているから。
CString::Formatがあるから。

648 :デフォルトの名無しさん:03/08/10 12:29
>>647
ありがと

649 :名無し@沢村:03/08/10 13:35
>>646
マルチバイト文字に対応している。

650 :デフォルトの名無しさん:03/08/10 15:38
VC++でリリースビルドした実行ファイルにプロジェクトファイルが保存されていた
フォルダ名が残っていますが消せますか?

それともみなさんあまりそういうの気にせずに配布してます?

651 :デフォルトの名無しさん:03/08/10 15:43
>>646
参照カウントを使用していて代入やパラメータ渡しが高速だから

652 :デフォルトの名無しさん:03/08/10 15:57
>>650 VC6で?ホントにリリースビルドか?

653 :デフォルトの名無しさん:03/08/10 16:43
>>652
2003です
実行ファイルの場所がReleaseフォルダなので大丈夫じゃないかと思います

ちょっと訂正
pdbファイルがフルパスで記述されてます


654 :デフォルトの名無しさん:03/08/10 17:54
>>653
Releaseビルドの場合もデフォルトでは/PDBオプションが付くようだ。
はずしかたは/PDBオプションのヘルプで。

655 :デフォルトの名無しさん:03/08/10 18:17
>>654
構成プロパティ→リンカ→デバッグ→デバッグ情報の生成
をいいえにすることで解決しました
ありがとうございました

656 :646:03/08/10 18:45
>>649>>651
CStringも結構便利なのね。

657 :デフォルトの名無しさん:03/08/10 21:22
>MFCがインターフェースとしてCStringを使っているから。
これがでかいんじゃないかな。
wstring使っててもそれだけじゃすまないし。

658 :デフォルトの名無しさん:03/08/10 21:30
>>655
これってプロジェクト毎に設定するしか方法ないのかな?
すべてのプロジェクトでReleaseビルドはデバッグ情報の生成を切る
オプションってないの?

659 :デフォルトの名無しさん:03/08/11 03:39
シンボルファイルってどう使うんですか?
DirectX9.0bのシンボルとかDLしたんですが、使い道がサパーリ(;´Д`)

660 :デフォルトの名無しさん:03/08/11 09:32
下記のようなメッセージが出るのですが原因がわかず困っています。
どなたか分かる方はいらっしゃいますか?

Warning: constructing COleException, scode = DISP_E_MEMBERNOTFOUND ($80020003).
例外処理 (初回) は RecTest.exe (KERNEL32.DLL) にあります: 0xE06D7363: Microsoft C++ Exception。

661 :_:03/08/11 09:44
http://homepage.mac.com/hiroyuki45/hankaku05.html

662 :恵比寿帝冥:03/08/11 12:59
ここ以外に良い掲示板があったら教えてください。

663 :デフォルトの名無しさん:03/08/11 13:23
Visual C++.netのいい参考書orサイトってありますか?

664 :デフォルトの名無しさん:03/08/11 13:26
>>662
マルチ

665 :デフォルトの名無しさん:03/08/11 17:39
タスクトレイにアイコンを表示してメニューを表示するところまではできたんですが
そのメニューの項目をクリックしないと消えてくれません。

えっと、やっぱ他の別のウィンドウとかをクリックして
メニューがアクティブでなくなったら消えてほしいんですが
いつまでもしつこく出ています。

どーすれば、消えてくれるんでしょうか?

666 :デフォルトの名無しさん:03/08/11 18:46
>>665
SetForegroundWindow(hWnd);
TrackPopupMenu(...);
PostMessage(hWnd, WM_NULL, 0, 0);

ってな話だったと思う。

ttp://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/resources/menus/menureference/menufunctions/trackpopupmenu.asp

これのRemarksとShow Exampleを見るべし。


667 :デフォルトの名無しさん:03/08/11 22:50
XMLの出力をしたいんですが、普通にファイル出力で出力してくしか分からないんですが、
何かいい方法ありますか?

668 :デフォルトの名無しさん:03/08/11 23:42
とりあえず、その分で本当に人に意味が伝わるか
自分で確認してからもう一度書いておくれやす。

何に対してどのようにしたいからXMLを出力したい?

669 :デフォルトの名無しさん:03/08/11 23:48
テキストエディタをつくりたいのですがエディットボックスコントロールでは
最大32kbまでの文字列しかあつかえないそうですが大きなサイズの文章編集
が出来るものをつくるにはどうすればいいのですか

670 :デフォルトの名無しさん:03/08/11 23:54
>>669
RichEditBoxだったかな・・・そんなのがあるよ

671 :デフォルトの名無しさん:03/08/12 00:06
>670
ありがとうございます

助かります

672 :デフォルトの名無しさん:03/08/12 01:16
>テキストエディタをつくりたい

もし、秀丸とかその系統のものを目指しているなら
自作が早道。RichEditCtrl はとかく使いにくい。


673 :665:03/08/12 11:08
>>666
SetForegroundWindow(hWnd);
こいつがなかったせいみたいでした。
つけたらOKでした。
ありがとうございました。

674 :デフォルトの名無しさん:03/08/12 11:17
VC++からDBの操作についてなのですが、
CDaoRecordsetの派生クラスをつくりクラスウィザードで
複数のテーブルを選択して派生クラスのメンバ変数として
選択した複数のテーブルがメンバ変数に登録されたのですが、
1つのテーブルだけを処理したいのですが、可能なのでしょうか?
たとえば下記のようなコードを実行すると意味のわからない
レコード数が戻ってきてしまいます。
クラスを作る段階で選択しているテーブルが1つだけなら
問題なくレコード数なのどは参照できるのですが・・・

----ここから----

CRecSet MyRecSet;
MyRecSet.Open();
MyRecSet.MoveLast();
long RC = MyRecSet.GetRecordCount(); //ここに意味不明な数値
MyRecSet.Close();


675 :デフォルトの名無しさん:03/08/12 11:59
VC.NETなんですけどダイアログにコントロールを追加するには
どうすればいいんでしょうか?

676 :恵比寿帝冥:03/08/12 12:08
662の結果です。

----------------------------------------
VC超初心者会議室
http://www.mtakahashi.com/bbs.htm
----------------------------------------
VC ラウンジ
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi
----------------------------------------
Visual C++ Q & A 掲示板
http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi
----------------------------------------
2チャンネル
http://www.2ch.net/
----------------------------------------
VC++に関する質問・回答BBS
http://www.net24.ne.jp/~kenji/bbs/wforum.cgi
----------------------------------------
プログラミング質問掲示板
http://cgi2.html.ne.jp/~piro/bbs/wforum.cgi?page=0&mode
----------------------------------------
C言語関係掲示板
http://www2.realint.com/cgi-bin/tbbs.cgi?pointc

677 :デフォルトの名無しさん:03/08/12 13:45
独自のライブラリを作ってそれに名前空間名Commonを
つけて、それをつかうために

using namespace Common;

と書いたのですが、

`global namespace'' のメンバではありません。

と叱られてコンパイルできません。
Common::function();
と完全修飾すれば通るのですが...

なにか原因は考えられるでしょうか?


678 :677:03/08/12 15:50
↑C++相談室で教えてもらいますた。
ありがとうございますた。。。

679 :デフォルトの名無しさん:03/08/12 17:34
新規作成(Win32プロジェクト)のコードをそのままビルドしようとすると

Debugだと
project1 error LNK2001: 外部シンボル "__RTC_InitBase" は未解決です。
project1 error LNK2001: 外部シンボル "__RTC_Shutdown" は未解決です。
project1 error LNK2019: 未解決の外部シンボル @_RTC_CheckStackVars@8 が関数 _WinMain@16 で参照されました。
project1 error LNK2019: 未解決の外部シンボル __RTC_CheckEsp が関数 _WinMain@16 で参照されました。
project1 fatal error LNK1120: 外部参照 4 が未解決です。

Releaseだと
project1 error LNK2019: 未解決の外部シンボル @__security_check_cookie@4 が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
project1 error LNK2019: 未解決の外部シンボル ___security_cookie が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
project1 fatal error LNK1120: 外部参照 2 が未解決です。

というエラーが出るのですが何が原因でしょうか?


環境/Win2000/VC++.NET

680 :デフォルトの名無しさん:03/08/12 21:48
VC++.NETなんですけど、
WM_CLOSEメッセージが来た時に、MessageBoxを出して終了するかしないかを決定するのを組んだのですが、
メッセージボックスが表示されません。Altキーを押すと出てくるんですが。。
何が原因なんでしょうか?
以下がその部分です。よろしくお願い致します。

case WM_CLOSE:
int nResult;
nResult = MessageBox(hWnd, "本当に終了してもよろしいですか?", "確認",
MB_YESNO | MB_ICONQUESTION | MB_TOPMOST | MB_SETFOREGROUND);
if(nResult == IDYES) DestroyWindow(hWnd);
break;

681 :デフォルトの名無しさん:03/08/13 01:20
つまらないことですがお願いいたします。
VC++のエディタでクラスのコンストラクタが自動メンバ表示
されないのですが(デストラクタはされる)何か理由が
あるのでしょうか?

682 :デフォルトの名無しさん:03/08/13 01:38
直接呼べないコンストラクタを補完して何かうれしいのかね?

683 :681:03/08/13 01:48
>>682
でもデストラクタは呼べるのですが。

684 :デフォルトの名無しさん:03/08/13 01:55
たしかに、デストラクタは明示的に実行できるね。
でも、それは反論にはなっていないよ。

685 :681:03/08/13 02:18
もう一回コンストラクタ、デストラクタから
勉強しなおしてきます。。。


686 :デフォルトの名無しさん:03/08/13 12:15
デストラクタは明示的に呼べるが、
コンストラクタは明示的に呼べない。
従って、コンストラクタを補完する必要はない。

687 :デフォルトの名無しさん:03/08/13 15:03
VC++6(sp5)でstlport4.5.3を使い始めたんですが、
#include <iostream>
#include <deque>
using namespace std;

上記のように宣言すると、iostreamでライブラリの競合エラーが出て使えません。
これを回避する方法ご存知でしたら教えていただけないでしょうか。

688 :デフォルトの名無しさん:03/08/13 21:55
>>687
確かstlportの優先順位をageれば良かった気が…

689 :デフォルトの名無しさん:03/08/14 06:41
C++って、Cより++(チョメチョメ)な分エロいんですか?
どんなプレイのことをC++(シーチョメチョメ)って呼ぶんですか?
それと昔、棒ランド(某ランド?)っていうヤバい会社もC++してたんですか?
MSのはVisual的にスゴいのか・・・(;´Д`)ハァハァ

690 :687:03/08/14 10:57
>>688
解決しました。ありがとうございました。


691 :デフォルトの名無しさん:03/08/14 11:07
C言語なら俺に聞け!スレから来たんですが、VCでのDLLの
作り方がよく わからず、困っております。どなたかわかりやすく
教えてください。 それか、ソースを晒すのでDLLにしてください。
おねがいします。(サイトみて手順通りやってみたけどできない
泣)

692 :デフォルトの名無しさん:03/08/14 11:14
ソースだけ晒しても無駄ですんで、
どうできなかったのか具体的に説明してください。


693 :691:03/08/14 11:25
http://www.angel.ne.jp/~mike/vb_dll/index.html
このサイトの通りやったんですけど、なんか、関数名(?)みたいな
所でエラーが出てしまい、また、defファイルの加え方もよくわかり
ません。教えてください。(Cはある程度使えますが、VCは本当に
初心者です)

694 :デフォルトの名無しさん:03/08/14 12:05
>>693
http://www.athomejp.com/goldfish/

http://www.athomejp.com/goldfish/mfc/dll/csample.html
辺りを参照してみてください。
>>693のサイトより単純明快だと思いますんで。

695 :デフォルトの名無しさん:03/08/14 15:05
VC++ 6.0でクラスライブラリを作って、そのヘッダやライブラリファイル
が入っているフォルダをオプションのディレクトリのところに登録したんだが、
いざそのクラスのヘッダファイルをインクルードしてもビルドはちゃんと
できるのにメンバがMFCやWin32の関数みたいにエディタのIntellisence機能で出てきて
くれないんだけど、どうしたらいいんでつか?
やっぱりその都度、プロジェクトにソースやヘッダファイルを追加しないとダメなんですか?

696 :デフォルトの名無しさん:03/08/14 15:47
ヘッダーだけプロジェクトに参加させればえぇで。

697 :デフォルトの名無しさん:03/08/14 17:02
昔にCでDOSで動くやつを書いていたんですけど、さすがにGUIアプリケーション作りたくなってVCを使ってみたいと思いました。この場合、開発過程の習得は簡単なのでしょうか?
不安なのはCとC++で文法がどれぐらい違うのかということです。

698 :デフォルトの名無しさん:03/08/14 17:19
Console ApplicationをMFCサポートで作成しています。

プログラム実行中に、右上の×ボタンを押下すると強制終了できますが、
強制終了できないようにすることは可能でしょうか?


699 :デフォルトの名無しさん:03/08/14 17:32
>>697
CとC++の違いっつうと、クラスとオーバーロードかね。(ほかにもあるけど)
もっともそれよりもWindowsアプリの場合は結構めんどくさい事しなきゃならんから
まずC++を勉強するのか先か?
猫でも分かるプログラミングでも読んでみ?
ぐぐればすぐ出る。

700 :デフォルトの名無しさん:03/08/14 18:06
>>698
永遠に止まらないプログラムを書きたいのですね?

701 :デフォルトの名無しさん:03/08/14 18:09
>>700
途中で窓を閉めてしまうとエラーがでてしまいます。
なので、処理終了後には自動で窓が閉めれるといいのですが・・・

702 :デフォルトの名無しさん:03/08/14 18:47
ソースを選択してctrlかシフトを押しとどれかのキーを押すと自動にソースにあった
インデントが入る機能があったと思うんだが、どうやるんだっけ?

703 :695:03/08/14 18:52
>>696
レスさんくすです。

Win32API関数とかが、何もしなくてもIntellisenceが起動するのはVC++内部の仕様なんですかね?

704 :デフォルトの名無しさん:03/08/14 18:56
バグです

705 :デフォルトの名無しさん:03/08/14 19:21
>>702
Ctrl+K→Ctrl+F (VC++.NET)
Alt+F8 (VC6)

706 :デフォルトの名無しさん:03/08/14 20:02
>>697
違いというよりも追加要素といった方がいいな。
とりあえず、クラスの構造や機能を理解して、
さらにクラスの継承、コンストラクタ・デストラクタ、
オーバーロード、オーバーライド、エラー処理を
最低限抑えておくとVC++に移行しやすい。
テンプレートもやっておくと便利だが、
やらなくてもとりあえずVC++は使えるので、
VC++を使いながら勉強しても特に問題ない。

漏れはC→Java→VC++と変則型だったので、
VC++やりながらC++も勉強した。
まぁ、JavaとC++は内部処理的にはともかく書式は似ているので、
それほど苦にはならなかったけど。

707 :デフォルトの名無しさん:03/08/14 20:03
>>705
あんがと
Altだったか。

708 :デフォルトの名無しさん:03/08/15 01:42
Visual C++で

mylib.h
// mylib_tの説明
typedef struct mylib_t
{
int value; // valueの説明
} mylib_t;

// mylib_initの説明
void mylib_init(mylib_t *self);

mylib.c
#include "mylib.h"
#include <memory.h>

void mylib_init(mylib_t *self)
{
memset(self, 0, sizeof(*self));
}

というソースをビルドしてmylib.libを作ります。

次に別プロジェクトのapp.cからmylib.hをインクルードして
関数・構造体をインテリセンスで列挙したところ
コメント部分がチップヘルプで表示されません。
mylib.h, mylib.cをapp.cと同じプロジェクトに移動すると表示されます。
ソースを提供しないでヘッダとライブラリファイルだけでリリースして
なおかつインテリセンスのチップヘルプでのコメント表示を有効にするには
どうすればいいのでしょうか。mylib.bscをlibと同じディレクトリに生成しても表示されませんでした。

709 :デフォルトの名無しさん:03/08/15 03:33
>>708よ。VisualC++スレで
>Visual C++で
は、ないだろ。

710 :デフォルトの名無しさん:03/08/15 13:22
>>708
不可能。

711 :デフォルトの名無しさん:03/08/15 14:03
質問お願いいたします。
TRACE0マクロでデバッグウィンドウに文字を出力する方法を
最近覚えたのですが、例えばintとかに入っている
数値を出力する場合も文字に変換しないといけないのでしょうか?
(そのまま出力すると数値でなく文字化けみたいになるのですが)

712 :デフォルトの名無しさん:03/08/15 14:06
// TRACE の例
int i = 1;
char sz[] = "one";
TRACE( "Integer = %d, String = %s\n", i, sz );


713 :711:03/08/15 14:12
>>712
できました!
サンクスコです!!

714 :691:03/08/15 14:49
どうにか作ってみたんですが、VBから呼び出せないようです。
書き方自体が根本的に間違っているかもしれないので、
どなたか見てやってください。
ちなみに、外から呼び出したいのはdoublemulapi関数だけで、他の関数は
DLLの中でdoublemulapi関数から呼ばれるだけの関数です。
http://www12.ocn.ne.jp/~mygrid/DOUBLEMUL.TXT

715 :山崎 渉:03/08/15 15:10
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

716 :デフォルトの名無しさん:03/08/15 15:23
extern "C"が要らなかったっけ?

717 :691:03/08/15 15:56
>>716
すいません。本当に手探りなので、どこに付けるのか
教えていただけるとうれしいです。
(ちなみに、return a+b;だけの関数を備えたDLLの場合
は今の書き方で出来ました。関数1個だけの場合)


718 :デフォルトの名無しさん:03/08/15 17:07
ファイルを実行したら、DAMAGE: after normal block(#40)というのが出てきました。
これは何なんでしょうか?

719 :デフォルトの名無しさん:03/08/15 19:40
板違いの指摘を受け、パソコン初心者板から移動してきました。

クライアント領域にビットマップを表示したいのですが、
メモリデバイスコンテキストに割り当てたビットマップクラスオブジェクトは
表示終了後に必ず解放しなければなりませんか?
例えば以下のようなコードにおいて、最後の::SelectObject呼び出しは必須ですか?
これを行わないで関数が終了した場合、
pMDCはスコープを失ってDeleteされた結果として
何らかの深刻なエラーを引き起こしますか?
もし起こすとしたら、なぜ起こしますか?

{
 CBitmap Bitmap,*pDefBitmap;
 CDC *pMDC;
 pMDC = new CDC;
 // この辺りで::LoadBitmap
 pMDC->CreateCompatibleDC(pDC);
 pDefBitmap = pMDC->SelectObject(&Bitmap);
 // この辺りで::BitBlt
 pMDC->SelectObject(pDefBitmap); // ←ココ
}

CPenクラスやCBrushクラスも同様に解放を行わないと実行時エラーが起きるようですが、
どうして起こるのか原理がサポーリです。;_;
高名な先輩プログラマの皆様、よろしくおねてぃ。

720 :デフォルトの名無しさん:03/08/15 20:26
というか解放して問題が出なければとりあえず解放しといた方が良いと思うんだが

721 :デフォルトの名無しさん:03/08/15 21:30
それいぜんに、そのコードでは、pMDCとかがリークしているわけだが。

722 :デフォルトの名無しさん:03/08/15 21:44
>>721
pMDCは関数の終了とともにスコープを失って
自動的にデリート(デストラクタ呼び出し)されませんか?

では↓

{
 CBitmap Bitmap,*pDefBitmap;
 CDC MDC;
 // この辺りで::LoadBitmap
 MDC.CreateCompatibleDC(pDC);
 pDefBitmap = MDC.SelectObject(&Bitmap);
 // この辺りで::BitBlt
 MDC.SelectObject(pDefBitmap); // ←ココ
}

MDCを静的に確保してみましたが、これならどうでしょう?

723 :デフォルトの名無しさん:03/08/15 21:57
>>722
(´-`).。oO(pDefBitmapってちゃんとオブジェクトを指してんのか?)

724 :デフォルトの名無しさん:03/08/15 22:21
>722
されない。断じてされない。スコープがはずれるのは、ポインタそれ自体で
あって、ポインタの指し示す先にあるオブジェクトではない。
struct test{ ~test(){printf("d");} };というクラスでもでっち上げて試してみたらどう?

さてSelectObjectだが。
・必須です。
・起こします。
・MSDNのDeleteObjectのRemarkには、"Do not delete a drawing object (pen or brush)
while it is still selected into a DC."とあります。そのようなことを前提にAPIが
設計されていないから、でしょう。失敗すれば、結果はリソースリークです。

725 :719=722:03/08/15 22:35
>>724
>スコープがはずれるのは、ポインタそれ自体であって、
>ポインタの指し示す先にあるオブジェクトではない。

そうでした・・・。m(__)m
今再度調べてみたところ、
::SelectObjectは解放されたオブジェクト(今まで参照していたオブジェクト)を
デストラクタを呼び出してdeleteする機能があるので、
明示的には::DeleteObjectを呼ばなくていいみたいですね。
そういう意味でも、最後の::SelectObject呼び出しは必須だということで・・・
むぅ、動作が難解だ・・・。;_;

回答どもでした。また何かありましたらよろしくお願いいたします。m(__)m

726 :719=722:03/08/15 22:37
>>723
 pDefBitmap = pMDC->SelectObject(&Bitmap);

これは正当なようです。
とりあえず、コンパイラは文句いってきません。(笑

727 :719=722:03/08/15 22:50
>デストラクタを呼び出してdeleteする機能があるので、
>明示的には::DeleteObjectを呼ばなくていいみたいですね。

・・・と思ったら、やっぱりちゃんとdelete pMDC;ってやんないとダメみたいだわ。(笑

728 :デフォルトの名無しさん:03/08/16 00:19
VC6ので、ファイルをオープンする時に
const char* じゃなくて stringって使えますでしょうか?

#include <fstream>
...略...
string FNAME = "c:\test.txt";
ifstream file_in;
file_in.open(FNAME);

みたいにしたいのです。

729 :デフォルトの名無しさん:03/08/16 00:43
>>728
やってみろよ。

730 :デフォルトの名無しさん:03/08/16 02:40
新規作成(Win32プロジェクト)のコードをそのままビルドしようとすると

Debugだと
project1 error LNK2001: 外部シンボル "__RTC_InitBase" は未解決です。
project1 error LNK2001: 外部シンボル "__RTC_Shutdown" は未解決です。
project1 error LNK2019: 未解決の外部シンボル @_RTC_CheckStackVars@8 が関数 _WinMain@16 で参照されました。
project1 error LNK2019: 未解決の外部シンボル __RTC_CheckEsp が関数 _WinMain@16 で参照されました。
project1 fatal error LNK1120: 外部参照 4 が未解決です。

Releaseだと
project1 error LNK2019: 未解決の外部シンボル @__security_check_cookie@4 が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
project1 error LNK2019: 未解決の外部シンボル ___security_cookie が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
project1 fatal error LNK1120: 外部参照 2 が未解決です。

というエラーが出るのですが何が原因でしょうか?
また、"__RTC_InitBase"や"__RTC_Shutdown"などは何なのですか?
ぐぐってもダメでしたし、MSDNにも見つかりませんでした。

よろしくおねがいします。
(環境/Win2000/VC++.NET)


731 :デフォルトの名無しさん:03/08/16 03:08
>>730
ヘッダファイルに付属していたであろう
*.lib をプロジェクトにぶちこめ!

732 :728:03/08/16 11:36
c_str使ったりいろいろ試したんですが無理でした。
素直にconst char* でやります。

733 :デフォルトの名無しさん:03/08/16 13:15
>>732
string.begin()


734 :デフォルトの名無しさん:03/08/16 13:16
あるいはMFCならCStringを使うといい


735 :691:03/08/16 21:10
>>714
どうやら、戻り値がないとDLLはだめ?なのかIntで戻り値を返す
ようにしたら普通に呼び出せるようになりました。(書き方は変えました
が)この事は常識なのでしょうか?それとも、やはり私の書き方がおかし
いのでしょうか。まぁ、とりあえずできたのでよしとします。


736 :デフォルトの名無しさん:03/08/16 22:14

コーポレイトソフトウェアていうサポセンの馬鹿が
PGに喧嘩売ってます。

http://money.2ch.net/test/read.cgi/haken/1057486349/287

腹立ちました。
みんなでやっつけにいこう。

737 :べんとらべんとらすぺーすぴーぽー:03/08/17 21:25
質問させてください。m(__)m
これはCPenオブジェクトの配列にそれぞれ別個のPen設定を保存して、
それを切り替えながら文字や線を描画する処理です。

void PenTest(CDC *pDC){
  const int iMaxPen = 5;
  CPen *myPen[iMaxPen],*pOldPen;
  pOldPen = (CPen*) pDC->SelectStockObject(BLACK_PEN);  // デフォルト設定を保持
  for (int i=0; i<iMaxPen; i++){
    myPen[i] = new CPen;
    // ::CreatePenでmyPen[]の各要素に別個のPen設定を保存する
  }
  // 適宜Penを切り替えながら描画する何らかの処理
  // pDCをデフォルト設定に復帰した後、myPen[]を削除
  pDC->SelectObject(pOldPen);
  for (i=0; i<iMaxPen; i++){
    myPen[i]->DeleteObject();
  }
  delete [] myPen;  // ← ココ
}

描画が終わった後、メモリ領域をdeleteしようとすると実行時エラーが起きます。
なぜなんでしょう?;_; ちなみに、
  for (i=0; i<iMaxPen; i++){
    myPen[i]->DeleteObject();
    delete myPen[i];  // ← ココ
  }
のように書くとエラーはおこりません・・・。
むぅ、どちらも配列を削除していることには違いないんだけど・・・。

738 :デフォルトの名無しさん:03/08/17 21:55
>むぅ、どちらも配列を削除していることには違いないんだけど・・・。

char *p[2]; p[0]=malloc(10); p[1]=malloc(10)
char *p=malloc(20);
の違いがわかるか?

739 :737:03/08/17 22:12
>>738
むほっ。よく分かりません。;_;

最初の行は要素2のポインタ配列を用意して、
要素のそれぞれに10バイトのメモリ領域へのポインタを割り当てています。
これはdelete [] p;で削除します。

2番目の行は(配列ではない)ポインタに
20バイトのメモリ領域へのポインタを割り当てています。
これはdelete p;で削除します。

これと>>737とがどういう風に結びつくのでしょうか。_●□=

740 :デフォルトの名無しさん:03/08/17 22:12
VC++6.0ってXPにもいれられますか?

741 :デフォルトの名無しさん:03/08/17 22:24
>>739
> これはdelete [] p;で削除します。
だめ

742 :デフォルトの名無しさん:03/08/17 22:25
>739
1.char *p[2]; p[0]= new cahr [10]; p[1] =new char [10]
2.char *p[2]; p[0]= new char; p[1]=new char;
・1,2について解放の仕方をそれぞれ述べよ(10点)。

743 :737:03/08/17 23:28
>>742
1番
{
  char *p[2];
  p[0]= new char [10]; p[1] =new char [10];
  for (int i = 0; i < 2; i++){
    delete [] p[i];
  }
}
2番
{
  char *p[2];
  p[0]= new char; p[1]=new char;
  delete [] p;
}

・・・くわっ!Σ( ̄□ ̄;
そうか、delete [] p; っていうのは、
ポインタが参照するメモリ領域が配列の時に使うのですね!
ポインタ自身が配列の時に使う構文じゃないってことですか。
2番は間違えですね。ひゃっひゃっひゃ・・・恥ずかP。(〃゚▽゚;A

ありがとうございました。m(__)m

744 :デフォルトの名無しさん:03/08/18 03:35
appidってどうやったらわかりますか?

745 :デフォルトの名無しさん:03/08/18 03:38
appid?

746 :デフォルトの名無しさん:03/08/18 04:07
>>740
http://www.microsoft.com/japan/msdn/vs_previous/vstudio/techinfo/toolos.htm

747 :744:03/08/18 13:48
アプリケーションIDだと思うんですけど。プログラムIDと同じらしいですが

748 :デフォルトの名無しさん:03/08/18 14:15
とりあえず、appidが出てくるurlの例でも示せ

749 :デフォルトの名無しさん:03/08/18 17:45
ちょっと相談、っていうか教えて欲しい。

今開発中のアプリにテキストの表示機能が必要と言うことになった。
Notepad.exeを呼び出してもいいが、そのファイルを変更されてしまう可能性がある。
となると、アプリ中で表示しないといけないのだけどなにか手っ取り早い手はあるかな?

750 :デフォルトの名無しさん:03/08/18 17:52
MFCなら CEditView とかダイアログにテキストボックス作ってそれで表示するとか
Win9xなら64kの制限あるけど

751 :デフォルトの名無しさん:03/08/18 18:14
Visual C++.NET でプロファイラを使おうと思ってマニュアルを調べたのですが、
「/PROFILE リンカ オプションは削除されました。」

「リンカ ユーティリティであるソース プロファイラは削除されました。」
という記述しか見つかりませんでした。
プロファイルできなくなってしまったんでしょうか?


752 :749:03/08/18 19:12
>>750
NotepadもWin9xだと32KBの制限があるから64KBなら問題なし。
ってことで、ダイアログ作って中身をスクロールバーつきのEditBoxでやることに。
レスThx.

753 :デフォルトの名無しさん:03/08/18 20:00
VisualC++6.0でC言語(C++ではなくて)を勉強し始めた超初心者なんですが
#include <igraph.h>で、プログラムを作っても
「fatal error C1083: インクルード ファイルがオープンできません。'igraph.h'」となって実行ができません。
付属の解説書を読んで自分の知識では答えが見つけられませんでした・・・。
物凄い初歩的な質問で恐縮なんですがグラフィックスをプログラムする場合
どのような設定をしたらよいのか、無知な自分にどなたか教えてやって頂けないでしょうか。


754 :デフォルトの名無しさん:03/08/18 20:02
「今私のオッパイ見てたでしょう。」ってそりゃ見ますって。
これだけの立派なオッパイが目の前にあったら。
淫乱女教師がフェラ、パイズリで同僚の先生を責めまくります。
挿入部のアップも豊富なのでオマンコもモロ見えですよ。
無料動画をどうぞ
http://www.exciteroom.com/


755 :デフォルトの名無しさん:03/08/18 20:34
>>753
そんなファイルはないか、またはその解説書オリジナルのものだと思う。

絵を書きたかったらWindowsプログラミングのスキルは必須。
>>2の「猫でも〜」を見ることをお勧めする。
Windows SDK編 第1部 25章あたりで絵を描いてるから。

756 :デフォルトの名無しさん:03/08/18 20:57
>>751 .NETスレで聞いてくらはい

757 :デフォルトの名無しさん:03/08/18 20:59
あれ? VC++は .NETも含めてこのスレ?

758 :デフォルトの名無しさん:03/08/18 23:36
>>754
誰が貴様のような自意識過剰女なんぞ見るかよ!

759 :デフォルトの名無しさん:03/08/19 02:08
>>755
勉強しなおしてきます・・・。ありがとうございました。

760 :デフォルトの名無しさん:03/08/19 04:57

       期限は 8/20 まで

文部科学省に反対メールを!!今しかない!

「朝鮮学校含め大学受験資格容認へ 来春入試から、文科省方針」
http://www.sankei.co.jp/news/030802/0802sha008.htm

文部科学省 http://www.mext.go.jp/f_mailto.htm

文部科学省ご意見メールアドレス voice@mext.go.jp  <<<ここ

(友人知人家族にも知らせてね!携帯からもメールできます。反対の意思表示を!)

組織的工作で、朝鮮総連が文部科学省に「認めろ」とメール攻撃中。
2chが応戦中。応援お願いします。メールで「絶対反対!」の意思表示だけでも!
一人でも多くの方のご協力をお願いします!


761 :_:03/08/19 23:09
http://homepage.mac.com/yamazaki8

762 :デフォルトの名無しさん:03/08/20 08:25
#include <stdio.h>
#include <conio.h>
int main(void)
{
  for(;;)//終了はCtrl+cで
  {
    if(kbhit())
      printf("%c ",(char)getch());
  }
  return 0;
}

ビルド時に自動的に実行されるプログラムに比べて、Debug、Releaseフォルダに
できた.exeのスピードが遅くて困っています。配布する時に動作の悪い方しか
できないので。解決方法を教えてください。

763 :762:03/08/20 08:27
>>762
スピードが遅いと言うのは、キーを押しっぱなしにした時の事です。

764 :デフォルトの名無しさん:03/08/20 09:03
くだらんよチミ

765 :デフォルトの名無しさん:03/08/20 12:19
C++.NETのWindowsフォームアプリケーションでプログラムを作っているのですが
CStringArray型を使いたいと思い#include "afxcoll.h"をしてみたら
MessageBox::Show("1");の場所で
error C2653: 'MessageBoxA' : 識別子がクラス名でも名前空間名でもありません。
error C2660: 'System::Windows::Forms::Control::Show' : 関数に 1 個の引数を指定できません。
というエラーが出てしまいます
#include <afx.h>を記述しただけでエラーが発生してしまうのですがエラーを消す為にはどうしたらいいでしょうか?

From1.h内
private: System::Void button1_Click(System::Object * sender, System::EventArgs * e)
{
//CStringArray Cst_File_Array;
MessageBox::Show("1");
}

From1.cpp内
#include "stdafx.h"
#include "afxcoll.h"
#include "Form1.h"
#include <windows.h>

766 :デフォルトの名無しさん:03/08/20 12:25
>>765
WindowsフォームアプリでMFCのクラスを使えるの?

767 :デフォルトの名無しさん:03/08/20 12:27
>>762
標準出力はバッファリングされる。

768 :デフォルトの名無しさん:03/08/20 12:31
VC++で、セマフォみたいな機構を利用したいのだがなんかあったっけ?

769 :デフォルトの名無しさん:03/08/20 12:42
>>766
MessageBox::Showを使わなければ
エラーが発生せず正常に使えます
String* Str_File_Array[];の配列だとAddが使えず・・
SystemArray型はサイズが固定なので動的には使えず・・
なので文字列を追加していく処理を行うにはCStringArray型を
使うとかなり楽なんですよ
だからMFCクラスを使おうと思っているんですが

770 :デフォルトの名無しさん:03/08/20 12:51
>>769
Vectorでstring使っちゃダメなの?

771 :デフォルトの名無しさん:03/08/20 13:02
>>770
すいません
「Vectorでstring」ってどういう意味ですか?

#include <string>
using namespace std;
で通常のbasic_stringを使うという事でしょうか?

772 :デフォルトの名無しさん:03/08/20 13:04
std::vector<CString>ってことだろ。

773 :デフォルトの名無しさん:03/08/20 13:05
>>769
ArrayList

774 :765:03/08/20 13:42
>>772
なるほど、そういう事ですか
ありがとうございました

>>773
ArrayListでうまくできました
本当にありがとうございました
はまっていた所なんで助かりました

775 :デフォルトの名無しさん:03/08/20 18:43
C++.NETFrameworkでiniファイルの書き込みと読み込みをしたいのですが
ネットで調べた所したのURLにサンプルコードがあったのですがC#で書かれていて
よくわかりません

ttp://www.atmarkit.co.jp/fdotnet/dotnettips/039inifile/inifile.html

このサンプルコードをどのように使えばいいのでしょう?
試しにclass IniFileHandler {}をコピペしてみましたがエラーが発生してしまいました(当たり前だが)
error C2814: 'Ar::Form1::IniFileHandler' がマネージ 'Ar::Form1' の中で定義されています。明示的に __gc、__nogc または __value を指定する必要があります。
error C2337: 'DllImport' : アトリビュートが見つかりません。ビルトインまたは、現在の名前空間でアクセスできるカスタム属性ではありません。
error C2143: 構文エラー : ';' が 'public' の前にありません。

どうかよろしくお願いします

776 :デフォルトの名無しさん:04/03/26 19:53
WritePrivateProfileString と GetPrivateProfileString を調べれ。

777 :デフォルトの名無しさん:04/03/26 19:55
>>768
CSemaphore

202 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)