VisualC++相談室 6

このエントリーをはてなブックマークに追加
1いさましいチビ
VisualC++関連の話題を扱うスレッドです。

旧スレッド
http://pc.2ch.net/test/read.cgi/tech/1006834463/l50
2デフォルトの名無しさん:02/01/21 21:18
もったいないなぁ、まだ書き込めたのに。
3いさましいチビ:02/01/21 21:25
>>2
ぎりぎりまで書き込むと、そっこうでdat落ちするみたいなんで、
余裕があるうちに作りました。
4:02/01/22 00:45
Effective C++の47項に書いてあるシングルトンのやり方で、
inlineにしても大丈夫なコンパイラを教えてください。
というか、VC++6.0はオッケーですか?
54:02/01/22 10:13
自分で調べてみます。
答えていただかなくて結構です。
6:02/01/22 10:47
>>5
そんな巧妙なトラップを仕掛けなくても、普通に
「自分で調べろや、ゴルァ」でいいじゃないですか…。
7学習中:02/01/22 16:28
VC++6.0でコンパイルをかけた時、「このプログラムは(0x0)で終了しました」と出ますが、いったい何が起こっているんですか?
システムに致命的なエラーがでたって、今すぐOSリカバリーしる!
98:02/01/22 16:38
>>7ね、できるだけ急げよ。
>>7

>>8の言ってることは信じるなよ。
それはプログラムの完成度の高さだよ。
「(0x0)で終了しました」はまあまあかな。
ほかに
「(≧x≦)で終了しました」や
「(;´Д`)」や「(・∀・)」なんかもある。
>(;´Д`)
はエロゲのプログラムしてるときよくでたよ。
「このプログラムは(;´Д`)ハァハァで終了しました」
main.cpp( 56 ) : (・∀・)ニクコプーン
>>7

まぁまぁだね。
最高のときは永遠に終了なんてしないさ。
15デフォルトの名無しさん:02/01/23 05:51
はじめてのWindowsプログラミング@〜B、って本と
MSDNでVC++6.0の勉強してるんですけど
関数とか構造体などについて調べる時に
MSDNでは効率が悪いなぁ、と感じています。

こんな漏れにおすすめの本ってありませんか?
どんな本よりもMSDNのほうが効率がいいと思う俺は逝ってよし?
>>15
関数とか構造体だろ?へたな本よりはるかにMSDN早いぞ。
なれなさい。
>>15
ためしにBITMAPINFOHEADERを調べて見れ。
キーワードを入力するだけで数秒で目的の情報が得られる。
あの説明を本にしたらそれだけで2〜3ページになっちまう。
その上ご丁寧にV4〜5HEADERや関連項目へのリンクまで張ってある。
これより効率のよい本はまず無いと思われ。
19デフォルトの名無しさん:02/01/23 13:18
LRESULT CALLBACK MainDlgProc(HWND hDlg,UINT uMsg,WPARAM wP,LPARAM lP)
{
static HWND hLV;
switch (uMsg) {
case WM_INITDIALOG:
  hLV = GetDlgItem(hDlg,IDC_LIST);
  InitializeLV(hLV);
  break;
  ....
として自作関数InitializeLVの中でさらに別関数を呼ぶ時に、
InitializeLVの引数であるhLVをそのまま渡しているんですが
たらい回しみたいで変な感じがするんですがこれは普通なんでしょうか?
実際はInitializeLVからリスト構造にアイテムを追加する関数を
呼んでいるのでMainDlgProcで宣言したリストの先頭アドレスも
渡しています。
>>19
人は知らないけれど、別におかしくないと思うYO!!

21225:02/01/23 13:30
>>20
hLVがstaticなのはちょっと普通じゃないと思われ。
2220:02/01/23 14:02
>>21
見落としてました。逝ってきます。
23デフォルトの名無しさん:02/01/23 14:07
>>21>>22
ありがとうございます。
staticは直します。
VC4でコンパイルしたオブジェクトとVC5以降でコンパイルしたオブジェクトっ
てリンクしても問題ない? もちろん-Mオプションは一致させるとして。
>>24
多分、ヘルパルーチンの名前が違うんじゃないかな。
だとしたらリンクは無理。
できたとしても、激しく心配。
>>25
やぱし。tnx
2715:02/01/23 14:49
>>16-18
やはり、MSDNが一番ですか。
会社の先輩にも同じ事言われたんですよ。
個人的には、横に本があった方が
やりやすいのですが…
馴れるしかないですね。ありがとうございました。
>>27
それは単に紙の方が読みやすいってことでは?
俺もディスプレイ上でMSDNの不自然な日本語訳らしき文を読むよりは
書籍の方が読みやすいけど、リファレンスとして関数や構造体を
調べるならMSDNの方が効率的だと思う。
29デフォルトの名無しさん:02/01/23 23:54
VBスクリプトだからここじゃないかもしんないけど。
マクロでdoxygenのコメントをつけれるようにしようと思ってVCの
マクロを作成中なのです。

ActiveDocumentのコメントサーチをするときに思ったんだけど、
EOFってどうやって見つけるんですか?
ドキュメントの行数を取得するプロパティみたいなのも無いし。
やっぱドキュメント全選択してSelection.TopLine->BotomLineで
行数をカウントするしかないのか?ダサッ(藁

つかこゆーのは普通アドインなの?
あげ。
31デフォルトの名無しさん:02/01/26 16:40
最近COMに興味を持ち始めました。
インターネット関連のプログラム(ASP)をやるとなるとCOM(サーバーの方)て必要ですよね?
そこでCOM関連の解説サイトを探しています。
「猫でもわかるプログラミング」みたいな感じでサンプルと解説を行っているサイトって有りませんか?
教えてチョンマゲ!

>>31
プログラムやめろ。
>31
COMじゃなくてまずSOAPを勉強するのが筋というもんです。
>>33
異様に大変らしいね。あれ。
COMもSOAPも理解できてないけどWEBサービス簡単に出来たーYO!
>>35
恐ろしい世の中だ・・・
>>36
激しく同意。

全然関係ないけどさぁ、どうも最近の世の中って、
便利な手段さえ使えば、及第点ぐらいの内容が作れた気になってる厨房が多くない?

きっと「ASPといえばCOM」ってーヤツは、「サーバといえばIIS」で、
「ブラウザとはIEのこと」と思ってるんじゃねーかな。

Badtrans.BやCodeRedの普及を激しく応援したくナターヨ。
> Badtrans.BやCodeRedの普及を激しく応援したくナターヨ。
奴らは応援なんて必要としてないと思われ……。
ガタガタ(((;゚Д゚))ブルブル
39デフォルトの名無しさん:02/01/27 13:02
ATLのインプロセスサーバーを作ってます。
チュートリアルをやってみて何となく分かった気がします。
VCでビルドすると勝手にレジストリに登録しますが完成したプログラムを他のPCにインストールする場合は
DllRegisterServerを使って登録するんですよね?
インストーラでDLL読み込んでDllRegisterServerをコールって感じ?
それとATLオブジェクトウィザードで「フルコントロール」とか「ライトコントロール」とかありますが
さっぱり分かりません。チュートリアルは「フルコントロール」を使っていたので自分は「フルコントロール」を
使っていますが「フルコントロール」じゃなくて「ライトコントロール」を使わないと都合の悪い時ってあるんですか?
一応ATLの勉強として「フラッシュ」のようなものを作りたいんですが可能ですよね?
40ABZ:02/01/27 15:35
ClassView内の関数や変数にマウスのポインタを合わせると、四角で囲まれる関数や変数と
なにもアクションが無い関数や変数があるのですが、それらの違いって何なのですか?
>>40
VC++の性能の限界じゃねぇの?
VC++7だとかなり性能上がってるよ。
.や->のコード補完もかなり賢くなってる。
42デフォルトの名無しさん:02/01/28 00:11
ATLCOMオブジェクトを新規作成して、
適当なカスタムインターフェイスで
返値としてHRESULTを返さないメソッド(BOOLとかを返す)を作ると、

interface IFrameCallup : IUnknown
{
[helpstring("メソッド CallFrame")] BOOL CallFrame();
};

MIDLコンパイラに怒られます。
error MIDL2269 : procedures in an object interface must return an HRESULT : [ Procedure 'CallFrame' ( Interface 'IFrameCallup' ) ]

何がいけないんでしょうか?
4342:02/01/28 00:48
インターフェイス宣言にlocalを追加したら通りました。(理由は?)
お騒がせしました。
44デフォルトの名無しさん:02/01/29 01:40
IMediaPlayerを使ってムービープレーヤーを作ってます。
MFCで CWnd::CreateControl でメディアプレーヤーを起動(?)させています。
再生などは問題なく出来ていますがイベントってどうやって取得したらいいんですか?
_MediaPlayerEvents の PositionChange を処理したいんですけどやり方が分かりません。
QueryInterface でインターフェイスを取得しようとしても失敗します。
というよりイベントのインターフェイスを取得しても意味が無い?
COM初心者です。
MSDNに解説があるのかもしれませんが、どこ読んでいいのか分かりません。
とにかく教えて。

ついでに言うと IRealPlayer も使っているんですがムービーが表示されません。
再生自体は出来ていると思うんですがコントロールパネルが画面一杯に表示されてムービーを表示するウィンドウがありません。
どのメソッドを使えばムービーを表示出来るようになりますか?

昼からずっと考えていますが限界です。
死ぬほど眠いので眠りにつくことにします。
さようなら・・・
45C++消防:02/01/29 07:02
質問させて下さい
引数付きのマニピュレータを作りたいのですが
これは可能でしょうか?

具体的には 倍精度を表示する際に
12.3E+001
という表示を
12.3E+01
と,指数部の桁数を変更したいのですが.
よろしくお願いします.
46デフォルトの名無しさん:02/01/29 14:34
とりあえず、あげ!!!
47号泣マン:02/01/29 16:44
>>http://pc.2ch.net/test/read.cgi/tech/1006834463/956
どうもありがとうございました。
探してみます。
また、御助言ありがとうございました。
48ABZ:02/01/29 18:34
>>41
限界ですか・・・ってどういう条件のとき四角で囲まれるのかも
わからないので、7不思議にしときましょうか。
>>40 >>48
単にクラス名が長くて ClassViewのウィンドウに収まっていなければ、
四角で囲まれて(ツールチップで)フルネームが表示される。

ただ、それだけのことじゃないのかな?
5041:02/01/29 20:10
すまん、よく読んでなかった。
ClassViewなら>>49の言うとおり。
ちなみにVS.NETβ2だとこのチップをクリックしても関数のところへ飛ばないという仕様だかバグだかわからない感じだ。
51デフォルトの名無しさん:02/01/30 01:31
クラスがいまいち良くわかりません。

はじめはグローバルで関数を作っていましたが、関数が多くなりそうなのでクラスを作ることにしました。
で、genericクラスで新規作成してそこに関数を入れましたが、
「定義されていない識別子です」とエラーが出ます。

そこで自分なりに調べた結果、関数を呼び出しているソースファイルに
自作クラスのヘッダファイルをインクルードさせたのですが
「'Cxx' : 'class' で示される型としてすでに定義されています」と出てしまいます。
どうすればちゃんと関数を呼び出せるでしょうか?
インスタンスはどこへ消えた?
53デフォルトの名無しさん:02/01/30 02:43
>>44
>QueryInterface でインターフェイスを取得しようとしても失敗します。
>というよりイベントのインターフェイスを取得しても意味が無い?
>COM初心者です。
どのインタフェースを取得しようとしているか書いてないけど?

DirectShowのヘルプを読んで見たら?
ヘルプだけダウンロードできるよ。
5451:02/01/30 03:34
>>52
すいません、初心者なものでそれだけではよくわからないです・・
>>54
コードで、その関数とやらを使っている部分を示せ。
5651:02/01/30 14:23
グローバルで作ったものです。
(MainFrm.cpp)
#include "stdafx.h"
#include "(プロジェクト名).h"
#include "MainFrm.h"
(中略)
void CMainFrame::OnFileNew()
{
InitWaveBuff();
(中略)
}

(WaveIO.cpp)
#include "stdafx.h"
#include "WaveIO.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

// バッファの準備
#define NumWaveBuff 4
#define WaveBuffSize 65536

HANDLE m_hHeap;
LPWAVEHDR m_pWaveHdr[NumWaveBuff];
LPSTR m_pWaveBuff[NumWaveBuff];

// バッファの初期化
BOOL InitWaveBuff(void)
{
for (long i=0; i<NumWaveBuff; ++i)
{
m_pWaveHdr[i] = NULL;
m_pWaveBuff[i] = NULL;
}
m_hHeap = HeapCreate(0, 0, 0);

if (! m_hHeap)
{
AfxMessageBox(IDS_HEAPCREATE);
return FALSE;
}
return TRUE;
}
あげ
単に
#pragma once

#idndef hoge
#define hoge
:
#endif
が無いだけちゃうか?
59デフォルトの名無しさん :02/01/30 15:53
>>44
そいつはCOM→COMのインターフェースなんか?
それで話すけど
イベントを受けるにはAdvise処理しないとイベントは受信できないぞよ。
ATLCOMにはAtlAdviseというATLサポート関数があるから
MSDNで引いてみてね。
受信側はイベントシンクの実装を忘れないでね。
Adviseでシンク側のI/Fポインタを相手に通知して
イベント発行でシンク側が受信するんだよ。
あ、でもこれATLCOMだから
MFCはちょっと違うのかな?参考にならなかったらスマソ
>>56
新規作成したクラスってやつが見当たらないぞ。こいつはひょっとして
(0) はじめにグローバルで関数を作っただけのソース
(1) 「定義されていない識別子です」とエラーが出た時のソース
(2) 「'Cxx' : 'class' で示される型としてすでに定義されています」が出たソース
のうちの(0)じゃないのか? せめて(1)か(2)のソースを見せてくれ。
61ABZ:02/01/30 17:24
>>49
>>50
ビンゴでした。逝って来ます(T-T
62APC:02/01/30 20:38
Visual C++ 6 はCで書かれたプログラムをコンパイルできますか?
例えばLinuxのプログラムをコンパイルすることはできますか?
OS依存のところ
>>62
> Visual C++ 6 はCで書かれたプログラムをコンパイルできますか?
できる。

> 例えばLinuxのプログラムをコンパイルすることはできますか?
それは前半と関係ない質問だぞ。Linux にはあるが Win32 にはない関数/システム
コールを使っていたらアウト。

UNIX 系のシステムコールを多用しているプログラムを Win32 で走らせたいなら

1. cygwin を使う
2. VMWare を使う

どっちかが現実的な解と思われ。
65shige:02/01/30 21:42
Linux用のソフトウェアをWindowsで動かしたいだけなら、こんなものもある。
http://line.sourceforge.net
6651:02/01/30 22:12
>>60
(1)の場合です。
(WaveIO.h)
#if !defined(AFX_WAVEIO1_H__1B8DEB60_15C3_11D6_A111_00A0C9E271A9__INCLUDED_)
#define AFX_WAVEIO1_H__1B8DEB60_15C3_11D6_A111_00A0C9E271A9__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "resource.h" // メイン シンボル

class CWaveIO
{
public:
CWaveIO();
virtual ~CWaveIO();
public:
enum {
NumWaveBuff = 4,
WaveBuffSize = 65536
};
public:
HANDLE m_hHeap;
LPWAVEHDR m_pWaveHdr[NumWaveBuff];
LPSTR m_pWaveBuff[NumWaveBuff];

public:
BOOL InitWaveBuff(void);
};

#endif // !defined(AFX_WAVEIO1_H__1B8DEB60_15C3_11D6_A111_00A0C9E271A9__INCLUDED_)
です。あと、>>56
WaveIO.cppでBOOL CWaveIO::InitWaveBuff(void);としました。
MainFrm.cppにCWaveIO.hをインクルードさせました。

どこが抜けているor間違っているでしょうか?

6751:02/01/30 22:19
>>56のWaveIO.cppでの変数の宣言等はWaveIO.hに移動させました。
68デフォルトの名無しさん:02/01/30 23:19
builderのストリンググリッド の機能をVCで使いたいのですが、
VCではどのようなものがあるのでしょうか? 教えてください。
よろしくお願いいたします。
>>66
実際に InitWaveBuff を呼び出すところ。ちゃんと
CWaveIO* hoge = new CWaveIO;
hoge->InitWaveBuff();
みたいにクラスのインスタンスを経由して呼び出してる?
70telnet:02/01/31 17:51
>64
Very thank you

Vmware 3 でLinux Red Hatを使います
71次郎:02/01/31 22:02
Visual C++ 6.0にバグがあると思うのですがみなさんはどう思います?


??=include <stdio.h>
??=if 1
main()??<printf("Hello??/n");??>
??=endif

がコンパイルできないんです。


??=include <stdio.h>
??=if 1
main()??<printf("Hello??/n");??>
#endif

だとコンパイルできるですけれど・・・・・
みなさんはどう思います?
ちなみに??ばっかりですけれど文字化けではありません。


>>71
バグ
VC++.NETでは1つ目コンパイルも実行も出来たよ。

でもそれ何語?
7372:02/01/31 22:13
リファレンス見てみたよ・・・
・・・そんなことも出来たんだね・・・知らなかった。
意味なさそうだけど。
74次郎:02/01/31 22:14
72>>
C++の言語仕様では#、{、}などの文字は??から始まる文字に置き換えられないといけないらしい
75デフォルトの名無しさん:02/01/31 22:18
>>71
VC++6 SP5 でコンパイル通ったぞ。

つーか日本にいながら何故トライグラフを使う必要が…。
76デフォルトの名無しさん:02/01/31 22:21
VCでMFCのフォームつかってんだけど一回だけ処理したい関数は
どこに書いたらいいんでしょうか?

上のほう???
77デフォルトの名無しさん:02/01/31 22:28
VC++6.0上からはビルド→実行でEXEファイルは問題なく動作するけど、
ふつうにEXEファイルのアイコンをダブルクリックしたら、全く反応が無いんですけど
こういう状態になった人は他にいますかね。
単純ミスかもしれませんけど、解決方法がわかる人がいたらご教授願いたいです。
78 :02/01/31 23:26
コールバック関数って必要あんの?
システムから呼ばれようがオナジジャネーカヨ。
イミナーイネ
79トライグラフ:02/01/31 23:39
>>71
また、このネタかよ。
(昔、オイラがIBMの汎用機使ってた頃、その機械のキーボードには
{ とか [ っていう文字が本当になかったのよ )
fortran 走らせる時には問題なかったんだけど、C使おうとして唖然としたもんだ(笑)
>>77
コマンドライン引数が必要なアプリである。に、500argv

つか、MessageBox()トレースすれ。
>>78
自分が理解できないものを、すべて「意味ない」で済ませられるのは、ある意味で幸せ
だな。

82デフォルトの名無しさん:02/02/01 10:37
age
>>77
カレントディレクトリの問題じゃねーか?
ショートカット作って
EXEファイル
hoge\release\hoge.exe
ワークディレクトリ
hoge\
にしてみ。
>>76
意味不明。
ダイアログの初期化処理をしたいんだったら、普通 OnInitDialog に書く。
85故意の病:02/02/01 11:24
MFCのクラスライブラリ表が俺の部屋にはってある。
VC++買ったときは「こりゃ多いな」と思ったが
今日はなんとも言えない気持ち。。。。
この気持ちはなんだろう、もしかして。。。
恋!?、恋なのね、この気分。。
漏れは母になろうと思いました。
とりあえずデバッグ
87デフォルトの名無しさん:02/02/01 12:14
今までBorlandのBCB++使って、またりとプログラム組んできましたが、
今度、接続する計測器の関係で、VCで汲まざるをえなくなりました。

どっかに、VCを使って、ダイアログベースで、ボタンとかラベルを
ペタペタ貼って、ボタンクリックして、そこにコードを書く、っていう
早い話しが、VBみたくVCを使いこなす、なんていう事が解説してある
サイトないでしょうか?
えと、VCでDLLとか、COMとかつくれば解決するような
気がしますが、そういう話ではないのですかね?
>87
UIだけBCBで作れば?
9077:02/02/01 13:19
ありがとうございました。
問題が解決しました。
91富士の病 :02/02/01 14:19
モーニング娘。のプロフィール表が俺の部屋にはってある。
娘。ファンになったときは「こりゃ多いな」と思ったが
今日はなんとも言えない気持ち。。。。
この気持ちはなんだろう、もしかして。。。
恋!?、恋なのね、この気分。。
漏れは母になろうと思いました。
たいしておもしろくないから流行らないと思うよ。
93もにょ:02/02/01 16:50
Windows 9x において現在接続されている HDD / CD-ROM / IDE コントローラ
などのハードウェア名情報はどのように取得すればよいのでしょうか?
レジストリエディタで検索してみると当然みつかりますが、
環境によって場所が違うようです。
となると、どこかに、「どこそこに情報がある」というまとめ役のキーがあると
思うのですが、見つけることは出来ませんでした。
94デフォルトの名無しさん:02/02/01 22:41
SJIS、EUC、JIS、マルチバイト、ユニコード・・
ぜんぜんわからん。
_ismbblead()?なんか上手く動いてないよ・・
漢字コードの仕様もわかんねぇしわけわからん用語ばっかりが羅列されてるMSDN

漢字かどうかの判定ってどうやるんだ!?
しかもこの場合漢字ってひらがなとかカタカナも含むのかよ!!
要は漢字だろうが仮名だろうが2バイト文字を判定するにはどうしたらいいのだーーーー

教えてちょ!
昔おれのいたDQNな会社の先輩たちは、
「半角全角」とか「XXコード」みたいな言葉を知らなくて、
全角のひらがを「漢字のひらがな」「漢字のかたかな」
っていってたんだよな。
ちょっと思い出してしまった。
VD++6.0でClistBoxを使っているのですが、
リストを選択した状態でエンターを押した時に
エディットボックスに、選択状態のリストの文字列を送ってやりたいのですが、
リストの項目番号を取得することもエンターを検出することも出来ません。

どうやったらいいのでしょうか?
>>95
むしろ「半角」「全角」の方が不正確。
つーか、技術者として如何なものか。
>>97
「むしろ」ということは、「漢字のひらがな」が正確だとでも?
>>98
そ。「JIS X0208 という漢字セットの中のひらがな」。
100
10194:02/02/02 00:02
だれか詳しく教えてくらはい。
資料でもいいしサイトでもいいのでおねがいします
google
>>98
漢字 = 漢字(文字圏) = MBCS文字圏
かもしれないじゃないか。すげぇよ!その共通理解。
>>96
ダイアログだったら、ENTERキーが押されるとIDOKが送られる。
OnOK()の中でフォーカスの位置を調べて、リストボックスに
フォーカスがあったらENTERキーの処理をする、というのではどうか。
10594:02/02/02 00:42
おまえらじつは詳しくないのか?
聞いても無駄かな・・
>>98
半角、全角はもともと文字の横幅をあらわしたもの。
JISだかで偶然(意図的に?)半角文字が1バイトに、全角文字が2バイトに割り当てられただけ。
>>94
まずどんなコード書いたら_ismbbleadがうまくいかなかったのか書いた方がいいと思われ。
文字列の中から先頭バイトを引っこ抜いてやるとうまくいかないと思った。
10894:02/02/02 01:41
>>107
文字列の任意の場所から1バイト持ってきて漢字(2バイト文字)か1バイト文字か調べようとした。
なんかちゃんと判定できない奴とかあった。
char hoge[] = "ほげほげ";
の文字列に対して、
if(_ismbblead(hoge[2]))
ならいいけど
char hoge = hoge[3];
if(_ismbblead(hoge))
ならまずいんじゃなかったっけ

>>94
つーか、文字コード何だよ?Shift JIS なら
> 文字列の任意の場所から
判るわけないだろ。
>>108
SJISの場合原理的に不可能だそれは。
11294:02/02/02 01:56
つまりその原理が知りたい。
俺は「便利な関数がありますよ!」だけいうMSは嫌い。
原理を知らずに関数など使えない。

でも資料がない。

SJIS教えて?以前みたソースでIsKanji()みたいなマクロがあって
それは任意の場所のcharを見て判断してたよ。
ウソクサっと思ったけどウソという確信も持てないし。
113SJIS:02/02/02 02:01
char[任意の場所] と、char[任意の場所-1]の符号を見れば、
区別つくんでない?
>>113
つかない。
文字列先頭か、あらかじめトレイルバイトじゃないとわかってるところから始めるのが現実的。
本当に資料が無いのだろうか。
俺は検索もせずに「教えて」だけいう厨房は嫌い。
>>113
char[任意の場所] が英数の範囲内で、char[任意の場所-1]がSJISの
1バイト目、2バイト目の共通部分だったらどう判断するの?
11794:02/02/02 02:09
>>115
すまん。一応検索したんだがたくさん引っかかってメンドくなって・・
2chで聞いた方がたいがい早いし。
>>117
全然原理を知る気ないやん。
黙ってMSの便利な関数使ってれ。
おとなしく_ismbslead使え
12094:02/02/02 02:14
ちなみに以前見たソースってのは

0x81〜0x9f
0xe0〜0Xfc
は漢字って判定だった。
121113:02/02/02 02:24
スマソ。詫びにこんなのを見つけた。

int IsLegal(const char *s){
  unsigned char u=*s, v=*(s+1);
  return ( ((0x81<=u && u<=0x9F) || (0xE0<=u && u<=0xFC))
    && ((0x40<=v && v<=0x7E) || (0x80<=v && v<=0xFC)) );
}
あとは漢字コードとにらめっこして納得すれば、IsKanji()も何をやってるのか
か分かるね。
12294:02/02/02 02:28
>>121
サンクス。感謝感激

でもSJIS任意の位置からは原理的に無理って意見もあるし、
このIsLegalのsは先頭のアドレスって限定した使い方なのかな。
123119:02/02/02 02:32
_ismbsleadはだめなのか?
12494:02/02/02 02:35
>>123
_ismbbleadは先頭から順に調べないとダメらしいのですが、
それも別のところで聞きかじっただけです。

よってダメじゃないかもしれないけど。なんかこういう不確かな情報を払拭する
「これだーーーーー」ってのが無いかなぁ
>>124
_ismbsleadはまさに「先頭から順に調べないとダメ」を体現してる気がするけどなぁ。
なんだ只のバカかよ。ツマンネ
12794:02/02/02 03:23
どうやら先頭から調べなきゃいけないで決まりらしい。
ってことは結構インチキ判定ロジックがちまたにゃあふれてんじゃねーか。
つーか、あ^−−−−−−この「らしい」ってのがゆるせん。
なんだよ「らしい」って
なんだよ「らしい」って
なんだよ「らしい」って
なんだよ「らしい」って
なんだよ「らしい」って
結局俺は糞みたいな半端な知識止まりらしい。ウザ
「どうやら先頭から調べなきゃいけない」←これが「原理」かよ。
少しは頭使えよ。考えたらわかるだろ。
>128
94が考えてもわからないことぐらい考えたらわかるだろ。
表とか坂とかね。
13198:02/02/02 04:09
ハァ…ヤレヤレ
半角、全角については、2バイト半角が現れたPC-9801の時代に終わってるよ。
でも、「漢字のひらがな」がどれほど正確なんだ?
つか、みんなネタか?
13294:02/02/02 04:10
うんうん。やっぱ文字コードの仕様は糞だな。
それは確かだ。
133デフォルトの名無しさん:02/02/02 06:20
CreateThread()で作ったスレッドからCランタイムライブラリの関数呼ぶと
メモリリークが起こるんですよね?(と、MSDNライブラリに書いてある)
ではnewも出来ないのでしょうか? なんとなく中でmalloc()してそうだし。。。

# だめなら _beginthread() 使います
134133:02/02/02 07:20
役に立つかどうかわりませんが。
# Shift JIS 限定の話です
Shift JIS は以下の三つの文字集合を使います。
(1) JIS X 0201 のラテン文字集合部分
(2) JIS X 0201 のカタカナ文字集合部分
(3) JIS X 0208 の文字集合
JIS がついているところから分かるように、これらは JIS規格で決まっています。
どのような文字が定義されているかというと、
(1) 1バイトのアルファベットや記号
(2) いわゆる半角カナ
(3) 2バイトのアルファベットや記号や漢字

これらに一文字ずつ区別がつくようにコードを振ることをエンコードといいます。
Shift JIS の場合、
(1) 0x21〜0x7E
(2) 0xA1〜0xDF
(3) 1バイト目 0x81〜0x9Fまたは0xE0〜0xFC、2バイト目 0x40〜0xFC(ただし0x7Fを除く)
となっています。ここから分かるのは
・(1)と(2)はすぐに区別が付く
ということです。これは Shift JIS が出来たときの事情がからんでいるのですが。
しかし、(3)に対しては
・1バイト目は(1)、(2)ともにかぶらない
・しかし2バイト目は(1)、(2)とかぶっている
という問題があります。
ですから、ある位置の1バイトが(3)の一部かどうか判定するには、
「0x40より大きくて、(3)の2バイト目と(1)(2)のどちらか区別が付かない場合は、
さらに一つ前の1バイトを読み込んで、(3)の1バイト目かどうかを調べる」
というのが正解です。
>>134
SJIS はバイト列の途中から読もうとすると面倒だけど、頭から読むなら isleadbyte() が
真なら 2 バイト文字の 1 バイト目、そうでなければ 1 バイト文字、で簡単に判別できる
よね。

そもそも文字コードが SJIS かどうか分からん場合には、文字コードを統計的に推測す
るしかない。方法に関しては nkf のソースでも読んで研究して見てくれ。
> そ。「JIS X0208 という漢字セットの中のひらがな」。

だから「漢字のひらがな」という言い方が正しい?
こいつバカですか?
>>136
少なくとも「漢字のひらがな」よりは「全角のひらがな」のほうが100倍ましだと漏れも思う。
>JIS X0208 という漢字セット
0点。じゃあ、「漢字のアルファベット」に、
「漢字のキリル」か。おめでてーな。
>一つ前の1バイトを読み込んで、(3)の1バイト目かどうかを調べる
実は、そこは2バイト目という罠
>>116でソトデという罠
14194:02/02/02 18:27
>>133
おおおーーすばらしい・・・
丁寧にありがとうございます。やっと理解できました。
早速my資料に追加・・とφ(.. )カリカリ・・
> 一つ前の1バイトを読み込んで、(3)の1バイト目かどうかを調べる
実は調べたいのは文字列の最初の文字で、一つ前のバイトなど存在しないと言う罠
「半角って何ですか?」 by void
CListBoxで
リストのうちの何番目かを
指定して反転表示させたいのですがよくわかりません。


まずgoogれ、話はそれからだ
>>143
半角板
147133:02/02/02 19:29
>>139
そのときは、1回目に読んだ1バイトは(1)または(2)だったことが分かります。
148デフォルトの名無しさん:02/02/02 19:44
>>147
1つ前が(3)の2バイト目だったのか、(3)の1バイト目だったのかは、
文字列の頭から見ていく以外に確かめる術は無いのです。

例) 0x9B .......... 0x9B 0x9B 0x44 0x44 の後ろから2個目の0x44を判定せよ。
>>147
1バイト目と2バイト目が両方とも_ismbblead()==trueのマルチバイト文字が延々と続いてるときはどうするんですか?
どこを文字列の先頭とするかでコードの解釈が180度変わります。
途中だけ見て判断するのは不可だね。
150133:02/02/02 20:29
>>148 >>149

まったくもってその通りです。
(3)の1バイト目か2バイト目か判別出来ないときは
さらに1つ前の1バイトを……というのを、識別出来るまで
延々とやらなければいけないですね。

嘘言っちゃってゴメン
つか、wchar_tつかえよ、、、
152_:02/02/03 01:00
VCのスタンダード版は静的リンクができないけど、コンパイルしたプログラムは
他人のパソコンでも動きますか?MFCのDLLが必要なのですか?
>>152
まあ、だいたい大丈夫だね。
たまーに動かない人がいるみたいだけど。
154なんかねぇ:02/02/03 02:12
VC++5.0エンタープライズ版
を使っていますが、6.0を買いなおした
方がいいですか?


いまVC6を買うのはただのばかだなぁ
>155に同意

Web系だと不便かも知れないけど
そうじゃなけれ5.0で良いのでは?
157デフォルトの名無しさん:02/02/03 07:42
質問です。
現在 Win32 console application を作っているのですが、
現在のコードページに対応(_getmbcp())して表示させるヘルプを日本語と英語で分けようと考えてます。

次のようにコーディングしたんですが、

switch (_getmbcp())
{
case 932: lang = LANG_JA_JP; break;
default: lang = LANG_EN_US; break;
}
printf("code page = %d\n", _getmbcp()); /* debug のため表示 */

コマンドプロンプトで us して実行しても 932 になってしまいます。
chcp をオプションなしで実行すると
Active code page: 437
と表示されるのですが…
どうすれば _getmbcp() できちんとコマンドラインの状況を判断できるでしょうか。
>>157
訂正。日本語が変でした。

>どうすれば _getmbcp() できちんとコマンドラインの状況を判断できるでしょうか。

どうすればきちんとコマンドラインで設定されているコードページを取得できるでしょうか。

159デフォルトの名無しさん:02/02/03 10:21
VC6.0の調子がおかしくなってしまいました。
通常、ワークスペースを開くと、ClassViewにクラスとメンバの一覧が
表示されますが、それが表示されなくなってしまいました。
また、ビルドを行おうとしてもできなくなりました。
但し、この現象が起きるのは最近、新規作成されたワークスペースに
ついてであり、昔作っていたワークスペースでは
問題なく表示され、ビルドも可能です。

私なりに問題点を調べてみたのですが、どうもdpsファイルの中の
TargetのSource Fileの部分で、問題あるワークスペースの方で、
# PROP Exclude_From_Scan -1
# PROP BASE Exclude_From_Build 1
# PROP Exclude_From_Build 1
という3行が挿入されていました。
この現象について何かご存知の方おられましたら教えて下さい。
>>159
おいらも時々なるかも。

いくつか要らない(と思われる)ファイルを消して起動しなおせば直るんだけど,フォルダ
作ってたらそれも作り直しなので安全な修正方法あれば漏れも知りたい。
161157:02/02/03 12:29
>>157-158
自己解決しました。
GetConsoleCP() 使ったらうまくいきました。

ちょっと Win95 でどうなるか不安ですが…
http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_getconsolecp.htm
CListBoxで
リストのうちの何番目かを
指定して反転表示させたいのですがよくわかりません。




>>162
そうですか。
>>162
答えはヘルプファイルにあります
165デフォルトの名無しさん:02/02/03 18:30
あの、InternetExplorerでプラグインとして使えるActiveXをVC++で作るにはどうすればいいんですか?
166デフォルトの名無しさん:02/02/03 18:31
>>165
InternetExplorer.hをインクルードする
167デフォルトの名無しさん:02/02/03 18:39
fatal error C1083: インクルード ファイルがオープンできません。'InternetExplorer.h': No such file or directory
>>168
include/InternetExplorer.hをインクルードする
169デフォルトの名無しさん:02/02/03 19:48
atal error C1083: インクルード ファイルがオープンできません。'include/InternetExplorer.h': No such file or directory
170デフォルトの名無しさん:02/02/03 19:49
インクルードって、リンクファイルじゃなくてIncludeですか?
みっともないのでネタはやめてくださいね
172デフォルトの名無しさん:02/02/03 20:02
あの、上の方の冗談(?)はとにかく本当に #include "include/InternetExplorer.h"でファイルオープン不可のエラーが出るのですが…。
まずそんなファイルがあるかどうかPC内検索してみろよ
>>173
次に MSDN ライブラリを BHO で検索だな。
175デフォルトの名無しさん:02/02/03 20:21
ないです…。VC++以外のものをインストールする必要があるんすか?
176152:02/02/03 21:52
>>153
お答えくださってありがとうございます。
177デフォルトの名無しさん:02/02/03 22:03
Unixかなんか向けに作られたプログラムをVCでコンパイルしようとすると
#include <sys/time.h>をオープンできませんってエラーが出ます。
その他に
struct timeval start, end; や
gettimeofday(&start,0);
random()
の行のところで定義されてないのを使っているとエラーが出ます。
VCでそういうのが定義されているヘッダファイルとライブラリはないのですか?
プログラムの実行時間を計るために使われている(randomは違うけど)は分かるけど
具体的にどうしたらいいか分かりません。
お願いします。
178デフォルトの名無しさん:02/02/03 22:10
>165
まず、COMというものの知識をつけてください。
その後、VC++を起動し、新規作成→プロジェクト→ATM Com App Wizard→銀行→ATM→(゜Д゜)ウマー
OS依存の部分を
すべてなおすナリ
VC++を起動し、新規作成→プロジェクト→KFC AppWizard(exe)→ドラゴンツイスター頼む→(゜Д゜)ウマー
VC++を起動し、新規作成→プロジェクト→MFC AppWizard(exe)→CVSup→make world→signal11でへくった(゜Д゜)マズー
182login:Penguin:02/02/04 21:35
イベントで
Becky2を起動して
特定のアドレスに
メールを送信する
というプログラムを書きたいのですが、
アドバイスお願いします。
>>182
どっかで見たことあるよな・・・マルチ?
どうでもいいけどどんなアドバイスがほしいのか書けよアフォ。こちとらエスパーじゃねーんだからさ。
全部とか言うなよ。
184デフォルトの名無しさん:02/02/04 23:20
すいません。
クラスでの関数ポインタ配列について教えて下さい。

================================
class testClass{
private:
  void (*pArFunc[2])(); //関数ポインタ配列
public:
  void Func();
  void Func0();
  void Func1();
};
void testClass::Func(){
  void (testClass::*pArFunc)()  = Func0; //OK...@
  void (testClass::*(pArFunc+1))() = Func1; //駄目...A
}
void testClass::Func0(){}
void testClass::Func1(){}
================================

上の@のコンパイルが大丈夫だったので、Aを試したのですが、
"構文エラー : ')' が '<tag>::*' の前に必要です"
というエラーが出てしまいます。
クラスで関数ポインタ配列を使用する場合はどうしたら良いのでしょうか?

[section]
aa=あいうえお
bb=かきくけこ
cc=さしすせそ

GetPrivateProfileStringの2番目の引数(Key)にNullを指定すると
GetPri(略)で指定したbufにKeyが全て入ってくるとヘルプファイルに書かれているのですが、
=より後ろ(あいうえお)等の文字列はどこへいってしまうのでしょう?

あと、全てのkeyとそれに対応するStringを検索して表示させたいのですが、
何かいい関数はないでしょうか?

できれば例も、、、




keyを貰ったんなら、それをつかって、
GetPriv...を回せばいいのでは?
>184
ずいぶん邪悪なキャストですね....

class testClass{
private:
void (testClass::*pArFunc[2])(); //関数ポインタ配列
public:
void Func();
void Func0(){}
void Func1(){}
};
void testClass::Func(){
*(pArFunc+0) = Func0;
*(pArFunc+1) = Func1;
}
188デフォルトの名無しさん:02/02/04 23:52
標準ライブラリを使いたくないのですが
va_list
va_start
va_end
の代わりにになるWin32Apiってあるんですか?
VC++では、va_*はマクロです。
ちゃんとヘッダを覗きましょう。
そして、APIで実現されようがないことを
理解しましょう。
190デフォルトの名無しさん:02/02/05 00:33
クラスをエクスポートしたと思われるDLLを無理矢理使う方法知ってるひといませんか?
ダンプしたのはこんな感じ

00001090 1 0000 ??0audioRemCon@@QAE@XZ
00001160 2 0001 ??1audioRemCon@@UAE@XZ
000030F8 3 0002 ??_7audioRemCon@@6B@
000012E0 4 0003 ?CloseAudioCtlDriver@audioRemCon@@QAEXXZ
000011C0 5 0004 ?GetAudioCtlDriverName@audioRemCon@@QAEHXZ

あと名前変形はいったいどういう規則で行われてるのやら……
自分でaudioRemConクラスの定義を捏造、ダミーメソッドでexport。
尚、メンバ変数は、char dummy[2000]などで代用しておくこと。
それと、メソッドの型情報は自力で復元すること。

できあがったlibを使用して、リンク。元のdllを使用。
192184:02/02/05 00:44
>>187様様
コンパイルできました。
ありがとうございます。
助かりました。
193デフォルトの名無しさん:02/02/05 00:54
>>189
ありがとうございます。
もう1つひつもんなのですが
vsprintf等は標準関数?みたいなのですが
これはLIBCをLINKしなくても良いのでしょうか?
vsprintfは標準関数。
WIN32APIならwvsprintf使え。
195185:02/02/05 06:46
keyはわからない状態で検索しないといけないんです。
196デフォルトの名無しさん:02/02/05 07:32
Here are fill of silly.
197185:02/02/05 07:32
>>186
すんません。
実は検索したキーの入り方がよくわからないんです。
198デフォルトの名無しさん:02/02/05 08:48
>>194
ありがとうごさいます。
好きです。大好きです。
199デフォルトの名無しさん:02/02/05 11:29
わらをもすがる思いです。どなたか教えてください。
ドキュメント/ビューアーキテクチャで、ドキュメントの方にメッセージを
飛ばしたいんですが、できるんでしょうか?メニューからは飛んでくるので
できると思うんですが。ウィンドウハンドルはどうやってとったらいいんでしょう?
200デフォルトの名無しさん:02/02/05 12:16
>>199
普通はViewにメッセージが飛んできて、
それをドキュメントにつたえるという形になると思うが...
201デフォルトの名無しさん:02/02/05 16:45
質問があります。
メイン画面から別のダイアログを表示した場合に、
メイン画面を非表示にするとタスクバーボタンも消えてしまいます。
タスクバーボタンを表示する方法はないのでしょうか?
いろいろ調べてみましたが、どうしてもわからないので、
誰か教えてください。
よろしくおねがいします。
202デフォルトの名無しさん:02/02/05 17:29
>201
ShowWindowで最小化するか、MoveWindow他でサイズ0のウィンドウにするか。
203デフォルトの名無しさん:02/02/05 17:29
あぼーん
>>201
ダイアログに拡張スタイル WS_EX_APPWINDOW を指定する、とか。
205201:02/02/05 18:28
>>202
>>204
返事ありがとうございました☆
早速参考にして、いろいろ試してみようと思います。
一人で考えていると、考え方が偏ってしまってダメですね・・・。
206デフォルトの名無しさん:02/02/05 18:47
ダイアログアプリケーション(MFC)で
ウィンドウ全体にビットマップ(リソース)を貼り付けるには
どうしたらよいのでしょうか。
どうしてもシステムメニューの上にまで
ビットマップを貼り付けることができません。
207デフォルトの名無しさん:02/02/05 18:52
>206
GetClientRectでウインドウの長さつかまえてデスクとっぷのDCゲットしてClientToScreenで現在地を得て描け。
>>206
タイトルバーが必要ないなら消しちゃえば。
>>206
GetWindowDC()
>>206
WM_NCPAINT
211206:02/02/05 19:34
できました。
ありがとう。
>>211
せめてどうやって出来たのか書け、
いくらここが2chでも最低限の礼儀は守ってくれ。
技術系MLに行ったときにはもっと注意してくれよ。
213206:02/02/05 21:18
すみません。こんな風にやってみました。

HBITMAP hbm = (HBITMAP)::LoadImage(NULL,
"ビットマップファイル名", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION );
if(hbm == NULL)return;
CDC* pMemDC = new CDC, *pDC = GetWindowDC();
CBitmap* pBitmap = CBitmap::FromHandle( hbm );
BITMAP bm;
CRect rcRect;
GetClientRect(rcRect);
pMemDC->CreateCompatibleDC(pDC);
CBitmap* pOldBitmap = (CBitmap*)pMemDC->SelectObject(pBitmap);
pDC->BitBlt(0, 0, rcRect.right, rcRect.bottom, pMemDC, 0, 0, SRCCOPY);
pMemDC->SelectObject(pOldBitmap);
pMemDC->DeleteDC();
delete pMemDC;
::DeleteObject( hbm );
214043:02/02/05 22:15
VC6.0で作成したプログラムに、ACCESSで作ったデータベースを
ODBCでつなげたいんですけれども。

以前に、作成したプログラムに ACCESSをつなげるにはどのような
手順でやればいいのでしょうか?

ACCESS単品のODBCのつなげ方はわかるのですが・・・
既存のプログラムにデータベースサポートのつけ方どうか
教えてください!!調べてもなかなかみつからなくて 泣

お願いします!
215SAVE:02/02/05 23:08
リストボックスをシングルクリックした時にクリックした場所の項目番号を取得したいのですが、
ダブルクリックした時の項目番号しか取得できません。

どうやって取得したらいいのでしょうか。
適当に教えてください。
>215
GetCurSel() ?
217デフォルトの名無しさん:02/02/05 23:23
以前までビルドするのはその際に書き換えたソースだけビルドしていたのに何故か昨日から急に
どんなことがあっても毎回全ソースをビルドするようになりました。コンパイル実行した直後にもう一度
コンパイルしようとしてもまた全てビルドしようとします。VC++の再インストールも試みましたが結局
症状が治ることはアリマセンでした。
どうすればこの症状が治せますでしょうか・・・よろしくお願いします。
うぜーーーーーーーーーーーーーーーーーーーーーーーー
219>>219:02/02/05 23:52
>>217
押すボタン間違えてんだろ
221217:02/02/06 03:15
F7押してからCtrl+F7でも駄目なんです・・・。
Ctrl+F7で実行してから終了後、すぐにCtrl+F7押しても駄目です。ビルドされてないとでます。
222デフォルトの名無しさん:02/02/06 03:32
>>217
Makefileというかプロジェクトのファイル壊れたんじゃないのか?
もう一度プロジェクトを作りなおしてみれ。
223217:02/02/06 04:20
プロジェクトも作り直してみましたが駄目です・・・ためしにProjectつきのサンプル等をWeb等から落としてきた後
コンパイルしてもやはり毎回全ビルドします・・・。うあ・・・。
>>217
マシンの時計が狂ってるとか
225デフォルトの名無しさん:02/02/06 06:42
MFCでドキュメントクラスに、
ダイアログバー上にあるコンボボックスのメッセージハンドラ作ったんですが、
値を読むのって、フレームウィンドウからコントロールを取得しないと駄目なの?
それともハンドラはフレームウィンドウに作って、
ドキュメントクラスの処理関数呼ぶのが正しいのかな?
226SAVE(215):02/02/06 08:03
>>218
すいません
227デフォルトの名無しさん:02/02/06 10:09
>217
時計が狂ってるんじゃないのか
228デフォルトの名無しさん:02/02/06 11:58
>>200
ありがとうございます。そうですね、設計がヘンだと思います。
*Docにもメッセージが飛ばせるとおもったのですが。
もうちょっとドキュメント・ビューアーキテクチャを勉強しないと・・・
でも、メニューから飛んでくるのはどうしてなのでしょうね??
>217
俺の隣に座っている人も、これに、はまってたよ。
でも、全プロジェクトじゃなくて、特定のプロジェクトだけ。
.dswとか見ても、特に変わったとこないし、.ncbやら.optやらを消しても直らない。
タイムスタンプも時計も異常なしで、もちろんアクセス権とかの問題でもない。
「駄目だこりゃ」ということで、そのときは放っておいたんだけど。

もしかしたら、HKCUの DevStudioのレジストリキーを一旦削除かなんかしてみると、
直るかも。
230デフォルトの名無しさん:02/02/07 02:21
インストールしていないフォントファイルからフォント名を取得するには
どうすればよいのでしょうか?
getsystemmetrix
>>231
誤爆?
VC++ で使えるフリーの ActiveX コントロールを探しています。
具体的には「Microsoft Forms ...」コントロールのような
標準コントロールライクなものやグリッドコントロールを探して
います。Vector とかで探したら何個かはありましたが、試して
みると VC++ で使えませんでした。
ご存知でしたらそのサイトを教えて頂けないでしょうか?
どんな些細な情報でも構いませんのでよろしくお願いします。
234217:02/02/07 04:53
何故かこのスレをチェックした後、229さんの方法を試す前にテストしてみようと思ったら治ってやがりました。
昨日寝る前に224、277さんの助言通りTClockで時計合わせてみたのですがその直後は全然駄目だったんですけど・・・。
まぁ治ってよかったです。ありがとうございました。
235201:02/02/07 11:08
>>202
>>204
遅くなりましたが・・・
最小化する方法にしました。
でも、最小化するとWin98SEの時だけ別ウィンドウが一番下に
表示されてしまうんですが・・・。
そういうものなんでしょうか??
もしかしたら、他のOSでは偶然ならなかっただけかもしれませんね。
あまり気にしないことにします。
>>235
最小化しなくても画面外に出しちゃえば?
237201:02/02/07 11:16
>>236
なるほど・・・そういう方法もありますね。
試してみますね。
238海太郎:02/02/07 14:01
VC初心者です。ちょっとわからないことが出来たので書き込みさせて
いただきます。

ダイアログ上のスタティックテキストの色の変更をしたいのですが、
方法がわかりません。
InitInstanceでSetDialogBkColorを使えばすべてのダイアログの
表示を変えることが出来るのですが、ひとつだけダイアログの文字色
を変えたいのです。

すみませんが、よろしくお願いします。
レスポンス、お待ちしています。
240230:02/02/07 16:49
もう一度。
インストールしていないフォントファイルからフォント名を取得するには
どうすればよいのでしょうか?
>240
LoadLibrary して EnumResourceNames→FindResource→LoadResource のコンボ
後はゴリゴリ解析するんだと思う。
242女性社員:02/02/07 17:11
あのーVCでDAOとか使ってデータベース操作などをしている人って
いますでしょうか。
VBでは参考資料が豊富にあったのですが、VCだと全然ありません
参考にあるような本やサイトがあったら教えてください。
243 :02/02/07 17:36
>>241
フォントファイル(.ttfなど)をLoadLibraryするんですか??
245デフォルトの名無しさん:02/02/07 20:22
APIオンリーで組んでます。
初心者な質問ですが許してください(;´∀`)

VC++はNNなど、メニューバーから各項目にフォーカスを当てたとき
ステータスバーにその項目の機能について簡単な説明が出ますよね?
この機能をつけたいのですが、フォーカスが当たったときにどういったメッセージが
送られてくるのかが分かりません。
どなたか教えていただけないでしょうか?
246デフォルトの名無しさん:02/02/07 20:37
ネット越しに相手のPCのネスケを起動するのはどうすればいいでしょうか?
APIみたいのを探してみたんだけど、分かりませんでした。
よろしくお願いします…。
>>246
ネタは sage でな。
248デフォルトの名無しさん:02/02/07 20:38
>>246
Windowsのセキュリティーホールを探して下さい。
249デフォルトの名無しさん:02/02/07 20:43
246の者です。
ネタではありません。Cは初めてなのでよく分かりません…。
やはりAPIは無理なのでしょうか?
「トロイ バックドア バックオリフィス」でゴグルすれ
251デフォルトの名無しさん:02/02/07 20:53
ShellExecuteプログラムを相手のPCで起こせばいい事は分かってるんですが…。
どうしてこんなに難しいんだー!!!
>>245
ペイン
ストリングテーブル
>>249
もしそれが可能だったら、ちょっと手を加えるだけで、

 俺が 246 のメールソフトをリモートから立ち上げて、ウィルスメールをばら撒く

とかできると思わんか?
>250
ゴグれ
>250
コクれ
>246
こっちが何かコマンドを相手に向かって撃ったらその内容に応じてExcuteだっけ?で相手側でたちあげりゃいいんでねーの?
257デフォルトの名無しさん:02/02/07 21:22
みなさん、すいません。先ほどやっとPCに詳しい人と連絡が取れたのですが、
無理だということが分かりました。
(相手のPCに特別なアプリを立ち上げておけばいいらしいですが、
今回の案件ではそれは無理なので…)
253さん、256さん、せっかくレスを頂いたのに申し訳ありません。
>>245
フォーカスとかいうからWM_SETFOCUSって答えそうになったぞ。
WM_MENUSELECTな。MenuHelp 関数とかも見ておくと小吉。
>257
お前・・・いや、やっぱやめとこう・・・
260245:02/02/07 21:46
>>258
ありがとうございます。
どう表現したらいいか分からなかったので(;´∀`)
一番フォーカスがしっくりくるような気がしたものですから・・・
とにかくありがとうございました。
早速やってみます〜
>>244
Yes。だまされたと思ってやってみてくれ。
うまくできたら漏れも使わせてもらうから(w
WinXP上でメモリリークが無いかタスクマネージャ睨んでたら
禿しくりリークしてる様で、newで確保した領域を解放しても
使用メモリが減らず、再確保すると更に増加します。

いくら見直しても穴が見つからず、なんとなく同じプログラムを
そのままWin98で実行してみた所、確保−解放できっちり元に
戻りました。  この様な症状はNTの仕様なのでしょうか?
263デフォルトの名無しさん:02/02/09 04:38
自分でallocatorを定義しなさい。
いちいち空きメモリをOSに返すやつを。
264262:02/02/09 04:46
ではNTの仕様と言う事なんですね…
NTじゃない。
VCの標準のallocatorの仕様だ。
266262:02/02/09 04:59
あら…しかしWin98上では即解放されてる様なのですが。
>262 パフォーマンスモニタとはお友達?
268262:02/02/09 05:19
いや…エクスプローラ拡張メニューのメモリ情報ですw

Win98上では解放すると、きっちり元のサイズに戻るんですが、
XPでは何故か、逆に増えたりする事もあります(;´Д`)
そりゃ、お前がデブだからだ。
じゃ、262はデブってことでこの話は
     ∧∧  ミ _ ドスッ
     (   ,,)┌─┴┴─┐
    /'   つ 糸冬 了 │
  〜′ /´ └─┬┬─┘
   ∪ ∪      ││ _ε3
               ゛゛'゛'゛
271262:02/02/09 13:21
すまん、正直ガリぎみ。
272デフォルトの名無しさん:02/02/09 13:35
アカデミックバジョンってなんですか
異常に安いんですけど・・・・
中身はやっぱり違うんですか?通常版と
アカデミックいいよねぇ。
びんぼ学生でもエンタープライズ買えるし。
>272
たまーにポインタの指す位置がかわることがある。
>274
ヲイ
276272:02/02/09 19:00
アカデミックバジョンってなんですか
異常に安いんですけど・・・・
中身はやっぱり違うんですか?通常版と
だれか、マジでおしえてください
ちがわねえよ
学生ならそっち買え
>>272
アカデミックでない用途に使うと警告ダイアログが出る。
279デフォルトの名無しさん:02/02/09 19:22
VC++特有ってわけじゃない(と思う)けど、
DOSプログラムよりWinプログラムのほうが実行速度が速いのはなぜ?
単純な計算のループなんだけどさ。
先生!どうやって判定するんですか?
>279
OSのパフォーマンスが違うから
282デフォルトの名無しさん:02/02/09 19:37
>>281
スマソ。
Win上のコンソールプログラムとそうでないプログラム
283デフォルトの名無しさん:02/02/09 19:39
VC++.NETもやっぱりProfessionalとstandardに別れるのかな?
>>283
.net スレで、商品構成と値段が出てたような気がする。
285デフォルトの名無しさん:02/02/09 20:02
ところでVC6.0のsetup.exeが起動しないのはどうして?
>285
割れだから
287デフォルトの名無しさん:02/02/09 20:10
>>285
詳細に関してはマイクロソフト社技術情報
「J053653 [NT]J052309 の修正適用後 Office2000
のセットアップができない」をご参照ください。
288デフォルトの名無しさん:02/02/09 22:37
とあるツールをSPY++で解析しているのですが,
右クリックのポップアップメニューで,
メニューを選択してもWM_COMMANDとかが飛んでいません。
そもそも,trackpopupmenu()を使っていなさそうなのですが。
WM_COMMANDを送信しないようなメニューの作り方,
またはその場合どうやって項目を選択した事を
ウィンドウプロシージャに伝えるのか,知っている人はいますか?
>288
フックしてメッセージを削除
290デフォルトの名無しさん:02/02/09 22:50
ちょっくら気になったのですが、
GDIでパレットアニメーションはどうすればできるのでしょうか?
またwindowsの画面モードが256色以外でもできるのでしょうか。
291デフォルトの名無しさん:02/02/09 22:52
AnimatePalette()
できません。
292デフォルトの名無しさん:02/02/09 22:54
>>289
フックしてメッセージを削除する事には,どういった意味があるんでしょう?
それと,試しにそのウィンドウに,
メニューの項目のIDと共にWM_COMMANDを送信してみましたが,
反応はありませんでした。
ぼくは何か考えちがいをしていますか?
293デフォルトの名無しさん:02/02/09 22:58
>>288
自前でWM_LBUTTONDOWNとか見て処理してるんじゃないのか?
294290:02/02/09 23:07
> 291
ありがとうございます。
やはり256以外ではできないんですね。
295login:Penguin:02/02/10 00:27
16の8じょうを Ansi Cを使って計算しようとすると
どうかけばいいですか?
0
>295
16*16*16*16*16*16*16*16
Linux板とのマルチポストなんだな、きっと…
(define (power n x) (if (zero? x) 1 (* n (power n (- x 1)))))
(power 16 8)
4294967296
300295:02/02/10 00:42
16のn 乗 を計算せさせるには?
>>300
ヘルプでもWebでも検索しろよ。
こうだよ。

pow(16, n);
スレ違いな書き込みに、あまり餌をやるのはどうかと…
(power 16 32)
340282366920938463463374607431768211456
(power 16 128)
13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084096
305デフォルトの名無しさん:02/02/10 03:45
はやい!
VC6でプロファイルを取るため、
ttp://www.bd.wakwak.com/~opapa/VC/Operation/Profile.htm
を参考にVC6のバグを回避してプロファイルを行う設定にしました。
しかし、「ビルド」メニューの「プロファイル」が灰色になっているので
プロファイルが取れませんでした。
環境はWin2k+VC6 Enterprise SP5です。
原因がわかる方は教えて下さい。お願いします。
ftime.batとかあるからソレ使え。
MSDNにやり方載ってる。
308デフォルトの名無しさん:02/02/10 20:40
VCで「デバッグの中止」ボタンを押して、プログラム中断すると、動的確保した
メモリやら、開いていたハンドルってどうなるの?
解放されるんちゃうかー
310デフォルトの名無しさん:02/02/10 20:45
>>308
メモリは開放される。
他のリソースもプロセスが終了するときに自動的に開放されるってのが多い。
でも、全部が開放されるかどうかは分からない。
311直リン普及委員会:02/02/10 20:46
>>306
今度から直リンでおねがいします。
>>310
少なくともファイルは残るな。ハンドルは開放されるけど、ファイルそのものは
消えない。

共有メモリとか名前つき mutex も残るんじゃない。
>共有メモリとか名前つき mutex も残るんじゃない。
残らないって。
>>313
GlobalAllocしたのも消滅するの?
>312
ファイルハンドル閉じてもファイル自体は残るのが普通だと思いますが。
316308:02/02/10 21:11
他のプロセスが確保したメモリって開放できるんですか?
特権とかの関係ですかね?

また、newで例えば 10MB確保して、開放せずにプログラムを終了しても
パフォーマンスモニタなんかを見てると、きちんと 10MB増減するんですが、
メモリリークとはどのような場合を指すのですか?
317デフォルトの名無しさん:02/02/10 21:16
>>314
開放される。
Win32だとGlobalAllocもLocalAllocも同じ。
318316:02/02/10 21:23
newは、中では HeapAllocですよね?
VirtulaAllocは開放されるみたいです。
>>316
メモリリークはプログラム実行中の話。
終了すれば開放される。
320316:02/02/10 21:37
>319
はぁ、そういうことですか。
プログラムが終了しても開放されないメモリのことだと思ってた...
>>315
もちろん普通だけど(それがファイルの存在意義だし)、

 正常な手順を踏んで終了した場合には残らないが、強制終了させると残る
 リソース

ということで挙げてみたり。

>>313
Win32 だと共有メモリは残らんのか。昔 UNIX System V で開発してたときに
共有メモリが残ってしまって(正常終了時には、終了処理で消すようにしてた)

 ダサすぎ

と思ったことがあるんで。
>>317
そうなんだ。
ってことはHGLOBALは生成したプロセス終了時に無効になるってことか。
ありがとう、参考になった。
323デフォルトの名無しさん:02/02/11 01:30
すみませんが、教えて下さい。
CDialogをChangeDisplaySettingsを用いてフルスクリーン表示させるのですが、
このとき、縁(ダイアログ枠?)の部分が残ってしまいます。
スタイルを変更しようと思って以下のような処理をしたところ、
ModifyStyle ( WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX| WS_POPUP |WS_DLGFRAME, 0 , SWP_FRAMECHANGED) ;
ModifyStyleEx(WS_EX_CLIENTEDGE,0,SWP_FRAMECHANGED);
上記のModifyStyleExで0が返ってきてしまうのですが、
なぜでしょうか?
ModifyStyleではスタイルの除去が出来たのですが・・・。
>>ModifyStyleEx(WS_EX_CLIENTEDGE,0,SWP_FRAMECHANGED);
MSDN見たけどSWP_FRAMECHANGEDのことかかれてないなぁ・・・

俺もフルスクリーンとウィンドウを切り替えるモジュール作ってあるけど
ModifyStyle(Ex)は使ってないな
ウィンドウのスタイル変更は『SetWindowLong』『SetWindowPos』使ってやってるけど
325デフォルトの名無しさん:02/02/11 08:29
Winsockを使う以外でファイルをネットワークからダウンロードすることは出来ますか?
326デフォルトの名無しさん:02/02/11 10:53
ワークスペースの中のプロジェクトが多くなってきて管理しづらくなってきたんですが、
プロジェクトをフォルダの階層構造みたいにすることはできますか?
>>325
ネットワークドライブからコピー(w
\\hogehoge\dir\file

一応ネットワークからダウンロードだろ。
>326
プロジェクトの中はフォルダ分けできるけど、プロジェクト自体の階層化は無理っぽい。
EXEとDLLといった関係だったら、「ブロジェクトの依存関係」で少しは見通しがよくなるけどね。
329326:02/02/12 11:40
>>328
やっぱ無理ですか…。まあ、出来る範囲で見通し良くして頑張ります。
330デフォルトの名無しさん :02/02/12 18:00
プログラムの生産性を高めようと思い今年の夏くらいからライブラリ化を行うようにしました。
それぞれのプログラムで共通の部分を探してライブラリにまとめたら
ライブラリが5MBくらい(ソースファイルのサイズ)になってしまいました。
ライブラリが巨大過ぎてどこに何があるのか把握し切れません。
プログラムごとにコードを書いて再利用できると思う部分はコピー&ペーストで貼りつけていた頃のほうが生産性が高いくらいでした。
これは慣れてないからでしょうか?
それともライブラリなんて自分で作るもんではないのでしょうか?
ちなみにライブラリ内の各関数は複数のプログラムで使われることは殆どありません。
それどころが無いと思ってライブラリに追加した関数と同じ機能の関数が既に存在していて後でムカついたりと
嫌なことだらけです。
正直辞めたいです。
でも半年かけて作ったものを捨てるのは非常に悲しいです。
どうしましょう?
>>330
人生は出会いと別れの繰り返しさ。
時には悲しい別れと向き合わなければならない。
332デフォルトの名無しさん:02/02/12 18:12
>330
そりゃ、お前、何も考えてないからだろ。ていうか、何をライブラリにしたんだ?
俺はもっぱらDirectXにしかつかわないが・・・
それぞれの関数を分野に分けて複数のlib作ればいいだろ。
333323:02/02/13 01:42
>324
レス、ありがとです。
仕方ないんで、Viewのクライアントレクトをとって、
伸縮してフレームを消しましたです。
>>333
おいおい、マジですか・・・(w
それって非常にマズーよ
335デフォルトの名無しさん:02/02/14 20:09
DLLのデバッグにおいて、ブレイクポイントやステップ実行は可能なのでしょうか?

現在呼び出し側のプロジェクトに、DLLのプロジェクトを加えています。
キーボードフックのためのDLLなのですが、WM_KEYDOWN等が来ている
(動作はしているので)のに、ブレイクしてくれないので、勘で試している様な体たらくです。
>335
普通にデバッグできるけどナー。
ありがちなのは、実行ファイルがデバッグ対象とは違うDLL
(たとえばリリース版の方とか)をロードして動いているというケース。
まず双方の出力ディレクトリを確認してみては。
デバッグ情報をあらかじめ読み込んでおく設定ができていないという罠
338デフォルトの名無しさん:02/02/14 21:38
IEとかMSWordとかで、ツールバーがメニューを全て表示できない場合、
">>"ボタンになって、クリックすると隠れているメニューが表示されますが、
あれって、自力で実装するしかないのでしょうか?
MFCで用意はされていないのでしょうか?
339335:02/02/14 21:53
>>336
DLL側ののDebugフォルダにある、作成されてたdllを
呼び出し側のDebugフォルダへ、実行の度に一々コピーしてました。
>>337
そういう設定した記憶が全くなかったりします(T-T

なんか根本からダメダメ事がよく分かりました。頂いたヒントを元に
MSDNと旅に出てきます。レスありがとうございました。
340 :02/02/15 01:00
>339
最近のVCって実行パスをプロジェクトフォルダ(DebugやReleaseの1つ上)に設定してなかった?
だからDebugの中にコピーしてもダメな気がするんだけど・・・。
341 :02/02/15 01:01
っていうかそもそもDLLプロジェクトのデバッグ設定がダメダメなのか。
342335:02/02/15 02:01
>340,341
それがむしろ、プロジェクトフォルダにDLLおくと、実行すらされないんですよ。

それにしても、下URLを参考に、もう4時間ばかり試行錯誤してるのですが、未だ駄目で‥。
http://www.microsoft.com/japan/developer/library/vccore/_core_methods_for_debugging_dlls.htm

dll内の、他のEXPORT関数は、普通にデバッグできるのですが、
メッセージフックのコールバックプロシージャ関数だけは無理なんです。
誰か、そういうものだと言って楽にして下さい‥。
343デフォルトの名無しさん:02/02/15 11:39
今までWin32でコードを書いてきました。
しかし開発効率はMFCの方が良いと聞きます。
そこで、MFCを勉強しようと思うのですが良い
MFCの書籍を紹介していただけないでしょうか?
お願いします。
MFCだってWin32ですが。
345デフォルトの名無しさん:02/02/15 12:03
>>344
343です。
申し訳ないです。
訂正します。
Win32→APIです。
>>345
MFCだってAPIつかってますが。

・・・ま、そんなことはどうでもいいんだけどね。
俺は一応

プログラミング学習シリーズ
VisualC++B
はじめてのMFCプログラミング
ISBN4-88135-823-5
山本信雄 著
SHOEISHA 発行

だったが、今から考えるとなんでもよかった気もする。
347デフォルトの名無しさん:02/02/15 13:27
343です。
>>346
>>MFCだってAPIつかってますが。
まだまだ無知なのでご指摘感謝します。
また、丁寧な返答もありがたいです。
早速参考にさせていただきます。
348デフォルトの名無しさん:02/02/15 17:24
STLのsetを使用すると大量の警告が出てしまいます。
これは何故ですか?
また回避する方法はありますか?
>>348
FAQ
>>348
ファッキュー
何の警告かも書かないあほには方法すらない
コマンドラインから情報もってくるのってどうやるの?

たとえばファイル名を指定して実行。

プログラム名 パラメタ1 パラメタ2

↑パラメタ1とパラメタ2を利用したいんですが、、、
>>352
WinMain の第三引数、もしくは main の第一/第二引数
>>353
うわーい
ありがたう
355大助:02/02/16 10:52
特定の時刻になったら何かするっていうのはどう実装すれば良いでしょうか?
一定時間経ったら何かするってのは、SetTimer()を使えば良いのですが
私のやりたいのは、定期的にある処理をしていて、ある時刻(例:5時10分)に
なったら別の処理を行うというものです。
内部的に目覚ましみたいなものを作成したいのですが、どのように
作れば良いでしょうか?
よろしくお願いします。
356デフォルトの名無しさん:02/02/16 11:22
質問なんですが、コンパイルエラーで、クラスが定義されていない、
識別エラーとでてしまいます。
前方宣言、includeミス以外で何が考えられるんですか?
スペルミス。
>>355
3.WM_TIMERで定期的に現在時刻を調べる。
>>355
イベントループを使わず、peekmessageを割り込ませた
メインループを作り毎回時間を取得する。

…精密でなくていいなら >>358 の方がおすすめ。 1分か…30秒に1回かな。>チェック
>358 1と2が何だったのか気になる……
361デフォルトの名無しさん:02/02/16 16:17
>>355
(目的の時刻 - 現在の時刻)の分だけ Sleep() するなり、
SetTimer() でこの値を使うなり、
SetWaitableTimer() (およびそれに付随する奴)で目的の時刻をセットするなりすれ。
362大助:02/02/16 22:08
ありがとうございました。
SetWaitableTimer() を使って実装してみることにしました。
サンプルを作っているのですが、ビルドできません。
MSDNによるとSetWaitableTimer()は
ヘッダー:winbase.h 内で宣言
インポートライブラリ:kernel32.lib を使用
とのことなので、winbase.hをインクルードしてkernel32.libはデフォルトで
リンクしているので、そのままとしています。
HANDLE hTimer;
hTimer = CreateWaitableTimer(NULL, FALSE, NULL);
というサンプルをビルドすると
error C2065: 'CreateWaitableTimer' : 定義されていない識別子です。
error C2440: '=' : 'int' から 'void *' に変換することはできません。(新しい動作 ; ヘルプを参照)
整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
と表示されます。
ちゃんとwinbase.hで定義されているはずなんですが?
ネットでサンプルを探したのですが、適切なものがありませんでした。
何が悪いのでしょうか?
よろしくお願いします。
>362
Windows NT/2000:Windows NT 4.0 以降
Windows 95/98:サポートされていません。
MSDNにはこう書かれてるけど、この辺は大丈夫?
364大助:02/02/16 22:46
>363
>Windows NT/2000:Windows NT 4.0 以降
>Windows 95/98:サポートされていません。
>MSDNにはこう書かれてるけど、この辺は大丈夫?

はい。Windows2000で開発してます。
http://members.tripod.com/myyee/cs431/timer.txt
にそのまま流用できそうなソースを見つけたのでやってみましたが
やっぱり同じエラーになります。
さっぱり分からなくなりました。
365デフォルトの名無しさん:02/02/16 22:49
こんばんわ。VC++というよりWindowsのプログラミングかもしれませんが、
コンソールアプリをプログラムで最初から全画面表示にするには
どうすればいいのでしょうか?
(Alt+Enterを押して切り替えるのではなく、最初から全画面にしたいのです)
>364
#define _WIN32_WINNT 0x0400
NT4.0以上だからこれを定義すればいいんじゃないかな。
367大助:02/02/16 22:57
>366
>#define _WIN32_WINNT 0x0400
>NT4.0以上だからこれを定義すればいいんじゃないかな。

おおっ、ビルド出来ました。
ありがとうございました。大変助かりました。(^o^)
これからサンプル動かして確認してみます。
起動後Alt+Enterをプログラムに送る(藁
>365
ショートカットから、プロパティ->オプション->表示オプション->
ウインドウ/全画面?
APIで、というと、GetConsoleDisplayModeはあるが、
SetConsoleDisplayModeは無いみたいだが。
370デフォルトの名無しさん:02/02/18 11:52
コンパイルエラーの情報は「アウトプット」っていうウィンドウに表示されますよね。
この「アウトプット」ウィンドウに表示されるメッセージが横に長いせいで
非常に見づらいんです。ウィンドウの横幅内で自動改行して表示するような
オプションってありませんかね?
371鬱……:02/02/18 16:36
GUI のコントロールのダイアログを閉じてしまったのですが、
再び出す方法が分かりません。どうやったら出せますか?

どうしようもないな、俺……。
>>371
・・・リソースエディタのコントロール選ぶやつの事か?
フレームの、なにも無いところで右クリックしてみい。
>>371
根性ねえな。
メニューを片っ端から開けばみつかるyo。

メニューの「ツール」→「カスタマイズ」
 →タブの「ツールバー」→「コントロール」にチェックをつける。
もしくは
ツールバーの何もないところを右クリックして現れるメニューのコントロール
にチェックをつける。
374鬱……:02/02/18 16:58
>>372-373
ありがとう。出た。
自分の情けなさに涙出てきたよ……。
375デフォルトの名無しさん:02/02/18 23:57
Doc-Viewについて質問。
今作ってるアプリ、オプションで表示フォントを変更できるようにしたいわけだが、
設定の保存法で悩む。
CPropertyPageをCMainFlameのメンバにして保存しようと思ったが、そうなるとViewクラスから
どうやってアクセスすりゃいいのか分からん。というかこの実装はださいと思う。
皆さんオプションダイアログってどうやって実装するんですか?
376デフォルトの名無しさん:02/02/19 00:15
FTPクライアントを実装しようとしているのだが、MFC提供のクラスを使うと
コマンドを送ることができない…。
どうすれば良いんでしょう?
377デフォルトの名無しさん:02/02/19 00:16
VC++のリソースエディタで作成したリソースの内容を、実行時に変更することは
可能でしょうか?
たとえば、staticテキストフィールドの文字列を実行時に変更するようなこと。
VBなら簡単だけど。結構こういうことをしたいときは多いと思うのですが。
378デフォルトの名無しさん:02/02/19 00:17
>>376
CSocketを直接使ってFTPのコマンドを送るというのは駄目??
>>377
GetDlgItem(リソースID)->SetWindowText(文字列)
380377:02/02/19 00:22
>>379 thanks!
381デフォルトの名無しさん:02/02/19 00:26
>378
ソケットを使うのも考えたのですが、挫折してしまいました(恥
forのループ変数のスコープをfor内に収めることはできないの?

for(int i=0;....){};
for(unsigned int i=0;....){};
マズーなんですが.
TurboCはOKだった これが標準なのでしょうか?
#define for if(0);for
#define for if(0);else for

とにかくふぁっっきゅー
>382
MSの独自拡張のチェックを外せばエラーが出なくなったと思うけど、
他のソースがコンパイルできなくなったような。MS逝ってよし?

>384
そんなのあるんか。見るからに嫌な気分になってくるTipsだなぁ。
386デフォルトの名無しさん:02/02/20 21:15
デバッグ中にSTLの変数の中身を見たいときどうしてますか?

vector<T> v;
v[i] を見たいとき v._First[i]

list<T>, map<T> の iterator i
*i を見たいとき i._Ptr->_Value

ちなみにconst_iteratorの場合、VC++のウォッチで_Ptrが見えるのに
iteratorだと見えないのは、iteratorがconst_iteratorから派生していて
基底クラスのメンバは出てこないためのようです。
(自分で打ち込めば見えるんだけど)

他にいい方法ないですか?
387デフォルトの名無しさん:02/02/20 21:20
VC++のSTLは何を使ってますか?

付属の奴そのまま
STLPort
SGI
付属のやつそのまま。
糞グラマですが何か?
>>387
STLport

付属のヤツだと auto_ptr に reset() がなかったりと、微妙に仕様が古いので
困ることがある。
390糞グラマ:02/02/21 01:10
コーディングに関係ないんですが、一応VC相談ちゅことで
VC6にてコマンドラインからビルドするときに

>msdev /make "hoge.dsp/dsw" ...

と書くと楽チンなんですが、ビルドの設定をここで指定したいんですが
具体的にはプリプロセッサ定義の追加と出力ファイル名。
SET CL=/DHOGE
でCL.exeは反応してくれるんですがリソースコンパイラとリンカに
この状態で設定変えることはできるかな?

プロジェクトに追加しる!ってのが現状の結論ですが。
>390
メイクファイルをエクスポートしてNMAKEで作るとか。やったことないけど。
VisualStudioを入れると、OS側でアプリケーションエラーが発生したときなどに
それをフックしてデバッグしますか?みたいなダイアログがでますが、アレを解除
する方法ご存知ありませんでしょうか?VS6でWin2kです。
>>392
クラッシュ時に起動されるデバッガは、次のレジストリの値で指定されてる。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Current Version\AeDebug\Debugger

こいつを VS インストール前の値に書き換えてやれば OK。
394392:02/02/21 03:43
>>393
ありがとうございます。やってみます。
>>392
っていうか、
ツール -> オプション -> デバック の「ジャストインタイムデバッグ」のチェックを外す。
396デフォルトの名無しさん:02/02/21 16:16

PNGを読み込みたいです。
BMP・JPEG・GIF・アイコン・カーソルなどの主要フォーマットはAPIで読み込めるのにPNGはなぜ読み込めないのでしょう?
自分は Win98 なんですがXPやなんかでも読みこめませんか?
新しいPNG読み込みAPIが実装されていたりしませんか?

それとAPIがスレッドセーフかどうかってどうやって調べたらいいですか?
MSDNで特に明記されていない場合スレッドセーフとみなしていいんでしょうか?
もちろんライブラリはマルチスレッド用の物をリンクさせます。

 VC++6.0 のダイヤログベースプロジェクトで、
子ダイヤログとしてモードレスダイヤログを表示させた上で、
親ダイヤログにメッセージボックスなど、
モーダルなダイヤログを出したのですが、
その際にも子のモードレスダイヤログにアクセスできてしまいます。
(フォーカスが移動してしまいます)

親にメッセージボックスを出している最中に、
子のモードレスダイヤログにフォーカスできないようにするために、
何か良い方法は無いでしょうか?
(子モードレスを非表示にすることは仕様上出来ないです)
>>397
子を EnableWindow( FALSE ) しちゃうとか。
399397:02/02/21 20:16
>>398さん

 それも考えてはいたのですが(試してないですが・・)(^^;
実際に子窓は、たくさんある状況なので、
モーダルの方に命令1つ・・というスマート?な方法を模索してます。
(MessageBox関数は、代用のダイヤログがあるので、
 実際には全てCDialogのDoModalを利用する事にしています)

 ・・とはいえ、(当たり前ながら)親は全ての子を知っているので、
EnableWindow(bFlag)を、全ての子供に送るようなメッセージを作るなどで、
ある程度煩わしくない対処が出来るのかもしれません。

 ただ・・メッセージボックスは、子にも出す必要があるので、
子→親へSendMessageっていうのもどうかな・・と(^^;;;
>396
IEコンポーネント経由で読み込むことが出来る、と思う。
詳しくは「IEコンポーネントを使い倒すスレ」の過去ログを検索してみて。
解ったら報告のこと。
エディットボックスやリストボックス上に
ドラッグ&ドロップしたファイル(アイコン)のパスとかをそのエディットボックスやリストボックスに
表示してやりたいんですが、どうやって認識してあげたらいいのでしょうか?
>>401
DragAcceptFiles()すると、WM_DROPFILESがやってくる。
>>402
ウワーン
まじでありがとYO!
404デフォルトの名無しさん:02/02/22 11:48
ヘンなハナシを振らせてください。

gccやVisual C++6.0の実装のハナシだけど、
ifstream(fd)/ofstream(fd)でファイルディスクリプタを渡せますよね。
これでソケットやパイプに対してgetlineやマニピュレーターを適用できる。
(Visual C++だと_get_osfhandle()なんかでハンドル→ディスクリプタ変換)
さあて、ここで、open/read/write/socket/pipeなんてのは
POSIXでもANSIでもありませんよね。

あと、↓の仕様って妥当だと思うけど、これに外れる実装例ってあるのかしら。

ファイルがコンストラクタまたは open メンバ関数を使って開かれているときだけ、
ファイルはクローズされます。

あ、引数にもどしてないや・・・
>>404
このコピペたまに見るけど、なんなの?
406デフォルトの名無しさん:02/02/22 16:45
ねえねえ、clの最適化オプションなんですけど、

>/G6
> Pentium Pro プロセッサ用にコードを最適化します。
>
>/GB
> Pentium 用に作成されたコードを最適化します。80386 (/G3)、80486 (/G4)、
> Pentium (/G5)、および Pentium Pro (/G6) オプションの最適化をブレンドします。

これ、/GBは/G6を包括してるわけですか?
それとも、/GBよりも/G6のほうが
Pentium Pro向けにはいいコード吐くようになってるってことですか?
407デフォルトの名無しさん:02/02/22 16:59
>>406
ほとんど変わりません。
たぶん速度が1%変わったら大成功な方でしょう。
408デフォルトの名無しさん:02/02/22 17:15
MFC初心者です。
ラジオボタンのenable、disenableを切り替えたいのですが、
関数で用意されているのでしょうか?

409名無しさんに接続中:02/02/22 18:04
MFC&SDI にて、あるファイルを開いている状態から別のファイルを開く場合に、
Document が view からデタッチされると思うのですが、その時呼ばれる
メッセージかもしくは仮想関数はないでしょうか。
今、OnInitialUpdate で仮想画面を create してるのですが、delete する
タイミングを逸しています。できれば泥臭いことはしたくないのです。
もしだめなようなら、仮想画面を作るタイミングを再検討してみようと思います。
410409:02/02/22 18:14
ちなみに SPY を使っても目的のメッセージは見つかりませんでした。
しかし SPY を使うと色々なプロセスが落ちて、システムが不安定になるの
ですが、私だけでしょうか。
vectorのerase()って要素を削除した後後ろの要素を前に詰めてくれるんですか?
412411:02/02/22 18:25
あ、スレ違いだったかな・・・
>>412
こっちかな。

●STL スレッド●
http://pc.2ch.net/test/read.cgi/tech/1004287394/
414411:02/02/22 18:29
>>413
すいません。逝ってきます。
>>408
EnableWindow

>>409
deleteはOnDestroyかな・・・
416ぼんぢゅーる:02/02/23 06:23
system()でバッチ処理をすることがあるのですが
あるディレクトリに移って相対パスを使うことってできますか?
system("\hoge1\hoge2\a.exe < \hoge1\hoge2\b.dat");

system("cd \hoge1hoge2");
system("a.exe < b.dat");
のような感じで動かしたいのですが。。。
実際に試してみればいいんじゃないでしょうか
418416:02/02/23 07:00
↑このままじゃ動きませんでした、確か。
スクリプトファイルに出力して
それを system で実行するとか
fprintf( fp, "cd \hoge1...
system("temp.bat");
SetCurrentDirectoryしてから、じゃダメなのかな?
確認してなくてごめんだけど。
421416:02/02/23 07:40
>>419 >>420
ありがとうございます、試してみます。
422デフォルトの名無しさん:02/02/23 21:36
初歩的な質問で申し訳ないのですが、
WNDCLASS.lpfnWndProcには普通WndProcが入りますが、
他の関数(例えばWndProc2)にしてもいいのでしょうか?
423954:02/02/23 21:54
解決しました
>>422
引数の型が同じで戻り値の型が同じで呼び出し規約が同じ関数なら、
名前は何でもよろしいぞ。…っというか、そうでないと2種類とか
3種類とかウインドウ作りたいときに困るではないか。

cite=MSDN
> The WNDPROC type defines a pointer to this callback function.
> WindowProc is a placeholder for the application-defined function name.
425デフォルトの名無しさん:02/02/23 21:57
解決しました
426デフォルトの名無しさん:02/02/23 22:56
MFC不使用の場合ファイルを開くのに、CreateFileとfopenが考えられますが
どちらを使えばいいのでしょうか?
好きな方使え。
移植のこと考えるならfopen
排他とかバッファリングとかの細かい制御をしっかり指定したいならCreateFile

428学生さん:02/02/24 02:35
ダイアログベースで作っています。
ダイアログのエディットボックスのデータを別のダイアログのエディットボックスに
移すにはどうしたらいいのでしょうか?教えて下さい。


WM_SETTEXTしてくだちい
430 :02/02/24 09:19
>>428
別のダイアログって言っても、元のダイアログの親なのか、子なのか
はたまた別のプロセスのダイアログなのかで全然違う。
431デフォルトの名無しさん :02/02/24 09:22
 ATL COM AppWizardでEXEサーバーを作り、ATLオブジェクトウィザードで
ダイアログを追加しました。そして以下のテンプレートクラスを継承させました。
public CAxDialogImpl<CComDialog>,
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CComDialog,&CLSID__ComDialog>,
public IDispatchImpl<IComDialog,&IID_IComDialog,&LIBID_SAMPLELib>
 ダイアログリーソースにエディット、インターフェイスにVisibleプロパティを
追加してクライアントプログラム(クライアントはコンソールアプリケーション)から起
動しましたが、エディットボックスに文字をタイプすることが出来ません。
カーソルは表示されマウス操作によるカット&ペーストは可能です。さらにBackSpace
キーは無効でDeleteキー、カーソールは有効です。
 EnableWindow、SetFocus周りの見落としがあるのかと試行錯誤しました。
このような場合、エディットのテキストエリアに文字を入力できるようにするには、
どうしたらよいのでしょうか?
432jun:02/02/24 17:06
VC++相談よろしいでしょうか!!お願いします!!

アクセスでOLEオブジェクトでBMP画像を格納して
それを、VC++6.0にODBCで接続して BMP画像をLongバイナリ
データで読み込むのですが、VCで表示するために

BYTE *p = (BYTE*)GlobalLock(m_pSet->m_column1.m_hData);

FILE *fp = fopen("aaa.bmp", "wb");

fwrite(p, 1, m_pSet->m_column1.m_dwDataLength, fp);

fclose(fp);

GlobalUnlock(m_pSet->m_column1.m_hData);

(m_column1 という変数が ロングバイナリはいってます)

とやったのですが、aaa.bmpというロングバイナリにbmp拡張子
つけてみたんですが、ファイルの作成はできるのですが
表示が できません・・・たぶん バイナリデータの頭に
アクセスでペイントを開くデータがあるからだと思います。
どうやって解決したらよいでしょうか?
おねがいします! ながなが すみません!
434jun:02/02/24 20:59
>>433
すみません・・・
迅速なお返事
どうもありがとうございました!!
がんばってみます!!
インライン関数がインライン展開されたかを
確認する方法ってないのでしょうか?
>>435
アセンブリコードを出力させる。
 製作途中のプログラムがあるんですが、ノートからデスクトップにワークスペースを
コピーして続きを作ろうとすると、なぜかフロッピーディスクにアクセスしようとして
固まってしまいます。適当なフロッピーを入れると再び動き出すんですが、なぜでしょ
う?
 ノートがPC98なので、VisualC++がAドライブだったせいでしょうか。フロッピーを
突っ込んでおけば一応問題ないのですが、直し方ってありませんか?
メニューの「ツール」「オプション」「ディレクトリ」あたりをみてみれ。
439437:02/02/25 01:11
 全ファイルのパスは正しくCドライブになっておりました。他にチェックすべき
ところありますか?

 質問を重ねて申し訳ありませんが、MFCのクラスのサブクラスを自作して、
他のプロジェクトでFileViewからプロジェクトにファイルを追加したとき、
ClassWizardでハンドラ等の関数を追加できないのですが、解決策はありません
か?それとも別な方法で自作したサブクラスをプロジェクトに追加しないと駄目
なんでしょうか?もしそうなら、方法を教えてください。
MRLが関係しているのかも。
とりあえず、GREPなどかけてみれば?
441437:02/02/25 01:23
>>440

 ???何がなんだかさっぱりわかりません…(汁
442デフォルトの名無しさん:02/02/25 02:11
CByteArrayの値をファイルに書き出す方法をおしえてください。
FILE *fp = fopen("aaa.bmp", "wb");
fwrite(p, 1, ???, fp);
こんな感じでやりたいのですが・・・・
443デフォルトの名無しさん:02/02/25 02:39
>>442
CByteArray ba;
fwrite(ba.GetData(), 1, ba.GetSize(), fp); // ま、こんな感じでいいんじゃない?
444デフォルトの名無しさん:02/02/25 02:55
if(this->nPoint >= 3){
this->normal = ::CalcNormal(this->point[0], this->point[1], this->point[2]);
}
何してるか分かりますか?
>>437
*.ncb *.aps *.clwを消して見れ。
446デフォルトの名無しさん :02/02/25 03:09
>>444
thisを省略すりゃ見やすい。
::CalcNormalでスコープの外側の関数をコール。
namespaceの外側、グローバル関数あたりをコールしている。
thisが分からなければclassを勉強しなさい。

447デフォルトの名無しさん:02/02/25 03:12
>>446
レスサンクス
つまりnPointが3以上ならばpoint[0]〜[2]をコールしてるってことですよね?
this・・・よくわかんねぇ鬱
http://mappy.mobileboat.net/~seek/up/img-box/img20020225051641.jpg

すいません。
上のようなリストをつくりたいんですがどうやったらいいでしょうか?
ファイル|サイズ|更新日時というやつです。

>>448
CListViewじゃダメなの?
450デフォルトの名無しさん:02/02/25 08:20
INCLUDE も LIB も設定したのに CL.EXE が

インクルード ファイルがオープンできません。'windows.h'

と言ってきます。なぜでしょうか?
VS6 Windows2000 です。
もちろん Include ディレクトリの中には Windows.h は入ってます。
451409-410:02/02/25 08:53
>415
ウインドウを閉じた場合は確かに OnDestroy が呼ばれるんですけど。
SDIで新しいファイルを開いてビューに割り付ける場合は、Ondestroy が
呼ばれません。
メモ帳やペイントはどうやっているのだろう。仮想画面は使ってると思うの
ですが。
452450:02/02/25 09:16
事故レスです。
INCLUDE は "" で囲ってはいけません。
LIB は大丈夫なのかな? HelloWorld は正常にコンパイルできたから。

凡ミスでした。
あるある
発掘あるあるプログラミング大事典スレ行きだな。

そんなスレねぇよ!
ないない
コマンドラインからコンパイルしているんですけど、
インクルードしているヘッダがどうしても C のソースとして
解釈されようとしてコンパイルエラーが出ているようです。
拡張子が h なのが原因なのでしょうか?
コンパイルオプションの -Tp をつけても駄目みたいです。
どうしたらいいでしょうか?
457456:02/02/25 11:10
勘違いでした。スンマソン。
458デフォルトの名無しさん:02/02/25 15:17
クリティカルセクションを使って同期をとっているんですがロックをネストさせた場合正常に機能しますか?

CRITICAL_SECTION critical;

void f1()
{
  EnterCriticalSection(&critical);    // @
  // ここで何か処理をする
  LeaveCriticalSection(&critical);    // A
}

void f2()
{
  EnterCriticalSection(&critical);    // B
  f1();
  // ここで何か処理をする
  LeaveCriticalSection(&critical);    // C
}

こういうプログラムの場合に f2() を呼び出した場合
B@ACの順番で実行されますがCまでロックした状態は維持されますか?
Aの時点で解除されませんか?

自分で試せってのは無しでお願いします。
試そうと思ったのですがどうやって試したらいいのか分かりません。
それっぽいプログラムを作ってみたら見た目ではうまく動いているようですが
本当に同期がとれているかは謎です。
教えてください。
459デフォルトの名無しさん:02/02/25 16:39
エディットコントロールのスクロールについて教えてください。

マルチラインでテキストログを表示させているのですが
定期的にテキストを追加すると、先頭行にスクロールバーが移動してしまいます。

これを現在の表示位置で固定するにはどうしたらよいのでしょうか?
よろしくお願いします。
>>458
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcemain4/htm/cerefEnterCriticalSection.asp

> The thread must call LeaveCriticalSection once for each time that it entered
> the critical section.

とのことなので、EnterCriticalSection()を呼んだ回数と同じだけLeaveCriticalSection()
を呼ぶ必要がある。

試すには

・f2()の「ここで〜」のところでSleep(10000)して、その隙に他のスレッドで
EnterCriticalSection()してみる
・f1()のLeaveCriticalSectionを取っ払ってみて、f2()実行後に他のスレッドで
EnterCriticalSection()してみる

とか。
>>460
WINNT.H で定義されている RTL_CRITICAL_SECTION 構造体 (CRITICAL_SECTION
は RTL_CIRITICAL_SECTION の typedef 名) を見ても

 LONG RecursionCount

というフィールドがあるから、再帰的にロックした数をカウントしてるのは、ほぼ確実。
462デフォルトの名無しさん:02/02/25 18:13
PropertySheetにビットマップを貼り付けたいのですが
何かいい方法はありませんか?
もし知っている方がいらっしゃったら、教えてください。
おねがいします。
463デフォルトの名無しさん:02/02/25 18:20
IXMLDOMDocument::save
で保存するとUTF8で出力されるのだが
ShiftJISで出力するにはどうすればいいの?
464サンコンさん:02/02/25 18:44
いま卒業研究をやっていまして、質問があります。
ダイアログベースで、親ダイアログのエディットボックスにファイルパスを
入れて、子ダイアログのエディットボックスにファイルの内容を表示して、
入力不可にするには親ダイアログのボタンにどのようなコーディングをすれ
ば、よいのでしょうか?教えて下さい。宜しくお願い致します。
465デフォルトの名無しさん:02/02/25 20:44
スレッドを作るのにCreateThread か beginthreadが考えられるのですが
MSDNには、
C ランタイムライブラリの関数を使うスレッドは、CreateThread 関数と
ExitThread 関数ではなく、_beginthread 関数と _endthread 関数を使う
ようにしてください。

と書いてあります。
そこで、スレッド内でCのランタイムを呼び出しているかわからない場合
(ソースのないDLLを呼ぶので)どうしたらいいでしょうか?
466デフォルトの名無しさん:02/02/25 22:18
>>465
不明でも_beginthread を呼んでおけば確実じゃん?
>>465
その DLL が MSVCRT.DLL をインポートしてるかどうか調べれば?

もしインポートしていれば _beginthread/_endthread を使えばいいし、
インポートしていなければ、CreateThread/ExitThread を使えばいい。

万が一、その DLL が MSVCRT.DLL をインポートしていないのに、
ランタイムライブラリの _beginthread/_endthread を使っているようなことがあれば、
その DLL、逝ってよし。そいつは DLL がわかってないと思われ。
468437:02/02/25 23:57
>>445

 いけました。どうもですヽ(´∀`)ノ
>>467
昔は MSVCRT.DLL の微妙なバージョンの差で問題が発生することがあった
から DLL に libc(mt).lib をスタティックリンクしたという話もあった気がするん
だが、最近は大丈夫なの? (それとも、俺の空耳か)
470465:02/02/26 01:55
_beginthread使うことにしました。御意見どうもです。

追加ですが、スレッドのPriority上げるために
DWORD m_dwThreadID = ::_beginthread(ThreadProc, 0 ,(void*)this);
::SetThreadPriority((HANDLE)m_dwThreadID ,THREAD_PRIORITY_HIGHEST);

としたのですがOKでしょうか?
DWORDをHANDLEにキャストしてる部分です。
SetThreadPriorityも成功しています。
MSDNには_beginthreadの戻り値にハンドルが返る、と書いたので大丈夫だとは
思うのですが。
なんであげるの?

より重い処理こそ、スレッドの優先順位を下げなさい。
それ以外はそのままにしておきなさい。
472デフォルトの名無しさん:02/02/26 12:47
Visual C++ で質問です。
WinMain を使ったプログラムで(プロンプトから起動しても) std::cout が何も出力してくれません。
多分標準出力が割り当てられていないんじゃないかと思うのですが
これはどうしたらいいでしょうか?
>>472
コンソールアプリにすれば?
474デフォルトの名無しさん:02/02/26 13:56
CreateWindowEx に関して質問です。
何故か CreateWindowEx が失敗します。
GetLastError したら「この関数は正常に終了しました」と出ました。
どういう事なんでしょうか?
RegisterWindowEx はちゃんと正常終了しています。

m_hWnd = ::CreateWindowEx(windowStyleEx, s_szClassName, "", windowStyle, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, s_hInstance, NULL);
if ( !m_hWnd)
{
MessageBox(NULL, (LPCSTR)"CreateWindowExに失敗", (LPCSTR)"デバッグ", MB_OK);

LPVOID lpMsgBuf;
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL );
MessageBox( NULL, (const char*)lpMsgBuf, "エラー情報", MB_OK | MB_ICONINFORMATION );
LocalFree( lpMsgBuf );
}
>>474
GetLastError() 呼び出す前に MessageBox() を呼んでるから、CreateWindowEx()
のエラーが MessageBox() の実行結果 (正常終了) で上書きされてる。

とりあえず CreateWindowEx() 直後に

 DOWRD dwError = ::GetLastError();

と入れて、それを FormatMessage() しましょう。
476デフォルトの名無しさん:02/02/26 14:29
直接VCとは関係無いですが、開発環境がVCです。
ASPIを用いてツールを自作したのですが、配布にあたって
Adaptec に許可を得る必要はあるのでしょうか?
商用・非商用で変わるのですか?
477デフォルトの名無しさん:02/02/26 17:51
スレ違いかもしれんけど
Dialog項目にInputManProを使わなきゃいけなくなったんだけど
Setfocusのイベントが取れません。
どうしたらいいの?
478デフォルトの名無しさん:02/02/26 20:25
プロパティとメンバ変数って何が違うの?
何もかも
480デフォルトの名無しさん:02/02/26 20:59
>>479
そうなんですか。
ではスレ立てて聞くのが良いみたいですね。

とりあえず11時にムとマに立てて、ソレでだめなら
2chの外で聞きます。
481デフォルトの名無しさん:02/02/26 21:30
>>478
話はオブジェクト指向プログラミングの黎明期、”クラス”の誕生にまでさかのぼる。
共に同じメンバーであったメンバ関数とメンバ変数ははじめは対等な立場であった。
これはUML図法等を見れば分かると思う。それどころか幾分メンバ変数の方が”関数を
データにバインドさせる”というOOPLにおいて主体であったとも言えた。
ところがメンバ関数がメソッドと名を変えた頃から両者の関係に亀裂が生じ始めた。
virtual, abstract, interface等々メソッドは強力になっていった。
”ポリモルフィズムこそOOPLの真髄”とまで言われるようにもなった。
その頃メンバ変数(フィールドという名は定着していなかった)は頭に
m_をつけるかお尻に_をつけるかの不毛な議論のなかに埋もれていた。
「このままではいかん!」
メンバ変数は修行を続け、等々新しく生まれ変わった。それがプロパティ
だった。メソッドにも負けない強力なポリモルフィズム機構、それどころ
か右辺値か左辺値かで振る舞いを変えるなどメソッドをもしのぐ力を備えていた。
482デフォルトの名無しさん:02/02/26 21:54
>>481
ありがとうございます。
少しイメージが掴めました。

この文章はテキストに保存して後生大事に保管したいと思います。
数々の無礼、お許しください。
>482
MFCスレでもきっちり詫び入れてこいよ。その後カオスに還れ。
484どどど素人。:02/02/27 00:47
C++で逆行列を計算するプログラムを作ろうと
したのですが、どうもうまくいきません。
どなたかソースをおもちのかた、ご提供
お願いします。
>484
何がうまくいかないの?
486どどど素人。:02/02/27 00:53
#include<stdio.h>
#include<math.h>
#define N 3
#define N1 6
#define epsilon 1.0e-5
#define TRUE 1
#define FALSE 0
float a[N][N1]={
{2,1,0,1,0,0},
{1,1,2,0,1,0},
{3,2,1,0,0,1}
};
float det;
int sw;

void main()
{
int i,j;
void sweep();

printf("\n\n =======元の行列========\n\n");
for(i=0;i<N;i++)
{
printf("%d :",i+1);
for(j=0;j<N;j++) printf(" %10.4f ",a[i][j]);
printf("\n");
}
printf("\n\n");
sw=TRUE;
sweep(&sw);
if(sw==TRUE)
{
printf("\n\n =======逆行列========\n\n");
for(i=0;i<N;i++)
{
printf("%d :",i+1);
for(j=N;j<N1;j++) printf(" %10.4f ",a[i][j]);
printf("\n");
}
printf("\n 行列式 = %8.4f \n",det);
}
else
{
printf("\n 逆行列は求まりませんでした ! \n");
}
}
続く。
487どどど素人。:02/02/27 00:55
void swap(wk1,wk2)
float *wk1,*wk2;
{float w;
w=*wk1;wk1= *wk2; *wk2=w;
}

void sweep(sw)
int *sw;
{ int i,j,k,ik;
float ak,aik,p;

det=1.0;
p=1.0;
for(k=0;k<N;k++){
ak=a[k][k];
if(fabs(ak)<=epsilon)
{
ik=k+1;
while((ik<N) && (fabs(a[ik][k])<epsilon)) ik++;
if(ik<N)
{
for(j=k;j<N1;j++){swap(&a[k][j],&a[ik][j]);}
ak=a[k][k];
p=-p;
}
if(ik>=N)
{
printf("ピボットが零です ! \n");
*sw=FALSE;
goto owari;
}
}
det=det*ak;
for(j=k;j<N1;j++) a[k][j]=a[k][j]/ak;
for(i=0;i<N;i++)
{
if(i!=k)
{
aik=a[i][k];
for(j=k;j<N1;j++) a[i][j]=a[i][j]-aik*a[k][j];
}
}
}
det=p*det;
owari:;
}

ていうか実は参考書のまんまに打ったプログラムなんですが、
C用だったのでC++はだめなんですかねぇ?できればポインタとか
使わない分かりやすいプログラムが欲しいです。。。
追う気にはならんが、C用のソースならそのままC++で通るはずだけど。
489デフォルトの名無しさん:02/02/27 00:57
荒しですか?
>484
で、何がうまくいかないの?
491デフォルトの名無しさん:02/02/27 04:33
>>490
人生
492デフォルトの名無しさん:02/02/27 04:33
>>490
ご飯ですよのふたがうまく開かない。
>>490
「自力で作ろうとしたけど挫折しちゃった。テヘ♥」
じゃなかろうかと。
494_:02/02/27 12:19
識別子って何文字までいけるの?
>>494
Microsoft 固有の仕様 →

ANSI 規格では、外部識別子として 6 文字、内部 (関数内) 識別子と
して 31 文字までの名前が有効ですが、Visual C++ コンパイラでは、
外部識別子は 32 文字、内部識別子は 247 文字までの名前が有効です。
ANSI 規格との互換性を確保する必要がないときは、/H (外部識別子
名の長さを制限するオプション) を使って、このデフォルトをより小さな
値に変更できます。

← Microsoft 固有の仕様
496デフォルトの名無しさん:02/02/27 12:43
誰か247文字の関数とか作ってください。templateは抜きで。
497 :02/03/01 11:13
>496
void aaaaaaaaaaaa(中略)aaaaaa(void);

頭、大丈夫か?

498デフォルトの名無しさん:02/03/01 13:31
.NETの購入案内が来ました。(2週間前くらいですけど)
買いですか?
それともVC6.0で十分ですか?
499デフォルトの名無しさん:02/03/01 13:33
>>498
俺は郵便受けから取り出した瞬間脊髄反射的に捨てました。
>>499
燃やせ
FindFirstFileでファイル情報を構造体に受けたんですが、
そのファイル情報を使って検索したファイルがフォルダかどうか判定したんですけど
なぜかちゃんと判定したり判定しなかったり。

なんちゃら(失念)AttributeDirectoryじゃはんていしきれないのでしょうか?


501はくだけちった!
501はくだけちった!
501はくだけちった!
503501:02/03/01 23:52
漏れの素ボケか?
まじでわからん。
たしけて。
しかし504にまわりこまれた!
しかし504にまわりこまれた!
しかし504にまわりこまれた!
>>503
検索しろホゲェ
505教えて:02/03/02 00:14
MFCのDLLで作成したクラスを、MFCのEXEで作成したクラスを呼ぶと、
コンストラクタとデストラクタがLNK2001となります。
どうしてだか教えてください。
あなたの質問がよくわかりません。
どうしてだか教えてください。
しかし505の日本語は通じなかった!
しかし505の日本語は通じなかった!
しかし505の日本語は通じなかった!
翻訳ソフト?
509デフォルトの名無しさん:02/03/02 00:51
はいはい、ネタは他所でやってね。ここ質問スレだから。

505 の内容の予測:
 「MFC を使ったクラスを作って DLL にしました。ところが、
  このクラスを他から使おうとすると LINK エラー 2001 に
  なります。どうしてでしょう?」
予測に対するヒント:
 「DLL に置いたクラスはエクスポートされていますか?」
>>501
普通はできるからね。10人中99人は「君のやり方が間違っている」と言うと思うよ。
>510
(;´д`)ノ せんせぇ〜、一人頭9.9人の影分身ですかぁ〜?
そのノルマはデスマーチ中の体にはきつすぎると思いま〜す。
512501:02/03/02 02:19
うむ。
ありがとう。
513デフォルトの名無しさん:02/03/02 09:51
マウスの左ボタンが"押されている"かどうかを、
WM_LBUTTONUP/WM_LBUTTONDOWN 系の処理を使わず、
(できればAPI1つ呼ぶだけで)取得できる方法はあるでしょうか?
514デフォルトの名無しさん:02/03/02 10:02
>>513
GetKeyStateみたいな仮想キーコードを
取得するAPIで、VK_LBUTTONやVK_RBUTTONを
見るってのは?
515513:02/03/02 10:20
>>514
 有難うございます。その方法でいけました。(^^)
GetKeyState(...)って、シフト取る時位しか使わないと思ってました。
勉強不足でしたね。逝ってきます。
516デフォルトの名無しさん:02/03/02 20:30
VC++って、Cも使えるんだよね?
Cだけの知識で、C++は知らなくてもアプリ作れるんだよね?
>>516
はい。
518デフォルトの名無しさん:02/03/02 21:04
んでは、Cだけ1ヶ月勉強して、すぐVC++買って遊ぶ、というのもありですね?
C++覚えてから買おうと思ってたけど、C++って結構時間かかるそうなんで。
>>518
> んでは、Cだけ1ヶ月勉強して、すぐVC++買って遊ぶ、というのもありですね?
VC++ で Win32 アプリケーションを作って「遊べる」ようになるのは、C 言語だけで
はなく Win32 の仕組みを知る必要があるぞ。そっちの方が大変。
VC++でもCはできるよ
Cの開発環境としてもVCはとても使いやすい
>>520
でも主要ライブラリがC++向けだよね・・・・
数時間前にscribbleを見ながらVCを触ってるんだけど、
ビルドするプロジェクトタイプに、デバッグとリリースの二種類
あるって書いてあります。テスト版と製品版の違いのような
ものだろうと想像してるんですが、プログラム的にはどう違うんでしょう。
デバック情報が付かないだけですか?
>>522
だと思うけど・・・
デバッグモードでデバッグしてバグがなくなったらリリースでビルド。配布。
分厚い「プログラミングWindows」を読んでがんばる、と。
525デフォルトの名無しさん:02/03/02 21:19
>522
あと重要な違いとして、メモリの配置とかが違ってきます。
それでデバッグでは動くけどリリースでは動かない!なんてバグが
出てきたりするので、最終的にはリリースできちんと動いてデバッグ
終了とした方がいいですね。
526522:02/03/02 21:32
>>523 >>525
レスさんきゅ。とりあえず今の状態(scribble見ながら)ではデバッグ
タイプつーことですね。

さて、僕の最初の山場はどの辺でしょうね。BCBでのWindowsアプリ
経験は1年ぐらいです。Doc/Viewモデル?に慣れるのに苦労しそうです。
デザパタ本か解説HPかなんかでObserver Patternを調べとくと吉。< DocView
>526
もはや手遅れのようだが
アマチュアがGUIアプリ作るなら
VC&MFCのメリットはまるでなし。
VBかC++Builder,Delphiにしとけ。
529522:02/03/02 22:26
>>527 はーい。混乱してきたら調べてみます。
>>528 手遅れなんて言わないでよー。4月からプロを目指さなきゃ
いけないのに。

今のところMFCでズガーンってMDIアプリが出来ちゃうのにはすごいと思ったけど
作られたファイルにセミコロンなしの文(MESSAGE_MAP)にはビビッた。
怖いなVC!
cl /Eでフィルタリングして MESAGE_MAP がどう展開されるか見てみれ!
あのーポインターをファイルマッピングで共有した場合、
そのポインターの示す先も共有されますか?
されません。
533デフォルトの名無しさん :02/03/03 01:56
>>529
継承とオーバーライドができればそんなに問題無いと思う。
534531:02/03/03 02:39
>>532
そうですかー
そういったことしたい場合どうすればいいんでしょー?
はあー
とーぜんー、ぽいんたーのー、さししめすさきもーー
共有めもりにー、おけばー、いいんでわーー?
>>534
別プロセスからファイルマッピングにアクセスした場合に
同じメモリアドレスにマップされる保証はない。

アドレスを持つんじゃなくて共有メモリ内のデータへのインデックスを
持つようにしとけ。

>>535は無視。
VC6.0enterprise editionかったんだけど

ヘルプがない。
どれをいんすとーるしたいいのかね?
msdnがヘルプをかねている
>>538
スマソ。
そしてありがとう。

ここの板の人やさしいニダ。
540API初心者の名無しさん:02/03/03 04:13
すいません、質問があります。

フロッピーやPCカードなどのボリュームシリアルを変更しようと思うのですが、
そのAPI関数がわかりません。

ヒントでいいので教えてください。
541537:02/03/03 04:24
スマソ。
ちょっといいですか。
そのmsdnで調べものしたんだけどちょっと詳しいことを調べようとすると
トピックが見つかりません などといわれてしまいます。

例:OFNHookProc

VC関連は全てインストールしたはずなのですが、、、
>>541
「検索」タブを使おう
>>540
SetVolumeLabel()

>>541
それはチミが書く関数名のとりあえず付けた名前だから
544 :02/03/03 07:04
>>540
SetVolumeLabel() はボリュームラベルは書き換えられるけど
ボリュームシリアルは書き換えられない。
つーか、他のスレで SetVolumeInformation って誰か書いてたろーよ。
まあ、MSDN には書いてないけどね。
(GetVolumeInformationならある。もちろん書き換えなんて出来ないが)
とりあえず、SetVolumeInformation とか、IRP_MJ_SET_VOLUME_INFORMATION を
google で検索してみるがよし。
簡単に出来ちゃ困ることだから、簡単には出来ないようにしてあるんだろう。

>>541
MSDNライブラリのインデックスは貧弱だから、キーワード(N)タブで見つからない奴は
検索(S)タブの方で探すと出てくることがある。
もちろん今回の場合 >>543 はタダの知ったか君で、
OFNHookProc もちゃんと見つかるぞ。
545543:02/03/03 07:13
うそ書いてすいません。
ListBoxってインデックス指定してストリングの更新ってできませんか?
とりあえずINSERTしてDELETEしてるけど数多いと重そう
>546
俺もDELETE→INSERT してるよ。
自動ソートとか、再描画は OFFにしておく。
548537=541:02/03/03 17:59
再セットアップしてみたんですがやっぱりできません。
設定がおかしいのでしょうか。。。

神はググレとおっしゃっているみたいです。
テレホ厨なのにどうしろと(泣)
>548
OFNHookProcなら普通にキーワード検索で出てきたよ。
MSDNで設定言っても特にないような気が。
google使うならそれでいいのだろうけど。
「検索」ではなくてキーワードのリンクをクリックしても
ページが表示されないって言ってるのか?
それはいくらがんばってもできないから、素直に検索タブ使え。
551537=541:02/03/03 18:56
>>549
>>550
ありがとうございます。
サブセットでドキュメント全部を指定したらできました。すいませんでした。

けど、
例えばですが、トピックGetOpenFileName(日本語のドキュメント)から
1番下の参照:OFNHookProcやOPENFILENAMEやSHBrowseForFolderの
リンクをクリックしてもトピックが見つかりませんと表示されてしまいます。
GetSaveFileNameはきちんと表示されます。

↑と、書こうとしたんですが、
リンクをクリックするときも左上のアクティブサブセットを
すべてのトピックにしないといけなかったみたいです。
解決しました。
まじでづんまぜん(涙声)
ありがとうございました。回線切って逝ってきます。


552デフォルトの名無しさん:02/03/03 20:11
MFCのウィザードを使わずに、MDIを実現する方法。
誰かわかるかたおられますか?
そう、ちょうどタブブラウザみたいな感じです。

マルチポストかよ。
554デフォルトの名無しさん:02/03/03 20:43
かんけーねーけど、あっちのスレで問題の答えがでてなくて、
1日置いてんだから、まるちぽすっていわないんじゃねーの?
1日置いたらってなんだよ。何ルールだよ。
つーかあっちでもスケルトンのソース見れって答え出ただろ。
556デフォルトの名無しさん:02/03/03 20:48
私も関係ないですけど、上に同調しますよ。
困っておられるんですから、威張っていないで
答えてあげたらどうですか?
現に、ほとんど知られてないようですし…。私も含めて。
それとも、「マルチポストかよ。」といいつつ、解ってないとか?
自作自演カコワルーイ
>>552=554=556
くだんねーことでageんな
559デフォルトの名無しさん:02/03/03 20:55
MDIのソースって見たことなかったんで、
見てみたのですが、新規作成のソース、って
クラスウィザードでも、見れないのでは?

>>552
いまどきMDIなんてカコワルイから<SDIでMIDIでも聞ける様にしなさい。
>>559
はぁ??質問内容がころころ変わる奴だな
562デフォルトの名無しさん:02/03/03 21:03
>>560
爆笑!まったく問題解決になってない。
読んでるだけでも面白いですね。
552のかた、MDIで何がしたいのですか?
ジサクジエンのage荒らしカコワルイ。
ネタにマジ略
このままでは放置決定してしまいますよ
こういう展開の常として、無意味にageてるヤツが犯人=悪。
もしかすると「ウィザード使わずに」ではなく「MFC使わずに」作りたいから
こっちで質問し直したのかも、と無理矢理好意的に解釈してみるテスト。
つーか文章の特徴で自作自演がもろバレなんですけど。<age犯
>>567
そうだろうな。
しかしウィザードとMFCの区別もつかず、あっちのスレでレスもつけず、
今までソースもみたことがなく、自作自演のage厨には
レスするだけ無駄かと。
>>566
たまたまキライな奴だけが sage で書いていたら、
「こういう展開の常として、無意味にsageてるヤツが犯人=悪。」
と書く奴ハケーン。

# 俺は マルチポスト教えて君=悪 と思っていて、age/sage はどうでもいい。
意外に人が居るんだな、と思ってしまった。
関係ないけど。
>>570
誰もお前の意見など聞いていないが?
573がぎりなく頭の言い男:02/03/03 21:32
タブブラウザのようにしたいなら
クライアント領域にタブこントロール貼りつけるだけだよ。
こりゃ確かに自作自演だろ。
なにせ擁護してるやつが一人として解決方法書いてない。
擁護する前に教えてやれよ(w
どこからどこまでが自作自演かも不明だな。
ファイル名 項目1 項目2 | ファイル名 項目1 項目2
ファイル名 項目1 項目2 | ファイル名 項目1 項目2
ファイル名 項目1 項目2 | ファイル名 項目1 項目2
ファイル名 項目1 項目2 | ファイル名 項目1 項目2

1つのリストビュー(エクスプローラ風表示)のコントロール上で
左のまとまりでソート、右のまとまりでソートしたいのですが
いい方法はないでしょうか。
ファイル名でソートしたり項目1や項目2でソートしたいんですけど。

577576:02/03/03 22:57
ソートしようとすると1行まるごとかわっちゃうんです。
>>576-577
…素直に2つのリストビューにした方がいいと思うぞ。
一個にまとめる理由が
「まとめて一個で選択させたいから」
なんだよな、こういう馬鹿な質問の動機って。
580576:02/03/03 23:58
>>578
ソートした後いろいろ処理するんです。
そのときは左と右を対応させて表示させてやりたいんです。(意味不明だと思いますが)
リストビュー2つだと項目が多い時(スクロールバーがあるとき)表示がずれてしまいます。

>576
ソートする時だけ別のリストビューにコピー→ソート→戻す
っつーか、そういう特殊なのは自前でソートすれ。
馬鹿な理由でないのはわかった。

・ListViewのソートオプションを外しておく。
・自前で内部的にソートして、表示したい順にリストに追加する。

でOK。
583576:02/03/04 00:21
実は581さんのやり方でやっています。
が、まともなソート方法を知らないのでもしかしたら
何かいい方法があるんでは?(関数に突っ込んで細工しておしまいとか)と思って質問させてもらいました。


すいません、バブルソートじゃクソほど時間かかりますよね(恥
「まともなソート方法」ってどんなのがありますか?
アルファベット順とかファイルサイズ順とかのソートです。
件数にもよるけどC的にやるならポインタ配列でも作ってqsortかけるので十分な場合が多いね。

リストビューにつっこむデータの件数が何万件もあるとはおもえんし。
>>581
VBじゃねえんだからよ。
586576:02/03/04 01:00
>>585
楽なので。
けど、あまりいい方法ではないですよね。
>>584
クイックソートですか。
やりかた調べるか、、、
あああ、STLの世界に誘いたい。
588576:02/03/04 01:28
>>587
???

というか僕に対してのレスじゃないか、、、
589デフォルトの名無しさん:02/03/04 02:43
火葬リストビュー使えば?
自前で好きなようにデータを持てるし、動作も速いし。
590576:02/03/04 02:56
>>589
調べる項目おしえてくらはい。

>>587
誘って。

ある行は赤に塗るとかしたいんだけどデバイスコンテキストなんたらがでてきてわからん。
ど素人にはきつい。
591デフォルトの名無しさん:02/03/04 05:01
今月末まで学生なんですけど、
今、アカデミックパックを買うと、
卒業後、追加料金とか必要になるんですか?
通常版買うべきっすか?
592デフォルトの名無しさん:02/03/04 09:25
>>583
バブルソートでも、数百〜数千くらいなら一瞬なんじゃねーの?
593デフォルトの名無しさん:02/03/04 09:27
>>591
追加料金はいらないとおもうけど、
確実に知りたいならMSにメールか電話で聞いたほうが確実。
594デフォルトの名無しさん:02/03/04 10:00
>>591

私も学生時代に買ったVC++5アカデミック版を今でも使っているな。
アカデミック版の注意読むと「購入者」の限定はあるけど、使用者
の限定はない(少なくとも、使用条件には「学生や教職員でなけれ
ばならない」という限定はない)んで「購入者本人が」使用を続ける
分には問題ない、と思うのだが。

基本的に「購入条件を満たす人が、条件を満たす買い方をしてその
まま使い続ける」のは問題ないのでは? もし、それを許さないの
なら別に特記すべきだし、契約条件にも「学生でなくなったこと」
を理由とする契約変更はなかったはず。

まあ、これは私の勝手な解釈だから、不安なら確認した方が良い。

C++ Builderは、アカデミック買って通常版(になるんだよね?)
にバージョンアップしたな。
595デフォルトの名無しさん:02/03/04 11:50
InitInstanceでWriteProfileIntで値を書き込んで,その値を
GetProfileIntで読んでからASSERTすると,失敗してしまうのは
なぜ?

教えて君でスマソ
596595:02/03/04 11:54
SetRegistryKeyをしていなかった...
鬱氏
>>592
比較・コピーのコードの書き方にもよるからな。
隣接交換法しかしらんとこ見ると、その辺の効率考えて書いちゃいないだろ。

598589:02/03/04 15:00
>>576
"仮想リストビュー"とか"LVS_OWNERDATA"の検索でどうぞ。

一行だけ赤くするなら"オーナードロー"とか"LVS_OWNERDRAWFIXED"
の検索でどうぞ。

仮想リストビューとオーナードローは同時に使えるよ。
つーかな、もう、std::sortつかえと。
600デフォルトの名無しさん:02/03/04 17:17
仮想リストビューを使って、データはSTLのコンテナクラスに持たす。
ソートにはstd::sort()を使う。これ最強。
601デフォルトの名無しさん:02/03/04 20:14
vc++勉強したての厨房ですが、
MFCはWin32APIの知識がないと理解できないものでしょうか? 
MFCはWin32APIの提供する機能をすべてカバーしているのでしょうか? 
またこれからはどちらを勉強するべきでしょうか?
教えてください。
602576:02/03/04 20:37
ううう、みなさんありがとうとざいます。
がんばります。

あえてあげ
603Windowsってそうなの?:02/03/04 20:55
いつもは、Solarisでプログラムを作っているものです。
えーと、
Windowsで、動いてるプロセスを強制終了させようと思って、
TerminateProcess を使っていたら、
Winな人から
「それ使うと、Windows上でリソースが残る事があるから使わないほうがいいよ」
って言われました。
プロセス死ぬんだから、そのプロセスが使ってたリソースを解放するのって、
OSであるWindows側がやってくれてると思っていたのですが....
私は、アボーンなのでしょうか?
あぼーん
あぼーん
あぼーん
605Windowsってそうなの?:02/03/04 21:23
あらー、そうなんだ。
んじゃ、他のプロセスからいきなりプロセスを強制終了させる時って、
Windowsじゃどうやるの?
もしかして、「そんな方法は無い」なんて落ちは無いですよね?
もしかして、もしかして、「そんなことを考える方が悪い」って落ちですか?


タスクマネージャのプロセスの終了、は、ズバリそれをやっている。

WM_QUIT送って10秒待っても応答がなかったら確認ダイアログを出して
TerminateThread。

最後の手段ね。

普通は終了イベントを通知する。
受け取り側が応答し泣けりゃ、最後の手段しかない。

NTだと割とまともにリソースが削除されてるようだが、
各種ドライバのできの悪さやIE/IMEがプロセスの終了を正しくハンドリングできずに
中途半端な状態になることがある。

Win9Xでは、こりゃもう、目も当てられない様だが、ね。
つまり、カーネルオブジェクトに関しては正しく解放されるが、
IE・IMEなどのWindowsの重要ないくつかのプロセスがうまくいかない場合があるってこった。

608Windowsってそうなの?:02/03/04 22:54
なるほど。
Windows2000や、XPなどのNT系カーネルで、Windowsの奥深くに入り込んで
いるアプリでない限りは、まぁ平気でしょうということですね。
Solarisなんかでもシステムコール実行中にハングしたプロセスに対して
SIGKILL送っても死なないことってあるから、そういう意味では、同じですね。

とりあえず、ちょっと安心しました。

609デフォルトの名無しさん:02/03/04 23:57
「プロジェクト」→「設定」→「一般」のMFCのスタティックライブラリを使用
が設定できなく共用DLLを使用にしかならないのですが、
使用しているものによって、設定できないと言うことはあるのでしょうか?

スケルトンを作成するところでも出ないのですが…
MS-VC++6.0のスタンダードです。
>>609
スタンダード版だとMFCはダイナミックリンクでしか使えんぞ。
611デフォルトの名無しさん:02/03/05 01:55
カリカリにダイエットしたコマンドライン型(コンソール)プログラムでも
書いてるなら別だが、普通のアプリはMFCダイナミックリンクで十分。
612デフォルトの名無しさん:02/03/05 02:00
>>601
マジレスだよ。

MFCはWin32APIの知識がなくても理解できますが、APIの知識があったほうが
ベターです。
 
MFCはWin32APIの提供する機能をすべてカバーしているわけではありません。
アプリの場面によってはAPIの世話になる場合があります。
 
MFC中心に勉強して、必要に応じてよく使うAPIから覚えていけばいいと思います。
613デフォルトの名無しさん:02/03/05 02:24
Unicodeに関して質問です。
プリプロセッサに_UNICODEをつけてUnicodeで動くモジュールを作成しました。
サーバ系(NT4.0,Win2000)ではうまくいったのですが、Windows98ではエラーになります。
Windows98でうまくUnicode版を作成できる方法はないでしょうか?
それとも、やっぱり無理ですか。
Windows云々より
リソースまできっちり解放して殺すスレッドライブラリなんて
見たこと無いが… こういうひとの作るプログラムは使いたくないな
615デフォルトの名無しさん:02/03/05 02:25
>>613
MSLU試してみたら。
616613:02/03/05 02:45
>>615
ありがとうございます。
今、MSLUで検索してみました。使えそうな気がするのでさっそく試してみます。
ううっ、でも、ひっかかったのは英語のページだけ…。解読作業が…。
617デフォルトの名無しさん:02/03/05 03:01
>>616
MSDNマガジン日本版No.20でMSLUの記事が掲載されてるからまずは日本語で読むべし。
http://www.ascii.co.jp/pb/msdn/toc/bn2001_index.html
618613:02/03/05 03:14
>>617
ラジャー。良かった。助かりました。これで何とか…。
619188:02/03/05 07:46
vectorのpush_backで自作のクラスのオブジェクトをベクターに
入れたいんですけど、入れたとたん、クラスのchar*メンバが
つぶれてしまいます。たとえば入れる前はmyClass.name="aho"
とちゃんと入っていたのに、入れた後にはmyClass.nameに意味不明の
文字がはいってます。どうしてなんでしょう?
620デフォルトの名無しさん:02/03/05 08:01
>>619
コピーコンストラクタと
代入ちゃんと作った?
621 :02/03/05 08:02
作ってません!代入とはどうやってつくるんでしょう?
myClassのポインタをvectorにいれたら
623 :02/03/05 08:12

なるほど そういう手もありました!
624デフォルトの名無しさん:02/03/05 09:33
VCのコンソールアプリで
gets(buf)
とすると入力でブロックされてしまいますが
for(;;){
if(foo()) gets(buf);
...
}
のようにキーボードから入力があったときのみgets()して
それ以外のときは別の処理を行うということはできるでしょうか?
素直にマルチスレッド化しなさい。
>>624
入力が標準入力でなくてよかったら_kbhit()が使える。
627デフォルトの名無しさん:02/03/05 11:41
あるクラスのメンバにテンプレートクラスを指定したいのですが。
ヘッダファイルで、

class Choge<float> *m_hoge;

のように指定すると、以下の2つのエラーが出ます。
error C2059: 構文エラー : '<'
error C2238: ';' の前に不正なトークンがあります。

なお、Cファイルでは、Choge<float> *m_hoge; の宣言で問題なく使えます。
ヘッダでエラーが出ないようにうまく記述する方法はないでしょうか。
628 :02/03/05 12:29
クラス名にポインタって使えるの?
メンバの宣言なら別に class と書く必要ないのでは?

class foo {
CHoge<float> *m_hoge;
};
じゃないの?

中にclassを書くときは

class foo {
class inner { };
int bar(inner &x);
};

みたいな定義をしたいときだけでしょ。
630627:02/03/05 12:53
>628 へ? 使えるでしょ。普通に。

>629 MFCでやってるんで、ヘッダのインクルードはCファイルでやって、
クラスの定義で他のクラスを使うときは class キーワードを使うように
してるんですけど。
答え:Cファイルだから
632627:02/03/05 12:59
うーん。CHogeを使用したいクラスの定義前に、CHoge の定義ヘッダを
インクルードすればいけますね。
でも、クラスを相互参照するときに、条件コンパイルで相互ヘッダ参照を
しないようにしてやらんといかんくなる。
すっきり書けないものですかね。
だったら先行宣言だけしろよ。

class A;
class B {
A *pA_;
};

class B;
class A {
B *pB_;
};

テンプレートかどうかは全然関係ないだろ、それ。
634627:02/03/05 13:30
いや、テンプレートクラスの場合にうまくいかないって話なんですけど・・・。
もともとテンプレートというもんはそういうものだ。
先に定義を読み込む必要があるだろ?
>>627
テンプレートクラスも前方宣言できなかったっけ?

template <typename T> class Choge;
637591:02/03/05 20:21
>>593-594

アドバイスありがとうございます。

MSのサイトに、
他の、学校の一括購入用ライセンスでは、
学生個人のPCにインストールした場合は、
卒業後も、そのまま使って良いと明記されているんですが、
アカデミックパックについては詳細が書かれていませんでした。
(MSのサイトの構成って本当に情報を探しづらいですよね。)

なかなか電話も繋がらないし、もう時間もないし面倒なので、
そのまま使っても良いことにしちゃいます。
MSに怒られたら、バージョンアップなりなんなりすることにします。

詳しく書いていただいてどうもです。
638デフォルトの名無しさん:02/03/05 21:43
壁紙を変更するプログラムを作っているのですが,

SystemParametersInfo(
 SPI_SETDESKWALLPAPER,
 0,
 szPath, //壁紙のパス
 SPIF_UPDATEINIFILE | SPIF_SENDCHANGE
);

としても,変更できません。
GetLastErrorでは,120(ERROR_CALL_NOT_IMPLEMENTED)が返ってきました。
「この関数はこのシステムではサポートされていない。」ということらしいのですが…。

全く原因が分かりません。誰か助けてください。
環境はWin98, VC++6.0, IE5.0SP2です。よろしくお願いします。
639627:02/03/06 08:35
>636 その他みなさん。
その記述で逝けました。ご迷惑おかけしました。クラス定義名をそのまま
書いてやればよかったのですね。
普通のクラスの場合と違って、メンバ宣言時でなくて、あくまでもクラスの
定義前の先行定義としなければならないってとこがポイントでしょうか。
MFCです。文字列の2次元配列を動的に生成したいと思うのですが、

CStringArray *MyArray = new CStringArray[n];
for(int i = 0;i < n;i++) MyArray[i].SetSize(m);

とやっても問題ないですかね。vector、もしくは普通のやり方がいいかな?
>>638
一応解決はできたんですが、

void foo()
{
 SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "wall.bmp", 0)
}

とするとエラーになって、

void foo()
{
char name[] = "wall.bmp";
 SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, name, 0)
}

とすると正常終了する理由がよくわかりません…
VC++のツールバーにある文字を検索する欄に記憶された
文字を全部消去する方法教えてください。
643501(ハクティ):02/03/06 22:03
プログラマはじめて3ヶ月ではじめてビット演算を知りました。


鬱だが逝かん。
644DLLが変です:02/03/06 22:12
この板には、いつもお世話になってます。
DLLなんです。
winsockを使ったDLLなんです。
このDLLを使ったアプリケーションが、どんどん遅くなるんです。
UDPのソケットを作って、クローズしてってのを何百回もやるんです。
そうすると、どんどんアプリの実行速度が落ちていくんです。
なんで?
>>641
SystemParametersInfoの第3引数は非constだってことと関係があるのかも。
もっとも、それだったらコンパイルの時点で文句いわれそうだが。
あと、俺だったらパスはフルパスで指定するな。
堕ちる〜 堕ちる〜
OSごと逝ったー(゚∀゚)
647デフォルトの名無しさん:02/03/07 05:55
メンバ関数テンプレートって
インスタンス生成時に型選べないの?

template<class XXX>
class CCC
{
func();
}

template<class XXX>
void CCC<XXX>::func()
{
XXX i;
}

上記の関数にさらにテンプレートを追加して
template<class XXX>
void CCC<XXX, YYY>::func()
{
XXX i;
YYY *p;
}
みたいなことはできないんですかね・・・


それとヘッダーにプロトタイプ宣言だけして
ソースにコード記述したいけど
エラーになってしまいますが仕様ですか?

しょうがないのでヘッダーにクラス宣言とコード記述してます・・・
誤 インスタンス生成時に型選べないの?

正 インスタンス生成時にしか型選べないの?
>>645
>>あと、俺だったらパスはフルパスで指定するな。
フルパスじゃないとプログラムで
ファイルダイアログなんか使うとパス変わりますからね

っていうかフルパス以外怖くてできないや
>>647
意図が良くわからないんだけど、
> template<class XXX>
> void CCC<XXX, YYY>::func()
> {
> XXX i;
> YYY *p;
> }
その記述で、どうやって YYY の型を指定するんでしょう?

> それとヘッダーにプロトタイプ宣言だけして
> ソースにコード記述したいけど
> エラーになってしまいますが仕様ですか?
VCの仕様です。諦めてください。
落ちる落ちる〜俺たち
アプリの作業データもそのままに

いつかデバッグできたら
キミに昔のバグ打ち明けられるだろう〜
652トムさん:02/03/07 08:16
SQLを実行させようと思いまして下記の様にコーディングしましたが、
"\'m_Com1\'" を読み取ってくれません。シングルコーテーションの中では
なくて、’’も含めて読み取りたいのです。どなたか教えて下さい。
ちなみに、m_Com1はメンバ変数です。

CString strSql = "Select timem,exp,tostn from jikoku where ";

if(m_Com1 == ""){
strSql+= "Stn = " + "\'m_Com1\'" + " AND ";
}else if(m_Com2 == ""){
strSql+= "Goto = " + "\'m_Com2\'" + " AND ";
}else if(m_Com3 == ""){
strSql+= "Day = " + "\'m_Com2\'" + " AND ";
}
strSql+= "Timeh = " +m_ji;
m_Recordset.Open(CRecordset::dynaset,_T(strSql));
UpdateData(true);
m_Recordset.Requery();
strSql+= "Stn = " + "\'" + m_Com1 + "\'" + " AND ";
654マルチポスト止めれ:02/03/07 08:45
どうでもいいが
if(m_Com1 == ""){
strSql+= "Stn = " + "\'m_Com1\'" + " AND ";
}
m_Com1が空なら m_Com1 を足すのか?面白いな。
655デフォルトの名無しさん:02/03/08 15:09
C用に作ったライブラリをC++から使おうとしたらコンパイルエラーになりました。
ライブラリで使用している構造体の IUnknownVtbl メンバが原因です。
その構造体を宣言しているヘッダのコンパイルでエラーになります。
IUnknownVtbl はC用のインターフェイスなので当然ですが何とか簡単な修正で使用できませんか?
C++は専門じゃなく良く分からないので教えてください。

/---------------------------------------------------------------------/

UNKNWN.H 内での定義はこんな感じ

#if defined(__cplusplus) && !defined(CINTERFACE)

#else /* C style interface */

  typedef struct IUnknownVtbl          // C用なのでC++でのコンパイルが通らない!
  {
  }

#endif

/---------------------------------------------------------------------/


エラーの内容は?
657デフォルトの名無しさん:02/03/08 18:12
VC++6 を使っています。
今までコマンドラインでコンパイルしてきたんですが、VC6 の IDE を使ってみようと思ったらいきなりトラブルに遭遇しました。

API 呼び出しで例外で落ちてしまうんです。

RegisterClassEx なのですが、多分 User32.dll 内に一致するシンボルが見つからないのではないかと思う
(デバッグしてみたら、
C:\WINNT\system32\USER32.DLL' をロードしました、合致するシンボル情報は見つかりませんでした。
と出ているので)
ですが、どうしたらいいのでしょうか?
>>657
> C:\WINNT\system32\USER32.DLL' をロードしました、合致するシンボル情報は
> 見つかりませんでした
それは USER32.DLL のデバッグシンボルが見つからないと言ってるだけだから、
気にしなくても構わん。いちおう MS のサイトからデバッグシンボルをダウンロー
ドできるけど、一般のアプリケーション開発者にとっては、あまり有用じゃないぞ
(デバイスドライバ作ってる人間には必須だけど)。

http://www.microsoft.com/ddk/debugging/symbols.asp

> API 呼び出しで例外で落ちてしまうんです。
単に、RegisterClassEx() で初期化してないポインタを渡してるんじゃないの?
前後のソースを Copy & Paste してみ。
659657:02/03/08 18:54
>>658
なるほど、シンボルがなんとかっていうのは関係ないんですね。

> 前後のソースを Copy & Paste してみ。

とりあえず↓のような感じです(不要なものは全部取っ払って試しました)
よろしくお願いします。

// ProjectA.cpp : アプリケーション用のエントリ ポイントの定義
//

#include "stdafx.h"

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

// 藤堂: 本当はクラスのスタティックメンバ
HINSTANCE s_hInstance = 0;
char s_szClassName[] = "testwnd";

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPreInst, LPSTR lpszCmdLine, int nCmdShow)
{
  s_hInstance = hInstance;
  
  HWND m_hWnd;
  
  // ウィンドウクラス登録開始
  WNDCLASSEX wndClass;
  
  wndClass.cbSize = sizeof (WNDCLASSEX);
  wndClass.style = CS_HREDRAW | CS_VREDRAW;
  wndClass.lpfnWndProc = WndProc;
  wndClass.cbClsExtra = 0;
  wndClass.cbWndExtra = 0;
  wndClass.hInstance = s_hInstance;
  wndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  wndClass.hIconSm = NULL;
  wndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
  wndClass.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);
  wndClass.lpszClassName = s_szClassName;
  
  if (!::RegisterClassEx(&wndClass))
  {
    //std::cout << "RegisterClassExに失敗。";
  }
  return 0;
}
長すぎるので ウィンドウプロシージャは省略します。
>659
とりあえず、wndClassを最初に0クリアするか、
lpszMenuNameをちゃんと設定してみてはどうだろう。
661659:02/03/08 21:09
>>660
うぎゃぁ!そ、それ(lpszMenuName) でした…。
そんなメンバがあるって知らなかった。やっぱりゼロクリアはちゃんとするものですね…。

コマンドラインでコンパイルしている限り発生しなかったのですが、ディフォルトでスタックに確保したメモリをクリアしてくれてたんですね。

ありがとうございました。もっと精進します。
標準出力や標準エラー出力を開発環境上でリアルタイムで見る方法ってないでしょうか?
VB のイミディエイトウィンドウみたいな感じのもので。
>>661
たぶんデバッグビルドにしてるからじゃない?

コマンドラインからコンパイルする場合でも /GZ とか使うとチェック入るぞ。
ウィンドウプロシージャで正しい終了の方法がわからない・・・。
WM_CLOSEで色々試しててWinXP落ちた・・・鬱だ・・・。
665662:02/03/08 22:41
>>664
WM_CLOSE で DestroyWindow して WM_DESTROY で PostQuitMessage ではないでしょうか?
>>665
そうしてたらウィンドウが閉じなくなったんでPostQuitMessage呼んで見た。
2〜3回起動終了してたら落ちたよ藁
VCが止まる。タスクマネージャも起動せず。
XPだとVC動かないのか?
>>667
Anti Virus 系のソフトを動かしてるなら、止めてみる。なんか Notron AntiVirus
動かした状態で VC のデバッガを立ち上げると死ぬことがある、とか ML で報告
されてたよ。
何もこれといって動かしてないんだが。
SP4なのが原因かと思ってとりあえずSP5落としてみた。
なおるといいなぁ・・・。
670VC@2日目:02/03/09 18:06
VCはじめて2日の超厨房です。
クリップボードから文字列を取得して、リストビューに吐き出す。
というのを作ってるのですが、うまくいきません。

クリップボードからデータは取得できるのですが、
リストビューに追加するタイミングで、文字列がおかしくなります。
おかしくなる。というのは、例えば「プログラミング」という文字列のはずが
「%d4」になってしまう。という状況です。

コードを載せておきます。

typedef struct tagClipData
{
LPSTR Strings;
LPSTR ConstStrings;

} ClipDat;
ClipDat ClipData[98];

void ChangeClip()
{

LPSTR pPtr;
HANDLE hMem;
ClipDat NewDat[98];

OpenClipboard(NULL);
hMem = GetClipboardData(CF_TEXT);
pPtr = (LPSTR)GlobalLock(hMem);
GlobalUnlock(hMem);
if (NextViewer!=0) SendMessage(NextViewer, WM_DRAWCLIPBOARD, 0, 0);

NewDat[0].Strings = pPtr;
for(int i=1;i < 99;i++){
NewDat[i].Strings = ClipData[i - 1].Strings;
}

for(i=0;i < 99;i++){
ClipData[i].Strings = NewDat[i].Strings;
}
}

void ShowMain(BOOL booCenter)
{
LV_ITEM item;

ListView_DeleteAllItems(hList);
for(int i=0; i<99;i++){

item.mask = LVIF_TEXT;
item.pszText = ClipData[i].Strings;
item.iItem = i;
item.iSubItem = 0;
ListView_InsertItem(hList, &item);
}

}
671デフォルトの名無しさん:02/03/09 18:24
>>670
GlobalUnlock()をコールしたら、GlobalLock()で取得したポインタの
指す内容は無効になってしまう可能性がある。
文字列をバッファにコピーしてからGlobalUnlock()をコールしる。
672デフォルトの名無しさん:02/03/09 20:02
全てのWindowに対するキー入力を取得するアプリって、どうやったら作れますか?
たとえば、タスクトレイに常駐して、一日で何回キーボードを叩いたかを
計測するアプリのようなものです。
キーボードドライバでも作れば?
本物のキーボードドライバに透過的にイベントを投げるやつ。
DDK嫁
>>672
フックするDLL作成して、システムにひっかける。
DLLにして呼び出さないとシステムに掛からないので注意。
XPでVCからプログラム実行すると運が悪いとハングするYO!
実行ファイルは直接起動でブレークポイント意味無しかYO!
SP5いれてもハングしたYO!
一番いたいのはタスクマネージャすら起動しないことだYO!
 デバッグの時、deleteでポインタのメモリを開放してやるとエラーがでま
す。リリースなら問題ないのですが、これって解決策あります?
>>676
何か問題があるからエラーが出ているんだろうと初心者ながらに思ってみる。
678ATL:02/03/09 23:52
ATL+COMウィザードを使って、COMコンポーネントを作ろうとしてるんですが、
ATLシンプルオブジェクトを追加=>methodを追加=>dllを作成のところでどうしても
コンパイルエラーになってしまいます。

error C2259: 'CComObject<class CMyMsg>' : 抽象クラスあるいは構造体のオブジェクトが宣言されています。

追加したメソッドはこんな感じです。

interface IMyMsg : IDispatch
{
[id(1), helpstring("メソッド MyView")] HRESULT MyView([out, retval] char* cmsg);
};

// IMyMsg
public: STDMETHOD(MyView)(/*[out, retval]*/ char* cmsg);

抽象クラスになんかしてないのに。
>>676
どういうソースでどういうエラーが出るのか書かないとわからねー
CMyMsgに、MyViewのメソッドが実装されてないんだろ。
つか、そのMyViewは激しくCOM規約違反。
681ATL:02/03/10 01:13
>>680
実装はしてます。return S_OK;だけだけど。

というか、ひょっとしてchar*のせいかしら・・・
引数の型とか数が合ってなかったら笑いsage
683ATL:02/03/10 16:24
できまいた。
BSTR、CComBSTR ちゅうことでしたあ。
LOWORD と HIWORD をつかって取り出した WORD 値二つを
もう一度元の DWORD 書き込みたいのですが、
そういうマクロはありますか?
685 :02/03/10 18:51
MAKEPARAM
その手のマクロはSDKのサンプルを読んでると出てくるよ。

暇なときに開いて眺めてみるとよいかも。
687684:02/03/10 20:41
>>685-686
なるほど、この用途の為の専用のマクロまであるんですね。
ありがとうございます。
688超先生@プログラム板:02/03/10 20:53
>>685
  ∧_∧
< `ш´>y-~~~ MAKELONGの方が適切じゃないのか?
>>688

俺もそう思ったが>>684の文脈からすると必要なのはMAKEPARAM(MAKELPARAMだっけ?)だ

>>688
うわあ! 超先生、何でこんなところにいるんですか!
僕と一緒に葉鍵板に帰りますよっ!^^;
691デフォルトの名無しさん:02/03/11 02:51
STLportをVC++6にインストールする方法がわかりまへん。ズビシとVC++6オンリーの
インストール解説なんぞどこにあるですか。
ドキュメント嫁

どっかのディレクトリで
nmake -f vc6.mak clean install
でOKだったとは思うが。
>>692それでいける。
vcvars32.bat必須だけど
>>692
STLport 付属の iostream 使わないなら(UNICODE 関係とか腐ってるし)、
そもそもコンパイルも不要だし。ヘッダだけ適当なディレクトリに置いて、
そこを見るように VC6 を設定すればおしまい。
>>694
UNICODE関係直ってるが?
治っているというか、元からマトモだったっぽいが
char_traitsがいまいちだったのでは?
質問です。
関数とか打ち込むと(などを押した時に引数リストなどが表示されますが、
OS再インストなどで入れなおした場合、インスト前作った適当なプログラムで
関数とか入力した時の引数とか表示されなくなるんですが表示する方法ありません?
自作関数の引数とかは出るけど何故かWinAPI系は表示されないし・・・。
699デフォルトの名無しさん:02/03/11 08:46
>>698
リビルドしてもダメか?
700698:02/03/11 09:13
>>699
リビルドしたらいけました・・・。
どうもです・・・。
701デフォルトの名無しさん:02/03/11 09:48
-----------------------------------------------------

Microsoft Visual Basic .NET Standard
通常パッケージ
12,800円
4月19日(金)

Microsoft Visual C# .NET Standard
通常パッケージ
12,800円
4月19日(金)

Microsoft Visual C++ .NET Standard
通常パッケージ
12,800円
4月19日(金)

-----------------------------------------------------


どれを購入するのがいいでしょうか?
MSの一押しはC#ですかね?
でもビジネスで役立つのはVB?
(都会は知りませんが地方での仕事は8割がたVB6.0です。)

う〜ん。
それよりも動作環境がXP・2000・NT4ってのが痛い。
自分は98です。
XPはVC++と相性が悪いようなので.Net専用にXPインストール済みの
超激安PCを購入しようかな〜
702デフォルトの名無しさん:02/03/11 12:45
>>701
私も、VC++を使った仕事に色目を出してるが、
現実はVBの仕事が100%。それを考えると、結局
VBだけあればいいことになる。

それよりも、OSが98では、仕事をするのは辛くないですか?
できればVS.NETスレでやって欲しいなーなんて。
ソースの公開されているライトウエイトなウインドウクラスライブラリないですか?
MFCのようにフレームワークを形成してないで、
ちょっとウインドウをいじるのに便利な程度に軽くラッピングしてあるだけでいいのですが。
705デフォルトの名無しさん:02/03/11 19:00
age
>>704
ATL/WTL
>>706
ATLみたいにコントロールもラップするほど大げさなものじゃなくて、
あくまでウインドウをラッピングしているものです。
>>707
だから ATL の CWindow か(メッセージマップを使いたければ)CWindowImpl
が、目的に合致すると思うが。
あるウインドウを破棄すれば、そのウインドウに所属する子ウインドウはすべて自動で破棄されますか?
普通は子ウィンドウにもWM_DESTROYが送られます。
712デフォルトの名無しさん:02/03/13 13:18
http://www.microsoft.com/JAPAN/developer/library/jpwinpf/_win32_entercriticalsection.htm
::EnterCriticalSection()が出す例外「STATUS_INVALID_HANDLE」を
捕まえるにはどうしたらいいんでしょうか?

#define STATUS_INVALID_HANDLE ((DWORD )0xC0000008L)

としか定義されてないので、どんな型で捕まえればいいのかさっぱり。

try {
  ::EnterCriticalSection(&m_oCriticalSection);
}catch (void*){
  assert(0);
}catch (char){
  assert(0);
}catch (long){
  assert(0);
}catch (int){
  assert(0);
}catch (DWORD){
  assert(0);
}catch (...){
  assert(0);
}

こうやって、どれで捕まるかなーとやってみたら、捕まえたのは最後の(...)でした。
(...)で捕まえた例外の種類を判別する方法とか、ありませんかね?
>>712
構造化例外って奴か?
catchブロック内からGetExceptionInformation()とかで例外情報取れないかな?
# 実際やった事は無いんで外してたらごめんよ
SEHとC++例外の区別がついていないひと、ハケーン。
715713:02/03/13 15:23
>>714
EnterCriticalSection()がSEH投げてるんじゃねーの?って事なんだけど。
# つーか煽るだけかい

で、VC++のヘルプにこんなんあったよ。

>カスタム変換関数を指定するには、変換関数の名前を唯一の引数として
>_set_se_translator 関数を呼び出します。カスタム変換関数は、try
>ブロックを持つスタックで関数が呼び出されるたびに一度だけ呼び出されます。
>デフォルトの変換関数がないので、_set_se_translator を呼び出して変換
>関数を指定しないと、省略記号付きの catch ハンドラしか C 例外をキャッチ
>できなくなります。
716713:02/03/13 15:24
書き忘れた。
713で書いたとおり俺はあまり詳しくないので、ヘルプの「例外処理機構の
使い分け」辺りを参照してくれ。
TrueTypeFontのGlyphIndexについて質問。

GetGlyphOutlineを使うときGlyphIndexに、SJISコードを与えてもだめですか?
UNICODEにしないとだめなんでしょうか?

よろしくおねがいします。
GetGlyphOutlineWはUNICODE
GetGlyphOutlineAはその時のロケールに依存
719717:02/03/13 18:46
>>718
ありがとうございます。
#pragma setlocale("jpn")
で正しく表示されました。

しかし、UNICODEにしたほうがよさそうですね。
720デフォルトの名無しさん:02/03/13 20:02
>>713-716
ありがとうございます。構造化例外(SEH)とC++例外なんて、初めて知りました。
とりあえず、
http://www.microsoft.com/japan/developer/library/dsmsdn/deep03162000.htm
にえらく詳しく解説してありましたので、ここで勉強します。
721デフォルトの名無しさん:02/03/13 20:03
ダイアログで作成したフォルダに、
メニューをつけて、バージョン情報を開きたいのですが
可能ですか?
722712(=720):02/03/13 20:04
す、すみません。数字ハン入れ忘れて分かりにくくした上、ageちゃって。
723721:02/03/13 20:04
ごめんなさい。フォルダじゃなくてフォームです。
724721:02/03/13 20:15
分かりました。
ResouseViewのところで追加をすればよかったのですね。
725522:02/03/13 20:56
お久しぶりです。何とかscribbleぐらいのプログラムは何も見ないで
作れるようになりました。勝手ながら感想と質問を述べさせてもらうと
1.MFCはクソクソと一部で言われていますが、まだそこまで到達できてません。
MFCのデザインパターンとかが嫌われてるんでしょうか。

2.BCBに比べてVCのエディタはすごい。入力補完はかなり助かります。
でもたまにスペルミスもしてないのに出てこない(CTRL+ALT+Tでもだめ)

3.MSDNでうまく検索できない。
ドキュメントが変更されて、閉じようとしたときに保存を促すメッセージを
出そうと思ったんでが、MSDNでは見つけれず・・・。
SetModifiedFlag(買った本に乗ってた)。この辺のコツは無いでしょうか。
一度だね、
薬だと思ってね、
MSDNのツリーをぽちぽち開きながらどんなウィンドウメッセージがあるのか
全部眺めてみなさい。

WM_だけじゃないよ。
たくさんあるよ。

でもきっといつか役に立つよ。
1 ほかの言語やフレームワークをしばらくさわってみる
2 そう。で?
3 経験
>>725
何も見ないで作れるか、すげーな。
リファレンスも見ないのか?
729522:02/03/13 22:12
>>726-727
やっぱ時間に経験っすか。コツコツ頑張ります。

>>728
>リファレンスも見ないのか?
はい、scribble程度の物は何も見ないですね。エディタの補完機能で
薄っすらと覚えてれば何とかなります。っていうか、覚えるために
何度も同じようなの作ったし。
20年前の自分を思い出す..
>覚えるために 何度も同じようなの作ったし。
激しく無駄。
若いうちはそういうのもありだろ。
733年中無休で働き続ける男:02/03/14 11:48
WindowsXP vs Windows2000

どっちが優れていますか?
板違い
735デフォルトの名無しさん:02/03/14 13:39
age
MFCです。ビューからモーダルダイアログを呼び出しているのですが、
ダイアログ上のコントロール(例えばボタン)から呼び出し元のビューに
メッセージを送りたいのですがどのように実装すればよいでしょうか。
737デフォルトの名無しさん:02/03/14 18:20
[MFC AppWizard(DLL)]にて作成しているDLLで、ActiveXコントロールを
使用したダイアログを使いたいのですが、作成出来ません。
#DoModal()でエラー(戻り値-1)が発生します。

ご教授願えませんでしょうか。
>736
ビューのポインタなりウィンドウハンドルなりを使ってSendMessageするだけですが。
それともビューの方でどうやって受け取るかって話?
CoInitializeを呼んでないとか。
740737:02/03/15 13:13
自己レスです>>737
InitInstanceの中でAfxEnableControlContainer()を
コールする事で解決しました。お騒がせしましたm(_ _)m
>738
ビューのポインタを使って SendMessage しました。
クラスウィザードでユーザメッセージを如何に定義するかが分かりませんでした。
全部(マップ、ハンドラ)自前で書いてやらないとダメなのですね。
一応できたのですが、次使うとき忘れてそうなので、まとめとかなきゃ。
742デフォルトの名無しさん :02/03/15 18:38
関数呼び出し前と関数呼び出し後のメモリ状態などを調べる方法ってないですか?
関数内でヒープなどからメモリを取得した場合に関数から抜ける時点で正常にメモリが破棄されているかチェックしたいです。
呼び出し前にヒープの状態を記憶しておいて呼び出し後のヒープの状態と比べることって出来ますか?
743超先生@プログラム板:02/03/15 18:45
  ∧_∧      
< `ш´>y-~~~ 方法はいろいろあるが。
_CrtMemCheckpointで関数呼び出し前と後のヒープ状態を記録し、
_CrtMemDifferenceにて2つを比較すればいい。
差分の内容については_CrtMemDumpStatisticsでダンプできる。
めもめも
他愛も無い(?)ことを聞いて申し訳ないです。
MFC(VC++6)使用でモーダルダイヤログを開くときに、
初期フォーカス位置を変えたいのですが、
OnInitDialog内で、色々試しても上手くいきません。
どうすれば初期フォーカスを変更出来るでしょうか?
(場合によって2・3点変更させるため、タブ順位変更は無理です)
WM_INITDIALOGのヘルプを嫁。
穴があくまで嫁。
読んで分からなかったらあきらめろ。
747745:02/03/15 21:00
>>746
 だいぶ説明不足でした。
InitDialogの返値はFALSEにしているので、
フォーカス?は指定の所に行くのですが、
(例として)元々のフォーカスがボタン1を指しているとして、
InitDialogで明示的にボタン2にSetFocusしても、
ボタン中央の点線(フォーカス?)はボタン2に来ますが、
ボタンの影(標準のボタン?)はボタン1にあります。
 この時、カーソルを動かさずにリターンを押すと、
ボタン1が押されたことになるというのが問題です。

 対応として、ボタン1に対する標準のボタンチェックを解除すれば、
ボタンの影はどこにも表示されなくなりますが、
この時もそのままリターンを押せば、ボタン1の押下となります。
っつーか、AppWizardで作ったんだったら、ちゃんとコメントで書いてあるよな。
OnInitDialogのreturn文の後ろに。
それはフォーカスの問題じゃなくてデフォルトボタンの問題だ。
デフォルトボタンの指定をはずせ馬鹿
750748:02/03/15 21:11
>747
おっと、行き違いスマソ。ちゃんとやってたわけね。
GotoDlgCtrlで移動してもうまくいかない?
751745:02/03/15 21:25
>>748
 有り難うございます。上手くいきました(GotoDlgCtrlで)。
対象のコントロールに対する命令(SetFocus等)ばかり見てたので、
逆に親に対して指示する命令を調べることを忘れてました(^^;

>>749

 「標準のボタン」って書いたのがマズかったですか?
(単なるいき違いだと思いますが・・。)
752デフォルトの名無しさん:02/03/15 21:33
>呼び出し前にヒープの状態を記憶しておいて呼び出し後のヒープの状態と比べることって出来ますか?
newを書き換えておけば委員でない?
753NTサービス:02/03/16 01:22
マーシャルブレインの「Win32システムサービスプログラミング」中のサンプルBeeperサービスを
そのままメイクしてWindows XP/2000上で実行してみました。

SCMからの制御は問題ないのですが、Net Startコマンドからサービスを開始しようとすると、
時々サービスを正常に開始できないことがあります。

イベントログを見ると、「beeper サービスは無効な現在の状態を報告しました 0」(イベントID7016)
となります。

同じ問題にぶつかった方っていらっしゃいません?
>>751
BS_DEFPUSHBUTTON
 プッシュボタンを作成します。ただし、黒色の太い境界も持ちます。
 このボタンがダイアログボックスにある場合は、ボタンが入力フォーカスを持っていなくても、
 [Enter]キーを押せばボタンを選択できます。
つまりこのスタイルを持ったボタンが、いわゆる「標準のボタン」だ。
755デフォルトの名無しさん:02/03/16 15:52
コンソールから立ち上がった場合は、コンソールにメッセージを出し、Explorerから立ち上がった
場合はMessageBoxで、ってことをやりたいと思ってます。

で、基本的なとこで何なんですが、WinMainで始まるプログラムで、コンソールに文字列を表示する
方法ってないんでしょうか?
756デフォルトの名無しさん:02/03/16 17:00
>>755 AllocConsoleじゃだめ?
757755:02/03/16 17:05
>>756
別ウィンドウになっちゃうのはちょっと・・・
>>755
出来ないっぽい。
vcもmsdev.exeとmsdev.comと二つ持ってるし、scanregもscanregw.exeがあるし
別プログラムにするしかないんじゃないかなあ。
759755:02/03/16 18:40
>>758 どうも。
なるほど・・・

自分でもちょっとしらべたんですが、mainにして、
HINSTANCE hInstance = GetModuleHandle(NULL);
でハンドル拾って、WinMainを再実装する勢いでやればできるかもしれないです。

どうするかな・・・
760デフォルトの名無しさん:02/03/16 18:43
_UNICODE指定して
cout << _T("Hello") << endl;
したら見事に文字化け(数字列になる)するんですが、これってあたりまえ?

ひょっとしてcoutってUNICODE文字吐き出せないの?
>759
コンソールから立ち上げたか、エクスプローラから立ち上げたかの区別はどうやんの?
762755:02/03/16 19:01
>>761
あ。そうだった;;

HINSTANCEから、親のプロセスの種類もってこれるかな?
#ifdef _UNICODE
#define _tout wcout
#else
#define _tout cout
#endif
>>763
なるほど。勉強になりました。
765デフォルトの名無しさん:02/03/17 15:32
priority_queue を要素の低い順に扱いたいのですが、どうしたらいいでしょうか?

中身の演算子を反対に変更しないですむ方法はないでしょうか?
766765:02/03/17 15:32
ごめんなさい、スレを間違えました。
MFCです。背景も見えるような透過リージョンを作りたいのですが、
どのようにすればいいですか
768デフォルトの名無しさん:02/03/19 09:53
>>767
ウインドウにリージョンを設定するってこと?
検索すれば簡単に見つかると思うけど...
769デフォルトの名無しさん:02/03/19 10:29
クリッピング領域ってなんでしょうか。
770767:02/03/19 12:38
レスサンクス。

>768 それは他のウインドウ、デスクトップをリージョン領域外から
見えるようにするってことですよね。

例えばクライアント領域にグラフを書いて、リージョンで作ったテクスチャ図形を
重ねて描いたときに、下のグラフが透けて見えると、こういったことをしたいの
ですが。
771VC初App作成中:02/03/19 13:56
ListView上でのマウスの動作検知ってどうやればいいんでしょうか?
WM_NOTIFYに送られてくる。っていうくらいしかわかりません。
LV_DISPINFOのNM_NCHITTESTで待っても、ひっかかってくれないし…
フックしないと無理なんでしょうか?

よろしくお願いします。
772デフォルトの名無しさん:02/03/19 14:12
MFCを使わずC++で組んでいます。
ベースクラスのHWNDを別クラスに渡したい場合はどのタイミングでうまくわたせるのでしょうか?
この場合継承はしません。
>>772
わけわかん。
すきなときに渡せよ。
とりあえず、CreateWindowするまではウィンドウハンドルは作成されてないから、
OnCreate以前は無理とおもえ。

という回答が欲しいのか?
775デフォルトの名無しさん:02/03/19 15:52
リストコントロールで(レポート形式)列単位で非表示にする方法を教えて下さい.

エクスプローラ風に表示のファイルサイズはKB単位にしたいのですが、
実際のファイルの値も持っておきたいんです。
画面には実際の値は出したくありません。
そうすれば?
777VC初App作成中:02/03/19 16:07
>>775
lvcol.cx = 0;
にして、LVM_INSERTCOLUMNすればいいんじゃないの?


う〜ん、と。
771でも書いたんですけど、Listview上にマウスが移動したら、
その下にあるデータをツールチップで表示したいんです。
環境はSDKです。
何かいい方法はないもんでしょうか?
778デフォルトの名無しさん:02/03/19 16:25
>>777
そうではなくて、ユーザがそのコラムをドラッグしても表示しないようにしたいのです。
要するに個別のアイテムに対する情報(今回の場合はファイルサイズ)を画面に表示することなく保持できればそれでもよいのですが。
779デフォルトの名無しさん:02/03/19 16:29
MFCは使わない方がいいと気づいた今日この頃
pDataに持たすか、自分で内部に配列を持てばいいだけでは。
ListViewに実データを持たせようっていう方がおかしい。

つーかさ、なんでさ、おまえらさ、ListViewをソート用に使ったり
配列の替わりに使ったりすんの、ね?
VB厨の豆テクVCにまでもってくんなよ、おい。
781VC初App作成中:02/03/19 16:49
煽りはいいからさ、早く教えれ。
わからないならわからないで、「わかりません」って言ってみ?
CWnd::EnableToolTips
を元に後は自分でたぐれバカ。
783八方塞がり:02/03/19 17:00
ディレクトリとその中に含まれる全てのファイルをDrag and Dropにて
エクスプローラに遅延レンダリングで渡す方法を教えてくれませんか?
何じゃそのえんていれんだりんぐっつーのは
785八方塞がり:02/03/19 17:03
COleDataSource::DelayRenderData()で渡すやつです。
やったことはないけど
DelayRenderFileData
をぐるぐる回すのはダメなん?
ぐるぐる。
787八方塞がり:02/03/19 17:11
CFSTR_FILEDESCRIPTOR にてファイル一覧をエクスプローラに渡して、
CFSTR_FILECONTENTS でグルグル回してファイルの中身を渡すんですけど、
ドロップ中にエクスプローラにフォーカスがあたった時点でCFSTR_FILEDESCRIPTORの
中身を求められるんですよ。
それだと、たとえばサーバ上のファイルを調べてると、ドラッグしてドロップできるまでに
時間がかかってしまって困ってます。
explorerでも遅いからしかたねえんじゃねえの?
789八方塞がり:02/03/19 17:17
でも、Windows 2000のWebフォルダなら、ちゃんとドロップ後に
サーバ上のファイル調べてるから、技術的には無理な話ではないと
思うのですが。。。
790VC初App作成中:02/03/19 17:18
>>782
だから問題はツールチップの表示のしかたじゃなくて、
ListViewから…(以下略)
無理でない話とおもったら自分でやれ。

Win2Kの昔のexplorerは万を超える数のファイルをまとめて動かすと死んだ。
今でもそうなのかは不明だが、explorerのできなんてそんなもんだ。

お前がやれると思うならやれ。
792八方塞がり:02/03/19 17:23
ですよね。。。
再び、八方塞がり。。。
>ListViewのツールチップ
LVS_EX_INFOTIP?
794VC初App作成中:02/03/19 17:50
>>793
ありがとうございます。何とか光が見えてきました。
(本当はCreateWindowExでWin2000みたいなToolTipが表示させたかったから
 データを取得したかっただけなんですけど…)

さんざん大口たたいてすいませんでした。
795VC初App作成中:02/03/19 17:59
と思ったら、
「This style is only available to list view controls that use the LVS_ICON style. 」
だそうです。
>>795
どこ読んでんの?
それはLVS_EX_REGIONALでしょ?
797VC初App作成中:02/03/19 18:09
>>796
いや、「LVS_EX_INFOTIP」にも書いてありますよ。

でも、Report Styleでも表示されたんだけど、
「LVS_EX_FULLROWSELECT」と一緒に使えない…

なんでだ?せっかくVC好きになりかけてたのに…
俺はMSDNライブラリ2001年10月日本語版の
「Extended List-View Styles」で見てるんだけど、
LVS_EX_INFOTIPには
> 「This style is only available to list view controls that use the LVS_ICON style. 」
なんて書いてないし、LVS_EX_FULLROWSELECTも一緒に使えるけど。
799798:02/03/19 18:25
SDK,November2001の「Extended List-View Styles」でも確認したけど
やっぱ>>798と同じだなぁ
800VC初App作成中:02/03/19 18:32
うちのは…
1998 augだ。古っ!

Extended List-View Styles
のところに、「LVS_EX_INFOTIP」って項目ないし…
msdnは古いのが原因でした。
LVS_EX_FULLROWSELECTも一緒に使えました。
ご迷惑おかけしました。

でっ!
LVN_GETINFOTIPでメッセージを取得して、ツールチップにTTM_SETMAXTIPWIDTH
を設定しようとしたらLVN_GETINFOTIPを取得できませんでした。
ちょっとコード晒しあげますね。

  LPNMLVGETINFOTIP lvTip;

lvTip = (LPNMLVGETINFOTIP)lP;
switch (lvTip->hdr.code ){
case LVN_GETINFOTIP:
    「ここで取得できない」
break;
}
つかさ、coreguruみろや。
http://www.codeguru.com/listview/index.shtml

>711に対する答としては、
「サブクラス化してWM_MOUSEMOVE」
802ひこ:02/03/19 22:04
リストビューの列非表示ってできないんだね。
列幅を0にしただけではドラッグでみえてしまう。

わかるひといません?
>>802
わからん
804割高なのは、、、:02/03/19 23:26
あのー、VC++5.0エンタープライズ版を
7000円で買ってきたんだけど、これって損な買い物
だったでしょうか?
>>802
DeleteColumn!
それを元にアップグレード版買いなさい。
807デフォルトの名無しさん:02/03/20 01:47
>>802
仮想リストビューを使って好きなようにする。
>>802
ヘッダーコントロールをサブクラス化して、
マウスメッセージに反応しないようにする。
809VC初App作成中:02/03/20 10:47
結局Listviewをサブクラス化して対応しました。
ちなみに、
WM_MOUSEMOVEではなく、
WM_SETCURSORでした。

本当にこうしないといけないのかな…MFCだと、OnMouseMoveっていうのがあるみたいなんだけど。
まぁ、しかたないか。
STLのコンテナをあるクラスのメンバ変数にしたいんだけど、例えば、vector。
include を使わずに先行定義したいのだけど、どう書けばいいですか。
>>810
だいたいこんなかんじ.
class vector_alloc;
namespace std { template<class T,class A=vector_alloc> class vector; }
アロケータの名前が処理系によってまちまちなので厳しい。
普通に include することを勧めます。
812810:02/03/20 13:06
>811
さっそくのレス、有難うございます。
うまく通りました。
MFCで組んでるってこともあり、他処理系への移植は考えてませんので、
このやり方でいこうと思います。
813デフォルトの名無しさん:02/03/20 14:05
データベースをイジくりたいんですけどスタンダードエディションにはADOがありましぇん(号泣!!
VC購入から数年経っていますがその間に状況が変わりADOが無料で配布されていたりしませんか?
DAOってのよりADOの方が逝けてるよね?

教えてマンボー!
814VC挑戦中:02/03/20 16:53
VC(SDK)でMPGファイルを再生するのって、どうやるの?
DirectX?
MCI?
できればmsdxm.ocxを使いたいんだけど
815デフォルトの名無しさん:02/03/21 08:25
ダイアログに境界線みたいなのを引きたいのだけど、なにを配置したら
いいのかわかりません。

スタティックテキストで"--------"とやっても違うし。何より縦線が引けない。

ここで言うところの境界線は、グループボックスの四角形が直線に
なったもののイメージです。
816デフォルトの名無しさん:02/03/21 13:07
>>815
グループボックスの幅を0にしたらいかが?
.NETのベータ2を使ってみたのですが、
.NETで言う、ClassWizardって何なのでしょうか?
右クリックすると出てくるんですよね…?

VC6の解説サイト見てるのですが、良くわからなくて…
818817:02/03/21 13:48
すいません、解決しました。
819デフォルトの名無しさん:02/03/21 17:16
MIMEエンコード/デコードするライブラリでいいの知りません?
自分で作ってもいいのですが手間なので・・・

とりあえずBase64のエンコード/デコードだけでもいいんですけどね。
>814
ふつうDirectShow。あ、でもDirectX8に含まれるように
なったから、DirextXといっても間違いでもないか。
#ShellExecute(....,"mplay2", "foo.mpg");
821デフォルトの名無しさん:02/03/21 20:45
VC++用のプログラムチェックソフト(言い方合ってるかな?)
を探しています。今はpurifyを使っていますが、いまいち…かと。
お勧めがあったら教えてください。
>>815
案1: スタティックコントロールのスタイルを矩形(SS_BLACKRECT等)にして、
幅とか高さを1にして置いてみる。
案2: オーナー描画ボタンを置いて、自分で線を描く。
外人の書いたC++の本を10冊くらい買って、読ませろ。
で、そいつにコードのチェックをさせろ。

何か指摘されたら、即座に改善するか、次に書くときに必ず改善しろ。

purifyあるなら、それでOK。
ツールに頼りすぎるな。
825VC挑戦中:02/03/22 12:18
>820
そうですか。
VBみたいに、WindowsMediaPlayerのActivexコントロールを貼り付ける。
なんてことは出来ないんでしょうか?
>>825
ActiveXコントールのコンテナ(コントロールを乗せる台)を素手で作るのはかなりつらいので
普通はMFCなりATLなりを使う。
827VC挑戦中:02/03/22 12:52
>>826
そうみたいですね。
使えることは使える。って解釈でよいのでしょうか?
MFCは嫌いだし、SDKでやりたいので、ATLをちょっと勉強してみます。
>SDKでやりたいので、ATLをちょっと勉強してみます。

ATL使ったら「SDKでやる」とは言わない。
829819:02/03/23 00:29
>>824 どうも。
なつかしのNKFですか。Base64はデコードのみみたいすね。
安定感はあるかな?
830デフォルトの名無しさん:02/03/23 00:33
MFCつかわずに正規表現使いたかったもんで、boost/regex使ってます。
しばらく快調だったんですが、string.h系の関数をつかおとすると、なにやら怒られます。

  error C2668: 'strlen' : オーバーロード関数の呼び出しを解決することができません。

なんなんでしょ。VC6君は、何怒ってるんでしょうか?
831デフォルトの名無しさん:02/03/23 00:50
どこかにMSLUを使った正常に動作するサンプルプロジェクトが
ないでしょうか。
ポインタを切望!
(普通の文字まで化けてしまう…)
832デフォルトの名無しさん:02/03/23 00:56
OK連打対応のつもり何ですがうまくいきません。
押した分が貯まっています。
どうやって空打ちするのでしょうかご教授ください。

void CTestDlg::OnOK()
{
// TODO: この位置にその他の検証用のコードを追加してください
int i;

m_ok.EnableWindow(FALSE);

for (i = 0; i < 30000; i++)
SetDlgItemInt(IDC_STATIC, i);

m_ok.EnableWindow();
//CDialog::OnOK();
}
>832
PeekMessage回してメッセージを取り除くか
「連打するなゴルァ」ってキャプションのラベルを横に貼っとけ。
834デフォルトの名無しさん:02/03/23 04:06
ご教授ありがとうございます。

m_ok.EnableWindow();
の後ろに以下3行つけたら、思った通りの動きになりました。どうでしょうか。
WM_KEYFIRST, WM_KEYLASTの行はいらないと思いましたが一応書きました。

MSG msg;
while (PeekMessage(&msg, m_ok.m_hWnd, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE));
while (PeekMessage(&msg, m_ok.m_hWnd, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE));

m_ok.EnableWindow(TRUE);の前だとだめなんですね。
それから、貯まるではなく溜まるでした。
いやあ、楽しいなあ
よい週末を
835セマフォーー:02/03/23 04:16
SDKで CreateSemaphore() して得たハンドルから
カウント数を得ることって出来ますか?
ReleaseSemaphore()時に前のカウントを得られることは
知っているのですが、Releaseせずにカウント数を
取得したいのです…やっぱり別の変数にカウント数を
キープしておくべきでしょうか?
MFC です。
OnOpenDocumentをオーバーライドして使う場合、”ファイル−開く”で
コモンダイアログが起ち上がりますが、予めパスの設定をしたいのですが、
出来ますでしょうか。前回最後に開いたパスをレジストリに保存しといて、
それを反映させるということをしたいのですが。
自前で CFileDialog を作るときは出来るのですが、あまり Document-View
間の通信を意識したくないもので。OnOpenDocument を使いたいのです。
837デフォルトの名無しさん:02/03/23 15:57
>>835
ReleaseSemaphore や WaitForSingleObject の周りを
CriticalSectionとかで固めて、変数にカウント数を保持。
OpenSemaphore~ReleaseSemaphoreじゃだめなん?

っていうか、そもそも解放時以外にカウントが必要になる設計がだめなのだと思う
839SHEZ:02/03/23 20:24
メモリクリーナーって
大量にメモリを確保して、解放してやればいいんですか・・?
GlobalAlloc(GPTR,128*1024*1024)みたいに確保して
GlobalFree()で解放しても、あまり変わらなかったような・・
本場のやつではあんな長い時間何やっているんでしょうか・・^^;
840超先生@プログラム板:02/03/23 21:33
>>839
  ∧_∧      
< `ш´>y-~~~ メモリクリーナーってのは難しいところだが。
GlobalAllocだと確保したメモリ空間へ実際にアクセスするまで物理メモリは割り当てられないのだ。(demand-paging)
そこで、確保したメモリへプロセッサのページ(4KB)ごとにダミーの読み書きをしてみたらどうかな。
上手くいけば物理メモリが割り当てられ、解放すると同時に物理メモリが空くはずだ。

ちなみにVirtualAllocにMEM_COMMIT|MEM_PHYSICALを指定して呼び出すと
強制的に物理メモリをコミットしてくれるみたいだ。(NT系限定だが)
841821:02/03/23 21:47
>>823
回答をありがとうございました
なにかすごいのがないかなと思ったのですが…。甘かったですか。
purifyと自力で頑張ります。
842名無しさん:02/03/24 02:46
最近VC++6.0(SP5)をはじめたものですが困ってることがあります。

ClassViewから現在コーディングしてるクラスが消えてしまうという現象におちいってます。
私だけでしょうか?解決法ありましたら教えてください。
VC++6.0(SP5) / Win2000Pro
844842:02/03/24 02:59
>>843
ありがとうございます!直りました!
845デフォルトの名無しさん:02/03/24 08:25
ちょっと素人質問なんですが、VCでビルドされた実行ファイル等にユーザ情報
って入るんですか?

Excelやワードなんかは作ったファイルに入るらしいですが・・・
846 :02/03/24 08:33
>>842
クラスの登録はツール使ってやってる?
847教えて君@厨房:02/03/24 20:26
USBの使い方教えてくだちゃい。
(USB接続のデジカメから画像のRAWデータを吸い出したいのです)
参考になりそうな情報なんでも大歓迎です。
848検索中:02/03/25 16:14
Win2Kのタスクマネージャのパフォーマンスタブの
コミットチャージの最大値はどうやって取得するんでしょう?
GlobalMemoryStatusじゃなさそうだし...
ご存知の方よろしくお願いします。
VC++6.0(SP5) Win2KPro
849デフォルトの名無しさん:02/03/25 16:43
DirectXを使わず、普通のSDKだけでフルスクリーンモードって出来ます?
出来る場合には自分で調べて、出来ないのであれば他の方法を取りますので、
出来るか出来ないかだけでOKです。
850 :02/03/25 16:45
出来る
>>850
ありがとうございます。
Googleでいくら検索してもDirectXがどうたらって出るもんで……。
852849:02/03/25 18:17
ああー。なんか出た出た。出ました。出来そうです。
ありがとうございました。またのご来店をお待ちしております。
>>848
パフォーマンスカウンタからとれ。
WinXPログインしてからすぐに起動してタスクトレイに
常駐するものをつくりたいのですがどうすればいいんでしょうか。
もちろんMFCはメモリ節約のために使わない予定です。
ここで説明するのが難しい場合は
詳しいサイトを教えていただけませんでしょうか。
タスクスケジューラにアプリケーションを追加したり削除したりするAPI
ってありますでしょうか?あったら教えてください。
>>854
普通にタスクトレイに常駐するプログラムのショートカットを
スタートアップフォルダに入れときゃいいんでわ…
857848:02/03/26 10:11
>>853
レスどうもです。
MSDNをひたすら読んでるんですけど、よく判りません。
具体的なAPI等を教えて貰えないでしょうか?
よろしくお願いします。m(_ _)m


858848:02/03/26 16:36
こうですかね?
HQUERY  hQuery;
HCOUNTER hCounter;
PDH_FMT_COUNTERVALUE *lpItemBuffer;

PdhOpenQuery(NULL,0,&hQuery);
PdhAddCounter(hQuery,"XXXXX",0,&hCounter);
PdhGetFormattedCounterValue(hCounter,PDH_FMT_DOUBLE,NULL,lpItemBuffer);

↑のPdhAddCounterの第二引数は何を指定したものか...
なんか、頓珍漢な方向に突き進んでるよーな。
859 :02/03/26 16:42
K
860848:02/03/26 18:19
微妙な所までコミットチャージの値が取れました...
HQUERY hQuery;
HCOUNTER hCounter;
PDH_FMT_COUNTERVALUE *lpItemBuffer;

char Path[1000];
DWORD Size = 1000;
PDH_COUNTER_PATH_ELEMENTS cpe;

cpe.szMachineName = NULL;
cpe.szObjectName = "Memory";
cpe.szInstanceName = NULL;
cpe.szParentInstance = NULL;
cpe.dwInstanceIndex = 0;
//cpe.szCounterName = "Commit Limit"; // 制限値
//cpe.szCounterName = "Committed Bytes"; // 合計
//cpe.szCounterName = "% Committed Bytes In Use"; // 最大値

PdhMakeCounterPath(&cpe, Path, &Size, 0);

PdhOpenQuery(NULL,0,&hQuery);
PdhAddCounter(hQuery,Path,0,&hCounter);
PdhGetFormattedCounterValue(hCounter,PDH_FMT_DOUBLE,NULL,lpItemBuffer);
PdhCloseQuery(hQuery);

↑な感じでコミットチャージの制限値と合計は取得できるんですけど、
最大値が巧く取得できません。最大値のパスが違う?
それとも、何か計算が必要なんですか?

情報をお待ちしています。m(_ _)m
んー、このコードのままなら問題なさそうだね。

%混じり分をsprintfしてて苦しんでたやつがいたが。

ツーか、ただ単に百分率で受け取ってるってことに気付いてないだけなのか?

% Commited Bytes In Useは最大値じゃない。
Committed Bytes/Commit Limitだぞ。

863848:02/03/27 09:57
レスどもですm(_ _)m
そのよーですね。ちょっと前に確認しました(^^;)
...って事は,タスクマネージャのコミット最大値と同じ値は取得できない?
自分でポーリング掛けて、取得した合計値を比較して最大値を確保するしかないのか?
でもコレ(↑)だと、プログラム起動時からの値にしかならんしなぁ...
サービスとして作って、Win起動時に作動させるか...←コレなら大体同じ値になるし
なーんか他に方法は有りそうなんだけど...どっか抜けてるのかな?
864初心者K:02/03/27 11:58
ダイアログベースのアプリで、ActiveXのコントロールを貼り付けると、
例外処理 (初回) は test1.exe (MFC42D.DLL) にあります: 0xC0000005: Access Violation。
が、C:\Program Files\Microsoft Visual Studio\VC98\MFC\Include\AFXWIN1.INLの
_AFXWIN_INLINE HGDIOBJ CGdiObject::GetSafeHandle() const
{ return this == NULL ? NULL : m_hObject; }
で出てしまいます。そのダイアログから開く子ダイアログに貼り付けた場合は問題ないみたいです。
これって、なぜでしょうか?どのあたりをチェックすれば良いのか、お導きください。
COMの初期化をきちんと済ましてないだろ。
866初心者K:02/03/27 14:00
>865さん
うーん、コントロールを貼り付けるだけだったら、初期化も何も無いと思うのですが。。。OnInitDialogにすら辿り着かないんですよ。OnInitDialogより前にっていうと、コンストラクタで初期化するんですか?そこだと、まるっきり実態が宣言される前になっちゃうと思うのですが?
つかな、このスレの>>740みろ。
class TEST {
public:
template<class T> void print(T a){cout<<a<<endl;}
};
main(){ TEST a; a.print(10);}

g++では動いたんですが、VC6.0ではコンパイルが通り
ませんでした。メンバ関数テンプレート使えないんですか?
869初心者K:02/03/27 15:45
>>867さん、コメントありがとうございます。
いちおう、そのおまじないは>>737さんが解決されたのと同じと思われる
場所に入れてあります。>>740で書かれている内容をしていないと、
子ダイアログにActiveXコントロールを貼り付けた場合にもエラーが
でますよね?その場合はうまく動いているんですよ。。。。。
>>868
using namespace std;

template<class T> void print(T a){std::cout<<a<<std::endl;}
のどっちかしなされ。
>870
実際はちゃんと書いてます。

error C2893: 関数テンプレート 'void __thiscall TEM::prin(TM)'
の特定に失敗しました
次のテンプレート引数で:
'int'

こんなのがでる・・・・
872870:02/03/27 16:16
>>871
うちのVC++6.0SP5では、>>868
#include <iostream>
using namespace std;
をつけただけのソースがちゃんとコンパイル&実行できる。
SPが古いか、そもそもそのソースでは問題が再現しないんじゃない?
>872
ありがとうございます。
とりあえずもう一度
やってみます。
あたらしくプロジェクトつくってビルドしたら
通った・・・

875デフォルトの名無しさん:02/03/27 16:56
ダイヤルアップの登録の時なんかに、勝手にマウス動かして
どんどん進めてくやつあるじゃないすか。
あれってどうやって実現してるんでしょうか?
>875
そのツールは見たことないが、SendInputでも使ってるんだろ。
マウスカーソルのデバイスイメージって、ひとつのファイルに複数持てますけど、
何個持っていても実際に使えるのは1つだけ。あれって何か意味があるんですか?
878チンボ:02/03/28 00:30
VC7で空のWin32アプリケーションのプロジェクトを作成して
リソースを追加しようとすると"afxres.h"が無いと怒られるのだが・・・

それと、昔作ったソースをVC7にプロジェクト変換して
コンパイルしようとしてもリソーススクリプト中にある
#include "afxres.h"
ではねられます。

"afxres.h"ってどこいっちゃったんでしょうか?
そもそもこのヘッダーはなに?
>>876
まじ頼もしい!
どうもっす
>>878
VC6では VC98\MFC\Include\ に "afxres.h"があるが。
>>878
>>880じゃないけど、そのafxres.hの中身。

#define CBRS_ALIGN_LEFT 0x1000L
#define CBRS_ALIGN_TOP 0x2000L
#define CBRS_ALIGN_RIGHT 0x4000L
#define CBRS_ALIGN_BOTTOM 0x8000L
#define CBRS_ALIGN_ANY 0xF000L

#define AFX_IDW_CONTROLBAR_FIRST 0xE800
#define AFX_IDW_CONTROLBAR_LAST 0xE8FF

こんな感じで、リソース値に関するdefineだけがずらっと並んでる。

『AFX_』『ID_』『CBRS_』で始まるdefine値をリソーススクリプト中で
使ってないなら、#include "afxres.h" を消しても問題なさそうな予感。
882848(新たな問題がっ):02/03/28 19:57
プロセス一覧のSystem Idle TimeのCPUは、CPUの空き率なんですかね?
また、以下(かなり略)の様にして

Path = _TEXT("\\Process(Idle#0)\\% Processor Time");
PdhAddCounter(hQuery,Path,0,&hCounter);
PdhGetFormattedCounterValue(hCounter,PDH_FMT_DOUBLE,NULL,&FmtValue);

FmtValue.doubleValueを見ても、0.0003位の値しか入っとりません。
PDH_FMT_1000のフラグを付けてみても0.3だし。
Pdh〜関数で取得できるSystem Idle ProcessのCPU値ってこんなモノですか?
確認を求めとります。m(_ _)m
それはIdleプロセスのCPU使用率だ。
Idleプロセスは、優先度が低くてCPUが暇なときにチョビット呼ばれて
暇つぶしにバックグラウンドプロセスをInvokeする、暇河童使いだ。

暇河童使いは他のプロセスがCPUを使ってる間はほとんど動かない。
寝てる。
暇なんだよ。

暇河童使いのCPU使用率が0.0003くらいということはだな、
お前の糞プログラムか他のなにかがCPUを99.9997%くらい使用してるってことなんだよ。

CPUごとの空き率をしりたければ 100 - % Processor Time - % Priviledged Time - % User Time
を計算しろ。

で、パフォーマンスを計るプログラム作ってるなら、せめてビジーループだけは組むな。
ごめん嘘書いた。
100 - % Processor Timeでいいやん。
>>883 で、パフォーマンスを計るプログラム作ってるなら、せめてビジーループだけは組むな。

for(;;) {
自分のプロセスのCPU使用率取得();
}

これが最強。
それではね、期待されてるCPU空き率は取得できないよ。

ネタにいちいち突っ込むのもばからしいんだけどね。
887デフォルトの名無しさん:02/03/29 01:22
"afxres.h"の件ですが、
ATLとMFC関係のライブラリをすべてインストールしたらちゃんとありました。
使わないからインストールしなかったんですけどね。
ソースはすべて32APIで書いてリソースだけVSのエディタを使いたかっただけなんですよ。
ま、インストールしたら問題なくなったのでいいんですが・・・
>>887
あー、それ、俺も昔そういうのに遭ったことがあるよ。
MFC使わないからってインストールしないでおくと、
リソース関係がコンパイルできないという罠。
889超初心者:02/03/29 11:14
どなたか教えてください。

スクロールバーのあるモードレスダイアログを

Create〜
ShowWindw〜

で呼び出し

終了ボタンを押して終了。

もう一度ダイアログを呼び出すと
スクロールバーが使用不能になります。
(OnInitDialgされない?)

この場合、呼び出しに問題があるんでしょうか?
それとも終了の仕方に問題があるんでしょうか?

890sin:02/03/29 12:22
local pc の名前が知りたくてGetComputerName使ったのですが、
PC98系だとエラーで取得できません。
gethostname の場合コンパイルすら通らないしどうすればよいでしょうか。
レジストリ見るとか(w
892848(新たな問題がっ):02/03/29 13:38
やっと正しいと思われる値が取得でけた。

CPUの使用率の取り方って↓のよーにしないと無理なんですねぇ。

PdhCollectQueryData(hQuery);  // printf("計測開始...\n");
Sleep(1);            // 1ミリ秒間の使用率
PdhCollectQueryData(hQuery); // printf("計測終了.\n");
PdhGetFormattedCounterValue(hCounter, PDH_FMT_DOUBLE, NULL, &FmtValue);

でも、何で間隔を空けないと取得出来へんのやろ?
Process IDの取得と同様に、瞬間的に取れても良いような気が...
getenv("COMPUTERNAME")
パフォーマンスカウンタの値はある時点から別の時点までの統計情報を元に
作成される場合が多いから、カウンタを作成した直後は、値はまともなのが入ってないよ。
エクスプローラに右ドラッグをしたときに出るメニューはどうやって作るんでしょうか?
896age:02/03/30 08:47
age
InvalidateRect() を呼んだあと、ウィンドウの再描画が
行われたことを知る方法ってありますか?

今のところ処理を行うのに Sleep(300) とかしてますが、
それだと適当すぎて環境によって違いがでてしまうんです。

>>895
COM 関係じゃないかな・・レジストリを読むのかも・・
>>895
COM関係なんでしょうけど、具体的に何で出るかがわからないのです。

再描画の方法はUpdateWindow()しましょう。
UpdateWindow()から戻ってきた時点で描画は終わってます
899897:02/03/30 11:47
>>898
あいやぁ; どうもありがとうございました。
エクスプローラって DDE 使ってるんですよね?
たんにイベント拾って TrackPopupMenu() してる
だけなんじゃあ・・?
なんて、てけとうなこと言ってるので気になさらずに(=ω=)
>>399
たとえば、解凍レンジやそのたアーカイバプログラムを入れると、
右でドラッグしたところに「ここに解凍」みたいなメニューを増やせますよね。
アプリケーションから拡張可能なメニューってことで、
ContextMenuのように自分のアプリケーションでも出せるのかなと思って。
901 :02/03/30 19:35
>893
MessageBox (getenv("COMPUTERNAME"));
でokみたいです。どうもです。
902 :02/03/30 21:36
Ctrl + Alt + Del で強制終了出来なくする方法ってありますか?
なんのために?
>>900
IShellFolder::GetUIObjectOf() あたりで何とかならん?
やったことないので知らんけど…。

>>902
SystemParametersInfo(SPI_SETSCREENSAVERRUNNING,1,&oldVal,0 );
>>904
できるとすれば、そのようにやると思うんですが・・・
問題はインターフェースIDがわからないので、どうしようもないと。
906デフォルトの名無しさん:02/03/31 20:38
NT/2000 で CPU 使用率を個々の CPU ごとに求める、ってどうやるんでしょうか?

http://www.codepile.com/tric21.shtml
ここを見ると NTQuerySystemInfomation で CPU 使用率は求められても
CPU の個数で除算してるので平均になってしまいます。

でも OS 付属のタスクマネージャって個々の CPU ごとに CPU 使用率の
グラフが出ますよね。NTQuerySystemInfomation は隠し API みたいだけど
さらに隠された API でもあるんでしょうか?
とりあえずパフォーマンスモニタをいじって間隔をつかめ。
それからパフォーマンスカウンタを調べろ。

APIはPdh〜()だ。
908デフォルトの名無しさん:02/04/01 11:04
VCのエディタで、.や->を入力した後に一覧で出てくるハズの
関数の一覧が出てこなくなりました。
どうすれば直るのでしょうか?
絶対既出でしょうけどどんな言葉で検索すればいいかわかりませんです。
>>908
よくあることだ。(゚ε゚)キニシナイ!!
910デフォルトの名無しさん:02/04/01 13:39
>>909
だって全部鬱のたるいんだもん。
>>908
ncbだかclwだかその辺のファイルを消してからも一度起動だ。
912デフォルトの名無しさん:02/04/01 15:09
>>911
それ試してみてたんですけどどうまくいかなかったんすよ。
全部鬱しかないのかなぁ。
>>912
それでは、いったん *.h の中身を全部カットしてペーストして保存だ。
914デフォルトの名無しさん:02/04/01 16:57
サービスの一覧の「名前と状態」は取得できたんですけど、その他の情報が取れません。
「説明,種類,ログオン」って情報の取り方を教えて下さい。

EnumServicesStatusを2回呼べばサービスの一覧が取れて、「名前と状態」が構造体に入ってますよね。
残りの情報は何処に...
915アルメイダ:02/04/01 18:56
VisualC++です。
通常テキストはSetTextColorだと思うのですが
リストボックス内の文字の色を変更することは可能なのでしょうか。
どなたか方法を御教授ください。

916デフォルトの名無しさん:02/04/01 19:27
すみません、教えてください。
Win200+VC6+Access2000です。

CDaoRecordsetで、SQL のGROUP BY を使いたいんですが、上手く使えません。

m_strFilter に入れればいけるのかと思ったんですが、ダメでした。
それで、Open の時に呼ぶようにしてみましたが、throw されてしまいます。
”GetRowsに失敗しました。要求された列はこのレコードセットのメンバではありません"
とでます。

class CDb : public CDaoRecordset
{}

::Onbutton()
{
AfxGetModuleState()->m_dwVersion=0x601;
CDb* db new CDb;
db->Open( dbOpenDynaset, "select [group] from [member] group by [group]" );

・・・・
}

SQLを良く知らないのがネックなのですが、
Accessで、クエリ実行では上手くいきました。

すみませんが、よろしければ教えてください。
917 :02/04/01 22:02
コンピュータ名の取得で、
getenv("COMPUTERNAME") はWIN98じゃ動かないみたいです。。
GetComputerName()もWIN98じゃ動かないしやっぱりレジストリみるしかないのかなぁ
GetComputerName Windows 95/98:Windows 95 以降
>>915
「オーナードロー」で検索だぁ!
920906:02/04/01 23:49
>>907
ありがと。
921new:02/04/02 00:22
new でメモリとろうとしたら、以下のメッセージ吐いて
int3に引っかかってしまいました。
HEAP[test.exe]: HEAP: Free Heap block bf8ab0 modified at bf8b14 after it was freed

これはいったい何なんでしょう???
メモリどっかで壊してるんだよ。
new/deleteが使うメモリの管理情報が、
お前の糞プログラムに壊されてるんだよ。
>>915 WM_CTLCOLORとかじゃねーの?
>922
新しいメモリを買わないと駄目でしょうか?
925new:02/04/02 01:25
>>922
あー!おまえ、それ、すげーヒントになったよ!
そういうことかー
>924
922は現在頭のメモリの修理をしているためしばらく帰って来られません。
927アルメイダ:02/04/02 13:08
>915 >923
ありがとうございみす!
一度試してみます!
またお願いします!
928アルメイダ:02/04/02 16:17
色をつけることが出来ました。どうもありがとうございました。

もう一つあるんねすが、リストボックスの内容が複数ある場合、
(選択肢が多い場合)その行(選択肢)毎に色を変えることは
出来るのでしょうか。
vectorで定義したPOINT構造体の配列を、ある関数に単なる配引として渡したい
(関数側ではvectorを意識しない)のですけど出来ますか?
イテレータを渡してやればいいのね。スマソ。
vector<POINT> v;

と定義してたとして、vの最初の要素はv[0],
2番目の要素はv[1]でアクセスできる。
んで、

&v[i] == &v[0] + i

となることは保証されている…って読んだ記憶があるけど、
誰が保証しているのかは知らない。
まあとにかく、 &v[0] を配列の先頭アドレスのつもりで
渡せばOKだと思う。もちろん、使用しているコンパイラで
この保証がなされているかをあらかじめ確認してからな。
>>931
C++ の規格書の追補版だかに書いてあるらしい。読んだことないけど。
933デバイス一覧取得:02/04/03 11:37
デバイスマネージャに表示されている、全てのデバイスを取得したいんですけど
取得する関数を知りませんか?
「コレとコレを使ってループしろ」とかで構いませんので、よろしくお願いします。
934デフォルトの名無しさん:02/04/03 12:34
リストボックスに出力する文字列のカラーを変えたり
太字にしたりするのはどうやるんでしょうか?もしかして
できないですかね。
20レス前から読んでみれ
936デフォルトの名無しさん:02/04/03 14:13
VCのテキストエディタを
vi風に
モード切替で hjkl でカーソル移動などやりたいのですが
設定変えて、できますか?
>>936
vim 使えば? Visual Studio と連携させるためのプラグインが提供されてるぞ。
板違いになるが、窓使いの憂鬱使え
939デフォルトの名無しさん:02/04/03 19:48
>>916
>CDb* db new CDb;
>db->Open( dbOpenDynaset, "select [group] from [member] group by [group]" );

この部分、書いたままなのかどうかよくわからんが、一応考えられるところ

1.派生クラスということはWizerd で作られたもの?
  ・・・フィールドが対応していない

2.別に Wizerd 生成でない場合
  ・・・コンストラクタでデータソースが開かれてないのでアウト
  例はこう
  http://www.microsoft.com/japan/developer/library/vccore/_core_dao_recordset.3a_.using_aggregate_sql_functions_with_mfc_dao_classes.htm
  ===========================
  CDaoDatabase db;
  db.Open(_T("d:\\scores.mdb"));

  CDaoRecordset rs(&db);
  rs.Open(dbOpenDynaset,
_T("Select [Student Name], AVG([Test Score]) AS AvgScore FROM
SCORES GROUP BY [Student Name]"));
  ===========================

3.単にコーディングミス?
  >CDb* db new CDb;
940939:02/04/03 19:49
長行入れてすまんね
941デフォルトの名無しさん:02/04/03 21:08
route/arp/ipconfig(ifconfig) みたいな、
tcp/ip stack の内部情報を表示するコマンドありますよね。
あれと同じことをやりたいんですが、
system("route print");
以外の方法で、なんかないですか?
多分、winsock.dll のなんかの api でできるっぽいですが。
942デフォルトの名無しさん:02/04/03 22:12
>>939
レス有り難うございます。

2での方法を参考にテストプログラムを作り直してみました。
SQLの部分ですが、サンプルそのままに、

>>_T("Select [Student Name], AVG([Test Score]) AS AvgScore FROM
>>SCORES GROUP BY [Student Name]"
にしてみたところ上手くいきました。

>>_T("Select [Student Name] FROM SCORES GROUP BY [Student Name]"
ところが、↑の様にAVGを削って見たところ、エラーが発生しました。

どうも、AVGの様に値を呼び出す必要があるみたいです。
詳しい事は、私レベルではよく分かりません。

きちんと試した訳ではないですが、なんとなく、いけそうです。

非常に助かりました。
本当に有り難うございます。
943デフォルトの名無しさん:02/04/03 22:28
基本的な質問なんですが、
VC++6って、WIN2kで動くんですか?
サポートにはWIN95とWIN98とNT4.0しか書いてなかったんですけど。
教えて下さい。
944デフォルトの名無しさん:02/04/03 22:30
VC++6.0sp4使用して、ClassWizardでCRitchEditViewを新規作成したいのですが、

「クラスの追加(&L)...」→「新規...」を選択した後に表示される
「基本クラス(&B):」のコンボボックスの中にCRitchEditViewが表示されません。
どうやってCRitchEditViewを新規作成すればいいのでしょうか。

945943:02/04/03 22:36
C言語の勉強をはじめて早10ヶ月
今までは、ボーランドのフリーコンパイラで
がんばってきたのですが、ビルダー5か、VC++6の
どちらか買おうと思っているのでまじレスです。教えて下さい。
946944:02/04/03 22:39
>>944は自己解決しました。ども。
.NETが出たから6.0はもうふつうの店では売ってないと思う。
DigitalmarsかopenwatcomあたりにIDEついてるんじゃないか?
948943:02/04/03 22:59
.netって?
なるべく重くないのがいいのです(涙)
CPU P3 カトマイ500Mhzですので...(涙)
949943:02/04/03 23:04
とりあえず、
VC++6.0ネットショップでは有ったので、
WIN2K上の動作確認、
情報くだせーな!
.netはVS.NET/VC++7.0
要するにバージョン刷新があったって事。
VC6.0は2k上で動くし、2k用にインストールマニュアルもついてくるが、
統合環境でビルドを行うときに不正終了することが結構ある。
>>949
このまえOSを98から2000にアップグレードしたんですが、
VC6はちゃんとうごいてますよ。
952いさましいチビ:02/04/03 23:14
950超えたので、新スレ作りました。
速やかな移行をおねがいします。
http://pc.2ch.net/test/read.cgi/tech/1017843192/l50
953943:02/04/03 23:23
どうもありがとうございます。
これで、心置きなく、VC6が買えます。
こっちのほうが軽そうなので(汗)
こっちを買わさせて頂きますです。(汗)
954デフォルトの名無しさん:02/04/04 00:17

>.netはVS.NET/VC++7.0
え、これマジ?
SDKアップデート
VC6切られるんじゃないかな
VC5切られてるし
>>954
cl[ENTER}
でバージョン情報見てみ。
>>956
いや、まだ買ってないから。。
>>954
MSC Ver.13.0 でしょ? (VC++.NET)

960前スレの902:02/04/08 19:47
遅くなってすみません。

前スレの902より
>Ctrl + Alt + Del で強制終了出来なくする方法ってありますか?
と聞きました。

>>904
それだと、9xでは大丈夫でしょうが、NTでは無理みたいです。
動かすのはWin2000です。
SetWindowsHookExで低レベルキーボードフックをかけてみましたが、Ctrl+Alt+Delはなぜか
うまくいきません。
961902:02/04/08 19:48
すみません、間違えました。
前スレじゃないです。
tesy
  
    
     
           
         
                           
                                    
                 
971ぺんぎん:02/05/25 00:42
あの〜怖い人ばっかですね。で、質問ですが昔のMicrosoft社のコンパイラTurboC
で、graph.hというヘッダファイルがあったらしいんですが、
VC++で何とか使う方法を教えてください。べつにDOSアプリケーションでなくて、
Windowsアプリケーションで使えればいいんで、graph.hに相当しているヘッダファイルを
教えてください。宜しくお願いします。
あえていうなら WINGDI.H
それと、TurboCはBorlandのコンパイラ。間違えるなよ。
   ||
   ||
 ∧||∧
(  ⌒ ヽ  
 ∪  ノ
  ∪∪
ナンデ ツギノスレヨリ アガッテンダ・・・
  |
  |
  |
  |
  |
/\ ∧ /\   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
/\(∧ ∧/\ <ageで質問した >>971 がアフォだから
/\(,,゚Д゚)/\  \________
               / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄'\
               |    埋めるよろし!   .|
               \             ../
                 ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄
                     .∧ ∧
              .∧ ∧    (゚Д゚,)    ∧_∧     ∩
  。.。。  ∧ ∧   (゚Д゚,)     /  |     (。 。,)    ∧^∧   ∩   ・:.・.:’・
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|| ___..|| ___..|| ___..||
|| ∩_∩..||  ∧∧ ||   人  ||
||.( ´∀`).|| (゚Д゚,,) .||  ●● ||
|| ___..|| ___..|| ___..||
|| | ̄ ̄ ノ || | ̄ ̄ ノ || | ̄ ̄ ノ ||
||  ̄ノ ノ. .||  ̄ノ ノ. .||  ̄ノ ノ. .||
||  ノ__ノ. .||  ノ__ノ. .||  ノ__ノ. .||
||  ̄ ̄ ̄..||  ̄ ̄ ̄..||  ̄ ̄ ̄..||
|| ∧ ∧ ||   人  || ∧ ∧ ||
||..( ・∇・)..||  ●● ||..(・Д・ )..||
||  ̄ ̄ ̄..||  ̄ ̄ ̄..||  ̄ ̄ ̄..||
        , ―- _       _ -― 、
        ヽ     \__/      ノ
          \            /
           ヽ. ,―、  ,―、  /      , ―-o、
          / l |__ V__ | /ヽヽ    、三`  二つ
        〃  ヽ八_・_八_・_八/  ヽヽ      } (
    , -l⌒ヽ\_  _| ,、__,、 |   /―- 、  ) )
    |  ヽ `ー一´_ 人 `二二´ ノ _/○    |,-( (
  (  ̄ ̄      ノ) \   | |  / ○   /'V~( ̄ヽ
   l二=      ノ ○ \V/  ○    ノ  l_ (   }
   (__ -― 7  /|ヽ  ○, ― 、○     /   / (_ノ
    |     `-´/ |   {(°)}          //| ||
    |      | /   |  `ー−´        /´  ノ ノ|
    |      /    |            /   { { |
    }     {      ヾ\     _ノ    |   | | |
    {    |      |   ̄ ̄          | | |
    ヽ_   |      ` ――           _| |ノ
    (  ̄ >―----               ̄ | |)
      ̄ ` ―-――――----―――― ´ ̄|」
    。o 0 〇 ○  ○
   □□
   □□    ■■■■■■
   □□■■■■■■■■■■
   □■■■■■■■■■■■■■
 ■■■■■■■■■■■■■■■■■
   ■■■■■■■■■■■■■■■
   ■■          Zzz...        ■■
   ■■      ∧∧            ■■
   ■■  Zzz. (- - )⌒⌒⊇?    ■■
   ■■    ~~~~~~~~~~~~~~~~    ■■
   ■■■■■■■■■■■■■■■
   ■■■■■■■■■■■■■■■
  ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (,,゚ー゚)< なんつったりちて
 @_) \________
  ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 (,,・ー・)< なんつったりちて
 @_)  \________
  ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (,,゚д゚)< なんつったりちて
 @_) \________
  ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 (,,・д・)< なんつったりちて
 @_)  \________
  ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (,,゚∀゚)< なんつったりちて
 @_) \________
  ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 (,,・∀・)< なんつったりちて
 @_)  \________
  ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 (;=д;=) < なんつったりちて
 @_)  \________
  ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 (,,´ー`)< またーりまた−り
 @uu) \________
       
  
 
              
                       
          
ume
 
    
       
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。