■過去ログ置き場に戻る■ 1- 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

★初心者にVisual C++を教えるスレ★ Part10
1 名前:デフォルトの名無しさん :04/01/24 17:45
Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

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

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

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


2 名前:デフォルトの名無しさん :04/01/24 17:45
// 過去スレ
Part9 http://pc2.2ch.net/test/read.cgi/tech/1068983609/
Part8 http://pc2.2ch.net/test/read.cgi/tech/1063029371/
Part7 http://pc2.2ch.net/tech/kako/1056/10562/1056280510.html
Part6 http://pc2.2ch.net/tech/kako/1052/10529/1052931903.html
Part5 http://pc2.2ch.net/tech/kako/1048/10486/1048698321.html
Part4 http://pc2.2ch.net/tech/kako/1044/10441/1044196393.html
Part3 http://pc2.2ch.net/tech/kako/1038/10381/1038160750.html
Part2 http://pc3.2ch.net/tech/kako/1030/10309/1030985362.html
Part1 http://pc3.2ch.net/tech/kako/1023/10235/1023530449.html

// 関連スレ
■ VisualC++(MFC限定)相談室 MFC9.dll■
http://pc2.2ch.net/test/read.cgi/tech/1062098350/
Win32API質問箱 Build14
http://pc2.2ch.net/test/read.cgi/tech/1065328397/
鬱だ氏のう DirectX (Part 10)
http://pc2.2ch.net/test/read.cgi/tech/1061420660/
C++相談室 part25
http://pc2.2ch.net/test/read.cgi/tech/1067949669/
私がC/C++の宿題を片づけてあげるわよ 15代目
http://pc2.2ch.net/test/read.cgi/tech/1068950713/

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

3 名前:1 :04/01/24 17:47
前スレの 1-2 に、前スレへのリンクを足しただけですが
こちらのほうでよろしかったでしょうか。

4 名前:デフォルトの名無しさん :04/01/24 18:22
新スレ乙。

5 名前:デフォルトの名無しさん :04/01/24 19:02
VCが無駄にしてるメモリ領域ってなんですか?
完全な最適化をしきれていない分のコードが締めるメモリとか?
使ってない機能はリンクされないんだからヘッダをいじっても
何も変わらないと思うんだけど、具体的に何がどうなるの?

6 名前:デフォルトの名無しさん :04/01/24 19:13
//このスレの前身 VisualC++相談室 過去スレ
part 1 http://piza.2ch.net/tech/kako/970/970607517.html
part 2 http://piza.2ch.net/tech/kako/981/981630730.html
part 3 http://piza2.2ch.net/tech/kako/993/993186053.html
part 4 http://pc.2ch.net/tech/kako/1002/10021/1002165477.html
part 5 http://pc.2ch.net/tech/kako/1006/10068/1006834463.html
part 6 http://pc.2ch.net/tech/kako/1011/10116/1011615035.html
part 7 http://pc.2ch.net/tech/kako/1017/10178/1017843192.html
part 8 http://pc.2ch.net/tech/kako/1022/10224/1022499000.html
part 9 http://pc2.2ch.net/tech/kako/1036/10368/1036897197.html


7 名前:デフォルトの名無しさん :04/01/24 19:35
>>5は前スレの991のレスに対する疑問かね
------------------------------------------------------
991 名前:デフォルトの名無しさん[sage] 投稿日:04/01/24 13:46
そこまで大きいメモリを連続して取るなら、
アッセンブラを多少勉強したほうがいい、
なぜ個体によって動いたり動かなかったり、
完全に動かすにはどうやるのかわかるよ。
どのレジスタにどの情報を入れるかはっきりと指定できるからな。
ただし、何メガもアッセンブラでやることは無いと思うが。
そもそも16Mや配列1マン取らないといけない設計自体に
疑問を感じる。

VCはただでさえ無駄にメモリ領域を消費している。
ヘッダや元からついてくるソースに入っていって使ってない機能を
削除するとか、いろいろ方法も考えられる。

VCはふつうのソフトの開発やデバッグややりやすいが、いったんデバイス(メモリ)
で引っかかったら、永久に原因が究明できないのが大欠点。



8 名前:デフォルトの名無しさん :04/01/24 19:43
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

9 名前:デフォルトの名無しさん :04/01/24 21:26
>8
StdAfx.hをインクルードしてないんじゃない?

10 名前:デフォルトの名無しさん :04/01/25 11:24
前スレの最後でも質問させていただいたのですが、
文字列リソースを使用するうえで、個数の上限、又は
総バイト数の上限などはあるのでしょうか?


11 名前:デフォルトの名無しさん :04/01/25 15:44
まったくわからなくて困っています。
古いスタイルのオープンダイアログにおいて(OFN_ALLOWMULTISELECTをしていするオープンダイアログ)
右側にあるディレクトリを選択するツリービューを作成するにはどのようにすればいいのでしょうか。
ツリービューで自作しようと試みたのですが、あそこまで快適なものをつくるには私はあまりにもスキル不足でした。
なにとぞご指導お願いします。

12 名前:デフォルトの名無しさん :04/01/25 19:07

一般のCView派生クラスにSetFont って無効なんですかね?
SetFontしてGetFontしてもNullポインタが返ってくるんですが。

OnDrawの中で毎回、LOGFONTからCFontを作成して
SelectObjectをやってますけど。



13 名前:デフォルトの名無しさん :04/01/25 19:10
>>11
CFileDialog?

ツリービューなんてあったっけ?
リストビューじゃなくて?

14 名前:デフォルトの名無しさん :04/01/25 19:22
質問です。
ビューの中にボタン(CButton)を配置して、
ボタンがクリックされたとき、メッセージをCButtonじゃなくて、
その親ビューが受け取るようにすることはできるんでしょうか?

CButtonの派生クラスを作らないで実現したいのですが。

15 名前:デフォルトの名無しさん :04/01/25 19:24
普通ボタンが押されたときのメッセージってのは親に飛ぶものだが。
クリックされたときボタンを押されたくないとか複雑な事情か?

16 名前:デフォルトの名無しさん :04/01/25 19:28
>>12
ちょっと分かりにくかったかも知れないですが、
GetFont で CFont* を入手できないので

>OnDrawの中で毎回、LOGFONTからCFontを作成して
>SelectObjectをやってますけど。

でやっているということです。

SetFont が 毎回取得するデバイスコンテキストに
影響を与えるとするなら、一度 SetFont すれば
SelectObjectは不要なのでしょうが、実際には
何も表示されるフォントに変化がないので、毎回
OnDraw でpDC->SelectObjectをやってから描画して、
また元のフォントに戻している状況です。


17 名前:デフォルトの名無しさん :04/01/25 19:30
>>14
押されたボタンのメッセージはデフォルトで
親に伝えられてるはずだよ。ボタンの解説書を
読むといいと思う。

18 名前:デフォルトの名無しさん :04/01/25 19:46
>>13
適当にボタンを作って
void CTESTDlg::OnButton1()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
OPENFILENAME ofn;
char fn[MAX_PATH];
int r;
fn[0] = '\0';
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.Flags = OFN_ALLOWMULTISELECT;
ofn.lpstrFile = fn;
ofn.nMaxFile = sizeof(fn);
r = GetOpenFileName(&ofn);
}
でボタンを押すと出てくるダイアログです。

19 名前:11 :04/01/25 20:43
ちなみに自作で作ってみたのが以下のものです。
ちらつきが激しくてストレスがたまってしまいました。

// lpszDirPath:カレントディレクトリのフルパスです。
// m_dirtree:CTreeCtrlのコントロールを指すメンバ変数です。

void CTestDlg::SetTreeView(LPCTSTR lpszDirPath)
{
      TCHAR lpPath[_MAX_PATH+1];
      _tcscpy(lpPath, lpszDirPath);

      ULONG uJudge;

20 名前:11 :04/01/25 20:44
      TCHAR lpDirectoryPath[_MAX_PATH+1];
      TCHAR lpExtension[_MAX_EXT+1];
      
      TCHAR lpDrive[_MAX_DRIVE+1];
      TCHAR lpDir[_MAX_DIR+1];
      TCHAR lpFname[_MAX_FNAME+1];

      CString csFileName = _T("");

      CStringArray csaTreeItem;
      HTREEITEM htiTreeItem[65535];
      CString csBuf;
      long iItem = 0;
      long ulCount;

21 名前:11 :04/01/25 20:46
      uJudge = (ULONG)GetFileAttributes(lpPath);
      if((uJudge & FILE_ATTRIBUTE_OFFLINE) ||
            !(uJudge & FILE_ATTRIBUTE_DIRECTORY)) {
            // ★★★ ここにエラー処理 ★★★
            // lpPathの示すフルパスが予想外のものである
            // 強制的にlpPathをカレントディレクトリにする
            if(!(GetModuleFileName(NULL, lpPath, sizeof(lpPath)))) {
                  // ★★★ ここにエラー処理 ★★★
                  // 自分のフルパス取得に失敗

22 名前:11 :04/01/25 20:47
            } else {
                  _tsplitpath(lpPath, lpDrive, lpDir, lpFname, lpExtension);

                  _tcscpy(lpDirectoryPath, lpDrive);
                  _tcscat(lpDirectoryPath, lpDir);

                  csFileName.Format("%s%s", lpFname, lpExtension);
            }


23 名前:11 :04/01/25 20:48
      } else {
            _tsplitpath(lpPath, lpDrive, lpDir, lpFname, lpExtension);

            _tcscpy(lpDirectoryPath, lpPath);
      }
      // lpDirectoryPath : ディレクトリパス
      // lpDrive : 上のディレクトリのドライブ
      PathSplit(lpDirectoryPath, csaTreeItem);

      if(m_dirtree.DeleteAllItems() == 0) {
            // ★★★ ここにエラー処理 ★★★
            // TreeViewのItemの削除に失敗

24 名前:11 :04/01/25 20:49
      } else {
            htiTreeItem[0] = m_dirtree.InsertItem(csaTreeItem.GetAt(0), 0, 1);
            ulCount = csaTreeItem.GetSize() - 1;


            for(iItem = 0; iItem < ulCount; iItem++) {
                  csBuf = csaTreeItem.GetAt(iItem+1);
                  if(!csBuf.IsEmpty()) {
                        htiTreeItem[iItem+1] = m_dirtree.InsertItem(csBuf, 0, 1, htiTreeItem[iItem]);
                  }
            }
      }

25 名前:11 :04/01/25 20:50
      CStringArray csaChildDir;
      CStringArray csaChildFile;
      int iChildDirSize;
      int iChildFileSize;

      GetChildren(lpDirectoryPath, csaChildDir, csaChildFile);
      iChildDirSize = csaChildDir.GetSize();
      iChildFileSize = csaChildFile.GetSize();

      if(iChildDirSize >= 1) {
            for(iItem = 0; iItem < iChildDirSize; iItem++) {
                  csBuf = csaChildDir.GetAt(iItem);

26 名前:11 :04/01/25 20:51
                  if(!csBuf.IsEmpty()) {
                        m_dirtree.InsertItem(csBuf, 0, 1, htiTreeItem[ulCount]);
                  }
            }
            m_dirtree.SortChildren(htiTreeItem[ulCount]);
            m_dirtree.SelectItem(htiTreeItem[ulCount]);
            m_dirtree.Expand(htiTreeItem[ulCount], TVE_EXPAND);
            m_dirtree.Select(htiTreeItem[ulCount], TVGN_FIRSTVISIBLE);
      } else {
            m_dirtree.SelectItem(htiTreeItem[ulCount]);
            m_dirtree.Select(htiTreeItem[ulCount], TVGN_FIRSTVISIBLE);
      }
}

27 名前:11 :04/01/25 20:52
// PathSplit
// たとえばlpPathが C:\hogehoge\alpha\test としたときに
// csaArrayに順番に C: hogehoge alpha test と配列に格納します

void CTestDlg::PathSplit(LPCTSTR lpPath, CStringArray &csaArray)
{
      CString csPath;
      csPath.Format("%s", lpPath);
      int iPos = 0;
      CString csSep;
      CString csItem;
      CString csBuf;

28 名前:11 :04/01/25 20:52
      if(csPath.Find(_T("\\\\"), 0) != -1) {
            // 共有ディレクトリパスの処理

      } else {
            csSep = _T("\\");
      }

      do {
            iPos = csPath.Find(csSep, 0);

            if(iPos != -1) {
                  csItem = csPath.Left(iPos);
                  if(!csItem.IsEmpty()) {
                        csaArray.Add(csItem);
                  }
                  csBuf = csPath.Mid(iPos + csSep.GetLength());
                  csPath = csBuf;
            }
      } while(iPos != -1);

      
      if(!csPath.IsEmpty()) {
            csaArray.Add(csPath);
      }
}

29 名前:11 :04/01/25 21:05
>>19-28
以上をウィンドウにファイルやディレクトリをD&Dしたときに
ディレクトリパスを取り出し、そのパスを引数にSetTreeViewを呼び出しているのですが
呼び出す事にツリービュー内が激しくちらつきます。
また読み込むスピードも遅いです。
改良できるならこれを改良したいのですが知恵を貸してください。

30 名前:デフォルトの名無しさん :04/01/25 21:20

ファイル開くダイアログってリストビューだと思うんだけど、
何をしようとしているのか分からん。
ディレクトリを選択するダイアログなら、IEのコンポーネント
あたりのものを利用する方法があるよ。


31 名前:デフォルトの名無しさん :04/01/25 21:59
ろくにレスをみないでカキコですが
ttp://www.athomejp.com/goldfish/api/browsefolder.asp
このへんとかどうよ

32 名前:デフォルトの名無しさん :04/01/25 22:08
アプリケーション(親)
+MinimapView(子)
http://www.42ch.net/UploaderSmall/source/1075035501.JPG

の2つのウィンドウを同じスタイルWS_OVERLAPPEDWINDOWを使用し
CreateWindowEx関数でウィンドウの表示はできたのですが、
親ウィンドウをクリックしても画像のように
子が上にきて、親が手前に表示されません。
親を手間に表示したいのですが、どのような方法があるのでしょうか?
アドバイスお願いします。

33 名前:デフォルトの名無しさん :04/01/25 22:15

それにしてもソースを交換して議論できる
掲示板ってないんですかね?
ここではソースにインデントも付かないし、
使いにくすぎる。


34 名前:デフォルトの名無しさん :04/01/25 22:21
>>32
子ウインドウなら、親ウインドウのクライアント領域を離れて
表示されることはないと思うのだが。

35 名前:デフォルトの名無しさん :04/01/25 22:25
>>33
ここ使えば。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html

36 名前:デフォルトの名無しさん :04/01/25 22:33
デスクトップの子ウインドウとして作れば?

37 名前:32 :04/01/25 22:38
親 hwndParent = CreateWindowEx( 0... 0 ... );
子 hwndSub = CreateWindowEx( 0... hwndParent ... );
これで別々のウィンドウを作ってます。
おそらくMDIのことかと思いますが、
私がやりたいのは モードレスダイアログボックスのように、
メインウィンドウとサブウィンドウを別々に処理を行いたいのです。
MDIだとメインウィンドウの外にでれないので、不便なのです。

38 名前:デフォルトの名無しさん :04/01/25 22:45
>>35
サンクス。今度使わせてもらいます。

39 名前:32 :04/01/25 22:47
親 hwndParent = CreateWindowEx( 0... HWND_DESKTOP ... );
子 hwndSub = CreateWindowEx( 0... HWND_DESKTOP ... );
これでウィンドウの切り替えがうまくできました。
ありがとうございました。

しかし 問題のHWND_DESKTOPの部分は描画関係のハンドルなのかな?
うーむ 色々やってみます。どうもでした。

40 名前:デフォルトの名無しさん :04/01/25 22:47
>>37
親ウインドウをNULLにして、ウインドウを作成したらどう?
俺はメインウインドウの外に置くウインドウは
これで作成してるよ。

41 名前:デフォルトの名無しさん :04/01/26 05:13
VC++わっかんないぃぃぃーーーーー!うあーーーーーーん!
処理どこに書いたらいいかわっかんないぃぃぃぃいーーーーええーーーん!!!

42 名前:デフォルトの名無しさん :04/01/26 20:00
lpShellFolder->GetAttributesOf(1, &lpItem, &ulAttrs);
この行をビルドしたら
C:\WINDOWS\デスクトップ\VC++\debug_build\FileView.cpp(215) : error C2664: 'GetAttributesOf' : 2 番目の引数を
                     'struct _ITEMIDLIST ** ' から 'const struct _ITEMIDLIST ** ' に変換できません。
変換で修飾子が失われます。
と出ました。どうしたらよいですか?

43 名前:デフォルトの名無しさん :04/01/26 20:05
>>42
lpItemの宣言に const をつけてみたらどお?

44 名前:デフォルトの名無しさん :04/01/26 20:18
>>43
違うところでエラーが出てしました・・・。某所で

constを付加するのですから,
const_castを使ってターゲットの型である,
LPCITEMIDLIST *にキャストしてやればよいです。

と書いてあったんですが
lpShellFolder->GetAttributesOf(1, (LPCITEMIDLIST)&lpItem, &ulAttrs);
とするのではないのですか?

45 名前:デフォルトの名無しさん :04/01/26 23:35
>>44
それでうまく行った?

C++なんだから

lpShellFolder->GetAttributesOf(1,
&const_cast<LPCITEMIDLIST>(lpItem), &ulAttrs);

とするのがbetterな気がする。

46 名前:デフォルトの名無しさん :04/01/27 02:11
子ダイアログから、親ダイアログのチェックボックスを
直接いじる方法教えて下さい。

SendMessage()を使えば出来るであろうと思ってますが、
親ハンドルの取得方法が良く分かっていないのと、
どのように投げたらいいか分かりません。
よろしくお願いします。

47 名前:デフォルトの名無しさん :04/01/27 02:32
>>46
BM_SETCHECKをSendMessageしたいんだと思うが↓の方が簡単。

GetParent()->CheckDlgButton( nIDCheck, nCheck );
HWND使うんなら適当に読み替えてちょ。

48 名前:46 :04/01/27 02:52
>>47
ありがとうございます。早速今日試してみます。

ちなみにSendMessage()は、USER_MESSAGEを投げて、
力技でなんとかしようと思ってますた。
VC++は知らないテクがあると、簡単な?ことが非常に
面倒で困りまつ。

49 名前:デフォルトの名無しさん :04/01/27 04:32

メインウインドウの外側に常時配置するモードレスダイアログ
を作成するのに、CDialog派生クラスを使いました。
それで、そのダイアログテンプレートにはエディットボックス
を配置しました。

実際に実行してエディットボックス内部でリターンを押すと
ダイアログも消えてしまうんです。どうもモーダルダイアログ
の際のIDOKを返すのと同じ処理が行われているんじゃないかと
推察するのですが、これ、リターン押しても消えないように
するには、どうしたらいいんでしょうか?

50 名前:デフォルトの名無しさん :04/01/27 04:45
>>49
自己解決しますた。
CDialogのOnOK()をオーバーライドして、
何も処理しなかったら、消えないように
なりますた。

これはVC++の仮想関数の追加では表示
されなかったんですが、こういう関数も
時々ありますね。ちと紛らわしい。

51 名前:デフォルトの名無しさん :04/01/27 12:43
RSAなどの暗号処理をVC++で実装しようと思ったら
自分でコーディングするか、javaや.netframework使うしかないの?

52 名前:デフォルトの名無しさん :04/01/27 12:58
別にopensllもVCで使えるし、CryptoAPIもあるでしょうに。

53 名前:51 :04/01/27 13:21
>>52
ありがとうございます
CryptoAPIはなんとなく分かりますが、opensslはどのように実装するんですか

54 名前:デフォルトの名無しさん :04/01/27 16:42

親ウインドウのサイズに子ウインドウを合わせるには
GetClientRectを使いますが、逆に子ウインドウのサイズに
親ウインドウを合わせるにはどうしたらいいですか?

親のCWndに子としてCListBoxを貼り付けたのですが、
CListBoxをMoveWindowすると、勝手に適当なサイズに
整形されるみたいなので、逆にCListBoxのサイズに
合わせて、親ウインドウのサイズも変更したいんですが。

55 名前:デフォルトの名無しさん :04/01/27 22:18
>>54
親に対してGetWindowRect、GetClientRect。
取得したサイズから枠の幅を計算して、子Windowのサイズに加えて変更。

56 名前:デフォルトの名無しさん :04/01/27 23:00
>>55
なるほど。
結構手間ですけど、しょうがないのか・・。
ありがとうございます。

57 名前:デフォルトの名無しさん :04/01/28 00:05
AdjustWindowRect…と言おうと思ったが、
ひょっとしてリストボックスの方に
LBS_NOINTEGRALHEIGHT付ければ済む話か?

58 名前:32 :04/01/28 10:19
http://www.42ch.net/UploaderSmall/source/1075252383.JPG

親 hwndParent = CreateWindowEx( 0... HWND_DESKTOP ... );
子 hwndSub = CreateWindowEx( 0... HWND_DESKTOP ... );
これでウィンドウの切り替えの問題をクリアしたのですが、
上の画像のように、1プロセスなのにウィンドウが2つできてしまいます。

親 hwndParent = CreateWindowEx( 0... HWND_DESKTOP ... );
子 hwndSub = CreateWindowEx( 0... hwndParent ... );
こっちにするとウィンドウは1つしかでてこないので、hwndParent のところは
やはりハンドルの関係の継承だと思うのですが、クリックでの切り替えがうまくできません。
うーむ やはりMDIしかないのだろうか・・・
MapChipの画像がバグってるのは仕様です

// 別に気にしなければいいかな

59 名前:32 :04/01/28 10:47
とりあえず気にしないことにします
スレ汚しスマン

60 名前:デフォルトの名無しさん :04/01/28 11:24
>>32
ヤりたい事は分ーった。アンタァ,これで幸せになれるはずだ。
子 hwndSub = CreateWindowEx( WS_EX_TOOLWINDOW, ..., HWND_DESKTOP ... );

61 名前:デフォルトの名無しさん :04/01/28 15:21
プログラムを実行した後、閉じて少しコードを変更してまたビルドすると
次のようなエラーが出ます

LINK : fatal error LNK1168: 書き込みモードで Debug/Project.exe を開けません
link.exe の実行エラー

これはリビルドするともとに戻るのですが、理由として、メモリ
が開放しきれていないのではないことだと思っています。

デコンストラクタで、メモリの開放free()を使っています。ただし、
このプログラムでは200MBほどのファイルを読み込んでいます。
これだけのメモリを開放しきれていないと思っています。

原因はこれで正しいのでしょうか。
また、このような場合はどうすればいいのでしょうか。容量の多い
ファイルをうまく扱うにはどうすればいいのでしょうか。

質問ばかりですいません。よろしくお願いします。

62 名前:デフォルトの名無しさん :04/01/28 16:10
>>60
タイトルバーが気に入らないというレスが付く悪寒
その場合hwndSubを不可視のウインドウの子として作るしかない

63 名前:32 :04/01/28 16:52
幸せになる〜 ひと〜とき♪

たしかにタイトルバーが変わりましたが、幸せなので大丈夫です。
ここらへんで妥協します。
あんまり影響しないんで

64 名前:デフォルトの名無しさん :04/01/28 18:34
fatal error c1010 : プリコンパイル済みヘッダーの検索中に予期しないEOFを検出しました

ってどういうことでしょうか?
VCのエラーメッセージはドラクエの呪文みたいでワケわからんですね。

65 名前:デフォルトの名無しさん :04/01/28 19:22
>>64
#include "stdafx.h"

66 名前:デフォルトの名無しさん :04/01/28 19:33
ほわっ。
解決しました。
ありがとうございます。


67 名前:デフォルトの名無しさん :04/01/28 19:53
最近同じ質問を何度も見た気がする。デジャヴかな。

68 名前:デフォルトの名無しさん :04/01/28 22:51

CImageList に追加するイメージを動的に作成するために
ウインドウのデバイスコンテキストあるいはそれと互換性のある
メモリデバイスコンテキストから、CBitmap を作成したいのですが、
どうにもうまくいきません。

その方法についてご存知の方居られないですか?

以下はうまくいかなかったソース。


69 名前:デフォルトの名無しさん :04/01/28 22:52
これで作成したイメージは単なる黒塗りの矩形となりました。
bitmapオブジェクトに描くというようなことはできないのでしょうか?

CImageList* CExtListView::MakeDragImage(NM_LISTVIEW *pNMListView)
{

CDC *pDC, memDC;
CBitmap bitmap;

pDC = GetDC();

memDC.CreateCompatibleDC(pDC);
bitmap.CreateCompatibleBitmap(&memDC, 200, 50);

memDC.SelectObject(&bitmap);

memDC.TextOut(0,0, "テストストリング");

ReleaseDC(pDC);

CImageList* pImageList = new CImageList;
pImageList->Create(200,50, ILC_COLORDDB, 1, 3);
pImageList->Add(&bitmap, RGB(0x00,0x00,0x00));

return pImageList;

}


70 名前:デフォルトの名無しさん :04/01/28 23:32
>>69
(・А・) CreateCompatibleBitmap(メモリDC)
(・∀・) CreateCompatibleBitmap(画面のDC)

71 名前:デフォルトの名無しさん :04/01/29 01:37
>>70
うーん。これでも黒い矩形のままでした。
なんでだらう。

CImageList* CExtListView::MakeDragImage(NM_LISTVIEW *pNMListView)
{

CDC *pDC;
CBitmap bitmap;

pDC = GetDC();

bitmap.CreateCompatibleBitmap(pDC, 200, 50);

ReleaseDC(pDC);

CImageList* pImageList = new CImageList;
pImageList->Create(200,50, ILC_COLOR32, 1, 3);
pImageList->Add(&bitmap, RGB(0x00,0x00,0x00));

return pImageList;

}

72 名前:デフォルトの名無しさん :04/01/29 02:49
質問です。

xmmレジスタを使いたいのですが、「インラインアセンブラの構文エラーです」と言われてしまい
コンパイルできません。
いろいろとgoogleで検索してみましたが使い方がわかりません。何が必要なのでしょうか。
環境はpen4,VC++6.0です。VC++.netも持っていますが使いづらくて使っていません。

よろしくお願いします。

73 名前:デフォルトの名無しさん :04/01/29 03:12
>>71
ワラタ
何か描いてやれよ。

74 名前:デフォルトの名無しさん :04/01/29 03:56
>>72
VC++6.0でSSEを使いたいなら、
サービスパック4以上とプロセッサーパックをあてなきゃ駄目。
プロセッサーパックは、VCがプロ以上のバージョンじゃないとあてられないけどね。

.netなら素で使えたと思うけど?

75 名前:72 :04/01/29 04:02
>>74
>.netなら素で使えたと思うけど?

そうなのですか。知らなかったです。
使ってみます。ありがとうございました!!


76 名前:デフォルトの名無しさん :04/01/29 04:07
>>73
書くということは pDCに対して描画するのですか?
それだと画面上に描画されることになりますが・・・。

77 名前:デフォルトの名無しさん :04/01/29 04:25
参考までにシンプルなMFCプロジェクトで
テストできるようにOnDrawに実装したサンプルを
書いてみました。


void CBitmapView::OnDraw(CDC* pDC)
{
CBitmapDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: この場所にネイティブ データ用の描画コードを追加します。

CDC memDC, memDC2;
CBitmap bitmap;

memDC.CreateCompatibleDC(pDC);
bitmap.CreateCompatibleBitmap(&memDC, 200, 50);
memDC.SelectObject(&bitmap);

memDC.FillRect(CRect(0,0,200,50),
CBrush::FromHandle((HBRUSH)::GetStockObject(GRAY_BRUSH)));
memDC.TextOut(0,0, "テストストリング");

//pDC->BitBlt(0,0,200,50,&memDC,0,0,SRCCOPY);

memDC2.CreateCompatibleDC(pDC);
memDC2.SelectObject(&bitmap);
pDC->BitBlt(0,0,200,50,&memDC2,0,0,SRCCOPY);

}

最後の3行で画面に出力されるような CBitmapを作成したいわけです。
上記のコードでは何も表示されませんでした。

78 名前:デフォルトの名無しさん :04/01/29 07:25

ペゾルド見ながら研究してんですが、>>77は適切じゃないみたいですね。
memDCとbitmapをメンバ変数にして初期化で設定、それを
OnDrawでウインドウにコピーすることはできました。

しかし、それをCImageListに加えようとするとうまくいかない
んですよねぇ・・・。

79 名前:デフォルトの名無しさん :04/01/29 23:39
#ifndef INC_TEST_H__
#define INC_TEST_H__
#pragma once
int testproc(int n) { return -n; }
#endif

とだけ記述したヘッダファイルをインクルードしてtestproc()を使用すると、リンカのエラー2005番
「"int __cdecl testproc(int)" (? ......) は既に stdafx.obj で定義されています」
が出てしまいます。やはりヘッダファイルには宣言のみを書き、定義は.cpp等に書くべきなのでしょうか。
WTLなど、ヘッダのみで構成されているライブラリなんかは、これをどのように回避しているんでしょうか。

80 名前:デフォルトの名無しさん :04/01/29 23:56
クラス

81 名前:デフォルトの名無しさん :04/01/30 04:46
>>71
ようやく黒い矩形ではなく、イメージが表示されるようになりますた。
詳しくはこちら↓に書いたので、興味のある人はみてください。
http://forums.belution.com/ja/vc/000/201/75.shtml


82 名前:デフォルトの名無しさん :04/01/30 04:54
マルチかよw

83 名前:デフォルトの名無しさん :04/01/30 09:06

CRect を返す関数で NULLを return したら
どうなるんですかね。なんかコンパイラ通っ
ちゃったんだけど、NULL って CRect(0,0,0,0)
と等価なんかな?

それともNULLの代わりにCRect(0,0,0,0)を
返すようにすべき?


84 名前:デフォルトの名無しさん :04/01/30 09:42
>>79
inline

85 名前:デフォルトの名無しさん :04/01/31 13:24
ポップアップメニューで教えて下され

まずリソースエディタでポップアップメニューリソースを作成。
これをLoadMenuでリソースから取り込んでTrackPopupMenuでメニューを出すと、
ポップアップメニュー自体は出るんだけど、リソースエディタで指定したキャプションの
文字列が表示されず文字無しの縦に細長いポップアップになってしまいます。

LoadMenuでハンドルは取れてるし、その妙な細長いメニューも項目数やセパレータの数は
合っているんでLoadMenuやTrackPopupMenuは問題なさそうなんですが…

(リソースファイルから該当部分の抜粋)
IDR_MENU2 MENU DISCARDABLE
BEGIN
MENUITEM "Mode1", UID_EDIT1
MENUITEM "Mode2", UID_EDIT2
MENUITEM "Mode3", UID_EDIT3
MENUITEM SEPARATOR
MENUITEM "抜ける", UID_QUIT
END

↑これの"Mode1"とか"抜ける"といったキャプションが表示されませぬ
考えられる原因があれば教えて下さい。

86 名前:デフォルトの名無しさん :04/01/31 13:29
言語入門書のコードを試してみたいのですが、
VC++.net2003を使って、どうやって.netではない
コンソールアプリを作るのかわかりません。
最初のプロジェクトを作成するところから、すでにわからなくなっています。
ちなみに、ソースはこんなのです。

#include <stdio.h>

void main()
{
  printf("Hello, world!\n");
}

宜しくお願いします。

87 名前:デフォルトの名無しさん :04/01/31 13:36
(゚д゚)

88 名前:デフォルトの名無しさん :04/01/31 15:10
>>85
適当な親のポップアップ項目を作って GetSubMenu() しないと。
ttp://www.kumei.ne.jp/c_lang/sdk/sdk_44.htm

89 名前:デフォルトの名無しさん :04/01/31 16:01
>>88
できますたマリガトウ
ポップアップはすべてサブメニュー扱いだったのね

90 名前:デフォルトの名無しさん :04/01/31 16:49
コーティングの質問ではないのですが教えていただけたら助かります。

VisualC++6.0でタブのオートインデントタイプをスマートにしてるんですが、
switch文を書くときになぜかcase文のインデントが一段下がってしまいます。

switch(msg){
  case WM_CREATE:

みたいにしたいのに、なぜか

switch(msg){
case WM_CREATE:

になっちゃう感じです。
これを抑止したいんですが、可能でしょうか?

91 名前:デフォルトの名無しさん :04/01/31 17:16
スマートインデントを切る

92 名前:デフォルトの名無しさん :04/01/31 18:01
VC++でMFCを使わずに、ディレクトリの中身以下を全て
列挙したいのですがどうしたらいいのでしょうか?

1.dirent.h みたいなインクルードを教えて
2.opendir(pathn)みたいな関数。
3.ディレクトリとファイルの判定方法。


93 名前:デフォルトの名無しさん :04/01/31 18:08
FindFirstFile(Ex)/FindNextFile

94 名前:デフォルトの名無しさん :04/01/31 18:19
>>93
ありがとうございます。

95 名前:86 :04/01/31 18:29
。・゚・(ノД`)・゚・。
釣りやネタじゃなくて、マジでわからないんです。
このソース自体はBCCでコンパイルすることはできたんです。
でも、せっかく高いお金出してVS.net買った(2003はただで貰った)ので、使い方を覚えようと・・・

Win32コンソールアプリケーションってのでプロジェクトを作っても、
stdafx.hなんて言う訳わからないのがでてくるし。

ちなみに、
プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
というエラーがでます。

先ほどのコードをVC++.netでコンパイルするための方法を教えてください。
お願いします!



96 名前:デフォルトの名無しさん :04/01/31 18:32
>>90
考え方だけど、case XXXをラベルって考えれば、それで納得できると思わない?
慣れれば、それほど気にならないと思うけど
switch〜caseつかうと増長なインデントになりがちだしこの仕様は悪くないと思うけど


97 名前:デフォルトの名無しさん :04/01/31 18:54
>>95
>>64-67
こういう事かね?

98 名前:デフォルトの名無しさん :04/01/31 19:29
>>97
VCだと、stdio.hは使えないんでしょうか?
入門書の内容を、そのままコンパイルできたらいいなと考えているんですが・・・

99 名前:デフォルトの名無しさん :04/01/31 19:30
BCBを使いなさい。
VC++はうんこい。

100 名前:90 :04/01/31 19:40
>>91
>>96

参考になります!
有難うございました!

101 名前:デフォルトの名無しさん :04/01/31 19:41
ステップインでデバッグしてるとCTR0.Cとかいうファイルを求められるんだけど何なのでしょう?

102 名前:デフォルトの名無しさん :04/01/31 20:34
>>100
参考になった、ねぇ。
スマートインデントを切るって言ったのは
細かいカスタマイズの手段が提供されてない以上不可能って意味な。

>>101
ランタイムのソース

103 名前:デフォルトの名無しさん :04/01/31 20:40
>>98
使える。
stdafx.hはVCでアプリ作るときのおまじないだから気にすんな。

.NETでないコンソールアプリはプロジェクトの作成するとき、
左のプロジェクトの種類でWin32を選べば出てくる。


104 名前:デフォルトの名無しさん :04/01/31 20:50
俺がVisual C++ 6.0 買ったときは ひととおりウィンドウズアプリケーションの
製作方法が書かれたマニュアルが入ってたが
一度 全部読んだのか?

この手の質問いつも疑問に思うのだが・・・

105 名前:デフォルトの名無しさん :04/01/31 20:51
それってラーニングだかスタンダードだかにしかついてこない教本じゃないか?

106 名前:104 :04/01/31 21:34
俺が買ったのはスタンダードだから
スタンダードには間違い無く入ってる

他のバージョンは買ったひとにしかわからへん

107 名前:デフォルトの名無しさん :04/01/31 21:50

MSでもまともなマニュアルを添付することがあるのか。

108 名前:デフォルトの名無しさん :04/01/31 21:51
じゃあそれだろうな、プロ以上には入ってこない奴。
スタンダードはライセンスや最適化の有無で
購入してない奴が多いんじゃないか?
学生はアカデミック帰るし、社会人はVS買ってただろうから。

109 名前:104 :04/01/31 22:16
MFC一直線コースのマニュアルだ
まぁそこらへんに落ちてる参考書よりははるかにマシだったな

しかし、この程度の質問するやつが ぷろふぇっしょなる 買うとは到底思えんな

110 名前:デフォルトの名無しさん :04/01/31 22:17
>>104
http://www.amazon.co.jp/exec/obidos/ASIN/4756118623/
コレだっけ。

111 名前:104 :04/01/31 22:20
>>110
YES! YES! (多分そんなんだった)

112 名前:デフォルトの名無しさん :04/01/31 23:47
Visual C++ 5.0 Professionalを使っているんですが、
ビルド時に「リンク中..」と出たまま止まることがよくあります。
強制終了でVC自体を終了して再度ビルドすると問題なく完了するのですが。
原因が何か分からないでしょうか?

使用環境
 WinXP Home
 ベアボーンノートPC(Clevo D520P)
 P4HT 2.4C
 PC2100 512MB

113 名前:デフォルトの名無しさん :04/02/01 01:05
サービスパック入れてまつか?
http://www.microsoft.com/japan/msdn/vstudio/downloads/sp/vs97sp.asp

114 名前:デフォルトの名無しさん :04/02/01 16:02
質問させてください。
VC++6.0/XP で、SDIアプリケーションを開発しています。

アプリケーションのウィンドウがクリックされたり、タスクバーから
クリックされたりして、アクティブな状態に変化した時に処理を行おうと
思い、MainFrame に、
OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized) を追加して、
if( nState == WA_ACTIVE ){(行いたい処理);}
と記述しました。しかし、タスクバーからクリックされた場合は
この条件で拾えるのですが、画面上にこのアプリケーションと、
アクティブになった別のアプリケーションを表示した状態で、
このアプリケーションのウィンドウをクリックしても、この条件では
拾ってくれません。この場合は、WM_ACTIVE が飛んで来ていないのでしょうか?


115 名前:デフォルトの名無しさん :04/02/01 18:09
マウスクリックのときはWA_CLICKACTIVEで。

116 名前:86 :04/02/01 22:09
以前少しさわったvisual studio 6.0では、空のプロジェクトに、
前述のソースを追加するだけでビルドできたので、VS.net2003でも同じようにできるのかなと
思ったのですが・・・
そういう意味では、VS6.0の方が使いやすいように思えてなりません。

質問続きになってしまいますが、
stdafx.hをインクルードしないと、VC++.netでアプリは作れないのでしょうか?
できるとしたら、その方法、もしくは、その方法が乗っているサイトを
教えていただけませんか?

ちなみに、購入したのはProfessionalなので、教本はついていませんでした。
いい加減、VBを卒業したいのです・・・

117 名前:デフォルトの名無しさん :04/02/01 22:33
プロジェクト→プロパティ (Alt-P-P)
構成プロパティ>C/C++>プリコンパイル済みヘッダー
「プリコンパイル済みヘッダーを使用しない」を選択

118 名前:117 :04/02/01 22:41
ちなみに俺はCもVS.NETもまだ昨日始めたばかりだぞ。
俺も86と同じとこでつまづいたが色々いじって解決方法を発見した。
86もがんがれ。

119 名前:86 :04/02/01 22:41
いろいろ試していたら、stdafx.hを使わずにコンソールアプリをビルドすることができました。

1.新しいプロジェクトから、Win32プロジェクトを選択
2.ウィザードの、アプリケーションの設定から、
 コンソール アプリケーション、空のプロジェクトをチェックし、完了

今までは、アプリケーションの設定画面で、
空のプロジェクトにチェックが入っていなかったのがいけなかったようです。

>>97さん、>>103さん、ありがとうございました。

120 名前:デフォルトの名無しさん :04/02/01 23:08
ボタンが押されるとエディットボックスの数字が
1上がるようにするには

void CtestDlg::OnButton1()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
}
に何を書けばいいですか?

121 名前:デフォルトの名無しさん :04/02/01 23:17
>>86

もちろんその方法でもいいけど、
空のプロジェクトをチェックしなくても可能だよ。

#include "stdafx.h" はプリコンパイル済みヘッダーっていって、
滅多に変更されないヘッダファイルを、
(自分でつくった他のファイルの)コンパイルのときに、
その都度コンパイルしていると時間がかかるから、
先にコンパイルしとくわけよ。

で、MFCが用意してくれるプロジェクトの設定では、
必ず各ファイルに"stdafx.h"という名前のプリコンパイルを、
includeで取り込んでおかなければならないから、
これを削除したりすると、「検索中にEOFエラーが」と出る。
(直接ソースファイルでincludeしなければならない)

普通のCプログラムを書きたいときも、
#include "stdafx.h"
#include "stdio.h"
と追加して書けば問題ない。
もしくはstdafx.h内に、stdio.hを追加するか。

122 名前:デフォルトの名無しさん :04/02/01 23:22
>>120
SetDlgItemInt( IDC_EDIT , (int)GetDlgItemInt( IDC_EDIT )+1 );

123 名前:デフォルトの名無しさん :04/02/01 23:24
>>121

自己訂正

>MFCが用意してくれる

じゃないな。Visual Stdioか。

124 名前:デフォルトの名無しさん :04/02/01 23:44
お願いします。

VCで、拡張メタファイル(EMF)→BMPファイル変換の方法を探しています。
VBならば、
 Picture1.Picture = LoadPicture("x:\xxx.EMF")
 SavePicture Picture1.Image, "x:\xxx.BMP"
Delphiならば、TMetaのコンバート関数一発で、TBitMapに変換可能です。
VCでも簡単にできる手法はありますでしょうか?

125 名前:デフォルトの名無しさん :04/02/01 23:58
CImageListとかどうだっけか

126 名前:デフォルトの名無しさん :04/02/02 01:18
>>122
ありがとぅ(´∀`)ノ

127 名前:デフォルトの名無しさん :04/02/02 01:39
>>115

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

128 名前:デフォルトの名無しさん :04/02/02 13:03
replace関数を使おうとしているのですが
定義されていない識別氏と出てきます。
algorithmをインクルードしています。
また、void replace(_FI _F, _FI _L, const _Ty& _Vo, const _Ty& _Vn)
の引数をご教授願えませんでしょうか
VC6.0 XP環境です。

129 名前:デフォルトの名無しさん :04/02/02 13:24
>>128
マルチうざいです。

130 名前:プロジェクトのコピーについて質問です :04/02/02 13:56
既に完成されたプログラム(ワークスペース)があって、そのコピーを作成して(ワークスペース名は別にしたい)
改良を加えたい場合、どういった手順がよいのでしょうか。

一からプロジェクトを新規作成してファイルの追加やリソース(アイコン等)の作成を行うべきなのでしょうか。

ご教授お願いいたします。

131 名前:デフォルトの名無しさん :04/02/02 14:42
>>128
std::replace()
としないといかんのでわ?
違うかも知れんけど。

132 名前:デフォルトの名無しさん :04/02/02 20:10
MSDNライブラリが分かりずらいです。
素人の自分には読んでも分からないことばかり。

皆さんは、MSDNライブラリが分かりずらいと
思いませんか?

是非、意見を聞かせてください。

133 名前:デフォルトの名無しさん :04/02/02 21:19
分かりずらいです。まず全体の構造が捕らえにくい。

134 名前:デフォルトの名無しさん :04/02/02 21:26
アイコンについて聞きたいことがあります。
MFCで勝手に作られるアイコンを、VCのエディタで修正しても、
そのアイコンに変わりません。
自分でアイコンを作ったものを、自作アプリケーションに使用するには
どうしたらいいのでしょうか?
教えてください。お願いします。

135 名前:132 :04/02/02 21:36
>>133
そうですよね。
同じ意見の人がいて嬉しいです。

136 名前:デフォルトの名無しさん :04/02/02 21:42
>>132
わかりづらい。でも一番詳しいのがMSDN。
はじめは参考書で勉強するしかないよ。

137 名前:デフォルトの名無しさん :04/02/02 21:45
>>134
試したけど変わるよ。
32x32のアイコンだけ修正して、16x16の
小さなアイコンを見ているのでは?

138 名前:112 :04/02/02 23:02
>>113
レスが遅れてすみません。
ServicePackは入れてました。念のためもう一度入れましたが、症状に変わりなしです。

時間が空いた時にOSごと再インスコしてみます。
Word2000が終了時にエラーを吐くという症状もあるんで、それも治ることを期待して。

139 名前:デフォルトの名無しさん :04/02/02 23:34
iostreamヘッダをインクルードできないYO!!
#include <iostream>
だけじゃだめなのか?

140 名前:デフォルトの名無しさん :04/02/03 00:12
コンポボックス表示のの値が時々変わってしまうのって
何か処理が足りないんでしょうか?

141 名前:デフォルトの名無しさん :04/02/03 00:29
>>139
それで問題ないはず。
どういうエラーメッセージがでるの?

142 名前:デフォルトの名無しさん :04/02/03 00:30
>>140
デフォルトの表示が毎回変わるってこと?


143 名前:デフォルトの名無しさん :04/02/03 00:59
説明不足でした

デフォルトはOnInitなんたらで設定しているからいいんだけど
ボタン押したときとかに、クラスウィザードで作ったm_strComb1
を使うんだけど、その後なぜか表示が変わってる
メッセージボックスとかデバッカとかで
追いかけられるとこまで(ボタンが押されたという関数内)
追いかけたんだけど変化してなくて、その後、表示だけ変わってる

何でなんでしょう?

144 名前:デフォルトの名無しさん :04/02/03 01:06
さっぱりわからん

145 名前:デフォルトの名無しさん :04/02/03 01:19
UpdateDataを呼び忘れてるんだろうな

146 名前:デフォルトの名無しさん :04/02/03 04:13

DDX絡み?

147 名前:デフォルトの名無しさん :04/02/03 04:34
おそらく>>145が正解だろうなぁ

148 名前:デフォルトの名無しさん :04/02/03 16:00
始めまして、mdbファイルの接続について質問させていただきます。

開発環境:Visual Studio.NET 2003 Professinal
開発言語:Visual C++
DB  :Access2002(.mdb)
接続方法:OLE DB (MFC SDIアプリで使用)
     ADOとODBCは事前に登録が必要等の理由で不可

上記の方法でデータベースを操作・入力を行うアプリを作ろうとしていますが
現在、参照だけしか出来ずレコードの内容が変更できません。
ボタンを作り、メッセージ ハンドラにて
GetDlgItemText(IDC_EDIT1,m_pSet->m_Name,51);
m_pSet->UpdateAll(NULL,NULL,NULL);
と記述しましたが内容が反映されませんでした。
これを解決するためにはどうしたら良いでしょうか?

また、現在1つのテーブルを固定で参照している状態ですが、
他のテーブルに参照を切り替えるにはどうすればいいでしょうか?
よろしくおねがいします。

149 名前:デフォルトの名無しさん :04/02/03 16:30

エディットコントロール上にマウスカーソルが来た時にだけ
カーソルを任意の物にしたいのですがうまくいきません。

Window2000,VC++4.0,MFCダイアログ

デフォルトでは I になりますが、これが嫌だったので
変えようと思い下記のようにしました。

(サブクラス化した WM_SETCURSOR ハンドラ内)
HCURSORhcur;
hcur = AfxGetApp()->LoadStandardCursor(IDC_ARROW);
SetCursor( hcur );

しかし、何も変化はありませんでした。
あと、なぜかこのハンドラ内で、

CWaitCursor wait;

とすると、I にも砂時計にもならず、通常の矢印のままになりました。

最終的には自作のカーソルにしたいと思っています。
SetCursor() をどのタイミングで呼び出すべきなのでしょうか?
それとも全く的外れでしょうか?

どうかご教授下さい。


150 名前:デフォルトの名無しさん :04/02/03 16:34
// メッセージの表示
MessageBox(NULL,"メッセージ","タイトル",MB_OK);

↑でコンパイルしたらエラーがでました。
「error C2660: 'MessageBoxA' : 関数が不正な 4 個の実引数をともなって呼び出されました。」

第1引数のNULLを消したらコンパイルできたのですが、オーナーウィンドウの指定っていらないの
ですか?
ちなみに、言語:VC++6.0  OS:WinXPです。
どなたか教えて下さい。


151 名前:デフォルトの名無しさん :04/02/03 16:43
>>150
MFC使ってるんだろ

152 名前:148 :04/02/03 16:58
>150
最初の引数がいらないんじゃない?

153 名前:148 :04/02/03 17:00
>150
連投スマン
どうしてもその引数で使いたいなら頭に :: 付ければ
MFCでなくAPI関数の方を呼び出す。

154 名前:150 :04/02/03 17:17
>150 >>152 >>153
どうもありがとうございます。

MFCなら最初の引数がいらなくて、どうしても使いたいときは
頭に::付けるのですね。(API関数)

すっきり解決しました。感激です。


155 名前:150 :04/02/03 17:22
>>154
×150→○151

156 名前:デフォルトの名無しさん :04/02/03 17:50
TeraPadのように、縦と横方向にスクロールバーを付けるには、
MFCを使う場合どうすればよいでしょうか?
EditViewは縦しか出ないし。
なんか簡単な方法はありますか?

157 名前:148 :04/02/03 17:55
コントロールのプロパティでHoriziontal ScrollとVertical Scroll をTRUEにする

158 名前:デフォルトの名無しさん :04/02/03 20:19
>>157
コントロールのプロパティってどうやったら表示できますか?

159 名前:デフォルトの名無しさん :04/02/03 20:31
くだ質に質問したのですがスルーされたのでこっちに質問。
VC++.netのstdでは作成したアプリを公開できないと聞いたのですが本当ですか?

160 名前:デフォルトの名無しさん :04/02/03 20:58
>159
まず、その情報を何処で仕入れたのか教えてみそ

161 名前:139 :04/02/03 22:07
>>141
error C2065: 'cout' : 定義されていない識別子です。
だそうな。

>>159
金は取れない。公開は可能。以上

162 名前:139 :04/02/03 22:08
using namespace std;
↑これ書いたら動いた。これどういう意味?

163 名前:デフォルトの名無しさん :04/02/03 22:09
>>161
それは std::cout にしろってことでは?
もしくは
using namespace std;



164 名前:デフォルトの名無しさん :04/02/03 22:55
>>149

試してみたけど、そのやり方で普通にできたよ。

BOOL CMyEdit::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
HCURSOR hcur = ::AfxGetApp()->LoadStandardCursor(IDC_ARROW);
SetCursor( hcur );

return 0;
}

これでダイアログのエディット内にマウスカーソルがきても、
矢印のままになった。(CMyEditクラスはCEditの派生)

165 名前:デフォルトの名無しさん :04/02/03 23:45
std::vector<char> v;
v.push_back('a');
v.push_back('b');
v.push_back('c');
v.push_back('\0');
char *p = v.begin(); // ここでエラー … p=&v[0]ではok
cout << p;

上のソースはVC++6.0では通るのですが、VC++.NETでは
『 error C2440: '初期化中' : 'std::vector<_Ty>::iterator' から 'char *' に変換できません。
  with [ _Ty=char ] この変換を実行可能なユーザー定義変換演算子がないか、
  または演算子を呼び出せません。 』
と怒られてしまいます。p=&v[0] または p=&v.at(0) では、どちらのコンパイラでも通ります。
なぜ.NETのほうではp=v.begin()でエラーが出るのでしょうか。何かオプションが足りないんでしょうか。

166 名前:デフォルトの名無しさん :04/02/03 23:50
いやエラーコードそのまんまだろ。
biginはイテレータを返すんだと。
VC++6.0で通って.NETで通らないのはbiginが変更されたってこった。
ヘルプ見れ

167 名前:デフォルトの名無しさん :04/02/03 23:56
>>165
v.begin()が返すのは反復子だから、char *p で
受けるのは問題があるんじゃないか?

std::vector<char>::iterator pos;
pos = v.begin();
にする必要があるのでは?

vectorなら v.front() と v.back() が使えます。

168 名前:165 :04/02/04 00:04
ああ、自分は全然理解してませんでした。確かに、イテレータを返すんなら
イテレータで受けなきゃいけないですね。
# そうすると、挙動からしてVC++6.0のbegin()はただのポインタを返してたのかな。

169 名前:デフォルトの名無しさん :04/02/04 00:43
AVIファイルを再生するプログラムを作ったのですが
映像のフレームの1ラインのみ、常に赤線を引いておきたいのです。
しかし、赤線が時間ごとにいつも消えてしまいます。
OnTimerを使ってもちらついたようにしか表示できません。

常にラインを表示するにはどうすればいいのでしょうか。



170 名前:デフォルトの名無しさん :04/02/04 00:45
ソースによる

171 名前:149 :04/02/04 00:52
>>164
レスありがとう。

何か間違っていたのかもしれません。
もう一度やってみることにします。


172 名前:デフォルトの名無しさん :04/02/04 01:25
それぞれのWindowはマウスカーソルを登録しておける

173 名前:149 :04/02/04 09:21
>>164
できました。

違いは、OnSetCursor()内で処理した後、親クラスの呼び出しCEdit::OnSetCursor()
をしている事でした。

AppWizard ではデフォルトでこのコードが作成されるのですが、これをコメント
アウトしなければカーソルは変化しませんでした。


174 名前:デフォルトの名無しさん :04/02/04 12:00

エディットコントロール内の文字色を変更したいのですが、
今はダイアログ内の OnCtlColor() にてコントロールIDを
判断して文字色を変更しています。

これで問題ないと思っていたのですが、WM_CTLCOLOR は描画される
前に必ず飛んでくると思っていたのですが、内容に変更が無い場合は
来ない事が分かりました。

つまり、エディット内に「123」とあった時、「456」と出力すれば
メッセージは来ますが、「123」と出力してもメッセージは来ません。

そうなると、文字列を変化させない限り、現在の方法では文字色を変化
させることができなくなってしまいます。

このような場合、どうすれば良いのですか?
教えて下さい。


175 名前:デフォルトの名無しさん :04/02/04 18:15
「123」と入力されているエディットに「123」と出力すると、
OnCtlColor() に来ますけど・・・。

あと、再描画を要求するだけなら InvalidateRect()がイイかな。


176 名前:デフォルトの名無しさん :04/02/04 20:44
>>174

そのエディットの自作クラスを用意してるなら、
WM_PAINTメッセージを受け取るOnPaint関数をオーバーライドして、
そこへ色を変える処理を割り込ませる、という手でいけるかも。

(でもその自作OnPaint関数でCPaintDCオブジェクトを作らないように。
 で、色を変えたら、CEdit::OnPaintを呼び出す。)

177 名前:174 :04/02/04 22:14
レスありがとうございます。

>>175
例えば、SetDlgItemText()等で出力していますか?
当方は UpdateData() でメンバ変数経由での更新なので、その違いかもしれません。

>>176
サブクラス化したクラス側でOnPaint関数をオーバーライド、ということですね。
やってみます。


178 名前:176 :04/02/04 23:14
>>177

そうです。Visual C++側が自動的に関数内にCPaintDCオブジェクトを、
書いてくれると思うけど、それは必ず削除しておいてください。

あと、色を変更したら(例えば何らかの変数に色を記録しておくとする)
エディットのInvalidate()を呼び出して、WM_PAINTが発生するように、
しておく必要もあるかも。

OnPaintの中で、色を記録した変数にしたがって、
実際に文字色を変更する関数を呼ぶ。という感じになるかと。

179 名前:デフォルトの名無しさん :04/02/04 23:16
今、実行ファイルとは別にMIDIファイルを読み出して音楽を再生しているのですが
これをMIDIファイルを実行ファイルの中に含ませて再生したいと思っています。
ですがどうすればいいかわかりません。

Wavファイルも同じように実行ファイルの中に含ませて再生するために
リソース化してそしてPlaySound()で再生はできたのですが、
MIDIについてはリソース化してもMCIを使うのでPlaySound()のように
リソースからは再生できないようです。

それでどうすればいいか調べていくうちに他にはリソース化した
MIDIファイルをテンポラリファイルとしていったん書き出して
それを再生するというやり方があると知ったのですが
それはどうやればいいのかわかりません。

こちらの環境は開発環境はVisualC++.NET2003、で言語もVisualC++です。
OSはWindows2000です。よろしくお願いします。


180 名前:175 :04/02/05 00:26
>>177
CWnd::SetWindowText() と CWnd::SendDlgItemMessage()の両方を
試しましたが、どちらも正常に動作しました。

そちらでうまく動作しないのは、DDXの仕様かもしれませんね。

しかし、再描画の度にOnCtlColor()が呼ばれるのは同じだと思うので、
エディット側のInvalidate()またはInvalidateRect()を呼び出してみては
どうでしょうか?


181 名前:デフォルトの名無しさん :04/02/05 00:38
VC++6.0 のマニュアルが欲しいんですが、どうすればいいでしょ。


182 名前:デフォルトの名無しさん :04/02/05 01:09
割れか?

183 名前:デフォルトの名無しさん :04/02/05 01:22
たぶん割れだな

184 名前:デフォルトの名無しさん :04/02/05 01:56
割れ割れはウチュウジンだ    (喉を叩きながらですよ)

185 名前:174 :04/02/05 09:54
>>175
>>176

色々やりましたが、エディットの Invalidate() を呼び出す方法が簡単だったので
それを採用しました。

ただ、ヘルプを見ても、なぜこの関数で解決できるのか理解できないので^^;
もう少し調べてみます。

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



186 名前:貧乏です :04/02/05 10:47
現在VC++6.0Proで勉強しているのですが、将来へ向けてC#など.NET Frameworkも
勉強しないといけないと思い、Visual Studio .NET 2003を購入しようと思ったのですが
MSのサイトで動作条件をよく見てみると、モニターが1024x768以上とか書いてあって
手持ちのノートPC3台はどれも800x600なんですが、どうすればいいのでしょうか?

187 名前:貧乏です :04/02/05 10:53
外部モニターは置き場所が無いし、うざいので嫌です。
1024x768の液晶のノートを買うようなお金はありません。
なんとかがんがって独学してきたけど、もうだめぽです。
今の時代、お金が無いと満足に勉強することもできないんですね(泣

188 名前:貧乏です :04/02/05 10:56
当然、仮想解像度なんて気の利く機能は手持ちのノートPC3台にはついてません。

189 名前:デフォルトの名無しさん :04/02/05 11:12
SDKでやれ。あとC#やりたいとか基本的にスレ違いなことに気づけ。

190 名前:デフォルトの名無しさん :04/02/05 12:54
>>186
アコムとかプロミスとかレイクとかいっぱいあるじゃん。

191 名前:デフォルトの名無しさん :04/02/05 13:16

ノートPC3台も要るのか?
全部売って、液晶モニタ+デスクトップPCが買えるのでは?

192 名前:デフォルトの名無しさん :04/02/05 15:58
std::floorの機能について調べたいとします。
VS.NETのヘルプでキーワード検索しても見つかりません。
そういうときどうやって解決してますか?
手元の本の索引にもなく、キーワード検索にもひっかからず、ぐぐるとひっかかりすぎる。
そういうとき(´・ω・`)なのです。

193 名前:デフォルトの名無しさん :04/02/05 16:08
SDIで、簡単なテキストエディタを作ろうとしています。
Viewの基本クラスをCEditViewにすると、縦方向のスクロールバーは表示されますが、
横方向のスクロールバーは表示されません。
縦横両方スクロールバー付きのエディタを作りたいのですが、
どうすればいいでしょうか?
Viewの基本クラスを変えたほうがいいのか、
なにかオプションで横方向のスクロールバーも表示できるのでしょうか?
教えてください、お願いします。

194 名前:デフォルトの名無しさん :04/02/05 16:17
>>193
LONG style = GetWindowLong(GetEditCtrl().GetSafeHwnd(), GWL_STYLE);
style |= WS_HSCROLL;
SetWindowLong(GetEditCtrl().GetSafeHwnd(), GWL_STYLE, style);

これでどお?

195 名前:デフォルトの名無しさん :04/02/05 16:22
>>194
記述の場所はCEditViewのOnCreate がよさげ。

196 名前:デフォルトの名無しさん :04/02/05 16:22
>>194
この3行をどこに追加すればいいのですか?

197 名前:デフォルトの名無しさん :04/02/05 16:22
>>196はなかったことに。

198 名前:デフォルトの名無しさん :04/02/05 16:31
>>195
たびたびすいません。
OnCreateという関数が見当たらないのですが。
PreCreateWindowに追加してみたけど、変化がありませんでした。
CMainFrameにOnCreateがあるのですが、
ここに追加しても、エラーが出てしまいます。

199 名前:デフォルトの名無しさん :04/02/05 16:33
>>198
WM_CREATE のハンドラを作ると
OnCreate になりまつ。

200 名前:デフォルトの名無しさん :04/02/05 16:38
>>198
       ヽ(・ω・)/   ズコー
      \(.\ ノ

201 名前:デフォルトの名無しさん :04/02/05 16:48
>>199
WM_CREATE のハンドラ作り方がわかりません。
こんなことまで聞いてすみません。
初心者なので、どうか教えてください。

202 名前:デフォルトの名無しさん :04/02/05 16:52
ヘルプみろよ・・・

203 名前:デフォルトの名無しさん :04/02/05 16:55
>>201
左側のクラスの一覧で
CEditViewの派生クラスがあるでしょ?
そこで右クリック->「Windowsメッセージハンドラの追加」を選択。
WM_CREATEを選んで「追加と編集」

これで作成されるはず。


204 名前:デフォルトの名無しさん :04/02/05 16:57
ハンドラは作れて、スクロールバーも表示されるのですが、
バーが機能しません。
長い文章を入力しても、バーが使えない状態です。
どうすればよいでしょうか?

205 名前:デフォルトの名無しさん :04/02/05 16:58
横スクロールバー作成できたの?

206 名前:デフォルトの名無しさん :04/02/05 17:01
>>205
バー自体は出てるのですが、機能しません。
長い文章が、端で改行されてしまう状態です。

207 名前:デフォルトの名無しさん :04/02/05 17:10
ES_AUTOHSCROLL

208 名前:デフォルトの名無しさん :04/02/05 17:22
>>207をどうすればいいんですか?

209 名前:デフォルトの名無しさん :04/02/05 17:27
なんつーか、スレタイがそうさせるのかなぁ……

210 名前:デフォルトの名無しさん :04/02/05 17:29
>>208
Googleで検索

211 名前:デフォルトの名無しさん :04/02/05 17:37
MFC の CString についてなのですが、

例えば
------------------------------------
CString csData( _T("12345") );

csData = csData.Left( 3 );
------------------------------------

これってアリですか?
実際処理は問題無さそうですが、同じ領域同士で操作しているようで
何となく不安です。

ちなみに今は、こうしています。
------------------------------------
CString csData( _T("12345") ), csTemp;

csTemp = csData;
csData = csTemp.Left( 3 );
------------------------------------

アリなのであれば、当然1つの領域で処理したいです。

教えて下さい。


212 名前:デフォルトの名無しさん :04/02/05 17:47
Left()はCStringを返す
それは、元のCStringとは全く別の物

213 名前:211 :04/02/05 17:57
レスどうも。

なるほど。
これで効率よくコーディング出来そうです。
ありがとうございました。


214 名前:デフォルトの名無しさん :04/02/05 18:29
>>210
Google検索でひっかかりました。
ありがとうございました。

215 名前:デフォルトの名無しさん :04/02/05 20:21
VC++で、Web上の辞書サイトから英単語を検索して、
意味を文字列として取得することは可能でしょうか?

簡単な方法を教えてください。
あとこういう用途に向いた辞書サイトってありますか?


216 名前:デフォルトの名無しさん :04/02/06 01:44
>>215
簡単な方法はないと思う。(w
MFCで言えば、CHttpFile でネットからHTMLファイルを
取得して、自分で解析することになるのでは?

217 名前:デフォルトの名無しさん :04/02/06 01:45

スプレッドシートを使いたいんですが、MFCでは
適当なライブラリはないですか? 
リストビューはちょっと違うみたいだし、
自分で実装することになるのかな?



218 名前:デフォルトの名無しさん :04/02/06 10:15
MFCの使用ってなぜ控えた方がいいんでしょうか?

219 名前:デフォルトの名無しさん :04/02/06 10:29
MS的には、.Net環境に対応してなからでないの?

220 名前:181 :04/02/06 11:58
>>182
>>183

きみら、誰に言ってるの。
ms vc++ 知ってれば、何を言っても良いのか。
ms vc++ 知らざるものは、人にあらずか。

msdn でぐぐってモニタで見るだけでは、やはり同時性、一覧性がない。
マシンデバッグ、マシン読本だけでは、第一、楽な姿勢になれず疲れる。
だから、6.0の中古本のマニュアルあれば、それを譲って(買取させて)
もらおうと思っていただけ。印刷するのは大変だから。
ソフトは会社所有で数も1パックじゃない。だから「割れ」ではないんだ。



221 名前:デフォルトの名無しさん :04/02/06 12:12
>>220
そもそもマニュアルって何を指してるのよ。
>>181だけじゃStandard版に付いてくる本ともとれるしMSDNライブラリのCD-ROMともとれる。
「どうすればいいでしょ。」って、本が欲しけりゃ買えよ。

222 名前:デフォルトの名無しさん :04/02/06 12:20
>>220
その必死さから、割れが濃厚になってしまった。
残念です。


223 名前:デフォルトの名無しさん :04/02/06 12:29
アスキーから出てるオフィシャルリファレスとか、ペゾルド本でも買っとけよ。

224 名前:デフォルトの名無しさん :04/02/06 14:00
CStringを多用するとcharなんかを使って処理する場合に
比べるとおそいんですか?

225 名前:デフォルトの名無しさん :04/02/06 15:02
そりゃ、CStringは内部ではcharを処理してるんだから
速くなる事は無いだろ

226 名前:デフォルトの名無しさん :04/02/06 15:43
もちろん処理の内容によるけど、CString の方が速いケースもありうるだろ。
>>224 が CString 作った奴より上とは限らんし。
要は、>>224 次第ってことだ。

227 名前:デフォルトの名無しさん :04/02/06 21:18
>>224
下手なコード書くよりMFC使った方が断然速いよ
STD版VCとか最適化がカスタマイズできないコンパイラの場合は特に

やってみればわかる

228 名前:デフォルトの名無しさん :04/02/07 08:59
CStringはメモリを動的に確保・拡張するから遅い。
サイズを事前に決定して、拡張する必要が無いのなら
(サイズ以上の文字列はカットするだけとか)
char 配列のが段違いに速い。
速度が求められていないところでは CStringでいいけど。

コードの書き方や最適化云々の話では無いと思うが。

229 名前:もしかして釣りか ? :04/02/07 10:07
>>228
> サイズを事前に決定して、拡張する必要が無いのなら

そんな仮定を勝手に置けばそうなのかもしれないな。

> 速度が求められていないところでは CStringでいいけど。
> コードの書き方や最適化云々の話では無いと思うが。

はぁ...、未だにこんな思い込みをしてる奴っているんだな...。

230 名前:デフォルトの名無しさん :04/02/07 10:36
確かCStringってMFC4.0の頃にだいぶん改善されたよな。


231 名前:デフォルトの名無しさん :04/02/07 10:48
>>229
>そんな仮定を勝手に
勝手にも何も、そういう場合は往々にしてあるが。


232 名前:デフォルトの名無しさん :04/02/07 10:49
長大な文字列を確保して一時的処理をするようなことを連続するとかなりの
オーバーヘッドが生じる。でもそれって標準関数使っても同じことだし。
CStringの気安さからそうしがちってことならあるかも。

CString使うならFindやMidで頻繁に加工すると思うけど、それを代わりに
標準関数で手前コード書くとかなり遅くなる。

233 名前:デフォルトの名無しさん :04/02/07 11:01
>>231
だからなに ?

あんたが「勝手な仮定を置いた」と言う事実は消えないが、何か ?

234 名前:デフォルトの名無しさん :04/02/07 11:35
>>233 = >>229
if文を使えない

へぇ〜
 へぇ〜
  へぇ〜

235 名前:デフォルトの名無しさん :04/02/07 13:05
>勝手な仮定を置いた
なんじゃこいつは?
使い方によって状況が変わってくるんだから例を挙げるのは当然のことだろ。

いかなる場合においてもMFCが最高ならば、あんなに糞扱いされてないんだろうな。

>>233
なんでこいつこんな必死なん?


236 名前:デフォルトの名無しさん :04/02/07 13:07
>>234

>>228
> CStringはメモリを動的に確保・拡張するから遅い。

if 文の外にありますが何か ?

237 名前:228=231 :04/02/07 13:37
>>233
その「勝手な仮定」って主張する意味がわからんよ。
仮定もクソもない。場合によって使い分けるのは当然だろう。

てか、「勝手な」などと言われるほどスペシャルケースでもないぞ・・・
どっちの場合もよくあること。仕事してないでしょ。学生さんか。


238 名前:228=231 :04/02/07 13:40
あと >>229
>はぁ...、未だにこんな思い込みをしてる奴っているんだな...。

思い込みじゃない。断じて。
メモリ確保・拡張のオーバーヘッドはかなりのもの。
それが解らないのなら、そういう問題にあたったことが無いんだろね。
経験ないのなら黙ってな。

239 名前:デフォルトの名無しさん :04/02/07 13:57
>>235, >>237-238
> 場合によって使い分けるのは当然だろう。

そう、当たり前。

だから、>>228 の一行目で
> CStringはメモリを動的に確保・拡張するから遅い。
なんて、断定するのがおかしいだけ。
char * でも同じようなことすればたいして変わらんよ。

>>224 がそういうこと (=動的確保・拡張) をしたいのかどうかはわからんけど、わからん間はあんたの「勝手な仮定」と言われてもしょうがない。

それとも、CString のメモリ管理に重大なオーバーヘッドを生む要因があるのか ?
それならそれを指摘すればいい。

240 名前:デフォルトの名無しさん :04/02/07 14:23

このままいっても、堂々巡りぽいな。

>>224
>「CStringを多用するとcharなんかを使って処理する場合に
>比べるとおそいんですか?」

こんな抽象的な質問するからいけないんだ、てことにしておこうじゃないか。

もしまだ、>>224 居るなら、どういう風に使うのか言ってみたらどうか

本当に速度にシビアな状況なら、そもそもMFC自体使わないだろう。


241 名前:デフォルトの名無しさん :04/02/07 15:16
>>240
> 本当に速度にシビアな状況なら、そもそもMFC自体使わないだろう。

プッ、言ってるるそばから....。

速度的に MFC のどこがどうまずいのか指摘してからにしてよね。

242 名前:デフォルトの名無しさん :04/02/07 16:28
動的な文字列において、
中身に頓着しない単純なデータがほしいのならCStringは無駄の無い優れた選択。
マルチバイト文字列やパスのような先頭から走査する必要のあるデータの場合には
長さや終端を保持するメモリ領域やコードが無駄になる。

ほしいのがブロックなのかストリームなのか、最低限その辺だけ抑えればあまり無駄にはならない。

243 名前:デフォルトの名無しさん :04/02/07 16:31
#include <string>

using namespace std;

string str("(`・ω・´) シャキーン");

244 名前:デフォルトの名無しさん :04/02/07 19:17
すごく初歩的な質問で申し訳ないのですが
HSPなどでは上から下へプログラムが実行されていくので非常にわかり易いのですが
VC++もMain関数が終わった後にウインドウプロシージャが実行されてプログラムが終わるのでしょうか?

245 名前:デフォルトの名無しさん :04/02/07 21:22
>>244
基本は上から下に流れるけど、
下から上にいくことができる。
99.99999% 下から上にいくことがある。

入り口は一個 出口も一個
途中は分岐、繰り返し、呼び出し

246 名前:228=231 :04/02/07 22:02
>>239
>断定するのがおかしいだけ
くだらん揚げ足ウザイ
お前は「ただその一点だけ」でここまで食い下がってるんだよ。
いいかげんにしとけアフォ

それにしてもお前は全然解ってないようだ・・・
>CString のメモリ管理に重大なオーバーヘッドを生む要因があるのか ?
動的なメモリ確保・拡張そのものがオーバーヘッドかかるんだよ。
何もMFCが悪い、CStringが悪いなんていってねーだろが。
管理もクソもねーんだよ。

247 名前:デフォルトの名無しさん :04/02/07 22:08
動的なメモリ確保のコストなんて加算1回+αまで短縮できるし、
それ以外の方法となるとスタックに配置した「固定長の文字配列」を
文字列代わりに使うしかなくなるわけだが。

248 名前:そろそろ墓穴掘るのやめたらいいのにね。 :04/02/07 23:13
>>246
> 何もMFCが悪い、CStringが悪いなんていってねーだろが。

やれやれ、ヴァカは自分の書いたことすら忘れてるのか ? (藁

>>228
> CStringはメモリを動的に確保・拡張するから遅い。
> 速度が求められていないところでは CStringでいいけど。
>>240
> 本当に速度にシビアな状況なら、そもそもMFC自体使わないだろう。

249 名前:割り込みごめん :04/02/08 01:25
>>248
「遅い」とは書いてあるが「悪い」とは書いてないような。
「遅い」=「悪い」なのか?

CStringが速いのはCStringからの初期化と代入くらいじゃないの?

>>241
MFCのソースを見たことがあるのだろうか?

250 名前:ホントに割り込みなんか... ? とすると、ヴァカが二匹いるのか...。 :04/02/08 10:02
>>249
> 「遅い」とは書いてあるが「悪い」とは書いてないような。

それじゃまるで子供のいいわけだな。(藁

で、彼は MFC は悪くないのに「本当に速度にシビアな状況なら、そもそもMFC自体使わないだろう。」とか言っちゃってんだよね。

速度にシビアな状況で、「遅い」ことは「悪い」ことじゃないの ?
悪くないならなぜ使わないの ?

> MFCのソースを見たことがあるのだろうか?

心配しなくとも見る事できるから、バージョンとファイル名と行数を書いてくれれば大丈夫だよ。
で、君が彼に代わって指摘してくれるの ?


■過去ログ置き場に戻る■ 1- 次250 最新50
DAT2HTML 0.33f Converted.