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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
タイトルの通り、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
VC++は死滅
>>1
<< "乙";
>>1
グッジョブ!
6デカパン:03/06/22 21:44
>>1
乙だす!
VisualC++6.0を使用していますが、コンパイルした後のアセンブラコードを見るためには
どうしたらよいのでしょうか?
コンパイルオプションを見たのですが、それらしいものは書いてありませんでした…。
8デフォルトの名無しさん:03/06/24 10:04
ダイアログベースのアプリケーションで、クラスウィザードからコントロールに
メンバ変数を割り当てると、そのダイアログクラスのコンストラクタに

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

//}}AFX_DAT_INIT

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

厨な質問と思うのですが、教えてください。
>>7
"混合モード" で表示じゃダメ?
>>8
自分で変更してOK
11デフォルトの名無しさん:03/06/24 15:47
フォントをリソースなどで埋め込んで、アプリからそのフォントを使用したいのですが
可能でしょうか?
よく、PowerPointやPDFで配布用にフォントを埋め込むことがあると思うのですが。
1211:03/06/24 15:51
もしくは、システムのフォントディレクトリ(?)にフォントをコピーしなくても
プログラムと同じディレクトリにおいても利用できるような方法はありませんか?
13デフォルトの名無しさん:03/06/24 16:22
割り込みスマン!
もまいら教えてくさい。
プリプロセッサ定義にUNICODEと_UNICODEがあるのですが
これらはどうちがうのですか?
MFCのコードを見ると、どちらかが定義されているときは
他方も定義されるようになっているのですが。。。
endlと'\n'って普通どっちを使えばいいんですか?
あと、C++で標準入出力はcoutとcin使えばいいんですよね?
>14
endlは改行した上にフラッシュされる。
endlを使いましょう
16魔王みそちる ◆xuU0ZqjUEo :03/06/24 19:12
.NETが糞。糞。ってよく聞きます。
どうして糞なんですか。
糞だとしたら使う開発環境は
VC++.NETよりもVC++6.0のほうがいいってことですよね。
>>13
Cライブラリ用とWinAPI用。
1813:03/06/24 20:33
>>17
サンクスコ!!
198:03/06/24 23:31
>>10
ありがとうございます。
今までは怖くてOnInitDialogでわざわざもう一度設定し直して
たんですが、これで安心して直せます。
リストビューやツリービューの上などにバーみたいなのを作って
「×」ボタンを表示するにはどうやったらいいんでしょうか。
>>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
>>22
コンボボックスのドロップダウンリストの高さが足りないだけ
>>22
リソースエディタで、コンボボックスの▼をクリックしてみなよ。下に伸ばせるようになる
2520:03/06/25 11:18
>>21
Spy使ってみたけどよく分からないです。ReBarがあるみたいだったけど。
SplitterWndを使っているので、CreateViewのあとに
m_wndFolderDB.Create(m_wndSplitter.GetPane(0,0), IDD_DIALOGBAR, CBRS_TOP, 1);
とかやってみたんですが、うまくいきませんでした。
2622: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とかでテキトーに伸ばしたら?
DIBSectionなんですけど、簡単なクラスにしてダブルバッファリングに使ってます。
bmpを読み込んで表示、ペンやブラシを使った描画なんかもとくに問題ありません。

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

まあ当然かな?とも思いますけど
弄ったデータ->画像バッファ->バックバッファ->画面DC
っていう流れは普通ですか?(バックバッファに直接書けと言うのはナシでお願いします)
指定したディレクトリ内のファイル名とサブディレクトリ名を表示させたいのですが

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

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いじれというわけではないでしょうが・・・

分かる方いらっしゃれば宜しくお願いします。
>>31
コンパイラ エラー C2036
'class-key' : サイズが定義されていません。
指定された識別子は宣言されずに、そのアドレスが使われました。
宣言されていないオブジェクトのサイズを使うことはできません。
次にこのエラーの例を示します。

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

/////

つまりは、vecotr のテンプレート引数に渡した構造体の宣言が怪しいと思われ。
3330: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
36デフォルトの名無しさん:03/06/26 13:11
(゚Д゚)
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を買わないと無いのかな?
需要と供給のバランスが悪い。
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のほうでは宣言されているようです。
長文しみません。。。
>>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




…つーか、少しは調べようぜ……
…つーか、釣りじゃねぇよなぁ?
>>43
新SDKを、新規ディレクトリにインストールすると、そんな感じに困ったことになった気がする。
なもんで、そのとき私は、
新SDKの include と lib ディレクトリの内容を丸々
旧SDKの include と lib ディレクトリに上書きしてしまった。
とりあえずこれで問題なく動いてくれたと思う。

まぁやるんであれば、当然ながら
ファイルバックアップしてからやりなされ。
4638:03/06/26 22:46
>>44 ども。CWnd::ShowWindow() のほうだけ見てますた(;´Д`)
4743:03/06/26 22:49
>>45
レスありがとうございますm(__)m
やっぱり上書きするしかないですか。。。
既存のがあるのでコワいのですが、僕も
バックアップとってやってみますネ。
どうもです。。。


4842:03/06/26 23:49
>>44
ありがとうございます。
>43,>45
待て待て!別の場所にインストールしても
新SDKのinclude,libを最優先にすればそれでいいはずだぞ。

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

新Platform SDKのヘッダと、VC++のMFCやATLのヘッダを一緒に
使ってうまくコンパイルできないようなことが希にあるが、
適当に対処するかMSに文句を言ってくれたまえ…。
>>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を押すと変更の有無に関わらず
全ファイルがリビルドされるようになってしまいました。
元に戻す方法があれば教えてください!
>>51
日付設定がおかしくなってんじゃないの?
Windowsの設定と対象ファイルのタイムスタンプを確認しる
53デフォルトの名無しさん:03/06/27 09:14
>>52
全くそのとおりでした。
ありがとうございました。
54デフォルトの名無しさん:03/06/27 10:56
やっぱ探したけど、VC++単体だとアイコンやビットマップファイル無さそうです。
どこからか入手出来ないかな?
>>54
VC++単体は持ってないので分からないけど
もしかしてCD-ROMの方に収録されてるんじゃ?
>>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のインテリセンス(メンバ自動表示)が働かなくなってしまったんですが、
どうやったら復活しますか?
「ツール」−「オプション」ではチェック入ってます。
>>59
プロジェクトの.ncbファイルを削除してリビルド
してみたら。
>>60
ありがとうございます。
出るようになりました。
>>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' : 識別子がクラス名でも名前空間名でもありません。
というエラーが出てしまいます。
なぜなんでしょうか。
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.
*/
6664:03/06/28 14:51
>>65
解決しました。
ありがとうございました。
67デフォルトの名無しさん:03/06/28 15:50
画像の情報を生成して(ドットごとの色を指定して)
ビットマップで書き出したいのですが、参考書籍や
サイトでお勧めのものがあったら教えていただけませんか?
とりあえずぐぐってみたものの、有力なサイトは見つかりませんでした。

GUIメニューで画像の保存とかを選ぶのではなく、
プログラムを走らせたら勝手に書き出してくれるようなのを作りたいです。
68デフォルトの名無しさん:03/06/28 21:24
>67
猫でもわかる〜のSDK第2章に載ってる罠
MFCを学ぶのに最適なページ知りませんか?
70デフォルトの名無しさん:03/06/28 21:41
71デフォルトの名無しさん:03/06/28 21:42
72デフォルトの名無しさん:03/06/29 02:09
  r‐-‐- ⌒ヽ
  | | | ||  i i'^i
  h_,|_,|_,ノ( ノ|/ |
 | ``".´ ´"  ノ
 人  入_ /~
 |     /
 |    |
 |    ';      ,,----、,,,,,,,,,、、
 |    ';     / ,,-‐―、ヽヽヽヽ
 |    |    〔/     ))))ヾヽヽ
 |    ト   /.,,,,、、 ,ヽξ\Ξ/
 |    \   / ==/  .,==-   レi!
 ヽ     |\〔、 ,(_,、ノ( "",,ノ:: 6)  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ';    ノ  λ:" ‐=‐^ン ...::::: |/  < さいたま〜!(@w荒
  ト   ノ   λ:::::. .::.. ::...::::::/     \__________
   \ ̄     \::::::::::::::// ._
    \      \__/   `ヽ
      |                \
      |      / ̄ヽ        ヽ
      |     HardRock     ヽ i
      |      ヽ_/        |  ヽ     / さ、さいたま〜!! /
>>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()が呼び出されているんでしょうなあ。
普通に働いてお金持ちになれるのは全体の1%のみって本当!?
本当にお金持ちになるにはやはり「副収入」が必要!
一日30分 おうちでコピペ、コピペ!
嘘だと思うんならランキング見てみてくださいよ↓↓
(直リン不可)
http://www.adultshoping.com/addclickport.cgi?pid=1053353765(直リン不可)

...../////
>>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
>>79
・「CDialog」の部分は、本当は違う名前という理解でOK?
・DoModal()してないので、DestroyWindow()は呼ばれてないと思う。
・「ウインドウハンドラ」ではなく「ウインドウハンドル」
・再表示させるときの ShowWindow(SW_SHOW) はどんな風に呼んでるの?
>ShowWindow(SW_SHOW)で再表示しようとすると、ウインドウハンドルが
>ないといって怒られます。

一番大事なこの部分のコードとエラーメッセージを書いてくれないとな
>>79
Dialog::OnCloseに掛。
>>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
8781:03/06/30 17:11
>>85
んー、問題ないように見えるけどねぇ

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

>ちなみに、閉じるボタンのところで、
>ShowWindow(SW_HIDE);
>Sleep(1000);
>ShowWindow(SW_SHOW);
うちではできたがなぁ。
>>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() はどこでするべきなんでしょうか?
>>89
OnCreate()
>MainFrmのコンストラクタで new CDialog(this) すると、怒られる現象

コンストラクタの段階ではメインウィンドウができてないので当然 this->m_hWnd
は NULLとなり、怒られる
92.:03/07/01 01:38
>>90
>>91
他みなさま、ありがとうございます。
あとは、何とかやってみようと思います。

VC++6 です。
CArchive& ar があって、

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

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

 CArchive exception; EndOfFile.

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

exception が表示される原因は何なのでしょう?
9493: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();
}

}
ウインドウのボーダー、メニューバー、タイトルバーのサイズはどうやって求めれるでしょうか?
ウインドウのリサイズの時に困ってます。

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

と考えて、SetWindowPosでやろうとしているのですが、他に効率のいい事があればお願いします。
>>96 AdjustWindowRect
98デフォルトの名無しさん:03/07/01 22:18
スレッド同士で何かしらの同期を取る一般的な方法ってどんな方法でしょうか?
イベント、ミューテックス、クリティカルセクション、セマフォ
100デフォルトの名無しさん:03/07/01 23:08
セマフォ
101デフォルトの名無しさん:03/07/01 23:10
イベント、ミューテックス、クリティカルセクション、セマフォ
の内どれを使うかはMSDN読んでちょ
102名無し@沢村:03/07/02 00:57
>>96
CScrollView::ResizeParentToFit()
>>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);の部分で例外処理が起きてしまいました。
解決方法をご教授していただけると幸いです。

>>106
スレッドが実際終了したのかを確認せんとね。
WaitForSingleObject辺りを調べてみたら?
108デフォルトの名無しさん:03/07/02 17:14
CloseHandle の時の hTreadの値調べたいいんじゃない? NULLとかになってない?
109デフォルトの名無しさん:03/07/02 18:25
プログラム内での値をEXCELのファイルに書き出すこと
はできるのでしょうか。

例えば変数の変化していく値をEXCELの各セルに書き出したいのです。
とても難しいでしょうか。
>>109
DDE使えば出来る。
・・・・・・・・・今更DDEもないかな・・・・・・・。
>>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
ありがとうございました。
その辺をもう一度調べてみます。
>>109
私はヘタレなのでコンマで区切ってテキスト出力して、
EXCELにCSVとして読み込ませてました。

数値と文字列だけならこの方が楽なので
>>116
別にヘタレでもないと思うよ。
>>117 同感。

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

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



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

よろしくおねがいします。
方向キーはOnKeyDownじゃなかった?
121118:03/07/02 23:04
>>120
OnKeyDownも駄目でした・・・。
122デフォルトの名無しさん:03/07/02 23:18
>>118
ダイアログじゃなくて、ダイアログ内でフォーカスをもっているコントロールのWM_KEYDOWNが呼ばれてるはず
PreTranslateMessage内でWM_KEYDOWNを監視かな
124118: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単位で使う場面ごとにグループ分けしとけばいいってことでつか?
126125: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
プロジェクトー設定ーリンク のオブジェクト/ライブラリモジュール 
12995:03/07/03 12:22
やっぱりキャストは無理なんでしょうかね・・・
string* ならキャストが出来たのですが
肝心のchar型できません・・・
130127:03/07/03 12:28
>>128
ありがとう。確かにそこにライブラリ名を追加するとできた。
でも同じ名前のデバッグ用とリリース用のスタティックライブラリを同一パスに置けないから
片方の名前を少し変えるしかないね。違うパスにおいても片方がいつも優先されるから。
ヘッダファイルとライブラリの名前は違ってても大丈夫だった。
Cの標準ライブラリもこういうふうになってるのかな?
>>127
printfとかが入っているのはlibc.libでは。
132127: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が何かわからん
>>134
分からないなら答えるなよ
136 :03/07/03 15:11
>>133
ありがとう。ヘッダのインクルードだけでリンクできたよ。
#pragmaは見たことあったけどどんな意味か調べたことなかった。役に立つね。

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

これでどうだ? 出来るかどうか知らないが。
138109:03/07/03 21:12
>>116
すいません。詳しく教えてくださいませんか。
なんとかして使えるようになりたいんです。
>>138
単純に数値なり文字列なりをカンマで区切って書いていくだけ。

例えば、

1234,ああああ,abcd

なら、A1に1234、B1にああああ、C1にabcdが入るって感じ。
改行を入れればエクセル上でも次の行になる。
セル間を抜きたければ,,とすればいい。
140デフォルトの名無しさん:03/07/03 22:40
>>139
なんどもすいません。
CSVというのがよくわからなくて。。。
何か例を書いていただけるとありがたいのですが。

出力できるまでのプログラムを書いてくれるとうれしいです。
>>140
甘えるなボケ
CSVくらい検索しろ
>>140
EXCELでファイル保存するときにファイルの種類をCSVにして、
それをメモ帳か何かで見てみるとどんな風に成ってるか
分かりますよ
143デフォルトの名無しさん:03/07/03 23:04
>>142
甘えてました。調べてみます。すいません。レスを汚して
>>140
CSVってのはカンマ区切りのテキストファイルだから例を挙げるまでも無いっしょ。
>>139に書いてあるような感じだよ。

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

みたいな。ファイルのopen,read,write,closeが解らないなら正直論外。
まずそこから勉強しる。
145デフォルトの名無しさん:03/07/04 00:37
CSVファイルの読み込みでできました。
ありがとうございます。
CSVの処理は一見むちゃくちゃ簡単そうだけど、
文字列にカンマや制御コードやダブルコーテーションが入っている時の処理があるから
意外と奥が深いんだよな。とくにCSVの解析。
Excelならタブ区切りの方がシンプルかもね
148デフォルトの名無しさん:03/07/04 11:37
Win32アプリで、標準Cのprintfの文字列が指定した桁より小さかったら、
スペースで埋める、-だったら、左寄せにするみたいなこと出来ますか?
やり方を教えてください。
149_:03/07/04 11:40
>>148
printf使えば?
ウインドウとかに表示するならsprintfで文字列作って表示。
もしくはCStringのFormat()。
15195: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の使い方が間違ってるのかな?
>>150
できました。ありがとうございました。
153デフォルトの名無しさん:03/07/04 15:25
1つのプログラムの1セット全部(exe,cpp,dsw等)をCDを介して別のパソにコピーし、
dswを開いた所、ClassView情報ファイルにアクセスできませんと出て、また
ビルドした所、プログラム データベース '\debug\vc60.pdb' を開けません、とでました。
そこで、Debugフォルダの中の全てのファイルを消して、再度ビルドした所
できました。ただ、関数名を書いて(を書いた時に出てくる仮引数リストが出なく
なり、また、上の所の関数一覧表も表示されなくなりました。解決方法を教えて
ください。
>CDを介して別のパソにコピーし、
実はリードオンリ属性がついたままという落ちではあるまいな
155デフォルトの名無しさん:03/07/04 15:56
>>154
そういう落ちになってしまいました。

一度消してしまうと、関数名を書いて(を書いた時に出てくる仮引数リスト
が出なくなり、また、上の所の関数一覧表も表示されなくなると言うのは
もう復活できないんですか?あと、この現象は、ソースをコピーしてビルド
した時などにも起こることがあります。
156153:03/07/04 17:14
初めの二つの問題は、ドラッグ→プロパティで一気に属性を変える事で
解決できました。また、後の二つの問題も同じ方法で解決できたのですが、
一度消してしまったので、だめになってしまったようです。

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

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

認識されなくなったヘッダーファイルを認識させる方法があるなら教えてください。
157デフォルトの名無しさん:03/07/04 18:17
wstring ws = L"あ";

ws.c_str()が返してくれるのは、ASCIIでしょうか、ウニコードでしょうか。
158_:03/07/04 18:18
>>155
clwファイルやncbファイルを消す
160デフォルトの名無しさん:03/07/04 21:09
CPUの周波数によって表示を変えたり
メモリーの容量で表示を変えたり
HDDの容量で表示変えたり
OSによって表示変えたり実行できるOS制限したり

できませんか?  
できますが、マルチなので教えません。
162デフォルトの名無しさん:03/07/04 21:20
どうやって?
>>157
うに
164デフォルトの名無しさん:03/07/04 21:43
>>163
うにはねーべ
ユニだろ
165153:03/07/04 22:36
ncbは消してもダメでした。clwはありませんでした。用語的には、
ウィザードバーはこのファイルをトラッキングしていないと言うみたいです。
166無料動画直リン:03/07/04 22:38
>>165
>clwはありませんでした
じゃ作れよ
168153: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ってありますか?
宜しくお願いします。
17120:03/07/05 10:34
だれか(;´Д⊂)
>>171
Spy++でExplorerを見る位しましょう。
17320:03/07/05 10:55
WTLのCPaneContainer/CPaneContainerImplを調べれ。
17520:03/07/05 13:32
>>174
ありがとうございます。早速調べてみます。
176153:03/07/05 15:58
できました。
プロジェクト→プロジェクトへ追加→ファイル→ファイルを選んでOKをクリック
です。複数を一度に行ないたい場合は、ドラッグしてOKをクリックでできます。
お答えいただいた方、ありがとうございました。
177デフォルトの名無しさん:03/07/05 16:07
エディットボックスやボタンを作ったんですけど
そのボタンをもう使わないからDELETEで消すとエラーが現れます。
そのボタンに関連のある変数を全て消してもエラーが出ることがあります。

使わないボタンを消すにはどうやって削除するといいんでしょうか。
今は可視ボタンを無効にして見えなくしてます。
>>177
手動
Delphiなら自動なんだけどね
179デフォルトの名無しさん:03/07/05 17:00
またDel厨が出てきた。ウザイ。
>>178
糞レスすんな。ハゲ。

>>177
どんなエラーか書かないと答えようがない。
>>177
クラスウィザードから消そうよ。
182デフォルトの名無しさん:03/07/05 20:08
>>178
ほんとにウサイなDel房。
>>181
消せないだろ?
手動で消せって警告でてくるのに

確認したのはVC6だけど
変数しか消してないのか。ボタンのハンドラや他の関連するコードは消してないのか。
C#なら楽なのに(激藁
>>185
糞レスすんな。ハゲ。
187デフォルトの名無しさん:03/07/05 21:24
MFCを使ってソースを書いている場合にスレッドを作るときはCreatThreadで作ると終了時に例外処理は出やすくなるんですか?
ダイアログを終了させたときに例外処理が出てしまいます。
教えていただけるとうれしいです。
>>187
関係ないと思われ。複数のスレッドから同時にオブジェクトを操作する
場合には非MFC時同様の注意が必要。
>>187
Sleep等を入れると直ったりする。
VS.NETで、windows.hをインクルードしてるのに
WS_EX_LAYERED
が、定義されてないってでるのは何でだろう

マウスをかざしたらインテリセンスが働いてちゃんとでてるのに
191名無し@沢村:03/07/05 23:22
>>190
_WIN32_WINNT を正しく定義していないから。
>191
_WIN32_WINNTでぐぐったら猫でもわかるがヒットしました
基本中の基本だったんですね、すみません
1936:03/07/06 01:31
プログラミングをやってみたいと思い、visualc++.netを買ったんですが
C言語の知識がない為、使い方がわからない状態です。参考本というのも
.netに関して殆どなく、amazonで評判の良かった"やってトライ"を買った
のです初めからプログラミングされているサンプルを書き換えて行くともの
ばかりで、中途半端にしか理解出来ない状態です。
質問は二つなのですが、c++.netを使う上でC++6.0やC#の本は初心者に参
考になるでしょうか?0からプログラミングを組んで行く過程を載せている
ような参考書はないものでしょうか?
>>6
0からプログラミングを組んで行く過程を載せている
ような参考書はないものでしょうか?

Cからやれ・・・
非常に地味に感じるかもしれないけど。
そんなに回り道ではない
>>6(>>193)
>>194 氏の言うと通り、CやC++の基本の部分からやってみれ。
以外にも重要で、Win32プログラムを作る上でも、MFC使っていても
基本は使っていくもの。
それから「猫でもわかる」で、最初からやっていくのも手。
金をどぶに捨てかけた>>193に乾杯
むしろ>>193はw(略
しっかしよくわからないものをよく買う気になるよなぁ
「金をだしたら、モトをとるため意欲が出る」というヨタ話でも
真に受けたんではないか?
200デフォルトの名無しさん:03/07/06 05:35
金をどぶに捨てた>>193は完敗
>>196-200←貧乏人
おれもc++.netってただのC++6.0の次のバージョンだとおもってたw
>>202
え?違うの?
2046:03/07/06 11:43
>>195「猫でもわかる」ですか。探してみます。
>>194,202,203
CとC++が同じ物だと思っていたのですよ。実際今でも違いがわかりませんが
C++.NET以外の参考書がc++.netに通用するかどうかが怖い所です。
>>196,197,200,201 お褒めの言葉どうも。(.ー.)
金をどぶに捨てるつもりはないんですがね・・・。
近い将来どうしても使わなくてはならないのです。
いまどき通じるのか知らんが
C++の書籍=グラマー
VC++の書籍=リーダー

あと一緒だろうとたかをくくってボーランド系の本を買う儀式が
あなたを待っています
206デフォルトの名無しさん:03/07/06 13:01
★★★★★★★★★★★★★★★★★★★★

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

★★★★★★★★★★★★★★★★★★★★
Cstring型に入っているshift_jis文字列をunicodeに変換する簡単な方法ってありますか?
208デフォルトの名無しさん:03/07/06 14:17
VC++でMFCの関数や使い方が乗っている詳しい本知りませんか?
すいません、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);

}
メモリは動的に確保した分だけ解放しなければならない。

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

> その前にvectorなりCArrayなり使ったほうが。
すいません、勉強(基礎固め)中なので、あえてこんな事しています(苦笑
> 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)
214209:03/07/06 15:25
>>212
すいません。気づきませんでした。
>>209のソースだと、deleteされるのは、コピーされた方ですね。

> どーしてもmallocでいくなら、placement newを使うこと。
..なるほど。..っていうか"placement new"の意味がわからないので、
ちょっと調べてみます。ありがとうございました。
215デフォルトの名無しさん:03/07/06 19:01
自分全く知識が無いんですが
まず何を見て勉強すればいいんでしょうか。
検索しても何が何やら・・・
本買った方がいいですかね?
>>215
何がしたいの?趣味?仕事?
>>215
付属品一通り目を通せ
>>215
何のために買ったのですか?
まぁ何も知らない人がVCを買っても、
VCをVCとして意味のある使い方が出来るまで数ヶ月〜数年かかるわな。
ちょっと(不?)便利なエディタを買いました
ぐらいの認識を脱する頃には次のバージョンの告知がきてますた
BCCからはじめろっていうのはあながち間違ってないかも
>>215
まず猫に逝け!
使い方が分からんの何にもならんからな。
パッケージ品を買えば物事が解決すると思ってるんだろうな・・・
べつに
その点、割れ厨は有料無料どころか英語だろうが有効な情報を探すのに余念がないぞ
ページ単位で雑誌のスキャン画像が出回ってるのには驚いた
犯罪だけど熱心さだけは大したもんだよ
225デフォルトの名無しさん:03/07/06 23:16
コマンドラインアプリケーションを作っているのですが、
セットアップしたらPATH環境変数も設定されている状態に
したいのです。

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

どなたか、お教え下さい。
227デフォルトの名無しさん:03/07/07 00:05
コンボボックスの扱い方について質問です。
コンボボックスをダイアログに挿入し、変数のタイプをCComboBox、カテゴリをコントロールに設定し、
後は何も手を加えずに実行したところ例外処理が出てしまいました。
なぜでしょうか?
どう対処すればよいか教えてください。
228デフォルトの名無しさん:03/07/07 00:49
>>226
ありがとうございます。
これでうまくいくかと思ったのですが、
セットアッププロジェクトは環境変数を
変更(置き換え)してしまいます。
PATH変数の現在の値とインストール先の
フォルダのパスをマージするにはどうしたら
良いのでしょう?

現在の値 + ";" + フォルダのパス を書き込め!
230デフォルトの名無しさん:03/07/07 01:21
>>229
セットアッププログラムなので、現在の値自身は
分からないのです。現在の値を取れるかと思い、
%path%を書いてみたのですが、レジストリに
%path%と書かれてしまって、登録前の値を取り出す
ことができませんでした。
>>213
ありがとうございました
早速試してみます
>>213
検索したらMSDNサイトに引っかかりました
これからは自分でもっと調べます
余計な手間かけてすみませんでした
233デフォルトの名無しさん:03/07/07 14:21
すいません。エラーが消えないので質問します。

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

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

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

これはどういう原因なのでしょうか
>>233
別なコンストラクタ呼んでねぇ?
引数確認しる
23595:03/07/07 15:37
>>169
教えてもらったやり方でやってみたらエラーがなくなりました
ありがとうございました

もう少し変数や関数の勉強します・・
>>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文を通り抜けてしまい同じ文字だと認識してくれません。
どうしてでしょうか?教えてください。
>>238
デバッグでifでブレークしてその時のcBuffの内容を見てみたら?
240デフォルトの名無しさん:03/07/08 00:38
もまいらGoogleが七夕バージョンになっていまつ^^

http://www.google.co.jp/
>>240
おっ。いろいろなタイミングでかわるのは知っていたが、
ちゃんと国ごとにあわせているとは。やるな。
242デフォルトの名無しさん:03/07/08 14:01
自作のプログラムを実行すると、
「例外処理 (初回) は xxxxxxxxx.exe にあります: 0xC0000005: Access Violation。」
と出てしまいます。
プログラムの処理自体は終了しているみたいなんですが…。
原因とかわかりますでしょうか?
>>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)を使ってダイアログに表示しようと思ったんですが、
表示できませんでした。
スレッド内で得たデータをダイアログに常に表示しようとするときはどうすればよいんでしょうか?
>>245
メッセージ飛ばすとか。
つーかダイアログに何を表示しようとしてるの?
247デフォルトの名無しさん:03/07/08 22:39
>>246
受信したデータの表示です。
>>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
エクセルの表に書かれた文字や数字を書き換えたい場合
どんな関数を使えばよいのでしょうか?
>>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プロパティを書き換えるんだよ。
Visual C++のデバッカーが起動したときuserinitのせいでフリーズするんだけど、
おんなじ症状が出た奴いない?Windows2000でね。
>>250
COMの勉強しなされ
256250:03/07/11 21:20
>>253>>255
ありがとうございます。
超初心者なもので・・・excelvbaについて勉強します。
ついでにCOMって何でしょうか?
すいません検索しても分からなかったもので
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
>>258
ご確認を
ttp://support.microsoft.com/default.aspx?scid=kb;ja;330733

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

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

黙って落ちるインストーラーなんてどうしていいのか分かんないですよぅ。
このままインストール出来なかったら返品…出来ないんだろうしなぁ…。どうしよう…。
>>260
サポートに問い合わせれ
>>260
CD-ROMが破損してるんじゃないかい?
チェックサム(あるのか?w)汁。
263258: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/

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

→5F42B249 cmp dword ptr [eax],1
こんな感じで出てしまうのですが 何を意味しているのかさっぱりわかりません。
お願いします.
>>267
>>混合モードがデバックすると突然出てしまうのですが
コードペインを開いてる?

>>こんな感じで出てしまうのですが 何を意味しているのかさっぱりわかりません。
アセンブラ(ニモニック)
269デフォルトの名無しさん:03/07/13 21:21
すみません。
メニューやメッセージボックス等に割り当てられている
システムフォントを取得するには、どうしたら良いでしょうか?
270O塚:03/07/13 21:39
271デフォルトの名無しさん:03/07/14 00:26
exe とか dll のバージョンってどうやって管理してますか?

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

デスクトップのリストビューを詳細表示に変更したいのですが
やり方がよくわかりません。
SetWindowLongでスタイルをLVS_REPORTにして、
ListView_InsertColumnで列を追加しても、ファイル名の列しか
表示させられません。しかも列見出しの部分はキャプションが
表示されないです。根本的にやり方間違ってますか?
273272:03/07/14 01:12
すいません、環境書き忘れました。
VC6 SDK(非MFC)でOSはW2Kです。
よろしくお願いします。
外部エディタって使えますか?
>>271
適 当
>>271
MSのどっかの文章で以下のような記述を見たような気がする。

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

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

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

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


.NETではまた違うわけだが。
>>272
なんか足りない。
LV_COLUMN構造体辺り調べるとわかるかも。
278デフォルトの名無しさん:03/07/14 22:10
DWORD型で指定した値をTRACEで見るとき、%? でみればいいんですか。
279272:03/07/14 22:38
>>277
ListView_InsertColumnで、LV_COLUMNをパラメータとして
渡してるんですけど、全く無視されてる感じなんですよねぇ(´・ω・`)
そもそもデスクトップの場合、列見出しの要素はwindowsによって
初めから決められてる気がするんだけど、違うのかなあ・・・
デバイスコンテキストのHDC構造体の
基本的な仕様の説明とその関連の応用例について、
比較的わかりやすくまとめてレポートされてあるサイトって
どこかにないでしょうか?

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

ハンドルって要約するとプログラム的に一体どのように処理されているのでしょうか?
ハンドルの中の人も大変ですね
>>281
別にそんなもん気にせんでもプログラミングは出来る!
つーか誰もしてねーだろ。
284山崎 渉:03/07/15 09:42

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
質問です。
1. 複数のスレッドから、一つのウインドウにメッセージを Post or Send したときに、競合は発生しないで、
順番待ちするという理解でよいでしょうか?

2. 複数のスレッドで、一つの構造体を利用したいとき、クリティカルセクションを使うと思うのですが、
そのときに、構造体の変数ごとに、Lock, Unlock を呼び出す関数を定義するのは効率が悪くて大変です。(メンバがいっぱいある)
もっと効率のよい方法はないでしょうか。
例 bool Get〜〜1();
void Set〜〜1(bool abc);
bool Get〜〜2();
void Set〜〜2(bool efg)
      ・
      ・
>>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です。
>>287
DelayLoadは#pragmaで指定できない
プロジェクトの設定いじれ
289デフォルトの名無しさん:03/07/15 12:08
エディタ部分の質問なんですが、
ソースウィンドウでカーソルのある行に下線を出すことはできないのでしょうか?
カーソル行が認識しやすくなれば他の方法でも知りたいです。
ちなみにVC++6.0をつかってます。
>>285
>2. 複数のスレッドで、一つの構造体を利用したいとき、

個々の変数を保護するんじゃなくて
操作(operation)を保護すべき。
そうでないと不必要に複雑になって破綻するかもね。
291山崎 渉:03/07/15 14:01

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
292デフォルトの名無しさん:03/07/15 15:17
FormViewに貼り付けたコントロールのサイズを
動的に変更するにはどうすればいいんでしょうか?
C#なんかでいうDockプロパティでの動作がしたいのです。
293285:03/07/15 16:42
>>290
なるほど、そうしてみます。ありがとうございました。
>>292
MoveWindow
>>292
SetWindowPos
296292:03/07/15 21:15
>>294
ありがとうございます。
試しにOnSizeでMoveWindow(0,0,cx,cy,TRUE)してみました。
解決しました・・と、思ったら・・

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

元のFormを物凄く小さくしてみたり、OnGetMinMaxInfoで最小サイズを
決めてスクロールバーが出ないようにしてみたものの・・
スマートなやり方はあるんでしょうか?
スクロールバーを出さなければ良いのならビュークラス内でSetoScrollSizeすれば良いかも
ModifyStyle(WS_HSCROLL | WS_VSCROLL, 0);
でスクロールバー消せたかも
299292: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と似たことが
出来るのかな? ありがとうございました。
300280:03/07/16 02:54
>>286
ありがとうございます。
なんとなくですが理解できました。
HDCについてはなんも解決しておりませんがw
301デフォルトの名無しさん:03/07/16 18:27
すみません。
コンボボックスのリスト部分の高さを、
リソースを編集する方法ではなく、
動的に変更するにはどうすれば良いでしょうか?
>>301
試してないけど、 CComboBox::MeasureItem をオーバーライドして実現できないかな?
>>301
MoveWindowとかウィンドウの大きさを変更する方法でOK。
コンボボックスの場合はウィンドウの大きさ=リストボックスまで含んだ大きさで、
選択文字列表示部はそのウィンドウの高さに依存しない。
304301: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桁に四捨五入した文字列を返す関数を定義し、その動作を確認しなさい。
こんなレポートがでたのですがさっぱりわかりません。誰かわかりませんか?
わかります。
宿題スレで最近あったような気がする。>>306
309280:03/07/17 19:53
再び質問させていただきます。

HDC hDC = ::GetDC(0);

で得られるデバイスコンテキストのハンドルとは
一体どんな(どういう場面で使われる)デバイスコンテキストなんでしょうか?
以前、MSDNライブラリかどこかに書いてあったのを見たような気もするのですが、
今探すとどうも肝心なところが見つからないもので・・・
>>309
スクリーンのデバイスコンテキストを取得する。
よく「デスクトップの」などと説明されてたりするが、
それだとデスクトップのリストビュー部分みたいな感じがするからよろしくないな。

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

MSDNには例によって英語版にだけ書いてある。
.NET以降の日本語版は新しくなってるようだが未確認。
311デフォルトの名無しさん:03/07/17 23:57
VC++で作られたソフトにはどんなものがあるの?
Officeとか
>>311
VC++
>>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
ソースは?
>>316
VCワンポイント
フルパスで指定したファイルが存在するかしないかを
返してくれるAPIってありますか?

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

Is〜なんて名前で無いかとMSDNで探してみたんですが
見つけられませんでした。
>>318
shlwapiにPathFileExistsというのがある。
別にGetFileAttributesでいいと思うが。マクロにでもしておけば。
Shell API は遅いというイメージが。そんなことないですよねぇ?
321318:03/07/18 15:25
318です
319さん、早速ありがとうございます。
ズバリなAPIですね。やっぱり探し方が甘いのかしら。

マクロって#defineするやつですよね?
引数も取れるんですか。やってみます。
ありがとうございました。
>>320
中で何やってるのか知らんから何とも言えん。
プロファイリングしてみるしかあるまい。

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

>>321
#define IsExists(a) (GetFileAttributes(a) != 0xFFFFFFFF)
323318:03/07/18 16:14
322さんレスありがとうございます
引数を取れるっていう言い方はおかしかったですね。

FindFirstFileもありましたか。
ちょっと興味があるのでWin32API質問箱の過去ログあさってみます。
初めて質問させて頂きます。よろしくお願いします。
開発環境はVC++6.0です。

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

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

また不可能である場合、クラスB内に初期化関数を用意しクラスA内から実行する方法では何か問題があるでしょうか?
>>324
Aのコンストラクタで初期化記述子を使用すればよい
A::A() : m_B(1)
{
//m_BはBのインスタンス
}
「:」の後がそれ。あとはヘルプか参考書でも見て。
class A{
 A(){m_pB = new CClassB(hoge);}
 ~A(){delete m_pB;}

protected:
 CClassB* m_pB;
}
>>325 >>326
本当にありがとうございます。
すぐ試してみます。
>>323
FindFirstFileは検索に使う奴だろ?
今回は使えん事は無いが面倒なだけだと思うが?
存在するかどうか「検索」するんだし、CreateFileよりは引数も少なくて簡単だと思うが
FindCloseするのがメンドリ
>>328-330
Win32API 質問箱 Build10の>>254あたりから読んできなさい。
そこまでわかるなら直リンすれや
333280:03/07/18 22:56
>>310

ありがとうございます。
ここでいうスクリーンというのはデスクトップ画面全体の画面領域との解釈でよいのでしょうか?
>>333
画面全体ということでよろしい。
335280: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)打ちミスしました。
>>336
用語を正しく使って書き直し。

ところで、
>Updatedate(true);
>Updatedata;
これなんじゃい。
339315:03/07/19 23:30
まだ悩んでます〜w どなたか解決のヒントを・・
CSplitterWndの派生クラス作りつつ考えております。

新たな疑問なんですが
>>315の画面を作り、CとDの間の分割バーを左クリックすると
クリックしただけで下に2pixel分割バーが動いてしまうのですが
なぜでしょうか?他の分割バーは左クリックだけでは何も起こりません。
>>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' : 定義されていない識別子です。
以上よろしくおねぎあします
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++もコンパイルできるのですか?
>>344
それはC++標準ライブラリが含まれているか?という質問か?
それともC++コンパイラが含まれているか?という質問か?
>>343
それ、なるよね。
使用中のファイルを再起動時に置き変えるソフト、探すとあるはずだからそれ使う。
347344: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エクスプレス

今すぐ見にきてね!
VC.netでリソースファイルが追加できんんす
なんでじゃろ
350デフォルトの名無しさん:03/07/23 14:17
オーナーデータリストの描画ってさ
リストが表示する時に表示するデータを
渡してやるって感じだと思うんだけど

元データの変更は検知してくれるのかい?
>>350
再描画する部分のリストアイテムデータを持ってくるので、
元データ変わったらUpdateしよう。
352デフォルトの名無しさん:03/07/23 23:38
どうしても、解決できないんので教えてください。
現在、ファイルの中身を見ては処理、を指定フォルダ以下
全てのファイルに対して行っています。

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

これを解決する方法は無いでしょうか?
353無料動画直リン:03/07/23 23:38
354350:03/07/23 23:49
>>351 やっぱそうですよね。ありがと〜
355教えてください:03/07/24 00:09
VC++で、Waveでデータを波形にし、サンプリング周波数を出すプログラムはできたのですが、
波形の高い部分を見つけ、それをテキストに変換し保存するプログラムが分かりません。
どなたか、教えてくれませんでしょうか?
参考ソースがあるURLなどご存知でしたらお願いします。
せめて、音声データをテキスト変換するプログラムを教えてください。

お願いします。
>>355
マルチたん(;´Д`)ハァハァ


・・・失せろや
357デフォルトの名無しさん:03/07/24 02:41
すみません。
エディット ボックスにて現在選択中の文字列の位置を
文字単位ではなくバッファ単位で取得するには
どうすれば良いでしょうか?
>>357
長いテキストを編集するエディタを作っているのでなければ
GetWindowText() から取ってきて文字列を切り出せば
いいと思われ。
359357:03/07/24 10:49
>>358
解決しました。ご教授ありがとうございました。
>>352
そんなにタイムロス出る? 一度列挙してしまえば、ファイルエント
リがしばらくはキャッシュされるので

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

って、大して処理時間変わらないと思うんだけど。
>>360
開始するまで待たされるのが嫌なんじゃないの?
まあ、プログレスバーを適当にするしかないかな。
サブフォルダが10個あったら1-1000のレンジにして1フォルダ辺り100ファイル扱えるようにする、
フォルダごとのファイル数が違っていても1フォルダ終わると1/10進む。
サブフォルダごとにそんな処理をやり、途中でファイルが増え過ぎたら、ちょっとプログレスを戻す。
そんなんしかなさそうだな。
エクスプローラでファイルを大量にコピーするときもけっこういい加減だしな。
漏れの妥協案は、ディレクトリごととかにファイル数を計数して総数に足していく。
グラフが後戻りするけどな。

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

数えてる間だけは、じわじわとバーを進めとく。(強気に進めると、後で数が
わかったときに進捗が戻ったりしてカコワルイことがあるから、弱気に進める)
>>363
面倒だけど、後者が好きだな、漏れは。
全体の進捗と個々の進捗があると精神的にも優しいと思う。
366デフォルトの名無しさん:03/07/24 19:12
すみませんが、CEdit::CharFromPos の戻り値の
文字インデックスのバッファ単位から
文字単位を調べたいのですが、
どうすれば良いでしょうか?
367352:03/07/24 19:26
皆さんレスどうもです。

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

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

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

ロジック的には
スレッドでディレクトリのファイル数を検索(サブディレクトリは含まず
併せて処理をして行き、スレッドの戻り値をプログレスバーにセットしたいと
思います。
368352: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++はニヒリズムの波によって消去される。
けけけけけけけけけ。
VBプログラマが紛れ込んでいる予感!!!
>>368
ウィルスバスターでもファイル数の検索と、ファイルの検索を同時にやってるな。
結局それしかねーんじゃねーかな.
>>371
> 周りの人間で使える人はいない。
それは単にお前の周りにいる人間が低レベル名だけだろ。
まぁお前の文章を見てるだけでも十分低レベルだと分かるがな〔w
いちいち釣られんな
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
>>380
コピペうざい。
>>380
お前うざいし、C++使ったらそんな心配しなくていいし
54 :鬱院生の卵 ◆rCmM5mBD26 :03/06/27 03:22 ID:1/U7Jb1+
>>34
>>43
誕生日おめでとう〜!!
(・∀・)\(・∀・) ナデナデ
あなた達におめでとうが言いたかったです。
つらいこともたくさんあるけどほんの少しの楽しい事、嬉しいことでも絶対生きていたらあると思うんだ。
とにかくおめでとうです。少し嬉しい気持ちになりました。
385369:03/07/25 01:18
>>370 具体例でおながいします
>>385
unsigned charの文字列の場合、strcpy()ではキャストしなくてはならない。
387369:03/07/25 01:44
というか strcpy と _mbscpy 、ステップインしたらどっちも strcpyの
アセンブラルーチンに。引数の型が違うだけ?
>>387
僕はそう認識しているけどね
389デフォルトの名無しさん:03/07/25 02:06
DirectMusicを使うのに"dmusici.h"をインクルードしようとしても
できません。警告分では
"fatal error C1083: インクルード ファイルがオープンできません。"
と出ます。Includeディレクトリも探したのですが、やはりファイルは
見つかりません。関係あるのかどうかわかりませんが、
winmm.lib dxguid.lib dsound.libはリンクさせてあります。

バージョンは6.0、OSは2000です。
どなたか教えてください。
>>389
インクルードファイルがなかったらエラーになるに決まってるでしょ
>>390
必要な宣言等をシコシコ自分で書けばエラーは出ない
392389:03/07/25 03:21
>>390,391
問題はインクルードファイル"dmusici.h"が無いことです。
DirectMusicのプログラムをを載せてあるサイト等でも
初めからあるのか何の説明もありません。

"dmusici.h"はどうやって入手するものなのでしょうか?初めから
あるものなのでしょうか?教えてください。
SDK入ってないんじゃないか
他のDirectXはどうですか?
1. DirectX SDK 未インストール。
2. ファイルが壊れて、破損ファイルとして扱われ消えちまった。
3. 実はパスが通ってないだけ。
4. 妖精さんが消しちゃった。

どれかじゃないの?
396デフォルトの名無しさん:03/07/25 07:24
VisualStudio.NET2003のアカデミックはライセンス認証が必要ときいたのですがwinXPのものと同じと考えていいのでしょうか?
397389:03/07/25 11:52
原因わかりました。
   1. DirectX SDK 未インストール
でした。VC初心者なのでその辺が良くわかっていませんでした。
どうもありがとうございました。
398まこと:03/07/25 13:30
プログラム2:10進数の整数の桁数を表示する
例えば "12340" という整数が与えられたとき、5けたの数字であるから "5" を表示するようなプログラムを作る。
CString s;
s.Format( "%d", 12345 );
SetDlgItemInt( IDC_EDIT1, s.GetLength() );
わかりません。教えてくさい
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とかなら具体化できるのですが、文字列の扱い方がよくわかりません。
アドバイスをお願いします。
メンバの配列変数は初期化できませむ
405403:03/07/25 18:55
あ・・・
>>peopleというクラスがあり、そこに文字列をprivateで、char name[]と宣言しています。
は、char name[10]の間違いです。
まず、CStringやstd::stringじゃダメなのか。
どうしてもcharにしたいなら、
メンバをchar name[128]にするとか、char* nameにしてコンストラクタでnewするとか。
407403:03/07/25 18:58
>>404

となると、この場合はpeopleクラスのname変数に文字を入れたいのですが、どうやるべきでしょうか・・・
>>405
people(const char* pName){lstrcpy(name, pName, 10);}
>>403
MFCならCStringは?
>>408はlstrcpynだった
411403:03/07/25 18:59
ごめんなさい・・・CStringでよいかもしれません。
かなり知識がないのでわかりませんでした。
試してみます
エディタを他のに変えてみたいんですけどどうすればいいですか?
413デフォルトの名無しさん:03/07/25 21:47
質問させて下さい
今、練習で、簡易ワープロ作ろうとしています
半角英数なら普通にできるのですが
日本語を入れようとすると
字を決定する前のひらがなを打ったり
漢字に変換している途中は
ウィンドウ下部に書かれてしまい
決定するまでカレットの場所に行ってくれません
OnKeyDownには入ってくれますが
そもそも座標の与え方がわかりません
どなたか教えてくれませんでしょうか
よろしくおねがいします
>>413
CWnd::SetCaretPos()
415414:03/07/25 21:57
スマンIMEか。ImmSetCompositionWindow()だな。
416413:03/07/25 23:11
>>415
できました
正直言うとすぐにできたわけではないのですが
ImmSetCompositionWindowをヒントに
いろいろ調べて解決できました
ありがとうございました
お世話になりました
MFCでプログラムを組んでいます。
int型の数字とCString型の文字を、CString型に同時に入れる方法はあるでしょうか。
AfxMessageBoxで表現したいのですが、CString型じゃないと使えません。
int型の数字も同時にAfxMessageBox関数で表現したいのです。
>>417
CString::Format
>>418

ありがとうございます。
ついでなのですがCString型からcharに変換できるでしょうか。
調べたところ、LPCTSTR(ここにCStrint型のものを入れる)でできるようなのですが、「'const char *' は 'class CString' と間接操作のレベルが異なります。」とエラーがでます。
なお、ここで調べました
ttp://www.asahi-net.or.jp/~yy6m-wd/kuma/vctip/string.htm#CstrToChar
>>419
C言語の基礎からやることをお勧めする。
>>419
MSDNライブラリ中の、CStringクラスメンバをくまなく探すなり
422デフォルトの名無しさん:03/07/26 08:55
こんにちわ。
VC++を勉強しようと思っています。
解説本でお勧めのものはあるでしょうか?
プログラミング自体初めてです。
よろしくお願いします。
>>422
とりあえず、この辺から始めてみては。
http://dir.yahoo.co.jp/Computers_and_Internet/Software/Programming_Tools/Programming_Languages/C_and_C__/

漏れは職業プログラマではないけど、ある程度覚えてしばらく経つまで本は買わなかった。
だから入門書に載ってるようなことを質問する奴が絶えないわけか・・・
>>419
俺はGetBufferを使ったりするんだけど・・・・
426デフォルトの名無しさん:03/07/26 13:17
>>424
ということはあなたは本を買って勉強したんですよね?
>>419 のエラーをわざと出そうと思ったけど出ねー。
どんなシチュエーションで出る?
試したテスト↓
CString str = "test";
const char* p = str; // ノーエラー
char buf[100];
strcpy(buf, str); // ノーエラー
printf(buf, "hoge %s hage", (LPCTSTR)str); // ノーエラー
>>426
まともな奴は最初に入門書くらい買うでしょ
>>427
それでエラーが出ないのは当たり前なわけだが
>>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++のほうから、コンパイル後に
実行すれば問題なく動作するのですができた、実行ファイルを実行すると最後の値を入力し終えた後に
怒涛の勢いで終了してしまいます。
メモを取れるくらいの間、表示させとおくのは、どうしたらいいでしょうか?
Sleepつーか終了直前にキーの入力とか待てば良いのでは?
意味不明。
コマンドプロンプトから実行すれば?
>>431
DOS窓で実行すれ
つーかVC++スレのネタじゃねー名。
>>433
さすがに意味不明ではないでしょ
むしろFAQだよな
>>431
最後の行にキー入力待ちを置いて、
入力後に終了させようにすれば?
MFCでウインドウをエクスプローラ形式で作った場合
左側のツリービューのスタイルはどうやって変更?
ちぇっくボックスつけるとか点線つけるとか・・
WM_CREATEをオーバーライドして基本クラスのOnCreate()呼ぶ前に引数のスタイルメムバいじるか、
ウィンドウが作成された後ならModifyStyle(Ex)()かSetWindowLong()
441名無し@沢村:03/07/27 15:04
>>439
PreCreateWindow()
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まで対象ですが…。
使うなって事でしょうか?
>>443 この問題、開発とどーいう関係が? ShellExtentionとかかな?
445デフォルトの名無しさん:03/07/27 16:42
かなり前、C++を勉強し始めた頃
MFCはバグが多いから使わない方がいいと言われて
現在まで使用せずにいたのですが、
現在は使った方が良いんでしょうか?
又は使っても大丈夫でしょうか?
使用しても無問題ならMFCについて勉強したいのですが
前に言われた言葉が引っかかっており
躊躇しております。
>>445
Win32APIを理解してるなら大丈夫。
447デフォルトの名無しさん:03/07/27 17:31
>>446
445じゃないけど
それは、MFCを知らなくても大丈夫っていうことなのか
> MFCはバグが多い
っていうのに対して大丈夫って言ってるのか
よくわからん
MFCのバグと思ったら自分のバグだったりする
コンパイラ通ってもエラー出ることって結構あったな、厨房の頃は(;´Д`)

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

VCのSTLにもバグがあるよ。

こう言うと>>445はSTLも使わないのだろうか
450445:03/07/27 18:30
>>446-449
なるほど、使っても大丈夫みたいですね
MFC勉強しよう〜
>>449
それはライブラリっすよねぇ
先輩にライブラリに頼るな。自分の力で作り上げろ〜
とか言われて使わせて貰えんかったなぁ。
先輩ももういないし、今から勉強してみるかなぁ
標準ライブラリも使わせないような奴は単なるアホだ
車輪の再開発とは…
なんという先輩だ
そういう先輩に限って普通に
#include <stdio.h>
とか書いてるはず。
後輩「これもライブラリですよね・・・」
先輩「いや、これはいいんだ。」

てめーの基準は何だよ!!
>>450
使っても大丈夫みたいですね。
じゃなくて大丈夫だから、マイクロソフトが入れてるんだろ?
そのセムパイに、MFCにはどんなバグがあるか聞いてみるといいよ
456デフォルトの名無しさん:03/07/27 19:55
多分、その先輩はboostとか知らないな(w

使いまくったれ
>>443
何を今更って感じだな。
XPでVCを使うほどストレスたまるモンはそうそうない。まだ98で使ってた方がマシ。
458デフォルトの名無しさん:03/07/27 20:57
VCでつくったソースを配布することになったのですが
個人情報とか漏れますか?
デバッグビルドだとwindowsに登録した名前が漏れるらしいですが
それ以外にもあれば教えてください
>>458
割れで作ったものなら逆汗して
シリアルキーを調べればバレます。
>>459
((((;゚Д゚)))ガクガクブルブル

じゃなくって本名とかHDDのフォルダ名とかあまり知られたくないのです
VCのことではないですが環境変数の値を実行ファイルに残したままのものがあった
と聞いたので警戒しています
この前登録名バレてヘコんでますがソースを見てもらうメリットも捨てがたくて質問しました
>>460
ユニコードの罠に気をつけながらバイナリエディタ使って検索してみればいいんでないの。
うむ。デバッグビルドだと、バイナリぱっと見ただけでも、ソースファイルの
フルパスが入ってますな。

ってか、デバッグビルドのバイナリ配布するの?
MFCとかCRTのデバッグ版DLLのバージョン問題もあるっちゅーか、配布
禁止じゃなかったっけ?
デバッグ版DLLは配布禁止。
464学生:03/07/28 00:48
唐突に失礼します。
LPCTSTRって何?何バイトの変数なんでしょうか?
465名無し@沢村:03/07/28 00:55
>>464
Win32では4バイト
466_:03/07/28 00:56
エディタの文字サイズ小さくしたいんだけどどうやっらたできますか?
VC++6.0です
>>457
変わった人ですね

>>462
スタティックリンクすればOK
ツール→オプソン→書式
>>469
ありがとうございますです
471デフォルトの名無しさん:03/07/28 21:40
すみません。
ラジオボタンは1つのダイアログにつき
オンの状態に出来るのは1つだけですが、
これを、複数オンの状態に出来るようにするため
には、どうすれば良いでしょうか?
グループボックス
>>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でデータを送信するプログラムを作りたいのですが
どうすればいいでしょうか
データの送受信はできているのですがネット上いろいろ探しても
プロトコルを設定する方法がわかりません
これだけでは情報が足りないかもしれませんが
これでわかる方がいたらよろしくおねがいします
>>474
CWnd::GetCheckedRadioButton()
デバッグしてたら
INT 3
で止まるんですけど、INT 3って一体どういう処理をしているのでしょうか?
479471:03/07/29 00:01
>>472 >>473
どうもありがとうございました。
>>478
intはソフトウェア割り込み
オペランド3はブレイクポイント・割り込み

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


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

アセンブラ詳しくないのでこの辺で...
481480:03/07/29 00:10
8086アーキテクチャーの話ね
他のアーキテクチャの話は知らないのでご容赦
482478:03/07/29 00:22
>>480-481
なんとなくわかりました。
どうもありがとうございました。
483名無し@沢村:03/07/29 01:02
>>474
ヌヒよ、親ウィンドウのOnCommand()でまとめて処理すればいいんじゃなかろうか
せっかくだから俺はON_COMMAND_RANGEを選ぶぜ
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
488486:03/07/29 11:47
あ、deleteぬけてた すまん
489デフォルトの名無しさん:03/07/29 11:49
アダルトDVDが
 最短でご注文いただいた翌日にお届け!
         http://www.dvd-exp.com
        開店セール1枚 500円より
>>489
そのよりって言うの好きじゃない。ボッタ栗バーと同じ。
491デフォルトの名無しさん:03/07/29 14:24
識者の方宜しくお願いいたします。
VC++6.0英語版の開発環境にて、0x5cを含む二バイト文字(SJIS)を表示させたい場合、
0x5cを含む対象文字に\を付加することで、正しく表示されることは知っていますが、
\文字を付加せずに、他の方法で正しく表示させることは出来ますでしょうか?
(英語版の環境は変更できないんです…)
・文字列は全部リソースに放り込む。
・UTF-8で入力する
>>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
>>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
あ・・・そうですね。
それでいきます。
どうも。
498485:03/07/29 20:01
>>493
おおお〜!どもです。
別の方法見つかるまで使いますっ!
>>491
割れを使うな!以上!
>>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!   急げ! 
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
自分で作ったのクラスからビュークラスの関数呼ぶって事は普通しないんすか・・・?
やり方わからん
20分前〜俺は〜馬鹿だった〜
・・・あほなこと言ってごめんなさい
505デフォルトの名無しさん:03/07/30 09:25
>>495

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

pEnemy = new Zako;

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

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

と出てしまいます。どうしてエラーなのでしょうか?
>>506
includeしてないだけじゃ?

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

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

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

自分の知識としては、Cの基礎を一通り学んだ程度です。
猫でもわかる、でいいじゃん。
本がいいと言うなら、いちおう本にもなってたはず。

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

学校でとりあえず必要としてるだけならいきなりMFCでもいいけど、
まともに覚えたいんなら、まずはSDKオンリーで仕組みから理解していくべきだと思う。
だから、本はスレ違いなんだよ
511デフォルトの名無しさん:03/07/30 16:08
C++はCをマスターしてから勉強したほうがいいですか?
512sage:03/07/30 16:08
初心者に教えるスレだからいいと思うけどね。
自分は林晴比古の新VisualC++6.0入門シリーズで勉強した。
がんばってくれ。
513508:03/07/30 16:21
>>509
なるほど…猫わかもたしか本になってたんですよね…一度調べてみます。
(やっぱり本がいいです;)

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

>>512
このシリーズで攻め続けようか、他に乗り換えようか、少し悩んでます…<林先生の本
初心者に推薦図書スレを教えるのが筋だと思うが・・・
http://aiton21.tripod.co.jp/a.JPG
OKとキャンセルボタンいっこずつしかおいてないのに
リビルドしてもこんなんに表示されちゃうのなんでですか??
てか三回くらい作り直しました。。。
ありえねえええ
ああきにしないで
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系のメソッドを絞って提供し
アイテムの追加や削除を全部管理しないと無理ですか?

>>513
最初は林の本でも大丈夫だと思うけどね。
ちょっと実力がついてきたなと思ったら用途に合わせたものを買えばいい。
>>518
うん。
521518: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++真面目に勉強している、へたれたちのいるスレはここですか?
529518:03/07/30 23:24
みなさま。ありがとうございます。
よくかんがえたらViewのデストラクタより先にm_listがなくなっていそうです。
そこでいちばん簡単な方法としてm_listにSetItemDataしたものを別個にリストにして
保持しておくことにします。なんか無駄な気もしますが。
530518:03/07/30 23:27
>>522
仮想リストとは何ですか?
531デフォルトの名無しさん:03/07/31 00:06
すみません。文字列をdouble型に変換したいのですが、

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

とした時、donの値が"2.5583999999…"になってしまいます。
この原因が全く判らないで困っています。
どなたか解決策をご教授してください。
1/3 = 0.3333333....
>>531
double型は2進数であらわされます。
ですので、10進数小数を2進数に直すと丸め誤差が生じます。
つまり、double型では、正確に2.5584を表すことは原理的にできないのです。

別に実害はないので気にせず行くのがよいでしょう。
>>531
有限小数、無限小数などで検索汁
>>530
仮想リストビューで検索しなさい
CObjectの派生クラスで、リソースに登録してあるアイコンのハンドルを取得するには
どうすればいい?ロードアイコンとかセットアイコンとかいっぱい試したけど
自分じゃむりだった・・。
537531:03/07/31 08:56
>>533
そうだったんですか。ありがとうございました。
でも、こっちでは、どうしても文字列"2.5584"を
正確な数値でdouble型に変換したいのですが、
良い方法はないでしょうか?
>>537
double型では、正確に2.5584を表すことは原理的にできないのです。
                         ~~~~~~~
>>537
計算するときに小数点第5位以下を四捨五入すると貸して自分で工夫するしかねーよ。
小数を正確に表すことは出来ん。あきらめな。
>537
doubleでは不可能。
誤差が嫌なら小数部と整数部に分けてintに格納とか。
演算出来ないけど。
542531:03/07/31 13:35
>>539-541
そうですか。わかりました。
どうもありがとうございました。
543デフォルトの名無しさん:03/07/31 14:25
ピクチャボックス、またはエディットボックス上に
bold表示で文字を表示させたいんですけど
どういう関数を使えばいいんでしょうか
エディトボックスについては、SetFontすればよろし。
>>538
しました。そこも見たとおもいます。
アプリケーションクラスでロードアイコンすると、
Debug Assertion Failed!が出て、ビルド自体できないんすよね。
ちなみに出てるファイルはafxwin.inlのline26です。コードは
HICON hIcon = NULL;
hIcon = LoadIcon(IDR_MAINFRAME);
if (hIcon == NULL)AfxMessageBox (_T("アイコンがロードできません"));
でappクラスのコンストラクタに入れてます

って書いて、まさかと思って違う関数に入れたら通ったヽ(´∀`)/
Appクラスのコンストラクタってあんた・・・
いや、とりあえずどこでもいいからつっこんでコンパイラ通したかったんすよ笑
てかCImageListのadd関数にハンドル渡すとまたDebug Assertion Failed!が
でるうううう!また俺馬鹿なことやってんだろうなぁ。。。泣
人間は生まれながらにして自由だが一方で鉄の鎖に繋がれている。
ルソーの社会契約論にそうある。
人間が家畜化してるらしいよ。
ままままじでわからんです!
appのInitInstanceの最後に

HICON hIcon = NULL;
hIcon = LoadIcon(IDR_MAINFRAME);
if (hIcon == NULL)AfxMessageBox (_T("アイコンがロードできません"));
data.Treeimage.Add(hIcon);

TreeimageはCImageListです。この状態でリビルドしてもエラーでないんすけど
ブレークポイントで調べると四行目のAdd関数の時にDebug Assertion Failed!
がでます。なんか悪い事してる・・・?
>>549
せっかくアサーションが発生しているなら、
CImageListのソースを見てみろよ。
>>550
エラーのとこに出てるフォルダ名vs70buildsで検索かけたけどでない。
インクルードフォルダもみたんですけど・・・。
ソースどこにあるんすか??
ソース見ろってことは俺悪い事してるのか
>>551
インストール時にMFCのソースも入れましたか?
あった!!!!けど、意味不明・・・。
BOOL Arrange(UINT nCode);
でエラーなんですけど、うぅ〜
{ ASSERT(m_hImageList != NULL); return ImageList_AddIcon(m_hImageList, hIcon); }
こっちでした。あ”ぁ〜・・・・・・・
>>553
それってCListCtrlじゃないの?
>>554
Create()してないでしょ。予想通りだけど。
笑っちゃうくらい凄いっすね。。。
まじ尊敬しちゃう・・・。ありがとうございました!!
>556
>>appのInitInstanceの最後に
だからね。Create()が通ってるわけもない。
え、普通に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]にメモリが確保されていないように思います。

これはどういう対処をすればいいのでしょうか?
>>560
callocを調べてみると幸せになれるかも。
562デフォルトの名無しさん:03/07/31 22:44

覗いたが価値!ウキウキしますよ♪

http://angely.h.fc2.com/page004.html
>>558
意味わかんねー
564デフォルトの名無しさん:03/08/01 00:19
最小化をするとタスクバーにアイコン化されるようにする
コードを教えて下さい
565_:03/08/01 00:19
566559: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行分のサイズしか返さないんですが
正しい値を得る方法はありませんか。
というかこれできないとこの関数の存在意義ないじゃないですか!おかしいですよ!
570559:03/08/01 12:35
アイコンのIDをIDRにしてた・・・。ごめん俺・・・俺・・・逝ってくるわ・・・
激しく厨な質問で申し訳ないのですが、
Platform SDK でHeader: 〜〜.idl
と書かれているものはどのようにして呼び出せばいいのでしょうか?
どうやら、COMみたいなのですが、Prog id もCLSIDもわからず…
572571:03/08/01 20:08
詳しく言うとIStaticPortMappingインターフェイスを取得したいんですが…
idl自体はmidlでコンパイルすればいいが、
PlatformSDKなら、コンパイル済みな、同名.hが付属しているはず。
OfficeXPとかSleipnirみたいに、ツールバーとかメニューを
かっこよくするにはどうすれば??
575571:03/08/01 23:13
NATUPnP.hだけでなくNATUPnP.idlすらありませんでした(汗
どこを探した?
577571:03/08/01 23:31
HDの中すべて探したんだけど(検索した)
SDKを落としなおすしか…
ふーむ。

C:\Microsoft SDK\Include のディレクトリ

2001/05/30 18:20 67,477 natupnp.h
2001/06/03 22:49 10,086 natupnp.idl
579571:03/08/02 00:09
そもそもPlathome SDKがはいってなかった予感
インスコ中でし
>>574
自作。

まあ、冗談はともかくとして、Sleipnirはこれ。
http://www.bcgsoft.com/

フリーでなんとかしたかったら、CodeGuruとかCodeProjectとかviksoe.dk
あたりから拾ってくるとか。
581山崎 渉:03/08/02 02:06
(^^)
>>560
iはちゃんと定義されているのか?
VS.NETのMFCで拡張子を追加したくて、ファイルの種類エディタを開きたいんですが
表示メニューにエディタがなくてできないんですがどうすればいい??
584デフォルトの名無しさん:03/08/02 11:33
VS.NETのWindows Installer作成機能で、
インストールの最後に「Windowsを再起動しますか(Y/N)」
というダイアログを出して再起動するようなものを作りたいんですが、
標準の機能だけでは無理なんでしょうか。

カスタム動作用のプログラムを作る必要がありますか。
でもその再起動用プログラムまでインストールする必要がありそう
なのが気になります。
585_:03/08/02 11:38
586無料動画直リン:03/08/02 11:38
インストールが必要な再起動プログラムってどんなだよw
588デフォルトの名無しさん:03/08/02 14:22
>>587
おまえ、メジャーリーグ級の馬鹿だな。
カスタム動作用のdllもインストーラに含めるって意味に決まってるだろ。
猫でもわかるプログラミングのSDK編
第6章 簡単なメニューのところでお聞きしたいことがあるのですが、

Visual C++ .NET だとリソースエディタを使ってメニューを作成すればいい
というのは分かったので、実際にメニューを作ったのですが、
メニューバーそのもののIDの設定の仕方が分かりません。
メニューバー上で右クリックしても設定できないようですし・・・。

それと、IDが設定できれば
myProg.lpszMenuName = "メニューバーそのもののID";
とすれば良いと認識しているのですが、間違っているでしょうか?
590583:03/08/02 15:33
めんどいから素直にMFC組みなおすわ
>>589
Resource View内の項目を右クリープロパティ
>>591
Menuが空じゃないと設定できなくない??
>>584
この順序でやってみよう。
(1)本当にOSの再起動が必要かどうか見直す。
アプリの作りを変えられないだろうか。
(2)InstallShieldかなにかを買う予算がないか交渉してみる。
(3)あきらめられないかどうか検討する。

(4)もしも、どーーーーしてもVS.NETでやらなくてはならいならば…
まずWindows Installer SDK(Platform SDKの一部)のドキュメントを熟読する。
orcaとmsi編集ツールを駆使するのだ!
594593:03/08/02 22:39
>593に追加。
(4)は結局はmsiのプロパティをちょこっと変更すればいいだけなんだけど。
VisualStudioのビルドに組み込むのが大変だし管理しづらくなるので
全然お勧めしない。
595583:03/08/03 13:31
つりーで苦戦してる。MFCでエクスプローラースタイルでつくって
GetTreeCtrl()でアイテム追加してるんだけど、
ttp://aiton21.tripod.co.jp/a.JPG
みたいになって、TVI_ROOT指定でもこれの上にアイテムが追加できない。
このもう一個上にアイテム追加するにはどうすれば?
596595:03/08/03 14:33
上ってのは階層の話です。。。
>>595
これは全部ルートになってる
先にルート作って、そのときに返ってくるHTREEITEMを使って子を作る
598595:03/08/03 15:01
TVS_LINESATROOT指定してたあああああああ!!
597さんまじすいません。。。
つくづく自分はばかだなぁと・・・・
CString iconname;
Treename = "icon";
HICON iconname;
間接操作のレベルが異なるって出るんだけど、
どうすればCStringの文字列でHICONを作れる??
あれ。。。
CString iconname;
iconname = "icon";
HICON iconname;
だよ
きのせいだよ
もうめちゃくちゃだな
603584:03/08/03 22:29
>>593
解説ありがとうございます。
(1)は仕組み的にだめだったので、いまは(3)でやっています。
#やっているというかなにもしていないというかw

VS.NETのインストーラ作成機能はしょぼいんですね。
SDKのドキュメントにはいろいろ書いてあるっぽいのに
なぜできないんだろうと思っていました。

(4)はおすすめでないとのことなので、(3)を検討してみようと思います。
しかし8万か22万ですか...。
とはいえ、SDKのドキュメントを理解するのは大変そうですし。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999294620&res=81
に貼ってあるリングバッファのソースなのですが、
何処が悪くてコンパイルが通らないのか皆目検討がつきません。
どなたかご教授お願いします。
>>604に書いてある質問なのですが、
どういうエラーが出てコンパイルが通らないのか皆目検討がつきません。
どなたかご教授お願いします。
>>605
コンパイルとおったのですか?
下のはVCが吐いたエラーログです。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/999294620_82/CRINGBUFF.plg

ちなみにコードは書くだけかいてあるんですが、何で見っけてくれないのでしょう??
環境はVC6sp5です。どなたかご存知ありませんか??
>>606
簡単に言うと、おまいが test.cpp から呼び出した

int CRingBuff::Out
bool CRingBuff::In
CRingBuff::CRingBuff

は実体がねぇぞってコンパイラ様がお怒りに
なってるってこった。
608604&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++を習得するのは無理ですか?
>>611
んなこたぁない。
613_:03/08/07 04:01
>>611
C++はCの拡張規格であるから、
C++でCの基本的な書式や関数はだいたいそのまま使える。
だから書式がC++より単純なCの方からやり始めた方が、
プログラミングの勉強がしやすい。

いきなりクラスとかコンストラクタとか聞かれてもわけ分からんでしょ?
いきなりポインタとか聞かれてもわけ分からんと思うが
616デフォルトの名無しさん:03/08/07 11:28
なんで初心者用のguiを主体にしたC++のプログラム勉強のページとか本とかないんですか?(あってもちょっとしか載ってない)
魔法の文いっぱいでも良いから、誰か作ってよ!
exeファイルにならないとおもしろくないよぉ!
>>616
面倒でも最初はコンソールで
しこしこやったほうがいいだろうねぇ

どうしてもやりたいなら簡単なダイアログベースで
やればいいと思われ。
そこでBCBなんですっ!!
GUI主体のC++だから初心者でも安心
MFCと同じ、なんて考えてる人は一度触ってごらんよ
世界が変わるよ
>>616
そりゃ、VC++ は基本的に“GUI を主体にしていない”からですよ。
620デフォルトの名無しさん:03/08/07 12:09
ウインドウズ同士の(移動、サイズ変更時の)当たり判定って簡単にやれる方法(APIとかで・・・)ないっすか?
一応チャイルドウインドウ限定ということで・・・。

spy++見ても、あるウインドウがWM_SIZINGとか来てるときに他のウインドウに重なっても、
重なられたウインドウってメッセージとかきてないみたいなんですよね。

やはり古典的な方法でやるしかないのでしょうか?
621620:03/08/07 12:10
すいません、win32apiのみで、MFCは使用してないっす。
>>610
libファイルってDLLと同じ場所に勝手にできるんじゃなかたっけ?

>>620
SDK32:重なったウィンドウの表示されている部分を調べる
ttp://support.microsoft.com/default.aspx?scid=kb;ja;75236

「古典的な方法」って IntersectRect()を使うことかな?
623620:03/08/07 13:44
>>622
ありがとうっす。なんとかなるかな?

古典的な方法・・・ゲームみたいにそれぞれ個別に自前でチェック・・・。
624620:03/08/07 14:25
>>622
なんとかうまくいきそうです。ほんとありがとうございました。
625610:03/08/07 16:12
>>622
>libファイルってDLLと同じ場所に勝手にできるんじゃなかたっけ?

すんません。クラスをエクスポートしていませんでした。
全く何もエクスポートしないとlibはできないんですね。
初心者用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' に変換できません。
こんなエラーが出てきます。解決策教えて下され
>>626
鬱だ氏のう DirectX (Part 9)
http://pc2.2ch.net/test/read.cgi/tech/1054553472/
628悩み常駐:03/08/07 20:43
winapiで、フォーカスのない時でも、キーイベントを監視したい、つまり、
常駐プロがラムを作成したい、誰か、教えてください。help help help
>>628
> 常駐プロがラムを作成したい

ごめん、少しワロタ
630フック船長:03/08/07 21:53
>>628
SetWindowsHookとかそのあたりを使おう。
631デフォルトの名無しさん:03/08/08 06:36
何気にMSDNライブラリを見るやつでwebみたらタブブラワザなんじゃ、、
632デフォルトの名無しさん:03/08/08 12:37

外のフォルダにあるアイコンファイルを、現在のプロジェクトに
追加したいのですが、リソースビューで
「リソースの追加」→「インポート」として、他フォルダのアイコンファイルを
選択して「開く」としても何も起こらないのです。

「リソースの追加」の「インポート」ってどの様にして使うのですか?
全く何も起こらないのですが
>>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です。
>>635
>一回目のクリックは前回クリック した位置のアイテム情報を
一回目にクリックしたのになんで「前回」があるの?
if(前回のアイテム == NULL)
return;

みたいなのではダメなのか?
と思ったらなんか勘違いしてた
636同様よく分からん
639635:03/08/09 19:42
>一回目にクリックしたのになんで「前回」があるの?
分かりづらくてすみません。一回目では前回の情報はありませんから
必ず失敗するんです。

クリック位置 : GetSelectedItemの戻り値
  一個目  :  失敗
  二個目  :  一個目のハンドル
  三個目  :  二個目のハンドル
  四個目  :  三個目のハンドル
    ・           ・
    ・           ・
という状況なんです。ちなみに同じアイテムを二回クリックすれば
そのアイテムのハンドルは得られるんですが、そんなことする必要の
あるソフトなんて見たことないですし・・・
あ、わかった。
OnLbuttonDown(){
i = GetSelectedItem()
DefWindowProc()
}
みたいなことになってるでしょ。
641635:03/08/09 20:41
>>640
なってます。微妙に違いますが↓

OnClickTree(){
  m_hSelectedTreeItem=m_cTree.GetSelectedItem();
  TRACE(HTREEITEM[%08X]が選択されました\n",m_hSelectedTreeItem);

ってなってます。ほかにどうすればいいのか知らないので・・・
HitTestとGetCursorPos使って判定してくらはい。
http://www.codeguru.com/forum/printthread.php?threadid=231232
TVN_SELCHANGEDじゃあかんのか
644635:03/08/09 21:33
>>642
参考にしてみたところ嘘みたいに動くようになりますた。ありがd
645635:03/08/09 21:37
う゛っSELCHENGEDならGeteSelectedItemでも出来るのね・・・
ソースを眺めてると標準ライブラリのstringでなくCStringを使ってる香具師が多いようですがCStringがstringより優れてる点ってどの辺りでしょうか
MFCがインターフェースとしてCStringを使っているから。
CString::Formatがあるから。
>>647
ありがと
649名無し@沢村:03/08/10 13:35
>>646
マルチバイト文字に対応している。
650デフォルトの名無しさん:03/08/10 15:38
VC++でリリースビルドした実行ファイルにプロジェクトファイルが保存されていた
フォルダ名が残っていますが消せますか?

それともみなさんあまりそういうの気にせずに配布してます?
>>646
参照カウントを使用していて代入やパラメータ渡しが高速だから
>>650 VC6で?ホントにリリースビルドか?
>>652
2003です
実行ファイルの場所がReleaseフォルダなので大丈夫じゃないかと思います

ちょっと訂正
pdbファイルがフルパスで記述されてます
>>653
Releaseビルドの場合もデフォルトでは/PDBオプションが付くようだ。
はずしかたは/PDBオプションのヘルプで。
>>654
構成プロパティ→リンカ→デバッグ→デバッグ情報の生成
をいいえにすることで解決しました
ありがとうございました
656646:03/08/10 18:45
>>649>>651
CStringも結構便利なのね。
>MFCがインターフェースとしてCStringを使っているから。
これがでかいんじゃないかな。
wstring使っててもそれだけじゃすまないし。
>>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
662恵比寿帝冥:03/08/11 12:59
ここ以外に良い掲示板があったら教えてください。
663デフォルトの名無しさん:03/08/11 13:23
Visual C++.netのいい参考書orサイトってありますか?
>>662
マルチ
665デフォルトの名無しさん:03/08/11 17:39
タスクトレイにアイコンを表示してメニューを表示するところまではできたんですが
そのメニューの項目をクリックしないと消えてくれません。

えっと、やっぱ他の別のウィンドウとかをクリックして
メニューがアクティブでなくなったら消えてほしいんですが
いつまでもしつこく出ています。

どーすれば、消えてくれるんでしょうか?
>>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を見るべし。
XMLの出力をしたいんですが、普通にファイル出力で出力してくしか分からないんですが、
何かいい方法ありますか?
とりあえず、その分で本当に人に意味が伝わるか
自分で確認してからもう一度書いておくれやす。

何に対してどのようにしたいからXMLを出力したい?
669デフォルトの名無しさん:03/08/11 23:48
テキストエディタをつくりたいのですがエディットボックスコントロールでは
最大32kbまでの文字列しかあつかえないそうですが大きなサイズの文章編集
が出来るものをつくるにはどうすればいいのですか
>>669
RichEditBoxだったかな・・・そんなのがあるよ
671デフォルトの名無しさん:03/08/12 00:06
>670
ありがとうございます

助かります
>テキストエディタをつくりたい

もし、秀丸とかその系統のものを目指しているなら
自作が早道。RichEditCtrl はとかく使いにくい。
673665:03/08/12 11:08
>>666
SetForegroundWindow(hWnd);
こいつがなかったせいみたいでした。
つけたらOKでした。
ありがとうございました。
VC++からDBの操作についてなのですが、
CDaoRecordsetの派生クラスをつくりクラスウィザードで
複数のテーブルを選択して派生クラスのメンバ変数として
選択した複数のテーブルがメンバ変数に登録されたのですが、
1つのテーブルだけを処理したいのですが、可能なのでしょうか?
たとえば下記のようなコードを実行すると意味のわからない
レコード数が戻ってきてしまいます。
クラスを作る段階で選択しているテーブルが1つだけなら
問題なくレコード数なのどは参照できるのですが・・・

----ここから----

CRecSet MyRecSet;
MyRecSet.Open();
MyRecSet.MoveLast();
long RC = MyRecSet.GetRecordCount(); //ここに意味不明な数値
MyRecSet.Close();
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();
と完全修飾すれば通るのですが...

なにか原因は考えられるでしょうか?
678677: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++のエディタでクラスのコンストラクタが自動メンバ表示
されないのですが(デストラクタはされる)何か理由が
あるのでしょうか?
直接呼べないコンストラクタを補完して何かうれしいのかね?
683681:03/08/13 01:48
>>682
でもデストラクタは呼べるのですが。
たしかに、デストラクタは明示的に実行できるね。
でも、それは反論にはなっていないよ。
685681:03/08/13 02:18
もう一回コンストラクタ、デストラクタから
勉強しなおしてきます。。。
デストラクタは明示的に呼べるが、
コンストラクタは明示的に呼べない。
従って、コンストラクタを補完する必要はない。
VC++6(sp5)でstlport4.5.3を使い始めたんですが、
#include <iostream>
#include <deque>
using namespace std;

上記のように宣言すると、iostreamでライブラリの競合エラーが出て使えません。
これを回避する方法ご存知でしたら教えていただけないでしょうか。
>>687
確かstlportの優先順位をageれば良かった気が…
689デフォルトの名無しさん:03/08/14 06:41
C++って、Cより++(チョメチョメ)な分エロいんですか?
どんなプレイのことをC++(シーチョメチョメ)って呼ぶんですか?
それと昔、棒ランド(某ランド?)っていうヤバい会社もC++してたんですか?
MSのはVisual的にスゴいのか・・・(;´Д`)ハァハァ
690687:03/08/14 10:57
>>688
解決しました。ありがとうございました。
691デフォルトの名無しさん:03/08/14 11:07
C言語なら俺に聞け!スレから来たんですが、VCでのDLLの
作り方がよく わからず、困っております。どなたかわかりやすく
教えてください。 それか、ソースを晒すのでDLLにしてください。
おねがいします。(サイトみて手順通りやってみたけどできない
泣)
ソースだけ晒しても無駄ですんで、
どうできなかったのか具体的に説明してください。
693691:03/08/14 11:25
http://www.angel.ne.jp/~mike/vb_dll/index.html
このサイトの通りやったんですけど、なんか、関数名(?)みたいな
所でエラーが出てしまい、また、defファイルの加え方もよくわかり
ません。教えてください。(Cはある程度使えますが、VCは本当に
初心者です)
>>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機能で出てきて
くれないんだけど、どうしたらいいんでつか?
やっぱりその都度、プロジェクトにソースやヘッダファイルを追加しないとダメなんですか?
ヘッダーだけプロジェクトに参加させればえぇで。
昔にCでDOSで動くやつを書いていたんですけど、さすがにGUIアプリケーション作りたくなってVCを使ってみたいと思いました。この場合、開発過程の習得は簡単なのでしょうか?
不安なのはCとC++で文法がどれぐらい違うのかということです。
698デフォルトの名無しさん:03/08/14 17:19
Console ApplicationをMFCサポートで作成しています。

プログラム実行中に、右上の×ボタンを押下すると強制終了できますが、
強制終了できないようにすることは可能でしょうか?
>>697
CとC++の違いっつうと、クラスとオーバーロードかね。(ほかにもあるけど)
もっともそれよりもWindowsアプリの場合は結構めんどくさい事しなきゃならんから
まずC++を勉強するのか先か?
猫でも分かるプログラミングでも読んでみ?
ぐぐればすぐ出る。
>>698
永遠に止まらないプログラムを書きたいのですね?
701デフォルトの名無しさん:03/08/14 18:09
>>700
途中で窓を閉めてしまうとエラーがでてしまいます。
なので、処理終了後には自動で窓が閉めれるといいのですが・・・
702デフォルトの名無しさん:03/08/14 18:47
ソースを選択してctrlかシフトを押しとどれかのキーを押すと自動にソースにあった
インデントが入る機能があったと思うんだが、どうやるんだっけ?
703695:03/08/14 18:52
>>696
レスさんくすです。

Win32API関数とかが、何もしなくてもIntellisenceが起動するのはVC++内部の仕様なんですかね?
バグです
>>702
Ctrl+K→Ctrl+F (VC++.NET)
Alt+F8 (VC6)
>>697
違いというよりも追加要素といった方がいいな。
とりあえず、クラスの構造や機能を理解して、
さらにクラスの継承、コンストラクタ・デストラクタ、
オーバーロード、オーバーライド、エラー処理を
最低限抑えておくとVC++に移行しやすい。
テンプレートもやっておくと便利だが、
やらなくてもとりあえずVC++は使えるので、
VC++を使いながら勉強しても特に問題ない。

漏れはC→Java→VC++と変則型だったので、
VC++やりながらC++も勉強した。
まぁ、JavaとC++は内部処理的にはともかく書式は似ているので、
それほど苦にはならなかったけど。
>>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と同じディレクトリに生成しても表示されませんでした。
>>708よ。VisualC++スレで
>Visual C++で
は、ないだろ。
>>708
不可能。
711デフォルトの名無しさん:03/08/15 14:03
質問お願いいたします。
TRACE0マクロでデバッグウィンドウに文字を出力する方法を
最近覚えたのですが、例えばintとかに入っている
数値を出力する場合も文字に変換しないといけないのでしょうか?
(そのまま出力すると数値でなく文字化けみたいになるのですが)
// TRACE の例
int i = 1;
char sz[] = "one";
TRACE( "Integer = %d, String = %s\n", i, sz );
713711:03/08/15 14:12
>>712
できました!
サンクスコです!!
714691:03/08/15 14:49
どうにか作ってみたんですが、VBから呼び出せないようです。
書き方自体が根本的に間違っているかもしれないので、
どなたか見てやってください。
ちなみに、外から呼び出したいのはdoublemulapi関数だけで、他の関数は
DLLの中でdoublemulapi関数から呼ばれるだけの関数です。
http://www12.ocn.ne.jp/~mygrid/DOUBLEMUL.TXT
715山崎 渉:03/08/15 15:10
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
extern "C"が要らなかったっけ?
717691: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クラスも同様に解放を行わないと実行時エラーが起きるようですが、
どうして起こるのか原理がサポーリです。;_;
高名な先輩プログラマの皆様、よろしくおねてぃ。
というか解放して問題が出なければとりあえず解放しといた方が良いと思うんだが
それいぜんに、そのコードでは、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ってちゃんとオブジェクトを指してんのか?)
>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が
設計されていないから、でしょう。失敗すれば、結果はリソースリークです。
725719=722:03/08/15 22:35
>>724
>スコープがはずれるのは、ポインタそれ自体であって、
>ポインタの指し示す先にあるオブジェクトではない。

そうでした・・・。m(__)m
今再度調べてみたところ、
::SelectObjectは解放されたオブジェクト(今まで参照していたオブジェクト)を
デストラクタを呼び出してdeleteする機能があるので、
明示的には::DeleteObjectを呼ばなくていいみたいですね。
そういう意味でも、最後の::SelectObject呼び出しは必須だということで・・・
むぅ、動作が難解だ・・・。;_;

回答どもでした。また何かありましたらよろしくお願いいたします。m(__)m
726719=722:03/08/15 22:37
>>723
 pDefBitmap = pMDC->SelectObject(&Bitmap);

これは正当なようです。
とりあえず、コンパイラは文句いってきません。(笑
727719=722:03/08/15 22:50
>デストラクタを呼び出してdeleteする機能があるので、
>明示的には::DeleteObjectを呼ばなくていいみたいですね。

・・・と思ったら、やっぱりちゃんとdelete pMDC;ってやんないとダメみたいだわ。(笑
VC6ので、ファイルをオープンする時に
const char* じゃなくて stringって使えますでしょうか?

#include <fstream>
...略...
string FNAME = "c:\test.txt";
ifstream file_in;
file_in.open(FNAME);

みたいにしたいのです。
>>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 をプロジェクトにぶちこめ!
732728:03/08/16 11:36
c_str使ったりいろいろ試したんですが無理でした。
素直にconst char* でやります。
>>732
string.begin()
あるいはMFCならCStringを使うといい
735691: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];  // ← ココ
  }
のように書くとエラーはおこりません・・・。
むぅ、どちらも配列を削除していることには違いないんだけど・・・。
>むぅ、どちらも配列を削除していることには違いないんだけど・・・。

char *p[2]; p[0]=malloc(10); p[1]=malloc(10)
char *p=malloc(20);
の違いがわかるか?
739737:03/08/17 22:12
>>738
むほっ。よく分かりません。;_;

最初の行は要素2のポインタ配列を用意して、
要素のそれぞれに10バイトのメモリ領域へのポインタを割り当てています。
これはdelete [] p;で削除します。

2番目の行は(配列ではない)ポインタに
20バイトのメモリ領域へのポインタを割り当てています。
これはdelete p;で削除します。

これと>>737とがどういう風に結びつくのでしょうか。_●□=
VC++6.0ってXPにもいれられますか?
>>739
> これはdelete [] p;で削除します。
だめ
>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点)。
743737: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
747744:03/08/18 13:48
アプリケーションIDだと思うんですけど。プログラムIDと同じらしいですが
とりあえず、appidが出てくるurlの例でも示せ
749デフォルトの名無しさん:03/08/18 17:45
ちょっと相談、っていうか教えて欲しい。

今開発中のアプリにテキストの表示機能が必要と言うことになった。
Notepad.exeを呼び出してもいいが、そのファイルを変更されてしまう可能性がある。
となると、アプリ中で表示しないといけないのだけどなにか手っ取り早い手はあるかな?
MFCなら CEditView とかダイアログにテキストボックス作ってそれで表示するとか
Win9xなら64kの制限あるけど
751デフォルトの名無しさん:03/08/18 18:14
Visual C++.NET でプロファイラを使おうと思ってマニュアルを調べたのですが、
「/PROFILE リンカ オプションは削除されました。」

「リンカ ユーティリティであるソース プロファイラは削除されました。」
という記述しか見つかりませんでした。
プロファイルできなくなってしまったんでしょうか?
752749: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/
>>753
そんなファイルはないか、またはその解説書オリジナルのものだと思う。

絵を書きたかったらWindowsプログラミングのスキルは必須。
>>2の「猫でも〜」を見ることをお勧めする。
Windows SDK編 第1部 25章あたりで絵を描いてるから。
>>751 .NETスレで聞いてくらはい
あれ? VC++は .NETも含めてこのスレ?
>>754
誰が貴様のような自意識過剰女なんぞ見るかよ!
759デフォルトの名無しさん:03/08/19 02:08
>>755
勉強しなおしてきます・・・。ありがとうございました。

       期限は 8/20 まで

文部科学省に反対メールを!!今しかない!

「朝鮮学校含め大学受験資格容認へ 来春入試から、文科省方針」
http://www.sankei.co.jp/news/030802/0802sha008.htm

文部科学省 http://www.mext.go.jp/f_mailto.htm

文部科学省ご意見メールアドレス [email protected]  <<<ここ

(友人知人家族にも知らせてね!携帯からもメールできます。反対の意思表示を!)

組織的工作で、朝鮮総連が文部科学省に「認めろ」とメール攻撃中。
2chが応戦中。応援お願いします。メールで「絶対反対!」の意思表示だけでも!
一人でも多くの方のご協力をお願いします!
761_:03/08/19 23:09
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のスピードが遅くて困っています。配布する時に動作の悪い方しか
できないので。解決方法を教えてください。
763762:03/08/20 08:27
>>762
スピードが遅いと言うのは、キーを押しっぱなしにした時の事です。
くだらんよチミ
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>
>>765
WindowsフォームアプリでMFCのクラスを使えるの?
>>762
標準出力はバッファリングされる。
VC++で、セマフォみたいな機構を利用したいのだがなんかあったっけ?
>>766
MessageBox::Showを使わなければ
エラーが発生せず正常に使えます
String* Str_File_Array[];の配列だとAddが使えず・・
SystemArray型はサイズが固定なので動的には使えず・・
なので文字列を追加していく処理を行うにはCStringArray型を
使うとかなり楽なんですよ
だからMFCクラスを使おうと思っているんですが
>>769
Vectorでstring使っちゃダメなの?
>>770
すいません
「Vectorでstring」ってどういう意味ですか?

#include <string>
using namespace std;
で通常のbasic_stringを使うという事でしょうか?
std::vector<CString>ってことだろ。
>>769
ArrayList
774765:03/08/20 13:42
>>772
なるほど、そういう事ですか
ありがとうございました

>>773
ArrayListでうまくできました
本当にありがとうございました
はまっていた所なんで助かりました
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' の前にありません。

どうかよろしくお願いします
>>775

using namespace System::Runtime::InteropServices;
using namespace System::Text;

// Ini 読み込み
[DllImport("KERNEL32.DLL", EntryPoint = "GetPrivateProfileString", CharSet = Ansi)]
static UInt32 GetPrivateProfileString( String* lpAppName,
String* lpKeyName, String* lpDefault, StringBuilder* lpReturnedString,
UInt32 nSize, String* lpFileName );

// Ini 書き込み
[DllImport("KERNEL32.DLL", EntryPoint = "WritePrivateProfileString", CharSet = Ansi)]
static UInt32 WritePrivateProfileString( String* lpAppName,
String* lpKeyName, String* lpString, String* lpFileName);
777775:03/08/22 11:11
>>776
回答ありがとうございました
エラーは消えたのですが今度はForm1.cpp内でエラーが発生してしまいました
宣言してる場所がおかしいのでしょうか?

Ar\Form1.cpp(16): error C2129: 静的関数 'unsigned int Ar::WritePrivateProfileString(System::String __gc *,System::String __gc *,System::String __gc *,System::String __gc *)' が宣言されましたが定義されていません。
778775:03/08/22 11:12
Form1.cpp内
#include "stdafx.h"
#include "Form1.h"
#include <windows.h>

using namespace Ar;

int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
System::Threading::Thread::CurrentThread->ApartmentState = System::Threading::ApartmentState::STA;
Application::Run(new Form1());
return 0;
}
779775:03/08/22 11:13
Form1.h内
namespace Ar
{
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
using namespace System::Text;
using namespace System::Runtime::InteropServices;


// Ini 読み込み
[DllImport("KERNEL32.DLL", EntryPoint = "GetPrivateProfileString", CharSet = Ansi)]
static UInt32 GetPrivateProfileString( String* lpAppName,
String* lpKeyName, String* lpDefault, StringBuilder* lpReturnedString,
UInt32 nSize, String* lpFileName );

// Ini 書き込み
[DllImport("KERNEL32.DLL", EntryPoint = "WritePrivateProfileString", CharSet = Ansi)]
static UInt32 WritePrivateProfileString( String* lpAppName,
String* lpKeyName, String* lpString, String* lpFileName);

中略

//iniファイル処理関数
private: System::Void IniFile(System::Object * sender, System::EventArgs * e)
{
WritePrivateProfileString("Setup","test","1",String::Concat(Application::StartupPath,"Setup.ini"));
}
780776:03/08/22 16:56
>>777
>>776 のコードはクラスの中で定義します。

>>779
〜 StartupPath, "Setup.ini"));
↑これだと区切り文字を付け足してないので失敗します。
〜 StartupPath, "\\Setup.ini"));
781デフォルトの名無しさん:03/08/23 22:21
以下のプログラムをvc++6.0でコンパイルすると
「コンストラクタの宣言に戻り値の型が含まれています」というエラーがでます。
どうしてでしょう?
わたしの使っている教科書そのままなので、構文がおかしいとは思えないのですが・・・。;q;

class complex{
  float r, i;
public:
  complex(float a = 0.0, float b = 0.0);
  float real();
  float imag();
}

complex::complex(float a, float b){
  r = a; i= b;
}
float complex::imag(){
  return i;
}
float complex::real(){
  return r;
}
782デフォルトの名無しさん:03/08/23 22:35
>>781
class complex{
/* 〜 */
};// ←セミコロンがねぇよ。
783デフォルトの名無しさん:03/08/23 22:44
>>782
(゚◇゚)~ガーン それだけなのー!?


・・・ほんとだ、コンパイラとおった。(w
ありがとうございました。m(__)m
784すれ違いだが:03/08/24 02:48
>>781
どうせだから勉強がてら四則演算子とかも定義してみ。
785デフォルトの名無しさん:03/08/24 09:36
int main(int argc,char* argv[]){ ←二個目の引数でパスを渡す
char path[20];
   
strcpy(path,argv[2]);
chdir(path)
こんな感じでやっているんですが、コンパイルすら通りません。
VCでchdirとか入力すると引数候補とかが表示されるのに、
それは定義されていませんんと出ます。なぜでしょうか?
786デフォルトの名無しさん:03/08/24 09:39
>>785
#include <direct.h>
787デフォルトの名無しさん:03/08/24 09:58
2個目なら argv[1] じゃないの?
ところで、path[20] って少なすぎ。
>>787
二個目の要素じゃなくて二個目の引数だからargv[2]でOKだろ。
789デフォルトの名無しさん:03/08/24 10:42
>>786
そんなのあるんですか〜、標準関数じゃないっぽいから
知らなかった〜
>>787
うーん、適当に20文字にしてしまいましたが、少ないですか〜
790デフォルトの名無しさん:03/08/24 11:28
windowsやDOSでは、
argv[0]に引数の個数、argv[1]に第一引数、argv[2]に第二引数・・・なんだよね。
僕の使ってる教科書はargv[0]が第一引数になっていてかなり戸惑った。
> argv[0]に引数の個数、

違います。
792デフォルトの名無しさん:03/08/24 11:35
>>791
違ったっけ?(w
793デフォルトの名無しさん:03/08/24 11:39
あ、プログラム名だ。
引数の数はargc-1だな。
>>789 強いていうなら、多い少ないの問題でないと思う
動的2次元配列なんですが、
典型的なダブルポインタつかったパターンで対応できない場合
(2次元目の要素を見つける度にpush_backする必要がある)ではどうするのが
一番手っ取り早いでしょうか。
みなさんどう対応されてますでしょうか。

ベクタのベクタ(vector<vector<int> > v; )
を試したのですがメモリ使用量が多杉&処理速度も低速
&stlport453でこれやるとVCのheapエラーが出て実用になりませんでした。
list<vector<T> >
deque<T* >
あたりではどうか。
797デフォルトの名無しさん:03/08/24 13:41
結局>>751の件はどうなんでしょ?
私も調べたんですが見付けられず(鬱
どなたか情報お願いします_(_^_)_
vector<vector*<int>>で代用。
>>797
別売り。
800795:03/08/24 18:17
>>796
外側をlistにするのは気がつきませんでした。
ポインタ使った方法にも興味があります。
ありがとうございます。早速試してみます。
>>798
おお、こういった記述もできるんですね。
もちょっと勉強してみます。
ありがとうございました。
801797:03/08/24 19:27
>799
やっぱそうなん?(鬱
セコいよなぁ、M$もその金魚の糞共も
VC++ .NETスタンダードとプロフェッショナル(VS.NET)とを比べての
スタンダードが劣る部分は何ですか?
803学生さそ:03/08/25 00:40
>>802
最適化と、リモートデバッガ。
最適化が出来ないってのは、大きなアプリケーションを作る上で致命的ですよねぇ。
ここはMSに貢いでまでVS.NETを買うべきでしょうか。
805学生さそ:03/08/25 01:57
>>804
漏れがヘタレってことも多いにあると思うけど、VC6std でコンパイルした奴と
VC2003.net Proffessional (赤版)でコンパイルした奴を比べたら
10秒ぐらいかかる処理が2秒ぐらいで終わったよ… ┐(´ー`)┌
ちなみにファイルサイズは 約130KB → 110KBで 20KBぐらい減った。
最適化を期待してヨカタよ。
806学生さそ:03/08/25 01:59
○最適化を期待して(VS2003 Prof 赤版を買って)ヨカタよ。

に訂正…。
非赤で13万弱か…。お財布と相談しつつ慎重に検討してみます。
ありがとうございました。
808デフォルトの名無しさん:03/08/25 10:58
>>805
すんなにかわるのかぁ・・・。はふーん。
相変わらず6.0スタンダードでがんばってる漏れは負け組み?
809デフォルトの名無しさん:03/08/25 13:45
>相変わらず6.0スタンダードでがんばってる漏れは負け組み?

仕事ならしょうがないんちゃう?
仕事でスタンダードなら負け組みもいいところ
>>809
仕事なのにスタンダードなんて使うのか?
812デフォルトの名無しさん:03/08/25 20:22
つーか金がないならボーランドの無料コンパイラ使うけどな
SDKベースでシコシコ開発するよ(疲)
>>812
あれは最適化できるんかいな?
814デフォルトの名無しさん:03/08/25 23:16
>>813
速度優先とサイズ優先のコンパイルオプションがある
どちらでコンパイルしてもVC6よりサイズがコンパクトだったw
動作も問題なかったし、速度も問題なし

ただし、dependancy walkerとかspyとかがないから、それに相当するモノを・・・・・
フロントエンドを導入すれば開発環境としては問題がないだろうが・・・・・
815デフォルトの名無しさん:03/08/26 06:23
ピクチャボックスの大きさを簡単にわかる
方法はどうすればいいのでしょうか。
プロパティを見ても分からないし・・・
>>815
ステータスバーに位置とサイズ
>>816
あ、ありがとうございました。
動的に構造体を作りたい場合はどうしたらいいのでしょうか?
>>818
すいません、訂正です。
構造体の配列を動的に確保したい場合はどうしたらいいのでしょうか?
構造体を定義しといて確保したい場所でnewすればええんでないのかい?
std::vectorかなんかを使う
823775:03/08/27 12:35
>>780
返事が遅くなってスマソ
クラス内で宣言したらちゃんと使えるようになりました
ありがとうございました
824デフォルトの名無しさん:03/08/27 21:12
C++スレでスレ違いと言われたのでこちらでおながいします。

>VC.netでコンパイルしたプログラムを.netフレームワークなしで
>動かすにはどうすればいいの?
>
>mscoree.dllがロードできないって言われて終わる。
>検索しても.netフレームワークをインストールすれ、っていう
>文献は見つかったけど、コンパイルをどう工夫するのか、ってのはない。
>なんか簡単なプログラムを書いた友達はデフォルトで動く、
>って言ってたけど、なんかオプションとかあるの?
825デフォルトの名無しさん:03/08/27 22:03
VC6でWindows APIをベースに簡単なプログラムを作っています。

ウィンドウクラスのレジストで
WNDCLASSオブジェクトのhbrBackgroundメンバに
(HBRUSH)GetStockObject(NULL_BRUSH)をセットして
背景を透明にしたいと思います。

しかし、このままでは背景がうまく再描画されてくれません。
WM_PAINTメッセージを受取ったとき、
ちゃんと背景が再描画されてデスクトップが透けて見えるようにするには
どうしたらよいでしょうか?

どうかお知恵をお貸しください。m(__)m
826あぼーん:あぼーん
あぼーん
背景とデスクトップをSRC_PAINTさせればいいんちゃう?
アフォですまんm(__)m
>>825
NULL_BRUSHは背景を透過するものではないのだが・・・
829825:03/08/27 22:42
>>827
むみゅう。うちのMSDNではSRC_PAINTが検索に引っかかってこないのですが・・・。

>>828
では透明にするにはどうしたらよいのでしょう?
背景や枠を透明にできないと、
万景方号に拉致されてしまいます。;_;
>>824
マネージドC++だったら.NETフレームは絶対必要。.NETフレームワークなし
で動くのはアンマネージドC++でビルドした場合だけ。つまりVC++7.0を使って
MFCアプリでも何でもいいからネイティブコードを生成すればいい。
831828:03/08/27 23:15
>>829
>>うちのMSDNではSRC_PAINTが検索に引っかかってこないのですが・・・。

BitBltなどにあるラスタオペレーションコードでしょう
SRCCOPYとかSRCPAINTとか

>>では透明にするにはどうしたらよいのでしょう?

普通はデスクトップをキャプチャーして背景にコピーでしょうか。
「猫でも」にもあるでしょう、たぶん。
Win2000以降ならレイヤードウィンドウをつかうとか。

>>825
すまん。SRCPAINTやった。
でもこれはBMP関係だから意味ないかも( ´Д⊂ヽ
833830:03/08/28 00:51
マネージドと案マネージドのC++コンパイラって同じものなのかな?
だとすればコマンドライン引数でスイッチできるのかも。だけど普通は
プロジェクトの自動生成の段階でどっちか決定するし、そもそも使う
ライブラリだって違うから、マネージドと案マネージドを切り替えるな
んて事もしない。だからコマンドライン引数なんて考えた事もないよ。
834デフォルトの名無しさん:03/08/28 08:55
質問です。
MFCで、エクスプローラの左側のペインのようなフォルダツリーを
簡単に作れるクラスはないですか?
無いです。
お次の方どうぞ。
>>835
おいおい、エクスプローラ自体がMFCだろが。
837834:03/08/28 09:23
結構いろいろなところで使われてることが多いので、そういうクラスがあると思うのですが・・・。

「MFCの中にフォルダツリーを簡単に作れるクラスは無いか?」と言う問いに
「無い」は適切な答えだと思うが。
>>837
CTreeView
840834:03/08/28 09:58
はいそうですね。MFCにはないようです。
シェル名前空間から階層構造を取得し、ツリーコントロールに入れていけばできる、ということでしょうか。
でも面倒くさいですね。
SDK用ですが見つかったので、これをCWndにアタッチして使うことにします。
http://www.wakusei.ne.jp/software/free/soft_1747.html
これの作者は「MFCでは簡単に作れるのに」と書いてるのでそういうものがあるかと思ったわけです。
>>840
簡単にできるっていうのは画面分割の方をさしているかと思われ
ツリーもMFCのCTreeCtrlの方が若干扱いやすい…かも
MFC + PIDL ってのは、そこら辺にごろごろ落ちてるけどな。
MFCならCodeProjectとかCodeGuru行けば、いっぱいありそうだけどな。
844834:03/08/28 19:52
>>843
CodeProjectに、まさしく探していたものがありました。どうもありがとうございます。
http://www.codeproject.com/treectrl/shelltreectrl.asp
845デフォルトの名無しさん:03/08/28 21:45
VCで#include "cpgplot.h"を使うにはどうしたらよいですか?
PGPLOTのライブラリーが必要とあったのですが導入方法がまったく分かりません。ご教授頂けると幸いです。
846デフォルトの名無しさん:03/08/28 21:53
あどけない顔でニッコリ微笑みながらのフェラが抜きどころ!
鮮明映像で臨場感も抜群の一作です。
素人援交女と巨乳美女満載!当然モロですよ。
無料動画あります。
http://www.cappuchinko.com/
PGPLOTをインストールして、ヘッダのディレクトリをパスに追加するか、
ヘッダファイルを全部VisualC++のヘッダディレクトリにコピーする。
>>836
Explorer.exeをDependency Walkerで見てもMFC42.DLLとかでてこないよ。
MSVCRT.DLLは出てくるからMFCをスタティックリンクしてるとも考えにくい。
よって多分MFCは使ってない。
849デフォルトの名無しさん:03/08/28 23:25
850デフォルトの名無しさん:03/08/28 23:42
なんだこりゃ?フォートランじゃねえか。
今日初めてVCでGUIアプリをつくったが、、、

お前らマゾだろ
はじめはそう感じるかもね・・・。
つーか、PGPLOT自体、VCだけでコンパイルできない雰囲気だが。
MFCは慣れればVBなんかより開発効率いいよ。特にプログラムが
でかくなると。
>>850
コンパイル済みのライブラリ探した方が早いね。それかUNIXでやるか。
857デフォルトの名無しさん:03/08/29 00:26
850です。どうもありがとうございます。
学校のレポートでどうしてもC言語を使って物理シュミレーションしなくてはならなかったので使いたかったんでが、なにか 他に良い方法はないでしょうか?UNIXや、LINAXを使っていないのでVCでするしかなかったもので。
こんなわけのわからないマイナーなライブラリ使うよりも、
WindowsのGDI使った方が早い気がするんだが。
サウンドプログラミングがMFCだったのでショックだった。
SDKで書いてあれば、SDK、MFCに両方に対応できるだろうに。
というより、一体どういう学校なんだよ。カリキュラムに問題があるな。
シミュレーション以前にグラフィックライブラリの基本ぐらいは実習で教えるだろ?
元々CやC++にはグラフィックの扱いは定義されてないんだからな。
WindowsのGDIは初心者には癖が強すぎて難しいと思う。
OpenGLとGLUTを使うのがベストだな。俺が学生の頃シミュレーションはよくこれでやった。
861しぇけなべいべな:03/08/29 18:51
VC6でアイコンリソースを作成すると、例えば

IDI_ICON1 ICON DISCARDABLE "icon1.ico"

という具合に、IDに「IDI_ICON1」という名前をつけても、resource.hの方で

#define IDI_ICON1 110

のようにされて、ID名をconst char*型からconst int型に強制的に変更されてしまいます。
こうなると、ウィンドウクラスのレジストで、

WNDCLASS wc;
wc.hIcon = LoadIcon(hInst, "IDI_ICON1");

としてもエラーになってしまいます。(LoadIconの第二引数がLPCTSTR型であるため)
MSDNには、「ID番号を使う場合、MAKEINTRESOURCEマクロを使用せよ」と書かれているので、

WNDCLASS wc;
wc.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON1));

のようにするのですがうまくいきません。
どうやったらうまくいくのでしょうか・・・。;_;)ノノ
ちなみに、メニューIDやビットマップIDなどもconst int型に強制変更されてしまうため、
随所でMAKEINTRESOURCEマクロが必要になるのですが、これらは正しく機能します。
iconの場合だけ機能しません。
それはよくひっかかるんだよね。
IDI_ICON1じゃなくて"IDI_ICON1"にすべし。
863デフォルトの名無しさん:03/08/29 20:10
CListCtrl で DeleteItem を使っているのですが、大量のアイテムを削除しようとすると
時間がかかりすぎて困っています。何か解決方法はないでしょうか?
削除中SetRedrawで描画を止めればいいかも
865863:03/08/29 23:27
>>864
レスありがとうございます。早速試してみます。
866863:03/08/29 23:36
おかげさまで激速になりました。
867デフォルトの名無しさん:03/08/30 02:58
VisualC++のプロファイラを使って行単位のカバレッジを
行いたいのですが、インクルードしているiostreamなどの
ヘッダの中身まで検査されてしまい、網羅率が上がりません。
プロファイルダイアログの「詳細設定」に/EXC ヘッダ名.h
と書いたり、ソースファイルの#includeしている行を
EXCで除外したりしましたが、改善されませんでした。
プロファイルの対象からヘッダファイルをはずす方法を
教えて下さい。
使用環境はVC6.0のプロ版です。よろしくお願いします。
>>863
表示の更新は止めてるんだろうね?
869デフォルトの名無しさん:03/08/30 11:39
質問おながいします。
CComboをCreateしてAddStringしたのですが、
ドロップダウンリストにスクロールバーが表示されません。
スパイでみたところWS_EX_RIGHTSCROLLBARはたっているのですが。。。
>>869
普通にリストボックスの高さが広すぎるのでは?
871870:03/08/30 12:48
リソースエディタの中で↓をクリックすると高さを調節できるようになったはず
872デフォルトの名無しさん:03/08/30 13:24
VCいじってるんですけど、ウィンドウの様々な項目の意味がわかりません。
どこかにそういうのを解説してあるサイトありませんか?
またはそういうの中心の本でもいいです。
スクリーンの低消費電力モードを無効にする方法はありませんか?
SystemParametersInfoだとWindows2000でうまく機能しないので。
874デフォルトの名無しさん:03/08/30 14:02
ダイアログにボタンを貼り付けたのですが
表示されるとDisabledされます。
なんででしょうか。。。
875869:03/08/30 14:39
>>870-871
どうもすみませんでした。解決しました。
WS_EX_RIGHTSCROLLBAR以前にWS_VSCROLLが立っていませんでした。
お騒がせしました。。。m(__)m
>>873
設定−コントロールパネル−電源オプション
>>874
デフォルトが無効になってるとか
>>876
くだらね。
879デフォルトの名無しさん:03/08/31 11:22
画像の縮小をしたいのですが、StretchBlt()を使うととても汚いです。
もっときれいに縮小できる方法はありませんか?
SetStretchBltModeは試してみた?
881デフォルトの名無しさん:03/08/31 11:48
教えてください。
Win32プロジェクトと.netプロジェクトの違いは一体何ですか?
Win32ってWinNT以降のOSの総称ですよね?
.netって一体何ですか?
どちらを使うべきか迷います。
882879:03/08/31 11:59
>>880
SetStretchBltModeをCOLORONCOLORにしたらきれいになりました。
どうもありがとうございました。
883873:03/08/31 12:56
>>876
ありがとうございます。解決しました。
884635:03/08/31 16:31
VisualC++ Ver6 SP5 使ってます。ツールバーの配置が偶に換わるんですが防ぐ方法はあるのでしょうか?
いつもは↓

■ | ■■■ | ■■■ | ■■■ | ■■■ | ■匚二二二二▼ | ■ || ■■■■ | ■■■■■ | ■ | ■■■■■■
匚二二二二▼ | 匚二二二二▼ | 匚二二二二▼■ || ■■■■■■ || ■■■■ | ■ | ■■ | ■ |

↑という配置になっているのですが、デバッグを終えてVCの画面に戻ってみると↓

■ | ■■■ | ■■■ | ■■■ | ■■■ | ■匚二二二二▼ | ■
|| ■■■■ | ■■■■■ | ■ | ■■■■■■
匚二二二二▼ | 匚二二二二▼ | 匚二二二二▼■
|| ■■■■■■
|| ■■■■ | ■ | ■■ | ■ |

↑のように縦一列になってたりします。
>>884
たまになるね。
886デフォルトの名無しさん:03/08/31 17:21
にた症状で、DirectXのプログラミングしてる時、
作成しているアプリで、たとえば640x480の全画面表示をやると
終了した時にVisualStudioまでその解像度になってしまうことがあるんですが、
これも解決方法ありませんか?
887デフォルトの名無しさん:03/08/31 17:29
>>884
通常時とデバッグ時のツールバー配置を、全く同じにすればずれません。
888デフォルトの名無しさん:03/08/31 18:28
自ウインドウ(SDI or ダイアログベース)のウインドウハンドルの取得のしかたを教えてください。
関数の引数に HWND があるのでウインドウハンドルが知りたいのです。

環境はWin2k+VC++6.0Proです。
HWND GetSafeHwnd()
>>884
デバッグ中に最小化しない。
891884:03/08/31 22:05
>>890
それだ!!これが原因だったのかぁ・・・
dクス
m_hWnd直接使っちゃだめなの?
894デフォルトの名無しさん:03/09/01 10:03
ユーザーインターフェイススレッドを new でヒープに作りました。
ここで PostQuitMessage した場合、ヒープは delete されるのでしょうか?
コンストラクタは呼び出されているようなのですが。
メールを送信したいのですが、どのようにしたら良いのでしょう?
やはり、CAsyncSocket??
>> 894
素直にwinsockを直接叩きなさい。
まぁ宛先違うけどな
>>896
すいません、直接叩くって言うのは・・・?
APIを叩くだのポートを叩くだの言ってるやつは素人。

ポートを開くだの閉じるだの言ってるやつも素人。
>>894
使えるならMAPIとかもある。
>>899
じゃあ玄人はどういうんだ?
そんなもんにこだわるのが素人
visual c++ 6.0ってgarbage collectionないの?
マルチスレッドのDLL書いてるんだけど、ない場合死にそう…。
C#ってそういう人のためにあるんだろうな。
905903:03/09/01 19:13
>>904
洩れもJavaメインだからなぁ。

こういう時ってみんなどうしてんの?
レファレンスカウンタを自分で実装してる?

とりあえずboostにそれっぽいのがあったから使おうと思うんだけど、
http://www.boost.org/libs/smart_ptr/shared_ptr.htm
インスタンスを保持する変数全てにこれ使えばGCやってくれるんだよね?
906デフォルトの名無しさん:03/09/01 20:52
当方超初心者です。

Winsockのことで質問です。(業務上TCP/IPをやることになった・・・)
ちなみにコンパイラはVC5.0です。

Winsockのconnect()でWSAEADDERINUSEが帰ってくるケースとしては
どのような場合が考えられるのでしょうか?

ソケットのクローズをクライアント側で行うプログラムを作成しています。
この時クライアント側がアクティブクローズを行っていることから
TIME_WAIT状態のソケットがクライアント側で発生するという記事をみました。

このようにしてClient側でTIME_WAIT状態のソケットが大量に発生した場合
やはりClient側のconnect()でWSAEADDERINUSEが帰るのでしょうか?

またそれに関するMSDNのページなどがありましたら教えていただきたいので
どうかよろしくお願いします。
ちなみにVBではそれらしい技術情報を見ましたが・・・
>>906
bindしてからconnectしてる?
908デフォルトの名無しさん:03/09/01 21:09
VC++.NETのひとつ前のバージョン(VC7?)ってもう手に入らないの?
お店においてない。
VC5・・・・
910デフォルトの名無しさん:03/09/01 21:14
>>904
.NET版のC++はGC使えるらしいよ
911906:03/09/01 21:56
>>907
はい。行っているとおもいます。
(元の処理は自分が組んだのではないのですが・・・)
通常は問題ないのですが
大量に処理を実行させたときに現象が発生します。
bind()で上記の値が返ってくるケースは幾つか記事を見たのですが
(サーバー側がクローズしたときにソケットがまだ裏で生きているのでbindで再使用が出来ない)
conect()で発生するケースが見つからなくて・・・

今回発生している原因がconnectなのは確かですし
MSDNでもconnectが値を返すのを確認しましたが
現象が発生するパターンが出てないので・・・
発生ケースとしてはbind()の場合と同じなのでしょうか?
bind()→connect()でTIMEWAITの判定を行うのが
サーバーかクライアントかという違いということなのでしょうか・・・

TCP/IPは本当に初心者なので処理自体もまだうろ覚えの状態で調べてるため
単純な問題かもしれませんがよろしくお願いいたします。
>>888
MFCならCWnd::m_hWnd、SDKならコールバックのところでウィンドウハンドル
取れるけど、それにアクセスできない特殊な条件とかなの?

>>905
スマートポインタとスマートポインタの配列版は
手持ちのものを使ってますが重宝してます。
>>905
待て待て。
確かに参照数が0になったら抱えてるオブジェクトをdeleteしてくれるが、
それをGCと呼ぶのは語弊があるぞ。
JAVAとC++は根本が違うという事を意識しないときっと痛い目に遭う。

で、boostとJAVA互換スレッドライブラリを作って妥協したりする(´ー`)y-~~
914903:03/09/01 23:15
>>913
それはつまりスマートポインタ内でしかその参照を
数えてないわけで、スマートポインタ以外でポインタを
保持しているとしてもdeleteされるから、
第三者が書いたプログラムが俺が書いたコードの内部で生成
したインスタンスの参照を持っているのに勝手にdeleteされる
可能性もありで、グローバルなGCではない、
っていう理解で正しい?
>>911
bindではエラーしてないの?
connectする前のbind消してみたら?

http://www.sockets.com/err_lst1.htm
>>903
自分でGCに替わる仕掛けでも作りましょう。手っ取り早い方法は
削除対象のポインタをどっかにプールしておいて、抹消したい時点
でいっきにdeleteする。もんだいはdeleteすべき時期をどうやって
決めるか。以前.NET GCの仕組みがMSDNマガジンに解説されてたけど
すんごい事やってるね。

>>908 >>909
VC++.NET(Visual Studio.NET 2002)の一つ前っていうと6.0でしょ。

>>910
.NET版つまりマネージド版なら確かにGC使える。でもアンマネージド
のVC++7.0だったら使えないよ。
>>914
そゆことだ。
smart pointerだけを使えばいいんだけど、そうしてくれない人もいる。
(smart pointerはコストが高いと、プロファイルもせずに思いこんでいる人とかね)
そういう人が出てきた時点であぼんぬする。

あと、C++でもgcはあるにはあるよ。名前失念したので自力検索してくれ。スマソ
C++.NETのBinaryWriterでテキストファイルを出力する処理を作っているのですが
行ごと格納されている文字配列を一つのString型に統合して
バイト型に変換、BinaryWriterで書き込みというやり方でやっていたのですが
このやり方だと小さいサイズの書き込みは問題ないのですが、大きいファイルの書き込みになると
メモリが増大してしまって処理が極端に遅くなってしまいます

分割して書き込んでいけばいいと思うのですが
BinaryWriterでテキストを分割して書き込むいい方法はないでしょうか?

for(int Int_OutCount=0;Int_OutCount<Aay_output_Array->Count;Int_OutCount++)
{
//配列に入ってる文字列を統合する
Str_Replacement = String::Concat(Str_Replacement,Convert::ToString(Aay_output_Array->Item[Int_OutCount]));
}

//文字列をバイト列に変換する(ファイルに書き込む文字コードはShiftJIS)
Byte bytesData []=System::Text::Encoding::GetEncoding(932)->GetBytes(Str_Replacement);

//書き込み先のパスを設定する
FileStream* Fst_Output = new FileStream(Str_Save, FileMode::OpenOrCreate,FileAccess::ReadWrite);

//バイナリ書き込みモードを設定する
BinaryWriter* Biw_Writing = new BinaryWriter(Fst_Output);

//ファイルに書き込み
Biw_Writing->Write(bytesData);
919918:03/09/02 10:48
下のやり方に変えたら分割してできるようになりました
お騒がせしました、、、

//書き込み先のパスを設定する
FileStream* Fst_Output = new FileStream(Str_Save, FileMode::OpenOrCreate,FileAccess::ReadWrite);

//バイナリ書き込みモードを設定する
BinaryWriter* Biw_Writing = new BinaryWriter(Fst_Output);

//検索でヒットした行数分ループする
for(int Int_OutCount=0;Int_OutCount<Aay_output_Array->Count;Int_OutCount++)
{
//配列に入ってる文字列を統合する
Str_Replacement = String::Concat(Str_Replacement,Convert::ToString(Aay_output_Array->Item[Int_OutCount]));
//文字列長さが1500以上になった場合
if(Str_Replacement->Length > 1500)
{
//文字列をバイナリモードに変換する(ファイルに書き込む文字コードはShiftJIS)
bytesData=System::Text::Encoding::GetEncoding(932)->GetBytes(Str_Replacement);

//ファイルに書き込み
Biw_Writing->Write(bytesData);

//格納用文字列の解放
Str_Replacement=Str_Replacement->Remove(0,Str_Replacement->Length);
}
}
920デフォルトの名無しさん:03/09/03 06:54
自分はコンソールアプリを作る時、Main.cppにmain関数、#include "ooo.h"
#include "ooo.h"、プロトタイプ宣言を書いて、その他は全て.hファイルに
書いています。ただ、落としたソースを見てみるとよくc、cppファイルが
複数入ったプログラムがあるのですが、何のために複数用意しているのでしょう。
921デフォルトの名無しさん:03/09/03 07:08
え、cppに宣言して実装をh?
922920:03/09/03 07:36
はい。いつから、なぜこういうスタイルになったか覚えていませんが。
ただ、どこにどの関数があるか見つけやすかったりしますが。

////Main.cpp////
#include <stdio.h>
//Map.h
void InitMap(int*);
void ShowMap(int,int,int,int,int,int,int*);
//Fighting.h
void CheckFighting(int,int,int,int*);
void CheckVSFighting(int,int,int,int*);
#include "Map.h"
#include "Fighting.h"
int main(void)
{return 0;}

////Map.h////
void InitMap(int*)
{}
...

////Fighting.h////
void CheckFighting(int,int,int,int*)
{}
...
>>922 (;´Д`)
初心者に・・教えてくれるんですよね?│柱│ω・`)ジー
あのぅ・・C++ってまず何を参考に勉強すればいいんですか?
試しにC++が書ける?ソフトみたいなの使ったんですが、
何を書けばいいのかわからないし・・(;とか{って何?)
誰か助しけて・・(´;ω;`)
>>924
スレ違い。C/C++ スレ池。
>>924
C から始めたら。すでに枯れた言語だけど基本です。
あまり時間をかけずに一通り仕組みを理解したら C++ に進む。
同じように理解したら VC++ 。

あとは努力次第である程度書けるようになるでしょ
>>924
まずCからやるならここで勉強してみては?
ttp://www.ics.kagoshima-u.ac.jp/edu/katuyoukiso/vc/index.html

使ってるソフトが何かにもよるが多少参考にと思います
すいません、ちょっとお聞きしたいんですが、
ワークスペースを開こうとすると
「SHCV.DLLが読み取れません、VCをインストールしなおしてください」
というエラーがなぜか突然でるようになってしまいました。
以前までは普通に使えていたんですが、、、
一旦アンインスコして入れなおしたんですが、やはりダメでした。

ド素人なもので、DLLとかよくわからないんですが、
検索したら同名ファイルはいろいろ落ちていたので拾ってはみたものの、
どこに入れればいいのかも分からず、
なにかやたらな事したらどうなるか分らないので怖いです。

何か対処法がありましたら教えてください。よろしくお願いします。
スマソ、、、
ちょっと前にVC本体のドライブを変えようと思って
インスコしなおす作業をしていたんですが、
その時になぜか例のファイルだけ消えずに残ってたらしく、
そのため新しいドライブの方にはこのファイルが作られなかった模様です。
そして今日久々に立ち上げようとしたらエラーがでた、、、
ということだったみたいです。
新しいフォルダの方にコピペしたらエラーがでなくなりました。
こんなことで悩んでいた挙句スレ汚し、、、
どうもすいませんでした。
あ、ここIDないんですね、、、
>>929>>928です。重ね重ねすいません。
931924:03/09/03 14:14
>>926,>>927
ありがd!!
C、C++、VC++全部同じだと思ってましたw
今ツタヤ行って「C言語超入門ゼロからのプログラミング」っての買ってきたんで
927のサイトも一緒に見ながら勉強します。
932920:03/09/03 14:17
.cppはひとつで残りは全て.hというスタイルを貫きます。
個人でやるならどうぞご自由に
934920:03/09/03 16:49
>>933
やっぱり貫けません、ごめんなさい。
本当はどう言う風にするのが正しいのか知りたいです。
ANSI-Cではこうするとかあるなら教えてください。
また、グーグルのキーワードでも良いです。
935デフォルトの名無しさん:03/09/03 17:00
>>934
普通は
○○○.hファイルに宣言を書き,
拡張子以外同名の○○○.cppに
○○○.hで宣言してる関数の実装を書きます
936デフォルトの名無しさん:03/09/03 17:01
>>934
で,C++なら
○○○.hと○○○.cppのファイルは
クラスごとに1セットって感じ
937920:03/09/03 17:27
>>935>>936
なるほど、そうだったのですか。ありがとうございました!
WTLは.hにガリガリ書いていくけど、あれはクラスだし、ちょっと違うか。
クラスっていうかテンプレートだから
940デフォルトの名無しさん:03/09/04 01:59
継承を使うときは基底クラスと派生クラスで別ファイルにする、しない、どっち?
わしの場合、
継承関係が複雑になってくるとインクルードシールドが必要になって面倒なので、
一ファイルにまとめちゃうんですが・・・。
つーかVCの話じゃねー
CStringからWCHAR*への簡単な変換方法はないでしょうか。
現在MultiByteToWideCharを使っているのですが
もっと便利な関数があったら教えてください
#define UNICODE
944デフォルトの名無しさん:03/09/04 05:12
>>920は宣言と定義の違いをもっと理解した方がいい。
そのやり方だと、ソース間で(この場合はヘッダ間でか)相互にインクルードしあう場合はどう対処する?
初心者向きの本には、分割コンパイルについて述べられているものが少ないのも問題な気がする。
ヘッダは宣言のみとし、#ifndef,#define,#endifで二重定義を防ぐようにするのは習慣にすべき。
>相互にインクルードしあう場合
意味もなくテンプレートにしたり、インターフェースクラスを活用して逃げる(w
なんか、スレ違いな話題が進行しているような気がするが
VC7.1に移行してから pragma once のみで統一するようにした。
見た目にシンプルな方がイイ。
>>942
_bstr_t使う。
>>944
そうなんですよね。オレもソース分割でかなり悩みました。
自分のソースは今のところ短いから問題ないんですが、
人のソースを読むときに難解で・・・。

VCだとプリコンパイルだかなんだかでstdafx.cppなんかが
作られてますが、こういう手法ってVC以外でもとられる
もんなんでしょうか。
949デフォルトの名無しさん:03/09/04 12:02
すません。
Unix Cは経験あるけど、VC++&C++は初めて触るというのに
いきなりVC++開発突っ込まれてしまったプログラマです。

fstreamとかでテキストファイルを排他&追加モードでオープンしたいのですが、
どうやって指定すればいいのでしょう?
openmode = ios::appで追加モードにできるというのはわかったんですが……;
950920:03/09/04 12:49
>>944
相互にインクルードしあう場合、分割コンパイル、#ifndef,#define,#endif
全部使ったことがありませんでした。基本は全部Main.cppに書いて、
長くなってきたら.hを作っていくと言う感じでした。win32アプリでも
WinMain.cppと.hという感じで作っていました。
>>947 (´Д`;)
MSDNライブラリがMFCマンセー仕様になってる気がするのは気のせいでしょうか?
>>952
何をいまさら。(w
>>952
そのためのMSDNです!
955デフォルトの名無しさん:03/09/04 22:23
Visual C++ 6.0
Visual C++ .NET Standard
Visual C++ .NET Standard 2003

ってあるけど
やっぱ新しいほうがいいの?
>>949
排他&追加モードってどういうこと?
>>955
>やっぱ新しいほうがいいの?
.net 2002は使ったことないがバグだらけという噂。
2003は漏れの感じでは良く出来てるかと。(ただし、重たい)
>>949
CreateFileじゃだめなの?
↓次スレハ マカスィタ!!
↓  ↑
└→┘
猫でもわかるプログラミング(ttp://www.kumei.ne.jp/c_lang/index.html)

のC言語編第57章のプログラムがエラーになるのですが、どうすればよいのでしょうか?

-------エラーメッセージ----------
'WinMain' : 関数はオーバーロードできません。
--------以下ソース---------------
#include <windows.h>

int WINAPI WinMain( HANDLE hInstance ,
HANDLE hPrevInstance , LPSTR lpCmdLine , int nCmdShow )
{
MessageBox(NULL,
(LPCSTR)"メッセージ・ボックスのテストです。",
(LPCSTR)"猫でもわかるプログラミング",
MB_OK);
return 0;
}
---------------------------------


>>961
HANDLE → HINSTANCE に置換。

大昔のVCではHANDLEでも通ったのだが。今は型がより厳密になった。
いい加減、時代遅れな猫を参考にするのはやめよう。
>>963
だな。あそこは修正すべきだよな。
VC++4.0だったよな。確か。
もうそんな骨董品使ってる椰子いねーよな。
>>962
お〜!!できました。どうもありがとうございました。

>>963-964
確かに…今までも結構苦労しながら読んできたんですよ…

ここ以外にお奨めのサイトとかってありますかね?

966デフォルトの名無しさん:03/09/05 20:24
すいません。。
Platform SDK
っていったいなんですか?
968デフォルトの名無しさん:03/09/05 22:02
猫ねえ・・・
たまに関数や構造体をど忘れした時に、リファレンス的に見ることはある。
ていうか検索かけると上位に出てくることが多い。
あそこで勉強するのはさすがに勧められないな。
969デフォルトの名無しさん:03/09/05 22:13
>>968
ではどこで勉強したらいいでしょうか?
本買え。
MFCからはじめろ。MFCわからなけりゃ他の言語にしな。
MFCはVisualC++に初心者向けの本がくっついてきただろ?読むならそれで十分だ。
972デフォルトの名無しさん:03/09/06 19:14
EngBitBlt というのがよくわかりません。
おしえてください。
973デフォルトの名無しさん:03/09/07 04:14
Win32Applicationで最小化して戻した時など再描画の処理を入れて
文字などが消えないようにしますが、コンソールみたいにウインドウに焼き付ける
みたいな方法で同じ事がしたいのですが、その方法があるなら教えてください。
>>973
WM_PAINT もしくは、 OnDrawで描画するようにする。
Winプログラマの常識。
975973:03/09/07 05:04
>>974
ありがとうございます。

いつもはWM_PAINTでやっているのですが、ゲームを作っていて、
マップ、コマンド、アイテムなどユーザーに選択させながら表示させている
のですが、それを再表示するとなると、又選択させないといけないのです。
表示と選択処理は別にするのが普通だと思うのですが、マップは攻撃範囲に
よって表示するものが変わり、コマンドだと所持しているアイテムに
よって変わるなど、その地点では必要ないデータを渡すのが
ごちゃごちゃして嫌だったので楽な方法が無いかと質問しました。

OnDrawは始めて聞きました。調べてみます。
>>975
Doc/View使ってないならWM_PAINTで描画すればよろしかと。

>表示と選択処理は別にするのが普通だと思うのですが
常に、そうするべきと思われ。

なんだか、設計に問題ありなような気がするなあ。
977973:03/09/07 07:05
>>946
ありがとうございます。

>Doc/View使ってないならWM_PAINTで描画すればよろしかと。
始めて聞いた言葉なので調べてみます。

>常に、そうするべきと思われ。
>なんだか、設計に問題ありなような気がするなあ。
とにかく楽に作る事を考えていたので、これ以外の拡張の時もすごく大変
でした。ゲームを作りながらプログラムを勉強しているので、行き当たり
ばったりなのもあると思いますが。もう一度1からやりなおします。
>>975
普通はCreateCompatibleBitmapを使うだろ。
>>978
ありがとうございます。それも調べてみます。
AdvancedWindows 買おうと思ったけど
たけーーーーーーーーーーーーーーーー!!!

買って損しないか心配
ゲームならOnDrawで描画するより、タイマーで割り込みをかけてOnTimerで描画した方がいい。
というかゲームのプログラムはそれが普通。
こうすれば常に描画を更新しているから、再描画を指示する必要はない。
一冊ゲームプログラミングの本を買うことをおすすめするよ。
慣れてきたらDirectXとマルチメディアタイマーに切り替えな。OnTimerは精度悪いから。
>>981
おぉ、そうなのか。
なんかおすすめのゲーム製作本はある?
>>982
このサイトの本なんかはよさげ。本は持っていないが、このサイトでよく勉強してる。
http://www.sm.rim.or.jp/~shishido/index.html
984デフォルトの名無しさん:03/09/08 14:55
あるボタンを押してその関数内の処理を
強制終了させるためのボタンを作りたいので
すがボタン内の処理を強制終了させる関数、
方法はありませんか
ボタンのイベント処理を別スレッドでやってるだろうから、
その、イベント処理をやってるスレッドに WM_QUIT でも投げてやればよし。
そのイベント処理をやるスレッドが
while( 0 < GetMessage( ... ) ) {
}
って感じじゃない時は、
グローバルな変数をつかう。たとえばグローバルなスコープに
volatile static int haltButtonProcess = 0;
などと書いておいて、
イベントハンドラ側に if( haltButtonProcess ) return;
ってな記述をちりばめておく。
外部から haltButtonProcess = 1; とかってやると、強制終了できる。
>>984
ボタンに中の関数なんてありませんよ。
ボタン内の関数・・・何となくVBっぽい感覚だな。
強制的に別のスレッドを終了させるには、TreminateThread()という関数がある。
でもこれは危険だから使わない方がいいよ。
何かグローバル変数を用意しておいて、終了ボタンを押したらグローバル変数をtrueにして、
作業してるスレッド内ではループのどこかでグローバル変数を調べて、
フラグが立っていたらExitThread()をする、という方法がある。こちらの方が安全。
グローバル変数よりも、メンバ変数のほうが良くないか?
↓今度こそ次スレをマカスィタ!!!
>>988
別スレッドにオブジェクトを渡すと構成がデバッグの時assertで落ちます。リリースなら通るんですがね。
コールバックの引数にオブジェクトのポインタを渡そうとしたら、そういうエラーが出て、
停止位置のMFCのソース読んだらオブジェクト渡すなというようなことが書かれていました。
埋め
>>991
別にオブジェクト渡すなんていってないよ。
MFCだとマルチスレッドもクラスだから、そのクラスのメンバに変数を追加して、
メンバ関数でその変数を書き換えるようにすればいい。
>>984が作ってるのは CWinThread派生のUIスレッドじゃなくて、
ワーカスレッドっしょ?多分。
Microsoft Platform SDKはどこにあるのでしょう?
MicrosoftのDownloadサイトでPlatform SDKを検索しても
Pentablet用とかしか命中しません・・・
October 2002が欲しいんですが・・・。
>>996
ttp://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
ココなんだが、February 2003になってる
(スクリプト切ってるとダウンロードできないよ)
ほいさっさ。
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/

October 2002とかって昔の奴はDLできないんでないの?
ケコーンついでに
1000げとスザー
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。