VisualC++ 相談室【9】

このエントリーをはてなブックマークに追加
1kng ◆XTitdn3QI6
VisualC++関連の話題を扱うスレッドです。

前スレ
http://pc3.2ch.net/test/read.cgi/tech/1022499000/l50
>>1
あとでホテル来てね
4デフォルトの名無しさん:02/11/10 16:46
自分で作ったstatic link libraryを使用しようと思っているのですが、
特に気をつけなければいけないことはありますか?

例えば、色々なソースを見てみると
・debug版とrelease版を分ける
ということをしている物を見つけることができました。

.hファイルを全部集めてincludeし、.libファイルをリンク
するだけでよいのでしょうか?
54:02/11/10 17:00
最後の方の書き方がわかりにくいので付け加えます

例えば、static link libraryが内部的に使用するクラスを
cpp側でincludeしていた場合、使用する側はそれも
includeしなくてはならないのでしょうか?
簡単に表してみると下のようなイメージです

staticlib.h
classAについての定義のみ

staticlib.cpp
#include "inneruse.h"としてこれを使用

user.h
#include "staticlib.h"
#pragma comment(lib, "staticlib.lib")
#include "inneruse.h" // ←必要かどうか?

user.cpp
staticlib.hのクラスclassAを使用

また逆にuser.cppで直接使わなければならないもの
<string>や"windows.h"などはインクルードの必要はるのでしょうか?
6デフォルトの名無しさん:02/11/10 17:25
dllをコンパイル時に組み込むことはできますか(exeのみで渡したい)
できるなら方法を教えてください。よろしくお願いします。
7デフォルトの名無しさん:02/11/10 17:26
VCの設定について質問です。

独自クラス(.h、.cpp)を作りました。そのクラスをプロジェクトで使いたいと思い、
[オプション]のディレクトリタブでインクルードファイルの場所にその独自クラスがあるパス
を指定し、独自クラスの.hをincludeし、実際に独自クラスのインスタンスを作ってみたのですが、
コンストラクタとデストラクタの外部参照未解決でリンクエラーとなってしまいます。
どうやら実装部分である.cppファイルを見つけられていないようです。

いちいちプロジェクトに .h、.cppファイルを追加しなければ使えないのでしょうか?
8デフォルトの名無しさん:02/11/10 17:29
>>5
やってみればいいんじゃ・・・
>>6
できない
106:02/11/10 17:43
>>9
そんなこといわないでよろしくお願いします。
>>10
どうやら条件はいくつかあるけど出来るみたい。
http://www2.strangeworld.org/uedakana/sahra6138.jpg

まぁ、MSにDL3はあるんで何とかなるでしょう。
12デフォルトの名無しさん:02/11/10 18:07
VC++6.0である場所の変数の値が知りたくてprintfを使ったのですが
Win32アプリでは標準出力がだせなくこまっています。

ソースファイルの特定の場所で変数の値を知るにはどうすればいいでしょうか?
>>11
最近ご活躍のようですな。
URL でばればれ。
>>13
strangeworldでjpgだからね。
>>11みたいな奴は、ム板をもってしてもアク禁にできんのか?
16sage:02/11/10 20:45
VC++5.0 のprfessionalとEnterpriseとで
出来ることの違いを知りたいのですが。

Enterpriseは、単にprofessionalに、いろいろな機能を
付加したものと考えてよろしいんでしょうか。
それとも、会社でのイントラネット用につくられたEditionで、
professionalでの個人向けの機能は省かれたものと考えて
よろしいんでしょうか。
XPのスタイルに対応する方法は?
紹介しているページがまだ無い!?

98/ME/2000で動かないってのは無しで
manifestはだめね…
18デフォルトの名無しさん:02/11/10 20:58
ここでいいのかな
NTDDKダウンロード出来ません。
CD注文するしかないのですか?
19デフォルトの名無しさん:02/11/10 22:21
VC.netの話なのですが、ダイアログボックスのコントロールで、ラジオボタンをグループにして、
DDXで管理するにはどうすればいいのでしょうか。
>>17 に便乗。
http://www.microsoft.com/japan/msdn/windows/windowsxp/xptheming.asp
この通りにやっても、うまくいかず...
SDKは一応 Feb2001以降(Nov2001)が入っているんだが(;´Д`)
>6
 たとえば、DLLをリソースとして持っといて、
実行時に書き出して、LoadLibraryする手もあるし、
面倒なら、DelayLoadすればいい。
 あるいは、「可能だが実用的ではない」でいいなら、
WindowsのLoadLibraryに相当するものを作っちまって、
リソースから直接MyLoadLibraryすることもできよう。
22:02/11/11 21:45
>19
ラジオボタン1をA
ラジオボタン2をB
と仮定すると
ダイアログエディタ上でAの「Group」をTrueにセットして
Aの右クリックからめんバ変数の追加
値タイプ=Value
型=bool
これでできる。
VC6なら三つ以上のラジオボタンをintに割り当てれたけど
.NETはわからない、というか知らない。
というかこちらが教えて欲しいくらいだ。
23デフォルトの名無しさん:02/11/12 19:05
あるテンプレートライブラリを使おうとしていたのですが、
エラーが出ます。エラー自体は仕方のないこととして、
そのインクルードファイルがどこで使われているのかを確定するために
インクルードスタックの表示を出したいのですが、方法が分りません。
どうすればgccのようにエラーにそのようなものを表示させることが
できるのでしょうか?

環境
IDE VisualC++6.0
コンパイラ、ヘッダ 最新のPlatformSDK、.netSDK
24デフォルトの名無しさん:02/11/16 16:16
VC6とVC++.NET使っているのですが、
インクルードディレクトリがそれぞれいくつかあるのですが、
これをexportやimportできないんでしょうか?
どなたか知っている方いましたら教えてください。
6 ならツールのオプションでインクルードパスを追加できるところがあっただろう。
.NET は知らない。
2624:02/11/16 17:09
>>25
そのことは知っていたんですが、
やはりそこから1個ずつ登録していくしかないみたいですね...。
ありがとう。
VS.NETのMSDNデラックスっていうのを買って登録したら
OSやらサーバーやらオフィスやらいろいろ送られてきたから、
何人かで分けて使ってるけど、これって違法じゃないよね?
マイクロソフトから何か言われた人いる? 
>>27
デラックスなら大丈だろ。
バージョン情報で20桁くらいの番号が
表示されていると思うけどなんて書いてある?
>>27
単発質問スレ市ね
>>27
逮捕しますた
>>27
ここで訊かずに使用許諾書を読めよ。
確か、MSDN ライブラリだけはチーム内に限りピーコ可能、それ以外は
ライセンス者以外使用禁止みたいに書いてないか?
32デフォルトの名無しさん:02/11/17 17:33
VC++.NETで、自作したメニューのコマンドハンドラを作りたいのですが
ビューやドキュメントクラスのプロパティウィンドウの
「イベント」タブの「メニューコマンド」以下には自作IDが表示されない(ツールバーにのみ登録の時)か
表示されても32776と、素の番号で表示されてしまいます(メニューバーに登録の時)。
当然ここからハンドラを追加しようとすると"On32776"となってしまい、激しく鬱です。

一応メニューバーからコマンドハンドラの追加をすれば出来るのですが不便でなりません。
どなたか解決法・対処法をご存じでしたら教えてください。
33デフォルトの名無しさん:02/11/18 13:43
age
34デフォルトの名無しさん:02/11/18 17:20
C++の簡単な文法のみ学んだ状態でVC++.NETを購入しました。
でも何がなにだかさっぱりわからーんヽ(`Д´)ノウワァン
とりあえずヘルプをつついてみてるんですがまずHello Worldまでの道のりさえ見えてきません。
どこかにWinあぷりを作るまでの道のりを記してないでしょうか?
ポインタお願いします。
猫でも出来るプログラミング
http://www.kumei.ne.jp/c_lang/

でもまー、Hello, Worldとか試すならプロジェクトをコンソールアプリで作ればいいだけだが。
3634:02/11/18 20:14
>>35

感謝。
ここVC6との橋渡しをかいてくれてるのでこことVC6関連のページを見て頑張ってみようと思います。

それとこんなのあったんでつね・・
「お勉強ページ勝手にリンク」
http://pc3.2ch.net/test/read.cgi/tech/967778156/13
37デフォルトの名無しさん:02/11/21 22:22
>>34
数年前、それまで使っていたTurboC++のIDEが動作しないパソコンが出てきて
しかたなく、VC++に切り替えた。
しばらくの間、逐次処理の考えたでWindowsを捕らえようとして苦しんだぞ。
C++に慣れる事も大切だけど、まずは、Windowsプログラムになれることだと思う。
ID
39デフォルトの名無しさん:02/11/22 02:17
VisualStudio.netのC++を使っていますが、
ソースコードをコンパイルしてアセンブルしたソースコードをテキスト形式で出力するオプションは何でしたっけ?
VC6 では /FA?? だった
>>39
ソースコードをコンパイルしてアセンブルしたソースコードなんてのは激しく意味不明だが、
ヘルプ引けば一発で解決すると思われ。
コマンドプロンプトでcl /?とか。
>>40,41
/FAでできました 
ありがとう
何の気なしに cl と bcc のデフォのアセンブル出力を見比べると、
bcc の方が素直で読みやすいね。
>>43
最適化出来てない・・・?
>>43
その分遅くてコードサイズもでかいんじゃないか?
VC++ がさほど優れているとは思わないが、bcc はそれに劣る。
コンパイラが吐くコードが読みやすい必要は無いと思うが・・・
別に優れてるとも言ってないとおもうが・・・
主文を無視して副文だけ拾われても困るのだが・・・
4943:02/11/23 03:30
いやさ…bcc って直球勝負な出力するなあ、っていうか…
その時、思ったことをそのまま書いたまでで、
優劣抜きの感想なんで、その辺はご容赦を。
了解したが、それなら最初にそう述べるべきだった。
勝手に優劣に結びつけようとしてる方がどうかと
午前零時に昔話をいきなり始めるのもどうかと
そういえばTurboC++for Windowsは、コンパイル馬鹿っ早だったなぁ。
勉強目的にはあっちの方が良かった記憶がある。
最近のマシンでは、コンパイル速度なんて意識すらしない。
>>53
それは template ガンガン使えたか?
VC7 でも名前空間メンバの宣言と定義を別にすると、
クラスビューが使えない。(鬱
VC6でですが、
現プロジェクトのmain.cpp以外を
スタティックライブラリとして
生成したいのですが、

やっぱり
スタティックライブラリのプロジェクトを作って、
地道に全ソースをプロジェクト追加
しないとダメなのでしょうか?

階層がいっぱいあって、めんどくさいのです。
ビルド→構成→追加(コピー)
から、出来そうな気がするのですが。
出来ないでしょうか?
dspファイルの構造をよく見れ。
externよりinlineで最適化
DLLは遅くない(つーか速い)

# 漏れはMSの回し者ではないが
>>59
「DLLは遅くない」 は理解できるが、「つーか速い」 ってどういう事だ?
6157:02/11/27 22:19
普通のプロジェクトと
スタティックライブラリのプロジェクト
を作って、
同じファイルを設定して比較してみました。

# TARGTYPE が 103と104で違ったり
通常は、LINK32= link.exe
ライブラリは、LINK32= link.exe - lib
あとは、
通常の方だけ #ADD BASE LINK32 で、たくさんリンクされてました。

普通のほうに構成を追加して、
(VC上や、dspをメモ帳で)パラメータ真似たり、
コピーしたりしてやったけど、エラーが出ます。
何かヒントください。

もしかして、出来ないのでしょうか?
1 つのワークスペースには複数のプロジェクトを同居させられたと思うけど。
ドラッグドロップで。
63??:02/12/02 16:20
COMスレから誘導されてきました。

http://pc3.2ch.net/test/read.cgi/tech/981823340/682-683
についてわかる方、お教えいただけませんか?
DLLのソースで
IFastString* __declspec(dllexport) CreateFastString(const char* psz);

アプリのソースで
IFastString* __declspec(dllimport) CreateFastString(const char* psz);

アプリのリンクで
wara.libを追加

wara.DLLの場合な
66さいたまななし:02/12/02 16:42
VC++オおみやのそふまぷでげとー
67??:02/12/02 16:54
解決しますた。

------/*ifaststring.h*/------
#ifdef _EXPORTING
#define CLASS_DECLSPEC __declspec(dllimport)
#else
#define CLASS_DECLSPEC __declspec(dllexport)
#endif

class CLASS_DECLSPEC IFastString
{
public:
virtual void Delete(void) = 0;
virtual int Length(void) const = 0;
virtual char First(void) const = 0;
};

extern "C"
CLASS_DECLSPEC IFastString* CreateFastString(const char* psz);

でとおりました。
68??:02/12/02 16:54
>>64さんアドバイスありがとうございました。
内蔵のエディタでタブを聞かせたいのですがどうすればよいのでしょうか?
70デフォルトの名無しさん:02/12/02 22:55
vc++なんですが、
d&dで落とされたパスから
ディレクトリかファイルかを判別したいんです。
上手い方法はないものでしょうか?

他スレで質問したらここに逝けと・・・


>>70
GetFileAttribute()
72デフォルトの名無しさん:02/12/03 16:31
インデントとか自動成型してくれるショートカットなんだっけ?
7370:02/12/03 21:41
>>71
ありがとう。

ちなみにフルパスからファイル名や拡張子を抜き出すのに
端から調べて¥とかの位置から割り出して抜き出してんですが、
アホですか?
>>73
自前でやりたくなかったら_splitpath()使え。
7570:02/12/03 22:25
ちょっと調べてみたんですが、さっぱりですな。使い方わかりません。
もうちっと勉強が足らんみたいですね、俺も。
自前でやるのに問題ないんなら自前でいいんですけど、楽しいし。
>>75 もちろんバグ無しっていう自信があるなら問題無いがな
7770:02/12/03 23:37
なるほど。
じゃあ使い方勉強してきます。
ありがとう。
>>72
ヘルプメニューからキーボードショートカット一覧
>>75
_splitpath()の使い方が理解できないようでは他の関数もろくに使えないと思うけどね。
VC++6で使える
Granola みたいなアドインのつーる
ありますか ヽ(;´д`)ノ
VC++6でむけるあまぐりはありまつか?
>81
ネタがつまらんので首吊りの刑
8381:02/12/04 18:27
 ∧||∧
(  ⌒ ヽ
 ∪ 。ノ
  ∪∪
8471:02/12/05 01:47
>>73
PathFindExtension() PathFindFileName() を使えば簡単。

動作環境に注意。
Windows 2000, Windows NT 4.0 with Internet Explorer 4.0,
Windows 98, Windows 95 with Internet Explorer 4.0
>>71
多謝!!!
非常に助かります。
86デフォルトの名無しさん:02/12/10 01:14
(,,ノ゚д゚)ノ
(゚д゚ )
//
⌒Y⌒Y⌒Y⌒Y⌒(。A。)
             (゚д゚)ヌルポー
  ∧_∧
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >_∧∩
  _/し' //. V`Д´)/ ←>>89
 (_フ彡        /
>>91
キミは遅れているね。
93デフォルトの名無しさん:02/12/11 14:58
現在、MFCでアプリ作ってるが、ツールバーに表示する
ビットマップのやつをかっけーのに激しくしたい!

だけど漏れには絵の才能が無いぽ...

そんな漏れと同じあなた! あなたならどうしる?

つかいいとこあったら教えて〜
絵云々ならその道の板のほうがよかろ。
95デフォルトの名無しさん:02/12/11 15:21
CSVファイルを扱う標準関数ってありますか?
C/C++ 標準という意味なら、無い。
Excelをたたくとか
つーか、そんなに難しくないから自分で書いてみれ。
Windows MeでVC++ 6.0を使っているのですが、
CPropertySheet::DoModalを実行すると
「ハンドルされていない例外は〜〜にあります。 0xC0000005 Access Violation」
と出て強制終了してしまいます。エラーメッセージが出るときと出ないときがあり、
一度でもエラーが出るとPCを再起動するまで同じエラーが出てしまいます。

どなたか対処法を教えていただけないでしょうか?
100100:02/12/11 21:10
>>99
ちょっとそれだけでは分からないけど、エラーの原因が CPropertySheetにある
のか CPropertytPage(を使ってるんだよね?)にあるのかを切り分けないと。
10199:02/12/11 21:32
>100
エラーが出る位置は、CPropertySheet::DoModal中の
    m_nFlags |= WF_CONTINUEMODAL;
→   HWND hWnd = (HWND)::PropertySheet((PROPSHEETHEADER*)psh);
    #ifdef _DEBUG
この行です。
ただ、プロパティページをCPropertySheet::AddPage()で追加しないと、
エラーは発生しないのです。なのでどちらに原因があるのか判断し辛いのです。

一度発生してしまえば、CPropertyPageからの派生クラスのコードを最小限まで削っても、
エラーが消える事はありません。PCを再起動するとまた正常に動く事もあるのですが。
>>93
馬鹿め!死ね!
酷いこと言うなよ
>>101
>ただ、プロパティページをCPropertySheet::AddPage()で追加しないと、
>エラーは発生しないのです。なのでどちらに原因があるのか判断し辛いのです。

明らかにプロパティページに原因があると思うが・・・
105質問!:02/12/12 10:45
VC++で作成したアプリを配布する時、
どのインストーラー使ってますか?
インストール時に、ファイルの関連付けも行いたいので、
インストーラー探してるのですが・・・
106デフォルトの名無しさん:02/12/12 10:54
char 型の文字列を、CString型に変換するにはどうしたらいいでしゅか?
>106
=演算子で暗黙の型変換(?)で普通に代入してますが
108デフォルトの名無しさん:02/12/12 11:57
ワーカースレッドというのをやろうとして、

'AfxBeginThread' : 2 のオーバーロードは 1 番目の引数を 'unsigned int (void *)' から要求の型に変換できません。(新しい機能 ; ヘルプを参照)

とでるんですがいったいどうすればいいですか?
>>108
1番目の引数に unsigned int (void *) 型のデータを渡してください
110109:02/12/12 12:11
じゃねぇよ。
新で来る。
>>108 こういう形になってないのでは?

AfxBeginThread ( worker_thread , ・・・);

UINT worker_thread ( LPVOID pPtr )
{
 ・・・
112108:02/12/12 12:39
>>111
それがそうなっているんですよ。
MSDEの記述と違うところがあるとすれば、
ダイアログクラスの内部に書いており、
ヘッダのプロトタイプ宣言で、
UINT MyThreadProc(LPVOID pParam); とし、
cpp内では、
UINT MyClass::MyThreadProc(LPVOID pParam)
{
// 適当な処理
return 0;
}
とし、同クラスの他の関数内から、
AfxBeginTread(MyThreadProc, pObj);
としています。
113デフォルトの名無しさん:02/12/12 12:47
>>112
それって同じ名前のメンバー関数と、普通の関数があるってこと?
>>112
ダメじゃん
115108:02/12/12 13:02
>>113 >>114
どのへんがいけないのか教えてください。
116108:02/12/12 13:07
ちなみに、AfxBeginTread で、引数を
MyClass::MyThreadProc としても同様にだめです。
>>115
static 指定してください。
118デフォルトの名無しさん:02/12/12 13:19
>>115
>> それって同じ名前のメンバー関数と、普通の関数があるってこと?
> どのへんがいけないのか教えてください。

まず質問に返答しろよ。
119108:02/12/12 13:34
>>118
ダイアログクラス MyClass 内に、MyThreadProc という関数はありますが、
これはメンバ関数なので、普通の関数はないです。

>>117
static というのは、どの部分に指定すればいいのでしょうか?
>>119
UINT MyClass::MyThreadProc(LPVOID pParam)

メンバ変数で↑こういう関数だと、実際は↓こういう関数になるんだよ。

UINT MyClass::MyThreadProc(MyClass *this, LPVOID pParam)

だから、クラスの外に外に関数を作るか、staticをつけるか。

static UINT MyClass::MyThreadProc(LPVOID pParam)
UINT MyClass:MyThreadProc()
を作ってreinterpret_castしても動くだろう。
激しくお勧め出来ないが。
122------------------さん:02/12/12 13:50
既出っぽいかな。SDI形式で最初のウィンドウサイズを
指定することってできたっけ??
おしえてください。
>>122
MFC使ってるか使ってないかで答えが違うんだが。
124------------------さん:02/12/12 14:27
>>123
MFCです。
126デフォルトの名無しさん:02/12/12 14:39
VC++ 6.0でMFCを使ってプログラミングしています。

ボタンが押された場合、そのボタンを使えないようにしたい
(VBだとEnabledをFalseにする)のですが、
MFCの場合はどのようにすれば良いのでしょうか。

おそらくCButtonクラスだと思うのですが・・・
>>126
CButtonの親のCWndにあるEnableWindow()を使えばできるよ。
128126:02/12/12 15:05
>>127さん
ありがとうございます。

使えないようにはなっていると思うのですが、文字の色は反転してくれないようです。
これも指定しなくてはいけないのでしょうか?

(VBだと文字色が灰色になるあれです)
親と言うかスーパークラス
130デフォルトの名無しさん:02/12/12 15:15
>>128
m_btn.EnableWindow(FALSE);

うちは、WinXPでVC6だけど、上のコードで灰色になるよ。
131126:02/12/12 15:21
>>130さん
間違えてました。
メインウィンドウをEnableWindowしていました(;´Д`)

やり直してみます。
132126:02/12/12 17:02
できました!ありがとうございました!!
133108:02/12/13 11:35
static 宣言をしたらできました。
ありがとうございました。
ちなみにMFCでやってました。
static とか extern とか、使いどころがいまいちよくわからず難しいです。
134デフォルトの名無しさん:02/12/13 12:15
VC++7ってどう?
もう移行しても大丈夫なのかな?ライブラリバグってない?
C#でよさそうなもんだがなぁ。
.NETならC#でもなんでも好きなのでよい。
.NETのもWin32APIだけのも作るならVC++7。
.NETはいらないがWindows95をサポートするならVC++6。

バグのないライブラリは無い。
VC++でケプラーの運動方程式をとくプログラムの作り方がわかりません
>>137
宿題は自分でしる!
139デフォルトの名無しさん:02/12/13 15:57
PostMessage(WM_MY_MESSAGE, 0, 0);
ポストメッセージを使って、2番目の引数を用いて、
"あいうえお" などの文字列を渡したいんですが、どうすればいいでしょうか?
140デフォルトの名無しさん:02/12/13 16:03
>>139
char *s = "abc";
SendMessage(WM_USER, (WPARAM)s, 0);

SendMessage()なら簡単なんだけど。
Post〜で渡すのは難しいね。
メッセージが処理されるまで帰ってこないSend〜なら生存期間をあまり気にしなくていいけど、
処理を待たずに帰ってくるPost〜だといつ処理されるかわかんないから…
>>139

char str = new char[20];
strcpy( str, "あいうえお" );

PostMessage(WM_MY_MESSAGE, (WPARAM)str, 0 );


メッセージを受けた側で
char* hoge = (char*)wParam;
・・・
delete [] hoge;

こんなんで、いいのかな?
143:02/12/13 16:19
× char str = new char[20];
○ char* str = new char[20];
>>142
勝手に解放するのは激しくやめて欲しい
どこが難しいのか問い詰める気がおきない。
146デフォルトの名無しさん:02/12/13 16:26
PostMessageで、メッセージだけ渡して、文字列はATOM系のAPIで渡すって手もあるな。
でも、めんどうだな。
147デフォルトの名無しさん:02/12/13 16:27
違うプロセスにアドレス渡しても、
データセグメントとか違って読めなかったりしないのかな。
この辺がすごい気になる。
GlobalAllocすれば?
149デフォルトの名無しさん:02/12/13 16:41
>>141
SendMessage()に渡すHWNDが他プロセス・他スレッドの場合
SendMessage()は実質PostMessage()になると思うからSendMessage()って
書いてても気をつける必要がある

>>147
char* str = new char[20];
のように普通の場所からとってる場合は無理

>>139
どのような使い方をするのか書くべきだが >>145 が手本となるような
答えを書いてくれるのだろう
150デフォルトの名無しさん:02/12/13 16:45
>PostMessage(WM_MY_MESSAGE, 0, 0);

引数の数から考えてMFCで単純にCWndの派生クラス内の話だと仮定してみたわけだが
派生クラス内かどうかがどのように関係してくるのか知りたいわけだが
普通のMFCアプリはCWndの派生クラスでウィンドウを作るからただそう表現しただけで
つまりごく普通の一般的なウィンドウの話であってプロセス外云々の話ではないと言いたかっただけなわけだが
>>148
GlobalAlloc() ってプロセス越えられるの?
Win16の頃は本当にGlobalだったけど、今は超えられれない。
だよねえ・・・すぐに思い付くのは CreateFileMapping() くらいしか
157デフォルトの名無しさん:02/12/13 18:43
MFCのダイアログクラスを使ったんだけど、
デストラクタを宣言したいんだけどわかりません。
どうしたらいいでしょうか?
158デフォルトの名無しさん:02/12/13 19:02
よく他のアプリをみると、
-------------
Time=15
Speed=300
Pause=10
-------------
という感じのテキスト形式のファイルを読み込んで
各パラメータの設定をするのをみますが、これを
やるために参考になる例ってどこかにあるんでしょうか?
GetPrivateProfileString() 系統の
160158:02/12/13 19:14
>>159
おお、こんな関数あるんですね。ありがとうです。
ではMSDN読みます。
>>157
MSDN見てください
>>157
見当違いだったら悪いか、終了時に何か処理したいならWM_DESTROYをとらえるべし。
163157:02/12/13 23:15
>>162
クラスの終了時、
~ClassXXX
みたなデストラクタに終了処理をいれるはずなんだけど、
ダイアログクラスは、CDialog クラスを継承しているので、
いまいちどう宣言したらいいかわからないんです。
>>147
違うプロセス間でもOKなWM_COPYDATAという割と便利そうな
メッセージがありますよ。
165158:02/12/14 08:34
>>159
どうもでした。以下の事が解って、ちゃんとできるようになりました!

INIファイル,GetProfileInt(),WriteProfileInt(),
CxxxApp::InitInstanceに追記してEXEと同じフォルダのiniファイルを使わせる
>>153
なぜ CWnd からの派生だと同一プロセス内にあることになるのか問い詰めたい。
167デフォルトの名無しさん:02/12/14 12:17
申し訳ない・・・。
これの意味がどうしても解らない→「+=」(カッコは除く)。
教えてたもれ。
>>167
a += 2;

a = a + 2;
169167:02/12/14 12:22
>>168
ありがとう。
しかもスレ違いだった。。。
申し訳ない。
170デフォルトの名無しさん:02/12/14 12:40
申し訳ない・・・
これの意味がどうしても解らない→SetWindowLong(hWnd , IDC_HINSTANCE , 12345);
教えてたもれ。
171デフォルトの名無しさん:02/12/14 12:54
(,,゚Д゚)∩先生質問よろしいですか?
for( ; memcmp( lpBuf,"FileName=",9 ) ; lpBuf++ );
と言うところでプログラムが落ちてしまいます。
どのように対処すればいいのでしょうか?

LPBYTE lpBuf
LPBYTElpFileBuffer = new BYTE[ dwFileSize ];
SetFilePointer( hFile,NULL,NULL,FILE_BEGIN );
ReadFile( hFile,&lpFileBuffer,sizeof( lpFileBuffer ),&ByteCount,NULL );
CloseHandle( hFile );
lpBuf = lpFileBuffer;

for( ; memcmp( lpBuf,"FileName=",9 ) ; lpBuf++ ); // ここで落ちる
>>171
× ReadFile( hFile,&lpFileBuffer,sizeof( lpFileBuffer ),&ByteCount,NULL );
○ ReadFile( hFile, lpFileBuffer,dwFileSize,&ByteCount,NULL );

> LPBYTE lpFileBuffer
は配列じゃなくてポインタなのでそこでsizeofは無意味だ。

> for( ; memcmp( lpBuf,"FileName=",9 ) ; lpBuf++ ); // ここで落ちる
ついでに、もしファイル内に FileName= というのが無かったらそのまま突っ走って落ちるのでやめれ。
>>172
ご指摘ありがとうございます。
sizeofには気が付いたのですが、&lpFileBufferの’&’のせいでした。
元々配列で準備してたのをnewで確保するようにしたとき消し忘れていたようです。
>ついでに、もしファイル内に FileName= というのが無かったらそのまま突っ走って落ちるのでやめれ。
独自仕様のファイルなのでそれはないのですが、
for( DWORD i = 0 ; i < dwFileSize ; i++,lpBuf++ )
{
if( !memcmp( lpBuf,"FileName=",9 ) break;
}
の様にした方がいいですか?
174172:02/12/14 15:26
std::search を使うか、
せめて for( long i = 0 ; i < (long)dwFileSize-9 ; i++,lpBuf++ )
をオススメしたい。

> の様にした方がいいですか?
と俺は思う。仮に不測の事態が発生してそのファイルが壊れてたみたいな場合まで想定して
チェックしておけば、その時にページ違反で落ちるのでなくて、「かくかくしかじかな理由で
エラーとなりました」的な表示をして強制終了、くらいにはできる。
その方があとあと問題が起きたときに発見しやすいので。
175171:02/12/14 17:47
MSDNでsearchを調べたのですが、いまいちわからなかったので
>せめて for( long i = 0 ; i < (long)dwFileSize-9 ; i++,lpBuf++ )
>をオススメしたい。
こちらを使わせて頂こうと思います。
ありがとうございました。
>>166
CWndの派生クラスでPostMessage(WM_MY_MESSAGE, 0, 0);
とやればそれはthis->PostMessage(WM_MY_MESSAGE, 0, 0); を意味するからじゃん?
CRichEditCtrlの現在の行間(pixel単位)の取得の仕方教えてくんなまし。
>>176
CWnd::FromHandle(hWnd)->PostMessage(WM_MY_MESSAGE, 0, 0);
っていうのも考えらなくもない。

ま、どこにメッセージを投げるのか >>139 が書いていないのに、訳知り顔で
他プロセス云々いうのはどうかと思った。
>>178
>>139はCWnd::FromHandle(hWnd)->はなくてPostMessage(WM_MY_MESSAGE, 0, 0); しか
書いてないわけだからthis->と仮定するのが自然だと思うんだけどなぁ。
まぁ本人が>>139以降登場してないからどうでもいいっちゃどうでもいいんだけど。
>>175
VC5/6使用の場合
search ではなく
serch  で検索しる
外してたらすまそ
>>180
単にVC++6.0付属のMSDNライブラリ中のSTLアルゴリズムの解説がわかりにくいだけじゃないか?
あれ、動作の解説としては正しいんだろうが、なにがやりたいのかは……
182180:02/12/14 21:24
そかSTLの話だったな
すまそ
183180:02/12/14 21:26
しかもserchではなくbserchだったか(欝山車能
MSDN の C++ リファレンスは、C リファレンスと同じ人に書き直して欲しい・・・。
185デフォルトの名無しさん:02/12/15 16:02
Visual C++.NETって
Window2000のService Pack3じゃ正常に動作しないんですか?
動いてるってコトは俺のVC++.netは偽者だったのか…
187デフォルトの名無しさん:02/12/15 18:01
SDI環境で作業したいのですが
強制的にでも設定する方法はありませんか?
>>187
ウインドウ全部分離させたら?(w

SDIなんて使いにくいだけだっつーの。
ほとんどが最初っからMDIかMDIに切り替えてるだろ。
プログラム言語を何も知らないのですが、C++の入門書みたいなもので
いいのはないでしょうか?よくある本は「C言語を少し知っている人向け」みたいなのが多いです。
通販で購入しようと思っています。

最終的にはDirectXを使えるようになりたいです。
190毛の生えたブリーフ:02/12/15 20:44
高橋麻奈「やさしいC++」(ソフトバンク)

誤植がありますので以下を参照してください。
http://www.bekkoame.ne.jp/~manachan/

C++は広大な言語仕様ですが、この本程度の知識があればたぶんDirectXを
使いこなせると思います。分かりやすいし、コンパクトな本だからいつでも
どこでも持ち運んで勉強できます。おすすめです。
宣伝は話半分に聞いておきましょう。
192デフォルトの名無しさん:02/12/15 20:58
>>190
なんだか良さげですがVisualC++でOKですよね?
C++としか、かいていませんが。
>>192
失礼しますた。
ttp://bookweb.kinokuniya.co.jp/imgdata/large/4797311843.jpg
を見たらVisualC++対応と書いてますた。
今から買います。ありがとうございますた。
194忘れた……:02/12/15 21:35
#include <vector>
class honya
{
 public:
  honya();
  virtual ~honya();
 protected:
  vector < int > m_intlist;
};

VC++6.0ですけど。とやっても”構文エラー : ';' が '<' の前に必要です。”
とかでるんですけど、何故でしたっけ??
195忘れた……:02/12/15 21:36

vectorの行で出ます。
>>194
#include <vector>
これじゃないの?エラーの原因。
何かこれを見る限りじゃ他にもあやしい所は歩けど。
>>196
怪しさ大爆発だろ。
ネームスペースが明らかにおかしい。
using namespace std;
とするか、
std::vector<int>とすべき。
198忘れた……:02/12/15 21:54
あ、ネームスペースでしたか。。スマソ
199デフォルトの名無しさん:02/12/16 00:20
Visual C++.NETインストールして立ち上げたら、
Alert!っていう警戒ダイアログが出まくるんだけど何で?

あと、立ち上げるとノートンにも引っかかるんだがそれもなぜだかわからん・・。
どなたか、なぜなのかご存知の人いません?
200デフォルトの名無しさん:02/12/16 04:08
ゴルァ!windows.h!なんだこれは!

#define small char

小一時間ハマったじゃねーか!!!!!
いくらなんでもこれはないだろう・・・
>>200
[F12]知らんのか?
F12知っててもこういう普通に使う単語が登録されてるとわかりにくいやね。
203デフォルトの名無しさん:02/12/16 12:32
おすえて。

CFileで、
Createでは開くんだけど、アペンドオープン出来ない。
フラグがわかんねぇっす。
CFile::modeNoTruncate|CFile::modeReadWrite 
でいけるかと思ったけど、ダメだった。
賢いヒトおすえて。
>>203
その方法で Open して SeekToEnd() じゃない?
205203:02/12/16 13:05
>>204
おおっ!!
いけたぁ。ありがとう。
そっかぁ、アペンドオープンなら、
ファイルポインタはファイルエンドになると思ってたよ。
どうも、Cの癖が抜け切れてないな。

マジで助かりました、ありがとう。
206------------------さん:02/12/16 16:23
MFCです。「プリントアウト」について質問なんですが、
SDIならばフォントサイズを訂正してやればもうすぐ印刷できるのですが、
CFormView(SDIのなかにコントロールボタンやPICTがあるやつ)
の場合で例えばPICT1を印刷したい場合どうすればいいのでしょうか。
>>206
OnPrintで頑張れ
208デフォルトの名無しさん:02/12/16 16:38
どどどどどどないやねん!w
どどどどど童貞ちゃうわ!
どどどどどどうだかな(藁
211デフォルトの名無しさん:02/12/17 10:24
いや、まじで教えてくれw。
どうやってプリントアウトするんだ?
で、童貞なのか?
213デフォルトの名無しさん:02/12/17 14:02
質問変えます。
SDI形式の場合OnDraw関数の中身を印刷しますよね。
こてをあとから追加してメニューバーを押すとなにか表示ってのつくたんだけど
そのOnDrawXyz()ってのがあるとします。この中身を印刷するには
どうしたらいいのですか?ちょっと緊急でおながいします。ちなみに童貞じゃないですはい。
214デフォルトの名無しさん:02/12/17 14:04
画面表示は何もかも全て OnDraw にまとめろ>>213

それ以外の部分では何をどう描くかだけ覚えておいて、
実際の描画は OnDraw で行う、というのが普通。
215デフォルトの名無しさん:02/12/17 15:22
バカですいません。やはり見た目的にかっこいい先に書いた
CFormViewの方の印刷方法がしりたいです。
PICT1のなかにかかれたものを印刷するには・・
質問;
初歩中の初歩ですいません。SDI形式のドキュメントクラス
の「ファイル保存」でたとえばプログラム内で計算したA
という数値データを保存したいのですが、ファイル保存って
どうやってやるのですぁ?
>>216
C++スレ逝きのヨカーン
質問するスレ変えるので>>216は忘れてください。削除
>SDI形式のドキュメントクラス
この部分からしてCArchiveの使い方を質問してるのだろうから
ここかMFCスレで良いと思ったが、結局クラスの使い方だから
MSDNライブラリ読めと言われる罠。
220アマグラマー:02/12/18 00:10
VC6 使いの皆さんいらっしゃいますか?
VC.NET framework 入れるかどうか迷っているので、
皆さんの意見を聞かせてください。

>>220
>VC.NET framework
VC++.NETと.NET Frameworkをつなげちゃったわけか・・・
222デフォルトの名無しさん:02/12/18 18:59
SDIで、CSplitterWndで複数のViewを持たせてます。ActiveなViewをボーダーで囲むなどして強調表示したいんですが、どうしたら良いでしょうか?
>>222
OnDrawでフォーカスがある場合に枠線を書く。
>>222
OnActivateViewで
if(bActivate){
ModifyStyle(0, WS_BORDER, SWP_FRAMECHANGED);
}else{
ModifyStyle(WS_BORDER, 0, SWP_FRAMECHANGED);
}
な感じ。
>>224ばっちりできました。アリガト!>>223ごめん。ListViewやら使ってるんで、OnDrawのなかでは描画できないのであった。でも、サンクス。
226157:02/12/19 12:49
自己レスですがダイアログクラスでのデストラクタの宣言方法がわかりました。
public: に、
virtual ~MyClass();
と宣言して、
MyClass::~MyClass(){}
に処理を記述する。
ところで、virtual っていうのはいったいなんなんでしょうか?
227デフォルトの名無しさん:02/12/19 13:02
仮想関数を知らんのか?
仮想関数と火葬関数の違いは。
>>215
どーもこーも、日本語が分かりづらい。
CStaticのメンバにGetBitmap()ってのがあるから、
それをOnPrintで渡ってきてるCDCでBltBltかませるようにすればいいんじゃない?
簡略して書けば、
CDC memDC;
memDC.CreateCompatibleDC( pDC );
memDC.SelectObject( m_wndPict.GetBitmap() );
pDC->BitBlt( 省略, &memDC, 省略 );
リソースリークとかオラしらねってコードだが。
>>228
Destructor と、DeathTructorみたいなもの。
231226:02/12/21 01:35
>>227
よくわかりませんが、つけるのが作法ってことでいいでしょうか。
MFCの前に最低限C++の入門書を読んでおいた方が良いと
233デフォルトの名無しさん:02/12/21 13:44
MFCとかATLのソースみると、
ASSERT使ってるみたいだけど
これってRelease環境では実行されてないと思うんだけど
内部エラー検出にはASSERT使って、
入力したデータのチェックには例外使って欲しい...。
234デフォルトの名無しさん:02/12/21 13:47
#include <plot10.h>

ってしたんですが、インクルードファイルplot10.hを開けません。そんなファイルはないですよ。
ってエラーになったんですが、このファイルだけ追加とかできますか?
235デフォルトの名無しさん:02/12/21 14:05
>>234
そのファイル(ライブラリ)の出所が分からないと、なんとも。
>内部エラー検出にはASSERT使って、
>入力したデータのチェックには例外使って欲しい...。
ASSERT は例外投げてなかったっけ

>>234
"plot10.h" でないの?(テキトウレス)
237234:02/12/21 14:41
>>235
出所とは?

>>236
意味が分かりません。
>>237
>出所とは?

ああ、かんちがいだった。

プロジェクトの設定で、インクルードパスが設定できるよ。

もしくは、そのヘッダーファイルをインクルードしてるファイルと同じディレクトリにおいて
#include "plot10.h"
と書き換えるか。
VC++6.0Pro + WinXPで、CStringArrayクラスの配列に、
1件数文字程度の文字列を10万件格納。
これをクイックソート用の関数で五十音順に並べ替えるとき、
同一文字列の数が一定数以上だとスタックオーバーフローが起きる。
10万件中、同一の文字列が数百件程度なら大丈夫だけど、
数千件単位になると急に怒られる。
同一文字列がない、あるいは100件程度なら20万件扱っても平気っぽいのに。

オーバーフローが起きるタイミングは、
クイックソートで「キー」にするための文字列を配列から取得しようとしたとき。
数百〜数千回ほど再帰呼び出しを繰り返して、そこそこ階層が深くなったところで起きる。
>>239
ふーん、で、それがどうかしたのか ?
>>239
当たり前ということに書いてて気付かないのだろうか。
242239:02/12/22 17:45
>>241
回答ありがとう。
ごめん、わからん。
何が当たり前でどうダメなのか教えてもらえると助かるよ。
243241じゃないけど:02/12/22 18:35
「スタック使いすぎちゃってオーバーフローが起きました。」
「じゃあスタック大きくすれば。」

とか、そんな話?
再帰使えばそうなる罠
最近の容量という概念がわかっていないパソ初心者のようなものか
246239:02/12/23 10:15
>>243
すまぬ、言葉足らずの質問だった。
うん、スタックを大きめに設定すれば解決はするのだけれど、
原因がわからないのがすっきりしない。
クイックソートって、比較結果が同じ値を扱うときは計算量が増える?
たとえば同じ256個の数値をソートするにしても、
1〜256まで全ての値があるのと10〜250までの10の倍数があるのとでは、
後者の方が手順が増えるものなのかな。

もうVCの話題じゃないな。
関数がどのように呼び出されるのかを勉強すれ。
>>246
同じ値がたくさんあると増えるだろね。
後半は意味が判らん。10〜250まで10の倍数は25コじゃないのか?

まー、とにかくクイックソートのアルゴリズム知らないなら勉強汁。
スレ違いなのでききたきゃ移動汁。
>>231
たとえば、Aというクラスがあって、そこから派生したBという
クラスがあるとするわな。それで、

B *pB = new B;
A *pA = (A *)pB;
delete pA;

なんつーことをする時に、Bのデストラクタが仮想関数になって
いないと、delete時にクラスBのデストラクタが呼ばれない。Bの中で
メモリをアロケートしてたりすると、そこでリークしてしまう罠。
全然VC++の話じゃないが、まぁそういうことだ。デストラクタは
virtual指定しておくべし。
VC++.netってVC++6にあった
最近使ったファイルと最近使ったワークスペースは無くなっちゃったんですか?
「最近使ったファイル」は無くてもいいが、
「最近使ったワークスペース」は残して欲しい。
>>251
そだね。でもnet持ってないからいーや。
>>249
231じゃないが、仮想デストラクタの意味がはじめて分かった気がした。
ありがとん
254デフォルトの名無しさん:02/12/26 17:32
ここでいいのか悩んだんですが・・・。 心優しい方の叱咤を期待して。

VCではき出した実行ファイルを色々な環境にもっていって動作させ、
その中のfloatやdoubleの計算結果がOSやCPUで違う、なんてことは
あり得るのでしょうか。 DirectXのマトリクス演算等は使用せず、
数学関数のみ使っています。 やっているのは、弾道計算のようなものです。

P3, AthlonXP, Celeron で違うようなんです・・・ 微妙に・・・

何かヒントでもいただければと思います。 どうか、よろしくお願いします。
「ある」 としか言いようがないが・・・。
epsilon でもかませればある程度和らぐとか。
256デフォルトの名無しさん:02/12/26 18:29
>>255
え?どういう理由で結果が違ってくるの?OSによって、x86系のFPUの
仮数部の精度の指定が違うとか?
CPU によって違う。
精度の問題ではなく、同一の回路を作ることができない。
それぞれの CPU の回路は企業秘密で、完全にそっくりに作ることができない。

という事が予想できるが、P3 と Celeron で違うのはどういうことかナー?

OS 依存の数値演算ライブラリを使用していなければ、OS は関係ない。
OSごとの違いと言えば、こういう話もあるわけだが。
ttp://www.jp.freebsd.org/QandA/HTML/587.html
259デフォルトの名無しさん:02/12/26 21:01
>>257
それ、本気で書いてるの?インプリメントが違っても、異なる
計算結果になんかなるわけないでしょう。なるとしたらそれはバグ。

> OS依存の数値演算ライブラリを使用していなければ、OSは関係ない。

あのね、x86のFPUは仮数部の精度を24/53/64bitのどれかに
設定できるの。たとえば、FreeBSDではデフォルトで53bitに
なってるために、long double(64bit)で充分な精度が得られな
かったりするんだが。

>254
何らかのバグがいるんじゃないの?
260254:02/12/26 21:26
ふむ。 難しいですね・・・。
DirectXは使っていないと書きましたが、他の部分では使っているので、
もしかしたら影響を受けているのかも知れませんね。

FPUの仮数部精度をC/C++からせっていしてやることはできるのでしょうか。
DirectXのデバイス生成の時にどうこう、って話をどこかで見たような気が
するのですが・・・
>>260
MSDN眺めてたら _control87、_controlfp なんかがあった。あと

Microsoft ランタイム ライブラリは数値演算コプロセッサ (またはエミュレータ)
のデフォルトの内部精度を 64 ビットに設定します。このデフォルトは、計算の
中間結果が実行される時の内部精度にのみ適用され、引数、戻り値、変数のサイズ
には適用されません。プログラムを LIB/FP10.OBJ とリンクすることでこのデフォ
ルトをオーバーライドし、チップ (またはエミュレータ) の精度を 80 ビットに
戻すことができます。FP10.OBJ は、リンカのコマンドラインで LIBC.LIB、
LIBCMT.LIB、および MSVCRT.LIB より前に指定する必要があります。

なんて記述もある。よーわからんけど。
262254:02/12/26 21:59
>261
ありがとうございます!

あとは、CreateDeviceの時にD3DCREATE_FPU_PRESERVE ですかね。
色々試してみます。 ありがとうございます>ALL
263デフォルトの名無しさん:02/12/26 22:00
X-Yプロッタ・ルーチン使いたいんですが、

"plotc.exe"は内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチファイルとして認識されていません。

となってしまい、うまくできません。
解決法をどなたか教えていただけないでしょうか?
plot10.hなんて最近使わないんでしょうか…?
>>263
1. plotc.exeにパスが通ってない。
2. 何か根本的なことを間違えている。

つーか、ヘッダーファイルをインクルードする場合普通はDllかLibがあると
思われ。
265263:02/12/26 23:27
>>264
レスありがとうございます。

うちのVisualC++ではxyプロットルーチンが使えなかったんで、
plot10.hとplotc2f.libを各々フォルダに入れてやってみたんです。
しかし、うまくグラフが出ない。ってことは.dllが足りないと言うことでしょうか?
266デフォルトの名無しさん:02/12/26 23:52
Visual C++6.0プログラミング―MFCによるWindowsプログラミングの基本と実践からATLによる技法まで Programmer’s PAGE
http://page3.auctions.yahoo.co.jp/jp/auction/c28302205
6.0だけどいいんじゃない?
267デフォルトの名無しさん:02/12/26 23:56
char* の数値を intにキャストしたいのですが、どうしたらよいのですか?
>>267
どうしたらよいって何?
ソース書けってこと?
>>267

char* pchar;

・・・

(int)pchar;
「char*の数値」ってポインターアドレスを指しているのか
charの実体を指しているのかわかりづらい表現だな。
271デフォルトの名無しさん:02/12/27 00:21
char* hoge1="10";
char* hoge2="20";

int res = (int)hoge2 - (int)hoge1;

で差を求めたいんです
272デフォルトの名無しさん:02/12/27 00:25
>>271
「atoi」っていうかスレ違い。
>>271
これじゃあポインタの差を取ってないか?
274デフォルトの名無しさん:02/12/27 00:42
値の差を取りたいのですが・・
int res = atoi(hoge2) - atoi(hoge1)
ポインタの値
文字コードの値
数値の値
この3つを明確に区別してね
277デフォルトの名無しさん:02/12/27 00:48
メッセージボックスでその値を表示しても表示されないのですが・・

MessageBox(hwnd,(LPCSTR)res,(LPCSTR)"差分",MB_OKCANCEL);
そりゃ表示されんわな
279デフォルトの名無しさん:02/12/27 00:52
がーん
>>279
>>276 を3度嫁
281デフォルトの名無しさん:02/12/27 01:00
じゃあsprintfを投入しる!
使い方は自分で調べるぁ
282どうよ?:02/12/27 01:00
>>277
char s[80];
wsprintf(s,"res = %d",res);
MessageBox(NULL,s,"差分",MB_OK);
>char s[80];
なんで 80にしたのか、すげー気になる
284山椒:02/12/27 03:07
唐突な話で恐縮なんですが、もしご存知の方がいらっしゃったら
教えて下さいです。(低姿勢)
例えば、あるWebページにActiveX(COM)を埋め込んだとします。
で、そこで公開しているなんらかのメソッド(あるいはプロパティ)に
「JavaScriptで作成したオブジェクト」を引数として渡したとします。
この時、ActiveX側からこの参照(型はたぶんVARIANT)を通じて、
「JavaScriptで作成したオブジェクトのメソッド」を呼び出す事は可能
でしょうか。
285山椒:02/12/27 03:10
ちなみに、「JavaScriptで作成したオブジェクト」ってのは、以下のような物を指します。

// 例
function CFoo() {
this.privateArg = null;
this.setMethod = function(a) {
this.privateArg = a;
};
this.getMethod = function() {
return this.privateArg;
};
}
>(低姿勢)
激しくむかつくんだが。。。
287山椒:02/12/27 03:17
で、埋め込んだActiveX(COM)のメソに...

// これはJavaScript側
var oFoo = new CFoo();
{COMのインスタンス}.SetSomeMethod(oFoo);

こんな感じで参照を渡す。
...ちなみになんでこんな事してるかと言うと、要するにDHTMLとして
Webページ上に書かれたなんらかのパーツを処理する部分がJavaScriptで大量にあり、
それを、別の処理を行うCOMから連動させて制御したいという事なんです。
厳しいスかね。
288山椒:02/12/27 03:19
>>286
>激しくむかつくんだが。。。

...すんませーん、特に意味は無いです。申し訳無い。





















っで?
290これって:02/12/27 03:24
WebProgネタじゃねぇの??とも思ったけど、たぶんWebProgでは、
扱って無い系の話かもしれないようなそうでもないようなっていうか
users.gr.jpにでも行った方がいいのでは?
>>282
_itoaじゃ駄目か?
IEコンポーネントのJavaScriptを呼ぶ方法はあるが、ちょっと違うな…。
ttp://www.codeguru.com/ieprogram/JSCalls.html
>>291
可搬性が低い。
wsprinftも低いが。
sprinft使え。
294山椒:02/12/27 05:04
>>292
こんな時間にレスありがとうございます。

そうなんですよね。「IEのコンポーネントなら」コントロールできるんですよね。
でも今の悩みは、「JavaScriptで作成された独自オブジェクト」内を
操作できるか、って事なんです。

COM側から、この参照は「(JavaScriptの)Objectを継承して作られたCFoo」の「インスタンスのポインタ」
って事を理解し、そのメソッド(あるいはメンバ全て)にアクセス(vtableに対するポインタのポインタみたいに)
できるのか、って事なんです。

..やっぱ無理かなぁ..。つーか、インタプリタの作成したオブジェクトって時点ですでに
「逝ってよし」なんでしょうか...。
295デフォルトの名無しさん:02/12/27 10:12
>>263
そもそも、そのplot.exeだのplot10.hって何だよ。それのマニュアル
をちゃんと読んだのか?どうもVC++と何の関係も無い質問をする冬厨が
増えてるようだな。
>>295
まぁ仕方ない。冬だから。
>>294
JavaScriptのオブジェクトって、IDispatch (正確には IDispatchEx)
インターフェースを公開してるから、CComDispatchDriverでラップ
してInvokeすればいいんじゃない?
BMPを読み込もうとしたんですがgraph.hがわからないとか言われました。

VC++ではBMPを読み込めないのでしょうか?
読めますよ
>>298
問題はどんな形でBMPを読ませようとしているかだな。
301デフォルトの名無しさん:02/12/27 16:15
Windowsのプログラムのソースって、何十行もあるけど
あれは覚えないといけませんか
302301:02/12/27 16:18
スケルトンのことです。
>>301
暗唱してください。
コピペなんてプログラマの風上にも置けません。
コピペというかWizardが作ってくれますた。
305301:02/12/27 16:42
どうやって覚えますか
306301:02/12/27 16:51
やっぱりひたすら打つしかないか
int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);

こいつの第四引数 MB_OKCANCELなどで使いたい時、
[OK][キャンセル] ではなくて、[OK][Cancel]にすることってできますか?
>306
左脇えぐりこむようにな
>>307
caption書き換えるだけでいいだろ?
なんで関数まで持ち出す必要あるんだ?
310307:02/12/27 17:16
>>309
すみません、どこで書き換えるのかわかりません。
そんなに簡単なんですか。じゃもう少し自分で調べます。
関数を全部書いたのは、MessageBoxにもいくつかあるかな、
と思ったからです。
311301:02/12/27 17:17
あぁ…やっぱりだめだ。
全然覚えることができない。
だいたいCALLBACKってなんだよ!Instanceってなんだよ!
UINTってなんだよ!Whndってなんだよ!
新しい言葉ばっかりで意味不明だ…
どの本を読んでも意味を理解しようとするなって書いてあるし。
理解できないと覚えれるわけがないじゃないか!!
312297:02/12/27 17:18
>>294
CHogeObject::SetSomeMethod( IDispatch* pDisp)
{
CComDispatchDriver jsObj(pDisp);

CComVariant varRet;
jsObj.Invoke0( L"getMethod", &varRet);

// privateArg が string とすると。
varRet.ChangeType(VT_BSTR);
CComBSTR arg = V_BSTR(&varRet);
}

こんな感じで出来ると思う。
初心者スレもMFCスレもWin32APIスレもCOMスレも内包するこのスレは最強だな
314デフォルトの名無しさん:02/12/27 17:27
ウインドウのスケルトンのソース教えてください
>>311
意味が分からないのは、覚える覚えない以前の問題。
>>310
MessageBoxEx の wLanguageId を指定すればいけるんじゃ?

...と思ったらダメぽだったよ。
317307:02/12/27 17:33
>316
はい、俺も今やったけどダメでした・・・
318デフォルトの名無しさん:02/12/27 17:33
>>315
だって意味がわからないんだもん
ペゾルド本読み
>>310
目的のコントロール(この場合ボタン)を右クリックしてメニューを出して、
プロパティをクリックすれ。
キャプションっていうのがあるからそこ書き換える。
…初心本すら読んでないのかよまったく。
>>311
まず猫にでも行ってこい!
>>309 >>320
??MessageBoxですよ? むしろ MessageBoxを自作しろということかな?
>>322
自作すれ。
324デフォルトの名無しさん:02/12/27 18:41
ダイアログの中のピクチャボックス(256×256)の左上の座標を(0,0)
に設定したいです。ピクチャボックスを動かしても(0,0)にしたいです。
どうすればよいでしょうか?
BOOL CAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();

MoveWindow(IDC_FIGURE, 0, 0, 256, 256);

TODO: return TRUE;
}
ここまでできたんですが、まだ座標がさだまりません

#include <graph.h>

を打ち込んでもコンパイルできません。
どこから拾ってくれば良いのでしょうか?
>>322
つーかなんで、[OK][Cancel]にしたいのよ?
327322:02/12/27 19:18
>>326 あ、俺は >>307=310 じゃないよ
メディアプレーヤーを指定した時間に再生できるように設定するコードを書きたいのですがVCでできますか?
よろしくお願いします。
>>325
マルチうざい

>>328
タイマつかって1分ごとに時間をチェック→ShellExecuteとか。
330デフォルトの名無しさん:02/12/27 19:53
ダイアログの中のピクチャボックス(256×256)の左上の座標を(0,0)
に設定したいです。ピクチャボックスを動かしても(0,0)のままになるようにしたいです。
どうすればよいでしょうか?頼みますから教えてください・・
>>327
あ、そうなの。まぁどうでも良いけど。
332デフォルトの名無しさん:02/12/27 20:27
MSからデバッグシンボルというものをダウンロードしてインストールしたんですが、
(kernel32.dbgとかがある)

これで、VCのコールスタックとかにシンボル情報が出てくれないんでしょうか?
なんかよくわかってませんが、おねがいします。

VC6 Win2000
>>330
左上の座標を(0,0)っていうのはダイアログの左上隅に配置したい
ていうこと?
334デフォルトの名無しさん:02/12/27 21:47
RPGを作ろうとしてます。
画面表示などは解るのですが、スクリプト部分がわかりません。
どなたか教えてくださいませんでしょうか
335332:02/12/27 21:50
COFFのエクスポートでできました。ヽ(´ー`)ノ
>>334
何を教えるの?
全部?
337デフォルトの名無しさん:02/12/27 22:21
VCのDAOとACCESSでデータベース検索プログラム作ってるんだけど
ACCESSの特定のカラムを抜き出そうとしたとき
「このコレクションには項目がありません。」って言われました。
コンパイルは通るんですが実際に検索はできません。
これってどういうことでしょう?
338デフォルトの名無しさん:02/12/27 22:21
SDKって最新版をDLしてインスコした方がいいの?
339山椒:02/12/27 23:43
>>297 319
遅レスですいません、ありがとうございます!!
へー、JavaScriptで作成されたオブジェクトって、IDispatch持ってたんですか。
ていうか、CComDispatchDriver でラップできるような(要するにCOM部品な)
ヤツだったんですね。

早速試してみます。ありがとうございました。
リソースエディタで作ったダイアログのソースをVC++上でみることはできないのでしょうか?
多分できないけど、そんな必要があるの?
外部のテキストエディタで見ればいいのに。
342デフォルトの名無しさん:02/12/28 07:05
AppWizard -> MFC AppWizard(exe)
で生成されるものに手を加えずにコンパイルしても・・・

fatal error c1083: プリコンパイル済ヘッダーファイルがオープンできません。
'Debug/test.pch': No such file or directory
cl.exe の実行エラー

このエラー自分なりに調べたけどどうにもなりません。
ファイルの読み専属性とか環境変数とか、
特に変更もしてないし・・・
どなたかご教授下さい

Visual Studio 6.0 Enterprise VC++ 6.0
Win2000 Server + SP3 + Pre-SP4
>>341
いや見れるぞ
修正も出来る
開いてるとちゃんと再読込もかかる
344デフォルトの名無しさん:02/12/28 11:17
OSをWin98からWinXPに変更したのですが、
システムリソースとう概念がなくなり(?)1ユザーとしては大変有難いのですが
開発者としてはWin98対応の為のリソースリークのチェックができなくなりました。

そこで質問ですがWinXP上でアプリのシステムリソースのチェックをするという事は可能でしょうか?

Visual Studio 6.0+WindowsXP Pro
345デフォルトの名無しさん:02/12/28 12:45
>>342
設定がおかしくなっているんだろ。
インストールしなおせば。
346342:02/12/28 13:20
>>345
unisatll 掛けて Program Files\Microsoft Visual Studio 手動削除し、
再ンストールをカスタム、製品など色々試しましたが駄目です。
インストール直後で設定がおかしくなるとも思えないし。
347デフォルトの名無しさん:02/12/28 13:36
そういえばXPとVC6.0でなにか問題があるとか聞いたことがある。
Microsoftのページにいけばなにかかいてあるんじゃないの。
>>342
pch ファイルが壊れているとか。
リビルドしたりとかディスク空き容量とかは?
>>342
メニューのプロジェクト->設定から
「C/C++」タブの「プリコンパイル済みヘッダー」カテゴリを選択し、
そこのラジオボタンをいろいろいじってためしてみよう。
350デフォルトの名無しさん:02/12/28 14:30
webからHPを拾ってきて解析したいので、httpプロトコルを面倒見てくれるソースが欲しいです。
どなたかご存知ありませんか。
フリーの外部プログラムでもかまわないです。
351デフォルトの名無しさん:02/12/28 14:50
>>350
MFCにならあるけど。
SDK使ってる?
352デフォルトの名無しさん:02/12/28 15:14
http自体は単純だから自分で書いてみるべし、と言ってみるテスト。

まずは RFC参照するべし。
「魔術幻燈HTML研究室」ttp://hp.vector.co.jp/authors/VA014833/

↑ここに日本語訳版がある。
HTTPに関してはWinInetで充分だと思うが。
354デフォルトの名無しさん:02/12/28 15:24
HTTPに関しては手作業で十分だと思うが。
>>352
それってHTML関係でhttpではないのでは?
どーでもいいがhttpプロトコルって冗長だな。
357352:02/12/28 15:41
>>355
あ、スマソ。素で間違えた。(恥

http://www.wakhok.ac.jp/~maruyama/W3serv/document/node95.html#SECTION001230000000000000000

↑ここにとりあえず丁寧な説明があるYO。
358342:02/12/28 16:01
>>348
中間ファイル *.pch が生成されてないようです・・・
HDD空き容量はGB単位で空いてます。

>>349
これから試してみます
359342:02/12/28 16:11
>>349
”プリコンパイル済ヘッダーを使用しない(N)”
を選択したところ問題は解決したように見えます。
有難う御座います。

OS環境によって pch の使用に制限とかあるのでしょうか?
又、これを使用しないにして他の問題は無いのでしょうか?
ヒントになるキーワードだけとかURLだけでもいいので宜しくお願いします。
360デフォルトの名無しさん:02/12/28 16:22
VCなんてまだやってるの?プ!
素直にC#いっとけ。
>>360
正直、C#はキモい。ていうか隠蔽されすぎ。
なので、個人的にはまだVC(..というかC++)の方が好き。
>>361
正直、MFCはキモい。ていうか隠匿されすぎ。
いちいち釣られんな冬厨ども。
364342:02/12/28 17:23
>>359
pch について調べたところ、恥ずかしい質問でした。

修行してきます・・・
365デフォルトの名無しさん:02/12/28 17:51
>>351
MFCでどういうのがありますか?
>>353
WinInetの使い方を教えてください。

調べてみて、CInternetSessionとかCHttpConnectionとかがそれっぽかったのですが、
ヘルプで検索しても出てこないし、
MFC/include/ にafxinet.hもないです。
ほんとにないのか、みているところが根本的に違うのか。。。な?
実際はどういうのがどこにあるか教えてください。
366デフォルトの名無しさん:02/12/28 18:17
CString hoge = m_String ;

CStringの hogeを char配列の変数に代入したいんですが、どうしたらよいですか?
367デフォルトの名無しさん:02/12/28 18:30
>>366
UNICODEにしてないなら、
char s[100000000000];
if(sizeof(s) + 1 < hoge.GetLength())
 strcpy(s , hoge);
368367:02/12/28 18:31
逆でした
if(sizeof(s) > hoge.GetLength() + 1)
>>350
MFCなら
CHttpFileもつかうのかも。
手っ取り早くいくなら
ttp://codeguru.earthweb.com/internet/httpViaProxy.shtml
とか?
どっちもつかったことないけど。
>>353
InternetReadFileで検索すれ。
>>367
>char s[100000000000];
こんなに確保できるかよ(w
372デフォルトの名無しさん:02/12/28 21:33
なぜこれを使わない?
URLDownloadToFile(NULL,"http://www.hoge.com/", "hoge.html", 0, NULL);
373デフォルトの名無しさん:02/12/28 21:54
CAsyncSocket::Create()で第一引数を0にしたのですが、
選択されるポートが1025〜5000でした。
どうして5001〜は選択されないのでしょうか?
ご存知の方ご教授お願いします。
実行環境が良くないのでしょうか?
>>373
システムに聞いてくれ。って感じ?
375デフォルトの名無しさん:02/12/28 22:38
とか言いながら優しいな
377307:02/12/28 23:27
>>307です。物凄い遅レスになりますが。

>>320
まあ、>309のレスを見る限り、徹底的に勘違いされてるなぁとは
思ってましたけどもね。いくらなんでもダイアログエディタでcaption
書き換えるくらいは解りますよ…。
自作すれ、というのが回答ならば、それはそれでありかもしれませんが。
でもレスくださってありがとうございました。本当に。
>>326
エンドユーザが海外だからです。
378307:02/12/28 23:36
http://www.mtakahashi.com/old/a1575.html
ここの A1561の記事を読むと、英語版Windowsで実行させると
自動的に Cancelになりそうな気もしますが。
ていうか、海外に出すっていうのに英語版Windows持ってないのかよ!
といわれそうですね。会社小さいし、ソフトはあまりやらないトコなので…。
年明けたら申請してみます…。
つか、メッセージボックスくらいなら自分で作ればいいだろうが。
>>377
英語版のVC++使えば良いんじゃないの?知らんけど…
381307:02/12/29 00:41
>379
もちろん、メッセージボックスならほとんどコードを書くこともなく
自作できるわけですけどね。でも、もしも>>316のような手段で
変えられるならそっちを使うほうが良いに決まってますよね。
絶対に無理、といことがはっきりしてるなら自作でもいいですけど
そうは思えないのでここで聞いてみました。
382307:02/12/29 00:46
>>380
日本語で自動生成されるコメントの問題もありますしね。
ソースを公開するから、それがベストなんですけど、
英語版VCはさすがに買ってもらえないかもしれません。
英語版Windowsくらいならたぶん大丈夫だと思います。
今の予想では、>>316のように書いておいて、英語版Windowsで
走らせればCancelと表示されるのではないかと。
もしかしたら>>316も必要ないかもしれないですが。
383デフォルトの名無しさん:02/12/29 00:54
英語版Winならdllも英語版だと思うんだがどうよ?
>>382
だけどそんなに気にするほどのもんかね?
例えば海外ソフトとかをダウンロードして使用する時、メッセージボックスや、ファイル選択ダイアログが、
日本語表示になっていることがあるからたぶん普通にMessageBoxを使っても問題な誘うな気がすんだけどな。
>>384
コモンコントロールのファイル選択ダイアログとかはWindowsの言語に依存するよ。
メッセージボックスの場合は user.exe の言語に依存っぽい。バイナリを見ると。
>>344
GUIリソースの使用量を調べるAPIがあった気がする。
GetGUIResourcesだったかな?

>>377-378
直接質問には関係ないけど、複数言語のリソースをrcファイルに
入れる方法を調べとくといいかもしれませんね。
MFCのヘルプにあったと思います。
>>344
W2kから変わってなければタスクマネージャのプロセスでハンドルだのリソースだのの使用量が見れる。
389デフォルトの名無しさん:02/12/29 14:27
Win98SE VisualStudio6.0 SP5
Platform SDK をアップデート(2002 oct 版)したところ
ビルド時にRC.exeにエラーが発生して、
「このWindowsのバージョンでは実行できません」
と出ます。M$の便乗商法に引っかかったような感じです。
正常にビルドするにはどうしたらよいのでしょうか。?
>>389
俺も 98SEに PSDK 2002July 入れたんだけど、そういう風にはならんかったな。
前のバージョンの RC.EXE が
  \Program Files\Microsoft Visual Studio\Common\MSDev98\Bin
に多分残ってると思うんで、
  ツール→オプション→ディレクトリ
で実行可能ファイルの検索順変えたらいいんじゃないかな。
391デフォルトの名無しさん:02/12/30 09:27
リソースエディタで作成した.rcファイルを
プロジェクト - プロジェクトの追加 - ファイル で追加すると、
ResourceFileではなくて、FileViewのSourceFileのところに
追加されるのですが、これはみなさんそうですか?

環境:Win2000Pro、VC++6.0(SP5)
>>391
やってみた。確かなそうなるね。
でも、その後ドラッグドロップで OK でしょ。
393392:02/12/30 09:52
つーか、よく考えたらリソーススクリプトは SourceFile でいいんじゃん。
コンパイルされるんだから。

ResourceFile はアイコンとかビットマップとかの、リソースの実体ファイルが
入るんでしょ。
IDEから入ったやつらは、こういうことで悩むんだなww
395デフォルトの名無しさん:02/12/30 09:58
>>394
うるさいなー。おまえキライ!
>>395
そんなこと言わんとmakeでも勉強しとけ。
>>394
HD?
>>397
バカ?
Wizard使ったって.rcはFileViewに追加されてるっつの。

つーか道具の使い方なんだからIDEから入ろうがそうでなかろうが関係ないと思われ。
単に>>391が使い方知らなかっただけだろ。
>>399
道具の仕組みを直感的に把握する能力も大切だと思われ。
つーか、SourceFile も ResourceFile も単にプロジェクトにデフォルトで
作られるフォルダというだけで、あとはどうにもでカスタマイズ可能なんだ
よな。
>>400
だからそれにIDEから入ったかどうかは関係ないだろって話。
403389:02/12/30 14:20
>>390
レスありがとうございます。
変更して今のところ問題ないみたいけどアップデートした
ことになるんだろうか?と思ってみたり。
んでIDEって何?
ツールの使い方についての質問ですけど、
ワークスペースの
Classview
Resourceview
Fileview
を切りかえるショートカットキーってどれなんでしょうか?
406405:02/12/30 18:12
さっきからずーっとキーボードマップ見てるんですけど、ぜんぜんわからない・・
初心者スレ逝ってきます・・・
>>406
無い。が答えだと思うんだけどね。
>>407
つーか必要ないし。
409405:02/12/31 01:57
>>407
まじで!!
>>408
必要だとかんじないすか?つっか必要だと思ってるの俺だけか・・・スレ汚しすまそ。
>>409
いや、俺も欲しいなと思うときはあるにはある
>>409
うん。マジで要らん。検索、置換、大文字・小文字変換くらいしか使ったこと無いし。
でもVC++使ってて突然Insertが切り替わってしまうのがチト難点。
あれってInsertキー以外のキーでも変わるみたいだな。確認してないからどのキーか知らんけど。
リソースに 32x32 と 16x16 の2つのイメージを含むアイコンを
組みこんだのですけど、それをどのようにして読みこむのが
一般的なのでしょうか?

API の LoadImage() を使っています。

(IDI_AN_ICON が読みこもうとしているアイコン)
lHIcon = (HICON)::LoadImage(
    aInstance, MAKEINTRESOURCE(IDI_AN_ICON), IMAGE_ICON,
    32, 32, LR_DEFAULTCOLOR);

とすると、32x32 のアイコンを読みこめるのですが、パラメータの
desired size を (16, 16) にしても、16x16 のアイコンを読みこんで
くれないようなんです。

あと、

lHIcon = (HICON)::LoadImage(
    aInstance, _T("IDI_AN_ICON"), IMAGE_ICON,
    32, 32, LR_DEFAULTCOLOR);

としても、返ってくるアイコンハンドルは NULL なんですけど、
どうしたら、文字列を指定してリソースにあるアイコンをロードする
ことができるのでしょうか。
猫わかとかVC++でやるSDKとか見てやったんですが、どうも
自分ではうまくいかないんです。
413412:03/01/01 16:55
すいません、>>412にある方法でできました・・。
アイコンをロードしようとしていたメモリ DC の「幅」が足りなかった
だけですた・・。俺の時間を返して。

でもまだ文字列を指定してリソースをロードすることができません。
引き続きアドバイス募集中です。
>>413
素じゃできません。
IDI__〜って#defineされた数値ですよ。
自分でそういうルーチンを書けばできますが。
(IDと文字列の対応を配列に持って検索する)
>>414
レスどうもありがとうございます。
「素」じゃできないというと、VC++ のリソースの追加から
挿入したリソースでも、resource.h を編集して文字列を
キーとして指定しなければいけないということでしょうか?

--- resource.h ---
(略)
#define IDI_AN_ICON 101
(略)
---

という具合の resource.h を、ソースファイルに #include しています。

http://www.kumei.ne.jp/c_lang/sdk4/sdk_317.htm
・・とここまで書いてみて、↑のリンク先を見てみたのですが、
もしかしてリソースエディタで、キーを IDI_AN_ICON ではなく、
"IDI_AN_ICON" のように指定しなければいけないということ
なんでしょうか。・・うんたぶんそうだ・・。
>>415
>"IDI_AN_ICON" のように指定しなければいけないということ
>なんでしょうか。・・うんたぶんそうだ・・。
半分正解。MAKEINTRESOURCEマクロを使って
MAKEINTRESOURCE(IDI_AN_ICON)
と書けばOK!
417412,415:03/01/07 01:39
>>416
ガイシュツです・・。
lHIcon = (HICON)::LoadImage(
aInstance, MAKEINTRESOURCE(IDI_AN_ICON), IMAGE_ICON,
16, 16, LR_DEFAULTCOLOR);

これで 16×16 のアイコンがロードできたと思うけど・・・。
>>415
素で出来る。
同じ物をID番号と文字列で同時には使えないが。

リソースエディタを使って文字列IDにしたい場合は、ダイアログの
プロパティのID指定で、"TESTDIALOG"の様にダブルクォーテーション
で括る。文字列長制限は知らんが。
そうすればresource.hに#define 〜 のようなID番号が自動生成
されない。

もう気が付くと思うが、ID番号指定から文字列指定にしたい場合は
resource.hにある#defineを削ればOK。逆もまた同じ事。

また、これが出来るのはダイアログやアイコン等のそれ単体でロード
出来る物に限ると思われ。
ダイアログ上のコントロール等はID番号以外は無理な筈。
420412,415,417:03/01/07 09:19
>>419
ご丁寧にありがとうございました。試してみたところ、
ID に指定できる文字列の長さは 247 文字までみたいです。
ダブルクオーツを含めると 245 文字までです。
みなさんのおかげで、もうアプリは完成いたしました。
どうもありがとうございました。
(全部数値の ID を使ってます。こじれるのが怖くて
 >>419 さんの方法を試す気力がないです。申し訳ない・・。
 リソースへシーケンシャルにアクセスするので、俺のアプリの場合
 数値の方が楽ですた。)
VC++6 でアプリ作ってます。で、
エクスプローラでhoge.exeを洗濯して
「プロパティ」表示させたときに出てくる
「ファイル バージョン」「説明」「著作権」「会社名」「商標」「清拭バージョン」
…などは、どこに書けばいいんですしょうか?
リソースエディタを使うんでしょうか? ・・・・・(;´Д⊂ ウエーン。ワカンナイヨウ。
リソースの中にVersionってフォルダがないかい?
423421:03/01/08 16:32
>>422  (´∀`)ありがとう☆
「Version」フォルダは未だなかったけど、
「ソソースの挿入」で種類が選べるンですね。
助かったっす ♥
424421:03/01/08 17:58
ところで、ビルド番号とか自動インクリメントしてくれるマクロとか
ttp://codeguru.earthweb.com/devstudio_macros/build_number.shtml
↑ここに載っているけど、ここの板は極めて見づらいっす。

Sub プロシージャが投稿されているけど、ちょっとずつ修正されていて、
けっきょく最終的にどうなるんだyp! (;´Д⊂ ウエーン

試してみたけど、インクリされた番号の部分が、EXEファイルの「プロパティ」では
確認できなかったし。てか、俺が貰って動かしたスクリプト地震のバージョンが
わかんない ('・ω・`) しょぼん

やっぱ、シェアウェアの「BuildMan」とか使うのが便利でよいんでしょうか?
425IP記録実験:03/01/08 22:29
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
喜念パピコ♪
って、喜んでる場合じゃないか。
ほんとに全鯖で記録すんの?
それは、利用者が簡単に見れちゃったりする?
あっちこっちで自演始めちゃったよ・・・(^^;
>>302
ポイズン
ひろゆき、余ったIPくれっ
>>538
ワラタ
431IP記録実験:03/01/09 01:59
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
IP開示のガイドライン制定を
スレ違いの板違いは出て逝け
気違いどもめ
>>1さん
IPを記録しないでくださいお願いします
Freenetはとりあえず現時点で幻想が現実になったものだべ。
響子さん・・・
pc3にも入れてくれ
モルモットにされたのか
>>73
判決確定な。
マンドクセーから某氏が>>13の文章を正しく書き直してくれや。
それでいいじゃないの。
  \ │ /
                 / ̄\   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
               ─( ゚ ∀ ゚ )< ひじひじひじひじ!
                 \_/   \_________
                / │ \
                  ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\ ∩ ∧ ∧ \( ゚∀゚)< ひじひじひじひじひじひじ!
ひじひざ〜〜〜〜! >( ゚∀゚ )/ |    / \__________
________/ |    〈 |   |
              / /\_」 / /\」
               ̄     / /
>>354
いや。それこそがネットのポジティブな力であり、多くの人が2ちゃんに
惹き付けられた魅力だと思うのよ。
でも、それは参加者の力量が高くなくては不可能な話であって、
今の2ちゃんねらーにはその力量が決定的に欠けているのよ。
>>841
そりゃトマトだ。
>アクセスログってなに?

人を馬鹿にするな!
ガ━━(゚Д゚;)━━ン!
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| マスター、もう一杯
\_   _________________
   | /
    ∨
日 ▽ U [] V
≡≡≡≡≡≡≡  ∧ ∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 V ∩ [] ∨目 (゚Д゚,,)   < そんなに飲んでいいのかい?アンタまだ保護観察付きだろ?
__ △ヒック______|つ∽__ \_____________________
 ∠●ノ▽
― □  ―――――――
  <\  
 ━┳━   ━┳━

おでんマンもたまには酔いたいときがある…
IP見られちゃうのかー。
恥ずかしいよ。助けて。
char* の数値を intにキャストしたいのですが、どうしたらよいのですか?
ところで、アホーの投票祭り無いの?
俺は「2ちゃんねるってなに?」に投票してきたけど。
>>448
ふつーにこうだが・・・

int i;
char *c,s
c=&s;
i=(int)c;
173 :名無しさん@3周年 :03/01/09 22:20 ID:FDWl1Tso
ひろゆきは自宅に押しかけた暴走族に土下座した人だよ。
暴力団に脅されたら山奥に連れ出されるまでもなく玄関先で二つ返事で請け負うんじゃない?

権力には抵抗するけど、暴力には滅法弱い、それがわれらのひろゆき
今からこのスレッドは87氏を応援するスレッドになりました(^_^;)
453デフォルトの名無しさん:03/01/11 02:09
MFC(VC6.0)で、IE6.0などと同じ形式のファイル保存ダイアログはどのようなクラス、
または方法で出せるのでしょうか? いろいろ調べても分かりませんでした。
>>453
質問があいまいでわからません。(あなたの環境は?)
455デフォルトの名無しさん:03/01/11 02:18
>>454
VC6.0でMFCを使って、IE6.0などのように左側に「マイドキュメント」や
「デスクトップ」のアイコンあるファイル保存ダイアログを出したいのです。
CFileDialogでは、普通によく見るファイル保存ダイアログが出てしまいいます。
┨←なんでこれ付けないの?→┠
はぁ。もうテンプレ張るのやめた。
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
(´∀`)
>>455

CFileDialog dlg(TRUE);
dlg.m_ofn.Flags = OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY|OFN_EXPLORER;
dlg.m_ofn.lpstrFilter = _T("All Files (*.*)\0*.*\0\0");
if(dlg.DoModal()==IDOK){
...
}

上記のようにすると、Windows2000以降ではOutlookStyleBarが付いた
ファイルダイアログが表示されるね。
オブジェクトの構築方法によって異なるのかな?
こぶ平の母親は昔「日本のお母さん代表」みたいな顔してたが、こぶ平が満足に箸も使えないことがバレてからは干されました。
463455:03/01/11 12:14
>>456
感謝。
一番簡単な方法は DoModalの前に、以下の1行を加えたら良いと分かりました。
ただし、2000以降でしか無理?

 dlg.m_ofn.lStructSize = sizeof(OPENFILENAME) + 12;
ボンタレンに改名汁!!!!
>463
昔MSDNマガジンで見て詳しい内容覚えていないどあんまりいい方法じゃないみたいだよ。
9x系だけかもしんないけど。
↓でもAccess Violationが発生するようなこと書いてあるし。
http://www.experts-exchange.com/Programming/Programming_Languages/MFC/Q_20302083.html
犯行予告スレをたてたと思われるやつが追い込まれて
何かしでかしそうです。放っておいていいのでしょうか?

125 名前:ありえない人  ◆y.GuoEaXhM 投稿日:03/01/11 11:31 ID:94ui+dnh
犯行予告できなきゃ2ちゃんに来る意味は無い。
俺は追いこまれるだけ追いこまれう自殺も本気で考えた。
でも本当に死者がでればワイルド吉田にも責任があったといっておく。
127 名前:ありえない人  ◆y.GuoEaXhM 投稿日:03/01/11 11:34 ID:94ui+dnh
俺本気で怒ってるよ。
もう俺終わりなんだな、って思うと。
こんな理不尽なことはねえな、っていってもみんなけらけら笑いやがる。
ここまでやられてもいままで殺しをやらなかった俺がおかしいんだろう。
128 名前:ありえない人  ◆y.GuoEaXhM 投稿日:03/01/11 11:35 ID:94ui+dnh
さよなら2ちゃんねる。
地獄行きの列車の切符ならもう手に入れてあるよ。
http://ex.2ch.net/test/read.cgi/entrance/1042189622/125-137
殺人予告スレ発生。

【予告】小学生の登校を狙って・・・
http://live2.2ch.net/test/read.cgi/news/1042035002/

悪戯であることを祈る。
469デフォルトの名無しさん:03/01/11 21:42
VC6.0のVBScriptマクロで、エディター使用中に外部プログラムを
呼び出すことはできるのでしょうか?
2ちゃんねるも現実ですよ。
ちょっとお聞きしたいことがあるんですが、Jチャンネルで言われていた、掲示板はどのコーナーのどんな題名ですか?
知ってる人がいたら教えて下さい!!
広末のまんこに俺のティムポ入れたい
広末のきつきつおまんこに中出し・・・(;´Д`)ハァハァ

て書いてもまぁ変わらんわけか
結局は今までと変わらんのだろ?
ただそういう事を書き込む歯止めみたいな感じなのかね

まぁK察かなんかはやりやすくなるんだろうけど
そうか・・・。
待ってます。よろしくお願いします。
タ刊托イ
11/26のメルマガでこんな事、言ってるけど
ちなみに、これってどこの板か非常に気になります!
某社って???
とりあえず、いつごろの書きこみにたいして?
しょうさい、きぼーん。

某警察(前回のM警察署じゃないです)からの要請で一つのスレッドと
某社の仮処分で三つのスレッドの書きこみのIPを保存してますです。
捜査関係事項照会書or裁判所の令状で開示しますので、
お心当たりの人は、親戚縁者への挨拶回りを済ませておきましょう。
( ̄ー ̄)ニヤリ


477デフォルトの名無しさん:03/01/12 17:11
VC7.0でDebugとReleaseの違いってなんですか?
いままでうまく(とりあえず)動いていたものが
Releaseにしてデストラクタで落ちるようになってしまいました。
>>477
デバッグ情報ありなし。
>>478
最適化の有無とか、スタックの整合性チェックとかもあるだろう。

>>477
どこかメモリを壊してるんだろうな。デバッグビルドで、メモリ関係の
チェック厳しくして試してみ?

ttp://www.codeproject.com/useritems/leakfinder.asp
480デフォルトの名無しさん:03/01/12 17:27
今まで計算とかシミュレーションとかするのに、
コマンドラインのCコンパイラでコンソールプログラムだけ作ってきたんだけど、
計算結果を絵に描いたりしてみたくなってきたんだけども、
サクサクプログラムできるwindows用の言語ってどれさ?
Cの文法がわかってれば、visualCは簡単かい?サクサクできる?
>>480
N88 BASIC
482デフォルトの名無しさん:03/01/12 17:31
>>481
計算遅すぎ
>>482
ほう。
484デフォルトの名無しさん:03/01/12 17:39
>>489
ありがとうございます。厳しく見てみます。
>480
MATLAB
>>480
>visualCは簡単かい?サクサクできる?
サクサクできるよ。ただしサクサクAPI(or MFC)覚えてな。
ShutOutというけど
ローカルルールに従った要請は受け付けてるんだから(^_^;)そうすればいいよ
列に並ばないで権利を主張する奴は許されない
全部ポセイドンという罠(^_^;)
490山崎渉:03/01/13 18:32
(^^)
>>480
たぶん,おまえさんが使っている「コマンドラインのCコンパイラ」とやらが
そのまま使えるだろう
リンクするときにgdi32.libを追加リンクすれ

#define STRICT
#include <windows.h>
#include <math.h>

main()
{
HDC hDC;
double r;

hDC = GetDC(NULL);
SetROP2(hDC, R2_NOT);
for(r = 0; r < 6.28; r += 0.01)
{
double x = cos(r * 3);
double y = sin(r * 2);
LineTo(hDC, 320 + x * 200, 240 + y * 200);
}
ReleaseDC(NULL, hDC);
}
>>491
って言うかNULL論争起こるからデスクトップのDC欲しいならGetDC(0)にしと来なさいな。
493491:03/01/13 21:17
そんなん言い出したらキリないやん
mainの戻りは放置してるし
SetROP2も戻してない
危険な変換を暗黙キャストでやってる罠
MINIXに対するLinus君の批判みたいな
論点すり替えはいやづら
>>493
総評:お前はもうちょっとまともなコード書け。
495491:03/01/13 21:31
>>494
だからそれは480の領分であって
手段の存在を尋ねてきた者に対して
なるべく希望に沿う答を示したまでのこと
本当はSTRICTを書くのさえためらったんだぜ
>494はお門違い
国だろうと神だろうと郷に(2ちゃんねる)入ったんなら郷に(削除ルール)従え
しゃしゃり出て2ちゃんに口出しすんな

以上!
誰に言ってるんだ?
なんか新宿駅前のターミナルで不特定多数を叱りつけてるオヂサンみたいだぞ
#define STRICT ってどういう効果があるんですか?
ようわからんけど、Windows API で使われる型のチェックを厳格にするという事?
502デフォルトの名無しさん:03/01/14 02:31
パターン認識のスレで叩かれた1です
http://pc3.2ch.net/test/read.cgi/tech/1042478334/

VCで窓を作って、その中にユーザーがマウスでかきこみ、窓全体の情報を0,1情報で得る方法ってありませんか?
503デフォルトの名無しさん:03/01/14 02:34
>>502
VCのサンプルにあるがな。
>>501
STRICTしないとHANDLEとかHBRUSHとかって全部void*扱いだったと思う
これをそれぞれ typedef struct __HANDLE {} *HANDLE;
とかして別々の型に見せるのがSTRICTの効果。

>>503
神降臨!!!
>>502
何で叩かれたか理解したら、ちゃんと削除依頼だそうな。
506421:03/01/14 11:42
リソースの Version 情報(VS_VERSION_INFO)に
親の(?)ブロック(FILEVERSION などが書かれている)に、さらに
日本語のブロックも追加しました。

ところで、日本語のブロックの「FileVersion」を変更しても、
親の FILEVERSION には反映されないわけですが、
そしたら 日本語のブロックの「FileVersion」は、
ビルドした EXEファイルの「プロパティ」表示などしたときに
表示できるようにできるんでしょうか?

EXEファイルの「プロパティ」では、製品バージョン・ファイルバージョンとも
親の FILEVERSION, PRODUCTVERSION が表示されるのに、
LegalTrademarks とかは日本語ブロックのが表示される ((((゚Д゚))))ガクガクブルブル
納得しがたいです。 ('・ω・`) しょぼん

507502:03/01/14 16:34
>>503
 どのサンプルですか?
508デフォルトの名無しさん:03/01/14 16:46
using namespace std;

Visual C++6.0で↑のように記述するとよく
『存在しないか名前空間ではありません』
と出るのですが、どうすればこのエラーを回避することが出来るでしょうか?
509 :03/01/14 16:57
CListCtrl クラスを使っています。
選択行が変わった時に処理を加えたいのですけど
どういうメッセージをキャッチすればいいですかね?

OnSelChange()みたいなのあればいいんですけどないですよね?
>>509
LVN_ITEMCHANGEDをキャッチできなかったっけ
511 :03/01/14 18:17
>>510 ありがと〜
512デフォルトの名無しさん:03/01/14 18:45
>>508
不要な場合にそう書かない。
>>508

0x200の言うとおり
stdを何に使う気だったのか,「それ」をどこで#includeしたのかと3.6`秒ほど問い詰めたい
>>507
何で叩かれたか理解したら、ちゃんと削除依頼だそうな。
515デフォルトの名無しさん:03/01/15 06:28
リソースエディタでメニューをつくるときに
項目の左にチェックがつけられるんですが、
アプリケーション上でこのチェックをつけたり消したり
するにはどうすればいいんでしょうか?SDKです。
>>515
メニューってポップアップメニューのこと?
だったら、「SetMenuItemInfo」で出来んか?
IrivineみたいにIEのツールバーにアプリを登録するにはどうしたらいいんですか?
>>518
IDeskBandですな。サンクス。
520山崎渉:03/01/15 17:43
(^^)
521デフォルトの名無しさん:03/01/16 00:23
仮想関数の質問なんですが、VC7.0で
class A
{
public:
A(){APure();};
virtual ~A(){};
virtual int APure() = 0;
};
class B : public A
{
virtual int APure();
};
というコードを書くとリンクえらがでます。
error LNK2019: 未解決の外部シンボル "public: virtual int __thiscall A::APure(void)" (?APure@A@@UAEHXZ) が関数 "public: __thiscall A::A(void)" (??0A@@QAE@XZ) で参照されました。
なんで?
>>521
仮想関数テーブルはコンストラクタで構築されるんで、
A::A()でAPure()を呼んだときはまだA::APure()を参照してる。
で、APure()が純粋なのでアラー。
523デフォルトの名無しさん:03/01/16 00:59
>>522
サンキュー。
でも、:のところでやっといてほしいなぁ。
使用なの?
524デフォルトの名無しさん:03/01/16 01:00
ダイアログのピクチャーボックスに描かれた絵をウインドウを閉じたり、縮小しても消えないようにしたいです。BITMAPINFOHEADERやStretchDIBitsを使えばいいのかなとおもうのですけど、やり方がいまいちわかりません・・教えてください//。
私が足したプログラムは次のだけです。
void CMy00000View::OnButton1()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください

int x, y;

CWnd* h = GetDlgItem(IDC_FIGURE);
CRect r;
h->GetClientRect(r);
CDC* pDC=h->GetDC();
x = r.right/2;
y = r.bottom/2;
CPen p(PS_SOLID, 1, RGB(255, 255, 0));
CPen* oldp=pDC->SelectObject(&p);
pDC->MoveTo(0, y); pDC->LineTo(2*x, y);
pDC->MoveTo(x,0); pDC->LineTo(x, 2*y);
pDC->SelectObject(oldp);
h->ReleaseDC(pDC);
>>523
仕様。
どうしよう
もないだろ。
>>524
OnPaint でやってミソ
529524:03/01/16 10:06
ボタンを押した時に描画した画が、
フォームを最小化したり、他のウインドウが重なったりした時
消えてしまうのを解決したいです
CMy00000Viewクラスへ「WM_PAINT」のWindowsメッセージハンドラの追加はしました
OnPaintにOnButton1()の同じ処理を書きました
確かにできたんですが、まだ
大きなプログラムだと処理が遅く、ウィンドウを大きくしたら消える、少し動かさないと絵がでてこない
という問題がありました・・
それはどうすればよろしいでしょうか?

530524:03/01/16 10:09
http://netpassport-wc.netpassport.or.jp/~whiromo/OS2/program.html
このページがヒントのなるかと思ったのですがよくわからかったです・・
>>529
マルチポスト氏ね
>>529
じゃぁ OnDraw とかでもやってみれ。
というか、まず、どのメッセージで何をすればいいかを考えれ。
MFCがどういうことやってるか調べれば、これ以上ないくらいのサンプルになる。

ついでにマルチポスト稲
533509:03/01/16 11:21
度々スイマセン。

CListCtrlで SetCurSel や Scroll をいくらやってもダメなんですけど、
これらが有効にならない原因がわかる方いらっしゃますか?
>>553
ダメって何が?
VC6でCOM使ったクラスを作ってますが、
CoInitialize() の戻り値が S_FALSE の場合でも CoUninitialize() が必要ですか?

コンストラクタで CoInitialize() して、
デストラクタで CoUninitialize() したいのですが、クラスを複数作った場合がわからないので。

どなたかご教授お願いします。
参照カウントを考えれば自明だと…
537509:03/01/16 12:33
>>534

SetCurSel やっても値は正常に返ってくるが
実際のCListCtrlには反映されないのですよ・・・Scrollも同じ。

データのある程度たまっているCListCtrlで、或る瞬間にある行へ
選択を移動させたいわけですよ。なので SetCurSel で選択状態にし
Scrollでその行まで飛べばいいかと思ったのですが・・・
538デフォルトの名無しさん:03/01/16 12:42
>529
>少し動かさないと絵がでてこない
絵を出したいタイミングがあるなら、そこで
InvalidateRect(NULL);
をしる。
OSに再描画を促すので、結果としてWM_PAINTが送られる。
539535:03/01/16 12:49
>>536
CoInitialize() にも参照カウントあるのですか?
てっきり AddRef() Release() だけかと思ってました。

どうもありがとうございました。
540デフォルトの名無しさん:03/01/16 14:06
VS6からVS.NETに移行したんですが、Profileって取れなくなったんですか?
メニューにも無いんですが・・・
関数の呼び出し回数とか時間が出てとても重宝してたんですが。
VS?
同じ質問どっかで見たな。MLだったかな。どっかのスレだったかな。<プロファイル
BSTR を std::basic_string と組み合わせて使おうと思ったんだけど、
いろいろ考えていたら、頭パニックになった。

ひょっとして basic_string って 長さをプレフィックスにとる
文字列と相性悪いんだろうか。
>>541
Visual Script
545WMI:03/01/16 22:31
板違いならすいません。
WMI(Windows Management Instrumentation)のオリジナルのプロパイダ
(ダイナミックDLL)を作ろうと思うのですが、どなたご存知の方いましたらご教授
おねがいします。
546デフォルトの名無しさん:03/01/17 16:22
>>545
ダイナミックDLLとはなんですか?
ワラタ
>>546
DDLLって事かな?
しかしこんなことに気づかんとは。
俺もまだまだ甘いな。
mfc-MLに投稿したよりも質問内容をかなりはしょってるな
ドライブレターを指定して、そのドライブのデバイス名を得る方法はありませんかねぇ。
デバイス名って?
>>551
ボリュームラベルのことだろうか・・・?
>>551-552
\Device\HarddiskVolume1 とかのことだろ。

>>550
DWORD QueryDosDevice(
 LPCTSTR lpDeviceName, // pointer to MS-DOS device name string
 LPTSTR lpTargetPath,   // pointer to buffer for storing query results
 DWORD ucchMax      // maximum storage capacity of buffer
);
コンソールアプリで "**% 解凍中"の**の字だけをインクリメントしていくには
どうしたらよいのでしょうか。

putcとかでは駄目だし。
その都度同じ場所に”**% 解凍中”って出す。
"**% 回答厨\r"
初心者スレから誘導されてきました。
C#からC++へ移行してきたものです。

C++のIntelliSenseにはメンバの詳細を表示する機能が無いのでしょうか?
教えてください。



>>554
改行しないでキャリッジリターンってのはどうでしょうか

printf("解凍します\r\n");
for(int i=0; i<101; i++){
  printf(" 現在 %3d%% 解凍中 \r",i);
}
printf("\n");
printf("解凍しました\r\n");
>>557
>C++のIntelliSense

語弊満載だな。
559557:03/01/22 08:31
>>558
ここは相談スレだろ。
ツッコミだけ厨には用はないですから。


IntelliSenseがVC++で詳細をださないのは
VC++が扱うライブラリに詳細が記述されてないからですか?
それともVC++には詳細を表示する機能はついてないのですか?
もし後者なら
[ツール]-[オプション]-[テキストエディタ]-[C/C++]-[全般]-[入力候補]の[自動メンバ表示(A)]の
[メンバの詳細を非表示]のチェックボックスがVC#やVBなどでは設定できるのにC++では設定できないのはその為かな

C#から呼び出した.Net Frameworkでは詳細が表示されるのに
C++から呼び出した.Net Frameworkで詳細が表示されないし


なんか手抜きっぽい気がするのですが
素人なんですが。

ダイアログベースのアプリケーションにチェックボックスを張ったんですが、
これがチェックされてるかどうか判断するにはどうすればいいのでしょうか?
>>560
エディットしてる状態でダイアログを右クリック→ClassWizardでクラスウィザードを出します。
チェックしたいボックスのコントロールIDを選び、変数の追加ボタンを押してBOOL型の変数を作成します。
あとは作成したBOOL型変数でチェックボックスの状態を調べることができるはずです。
>>560
>>561だけだと、たぶん「チェックボックスの状態が変数に反映されないよ」っていってきそうだから補足

チェックボックスの状態を変数に格納するときはUpdateData(TRUE)ね
UpdateData(TEUE):コントロール→変数
UpdateData(FALSE):変数→コントロール

チェックボックス判定の例
UpdateData(TRUE);
if(m_check1){
 ・・・・・・・
} else {
 ・・・・・・・
}
チェックボクース程度なら
 ((CButton*)GetDlgItem(IDC_CHECK_XXX))->GetCheck()
でよいような気も...
BOOL bChecked = IsDlgButtonChecked(IDC_CHECK_XXX)
という手もある...
まぁMFC使ってるかどうかもわからんわけだしな
566山崎渉:03/01/23 20:12
(^^)
オフィスとかのヘルプでイルカがなんかしゃべるときに出てくるウインドウ
(ツールチップと同じ色のやつ)はどうやって作るんですか?
SetWindowRgn()
>>568
残酷だな。
570567:03/01/25 00:47
とりあえず、speak()というAPIで出る事がわかりました。
積分記号はどうやって描くのか教えてくれ。
>>571
>>571
インテグラル→変換→∫
574デフォルトの名無しさん:03/01/25 18:58
look & feelをOfficeXPライクにするサンプルコードきぼん
576デフォルトの名無しさん:03/01/25 20:47
577デフォルトの名無しさん:03/01/25 20:48
いつからかビルドをすると変更したファイルが1つだけでもフルコンされる
ようになった。何が原因の分かる方いますか?
>>577
変更したファイルが、全てのソースにインクルードされてるとか。
579577:03/01/25 21:44
>>578
原因分かりました。
PCの日付がずいぶん前にいつのまにか変更されていました(アホです)。
makefileの作成をし、nmake に -d オプションで分かりました。
お騒がせしました。
アッ ァ ァ・・
こんばんは
VC++をはじめようと思っているのですが
まずどのようなことからはじめえたほうが効率的ですかね?
WEBで学習?本を買ってプログラムを書く?

皆さんはどのような方法でVC++を学習されましたか?

>>581
できることから始める。
近道はない。
なるほど・・
近道はないすか・・・
Perlの学習にも近道はありませんでした。
どのプログラムも同じですね(^^;
>>581
まずC++を覚えろ。それができんとVC++も出来んぞ。
585デフォルトの名無しさん:03/01/26 12:43
>>581
VC++のヘルプにはちゃんとチュートリアルから言語仕様から全部載ってるから
まずはきちんと金を出して買え。
windowsプログラミングを始めようかと思ってるんだけど
いまから始めるなら最初から.NETやった方が良いですかね?
>>586
知るかんなもん!
初心者はこんな糞スレにいないで

★初心者にVisual C++を教えるスレ★ Part3
http://pc3.2ch.net/test/read.cgi/tech/1038160750/l50

こっちへどうぞ
少し前にWindows98で使っていたVisualStudio6.0をWindows2000にインストール
しようと思うのですが、MSEなど、明らかにVisualStudio6.0よりも新しい物がはいって
います。

そのままインストールしても大丈夫なのでしょうか。
MSEってなんすか
>>589
そんなことよりWindows2000は明らかにVisualStudio6.0よりも新しい
明らかに死んで
593名無し@沢村:03/01/29 00:03
>>590
ヌヒよ、"Microsoft Exchange Server"のことだ。
倍精度の乱数(srand48等)をVC++で使いたいのですが、どこかにライブラリ
など置いてないでしょうか?
MSEじゃなくてMESってこと?
>595
ありがとうございます。この関数でいけそうです。
Windows 2000 SP3のシンボルファイルはどこでダウンロードできますか?
600文字列のBitBlt:03/01/31 08:07
TextOutやDrawTextで描画した文字列をBitBltしたいのですが、できますか?
>>600
できます。
602デフォルトの名無しさん:03/01/31 08:51
DialogBoxアプリのClassWizardのコントロールメンバ変数の選択で
MFCクラスを継承した自作クラスが選べませんでした。
そこで、VCが書き出したヘッダのメンバ変数定義の型をこっそり自作クラスに変えたら
上手く動いている様ですが、大丈夫でしょうか?
>>602
ClassWizardは、MFCのすべてを知ってるわけじゃない。
>>603
class CMyEdit : public CEdit
とか作った時、CMyEditが別プロジェクトで
ClassWizardから見えないって話でしょ。CMyEditはMFCとは違う。
直に書き換えても問題はないが、別プロジェクトでも使いまわしたりするなら
コンポーネントギャラリに登録してそっから使ったほうが楽。
>>604
タンクス。
コンポーネントギャラリも調べてみます。
LPCTSTRや_TCHARの「T」って何の略なんでしょうか?
LPはLong Pointer だし CはConstってのは分かるんですけど、Tが分からないです。
ご存知の方はご教授お願いします。
TEXTマクロと同じ意味では
>>607
微妙だな。

defineでcharにもwidecharにもあるってやつっしょ。
何の略って聞いてるからTEXTのTじゃないのって意味なんだが
610606:03/02/02 21:04
TEXTでしたか。盲点でした。

対応してくださった>607-609氏、ありがとうございました。
611デフォルトの名無しさん:03/02/02 21:25
_getch()はCtl-Cは読み込まないってMSDNには書いてあるりますが、実際には
Ctl-Cも通常の文字として読み込んでしまいます。バグ?
DirectX8がインストールされているマシンにDirectX7SDKを入れても大丈夫ですか
>>613
だいじょうぶだいじょうぶ。
>>614
嘘ばっかり言うなよー
DirectX SDKを入れる際は 当該バージョンの DirectX もインストールされるんで
確実におかしくなる
ライブラリファイルとインクルードファイルだけ抜き取って使うのが正解
>>615
>確実におかしくなる

DirectX9の入ってる環境にDirectX8入れようとかしたことないの?君。
つーか、そんな開発者が不安になってる開発環境で
作られたソフトをばらまくのかと小一時間。
>>615
嘘ばっかり言うなよ・・・
>>617
話を逸らしたと捉えて良いですか?
Windowsってだけで不安たっぷり
>>620
( ´,_ゝ`)プッ
ショボイ環境でプログラミングなんかするなよ
622デフォルトの名無しさん:03/02/05 16:22
エディターの背景色を替えたいんだけど、ツール→オプション→書式にある
やつだと、選べる色が少ないんだよね。
どっかレジストリとかにRGBで保存されてるなら、直接書き換えて
しまいたいんだけど誰か知りませんか。
624デフォルトの名無しさん:03/02/05 17:09
クソレス申し訳ないけど・・・

C言語ってC++のことですか?
優しく教えてください。w
625デフォルトの名無しさん:03/02/05 17:09
クソレス申し訳ないが・・・

C言語ってC++のことですか?
626デフォルトの名無しさん:03/02/05 18:39
C言語初心者です
自分でも勉強するために.NETを買おうかと思ってるんですが
買うとしたらVC++.NETとVisualStadio.NET(AC)どっちがお得ですかね
それと今慣れてるのはVC++6.0なんですけど.NETと使い勝手はだいぶ違いますか?
教えてくださいな
627622:03/02/05 18:43
>>623
さんくす。
ClassView,FileViewの背景色と、アウトプットウインドウの
「ビルド」「ファイルから検索1」のタブの色は白以外に
変更できないのかな?いろいろやったけどだめだった。
ソースウインドウと同じ背景色で統一したいんですけど。
628デフォルトの名無しさん:03/02/05 19:02
>>626
>C言語初心者です
>それと今慣れてるのはVC++6.0なんですけど
って、矛盾してない・・・

VC、VC++.NETからはじめたんだけど
巷のあふれてるVC6準拠のVC入門書いろいろ買ったけど
本の通りにやったらちっとも何もできない
ウィザードの作りがVC6とまるで違うNET・・・
使い方、結局Google検索した方がわかり易い・・・
何冊も入門書買うんじゃなかった・・・
リファレンスはばんばん買うべきだけど
629デフォルトの名無しさん:03/02/05 19:16
>>626
とにかく一番高いやつを買え!
クソレス申し訳ないが・・・

C#の#って不協和音のことですか?
>>628
>>629
レスどうも
値段調べてみたらVS.NETが安いところだと2万円前後なので
これを買っちゃおうと思います。
VC++6.0は慣れたといってもほとんど使いこなせてはいないので
それなら新しいソフトを勉強しなおしたほうがいいかなと思ったのでした
>>630
単音なら不協もへったくれも無いと思うが。
>>632
ふっふっふ、読みが甘い。Cと不協和音なのだよ明智君。
634デフォルトの名無しさん:03/02/05 19:55
>>629
http://www.yodobashi.com/enjoy/i.jsp?oid=2307948
の35万の奴?買えってこと?学生に・・・
>>634
そんなもんにいちいち素レスすんな
>>634
投資した額が大きければ大きいほど”やらねばっ!!”と思うようになるでよ。
DeveloperStudioってVisualC++.NETについてるの?
いまVisualStudio.NETアカデミックを持ってるけど・・・
>>637
名のある初心者とお見受けしたがどうか?
639デフォルトの名無しさん:03/02/05 22:53
アスキーファイルを読みたいので、次のようにしたのですが読めません・・
Serialize(CArchive& ar)ですどこか間違ってますかね・・?
CFile* fp = ar.GetFile();
int i;
double *tmp;
tmp = CCC;
for ( i=0; i<IMAGEDATA_SIZE; i++, tmp++)
{
ar.ReadString( tmp, sizeof( double ) );
     }

CCCはdouble型でデータを格納する場所です
IMAGEDATA_SIZEは256*256です

データの中身は9.352675144624524e+001、こんな感じのが256*256あります
doubleでは無理ですよね・・
640639:03/02/06 02:36
解決しました。ありがとうございました。
641デフォルトの名無しさん:03/02/06 08:15
ウィンドウを作成しないでGDCを使いたいのですが、
具体的にどうやるのでしょうか?
CreateDCで良いのですか?
642デフォルトの名無しさん:03/02/06 08:17
MFCでSDIアプリを作っているとき、
下の様にcs.Menu = NULL; とすることでメニューを消すことが出来ますが

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
  if( !CMDIFrameWnd::PreCreateWindow(cs) )
    return FALSE;
  // TODO: この位置で CREATESTRUCT cs を修正して Window クラスまたはスタイルを
  // 修正してください。
  cs.hMenu = NULL; // メニューを消す
  return TRUE;
}

MDIアプリの時に同じ事をするとエラーになってしまいます。
MDIアプリでメニューを消すにはどうしたらよいのでしょうか?
643デフォルトの名無しさん:03/02/06 10:14
アスキーファイルを読みたいので、次のようにしたのですが読めません・・
Serialize(CArchive& ar)ですどこか間違ってますかね・・?
CFile* fp = ar.GetFile();
int i;
double *tmp;
tmp = CCC;
for ( i=0; i<IMAGEDATA_SIZE; i++, tmp++)
{
ar.Read( tmp, sizeof( double ) );
     }

CCCはdouble型でデータを格納する場所です
IMAGEDATA_SIZEは256*256です

データの中身は9.352675144624524e+001、こんな感じのが256*256あります
doubleでは無理ですよね・・
644642:03/02/06 11:01
>>642
×下の様にcs.Menu = NULL;
○下の様にcs.hMenu = NULL;
>>642
エラーの内容を(ry
>>642に加えて
1. IDR_XXXを削除(リネーム不可)

2. CMainFrameのOnCreateClientを以下のようにオーバーライド
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
  // TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
  
  return CreateClient(lpcs, NULL);
}

3. CMainFrameのLoadFrameを以下のようにオーバーライド
BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext)
{
  // TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください

  return CFrameWnd::LoadFrame(nIDResource, dwDefaultStyle, pParentWnd, pContext);
}
647デフォルトの名無しさん:03/02/06 16:20
m_button1.SetButtonStyle( BS_CHECKBOX );
m_button2.SetButtonStyle( BS_CHECKBOX | BS_PUSHLIKE );

二つのボタンのスタイルをこんな感じに設定したのですが、
どちらも同じただのチェックボックスになってしまいます。

ヘルプにはBS_PUSHLIKE を指定することにより
チェックボックスの外見をプッシュボタンに変えるとあるのですが上手くいきません。

見た目がプッシュボタンのチェックボックスはどうやって作るのでしょうか?
648642:03/02/06 16:22
>>646
出来ました!
ありがとうございます!
649デフォルトの名無しさん:03/02/06 23:32
突然失礼します。
サーバ・クライアント間の通信についてです。

クライアント側で送受信スレッド(送受信で使っているのはWindowsSocket)を複数起動して、
一台の端末からサーバにアクセスをするというプログラムを作ってみたのですが…。
送受信スレッドの数が一定数を超えると、接続をサーバ側で受け付けていないのに、
各送受信スレッドの持つconnect関数からは0が返ってきてしまい、接続できたことになってしまうのです。
各送受信スレッドは接続出来ていないのに、送信を実行し、NULLを受信して処理を完了してしまいます。
(送受信スレッドの接続タイミングを遅らせれば処理は正常終了しますが、同時に実行することでサーバ負荷も確かめたいのです。)

これでは、送受信を行ったとは言えないので、どなたか良い対処知っていますでしょうか?
多分ネットワークスレに逝った方がいいと思う
651デフォルトの名無しさん:03/02/08 01:30
MDIアプリケーションで印刷機能を使っています。
CViewの派生クラスで描画しているものを、
OnPaint()でプリンタに出力しています。
印刷プレビューではまったく問題なくモニタには表示されるのですが、
いざプリントアウトすると、何も印刷されなかったり、
途中まで印刷されて、残りは真っ白、などと言うことがしばしばあります。
途中の場合も、その場所は決まっていません。
再現性は無く、うまくいくときもあれば失敗するときもあり、
今ひとつ原因がつかめません。
アプリケーションそのものは、何事も無く印刷しているような
動きをしています。エラー等で落ちることもありません。
こういった不具合に考えられる原因に何か心当たりのある方、
いらっしゃいましたら、教えていただけませんか。
よろしくお願いいたします。

主な環境は、
VC++6.0(SP5)
Win2000 Pro.
です。
>>651
CView派生なら、OnDrawなのでは?
653651:03/02/08 01:37
>>651 >>652
間違えました。OnPaint()じゃなくてOnPrint()です。
印刷方法が画面と異なるので、OnPrint()をオーバーライドしています。
654デフォルトの名無しさん:03/02/08 02:55
ウィンドウのDCに対してTextOutを行うときちんと描画されるのですが、
CreateCompatibleDCでウィンドウDCのコンパチで作ったDCには描画されません。

こういった不具合に考えられる原因に何か心当たりのある方、
いらっしゃいましたら、教えていただけませんか。
よろしくお願いいたします。
>>651
プリンタドライバが原因じゃなくて?
ほのかなコピペの香り
657651:03/02/08 15:35
>>655
とも思ったのですが、プリンターには依存しないみたいです。
NEC、エプソン、キャノンのプリンタでそれぞれ現象は確認しています。
印刷プレビューはうまくいくのに、何でその後の印刷処理は失敗するのだろうか?
不思議でなりません。
>651
出来たり出来なかったりという現象は、たいていメモリがらみ。
CViewの派生クラスの生存期間を確認汁。
659デフォルトの名無しさん:03/02/08 18:34
ビルドする時に稀にVC自体が固まる事って有りませんか?
どうもビルド直前のファイルを保存する段階で固まってるみたいです。
おかげで今までも何回か固まってソースがあぼーんしてたんですけど
今回は1日かけて打ったコードがあぼーんしました。激しく鬱です。

原因や対応策など分かるのなら教えて頂けないでしょうか。
環境はWindows2000SP3 & VC++6.0SP4です。
1日かけて打ったコードって・・・
それまで1回もコンパイルしなかったんだ
>>659
ビルドする前に上書き保存しとけば良いジャン。
今に始まった訳でも無しwinの特にMS製のアプリ使ってる場合それはもう常識かと、
662デフォルトの名無しさん:03/02/08 19:00
>>661
その保存の時に固まってるんですよね。
とは言うものの実際に「全て保存」したときに固まった事は無いんですが
基本的にそれで保存しないので偶々遭ってないだけかも。

>>660
5、6時間程度ならザラです。
ソース編集してすばやくビルド(F7)しようとしたら、
応答が無くなってソースファイルが消失したり(稀)、
ファイル保存のエラーメッセージが出たり(頻繁)
VCが落ちる(たまに)ってことはある。

俺の対策はWORDなどと同じでCtrl+S
しかしレベル落ちたな
ここはPC初心者スレですか?
665名無しさん@Emacs:03/02/08 19:28
すみません、教えて下さい。
Visual C++ .Net って pro が無くって Standard しかありませんよね。
で、このStandardって昔の lerning みたいに商用利用禁止とかなんだ
かんだとうるさい制限あるんでしょうか?
VS.Net pro を買うのは馬鹿高いのですが、他の言語を使わなければVC.Net
Standard で事足りるものなのでしょうか?
666デフォルトの名無しさん:03/02/08 20:08
ストリングテーブルを使ってみたいのですが、

strcpy(hoge, ストリングテーブル内F_NAME);
fopen(ストリングテーブル内F_NAME ,"r");

のような事は、どんな関数を使えばいいですか?
>>666
LoadString
668666:03/02/08 20:51
>>667
\(・∀・)/ アリガトン
やってみるよ。・・・何かコレ、使った覚えがあるなあ(;´д`)
669デフォルトの名無しさん:03/02/09 16:18
ちょっとお門違いな質問かもしれないが
ビジネスの現場で命名規則って、どれくらいの人が守ってるんだろう。
先頭にポインタの時p、正数ならnってのめんどいから
自分はやる気ゼロなんだけど。
あと自分でbool型定義するとき、みんな大文字のBOOL使って
TRUE,FALSE使うのかな。
>>669
会社によりけりだと思われ。
社内で守れって言われたら守れば?
自分はいいかもしれないけど他の人がソース見たときに見やすいかどうかでしょ。
うちの会社はその辺あんまりこだわってないけど、ループカウンタ用のi, jとかならともかく
普通の変数さえ一文字なのは勘弁して欲しい人はいる。マジやめれ・・・。
マ板と微妙なラインで分かつ話題ですな
VC使ってるってだけでVCの質問ではないな
674デフォルトの名無しさん:03/02/11 03:28
age
質問させていただきます。

int型をchar型に変換するような関数は無いでしょうか?
当方、DelphiからVCに移ってきたものですが、
Delphiでいうinttostr関数のようなものを探しています。
>>675
ランタイム ライブラリ リファレンスを参照
>>675
_itoa()
679675:03/02/11 10:52
>>676-678

初歩の質問に答えていただきありがとうございました!
お陰でDelphi時代と同じ手法が使えそうです。
680デフォルトの名無しさん:03/02/11 23:41
いろいろいじってるとパラメータヒントが
出なくなる時があるんだけど・・なぜ?
ワークスペース作り直すと出るようになるんだけど。
>>680
仕様です。
682680:03/02/12 14:45
Σ(lll゚Д゚) ガーン!
>>680
IntelliSenseのことだよな?

ショックを受けてる喪前さんに、
漏れが救いの手を差し伸べてやろう(藁

.ncbファイルを削除して作り直させてみな。
684デフォルトの名無しさん :03/02/12 16:09
Windowサイズいっぱいの長方形描きたく
引数に現在のウィンドウ領域の最大サイズ入れると
長方形の右下の座標がウィンドウのやや左よりになってしまい
ラインが見えてしまいます。
結果はウィンドウとたぶり長方形のラインは見えなくなると思ったのですが
これはなぜでしょうか

void CS21Wnd::OnPaint()
{
CPaintDC dc(this);

CRect sikaku;
GetClientRect(sikaku);

dc.Rectangle(sikaku.top, sikaku.left, sikaku.bottom, sikaku.right);

}
ウィンドウの*ふち*の太さじゃね?
686684:03/02/12 16:24
どういうことでしょうか・・・
矩形を描画すると右辺と下辺は数値より1ピクセル内側になるよ。

例えば5*3の長方形なら塗りつぶされるのは以下の■部分。

■■■■□
■■■■□
□□□□□
VisualC++6.0でダイアログのイベントハンドラ追加できないエラーに
はまってます。

ダイアログエディタでダブルクリックすると
「新規メンバを追加できません」←なメッセージボックスがでて
ハンドラ追加してくれません。

何が原因なんでしょう?
>>688
クラス定義部分どこかで文法エラーか、または何かコメントが消えてる。
なるほど。回答ありがとうございます。
ソース調べてみます。
691684:03/02/12 18:31
>>687
ありがとうございました。
692デフォルトの名無しさん:03/02/12 18:56
WNDCLASSの中でプロシージャを指定するところがありますが、(WNDPROC lpfnWndProc)

void CCWnd :: WndClassSet(char *str){
 WNDCLASSEX wex;
 wex.lpfnWndProc = (WNDPROC)str;

}

これはもちろんコンパイルできませんが、
こんな感じで、プロシージャを指定する方法は無いでしょうか?

void CCWnd :: WndClassSet(WNDPROC proc){
 WNDCLASSEX wex;
 wex.lpfnWndProc = proc;

}

こんな感じでもいいのですが・・・
プロシージャの型はLRESULT CALLBACKです。
>>692
まず試せ
694しょしんしゃ:03/02/12 21:40
リストボックスの水平スクロールバーについて質問です
(非MFC環境)
VCでリストボックスのプロパティの「水平スクロールバー」
をチェックしただけでは実際に現れない、LB_SETHORIZONTALEXTENT
で、幅を指定しろ、とのことはネットで調べてなんとかわかったのですが、
これをやっても何故か表示されません。

考えられる原因は何かあるでしょうか?
(リストボックスのプロパティは水平垂直スクロールバー以外いじってません)
695落伍者:03/02/12 21:53
OMANKO開閉中です
696落伍者:03/02/12 22:29
OMANKO開閉中です !!
697落伍者:03/02/12 22:30
OMANKO開閉中です !! !!
>>694
ソース晒してみ。
699デフォルトの名無しさん:03/02/12 23:16
jdib32.dll のマニュアルに、
|BorlandC++以外のコンパイラをお使いの場合は,
|各自で,コンパイラに付属のimplib.exe(インポートライブラリ作成ツール)
|に相当するツールを使用して,jdib32.dllから,jdib32.libを作成してください.

と書いてあったので、VC6のヘルプで検索して確信が持てないまま、
>LINK /DEF:jdib32.dll /OUT:jdib32.lib を実行したところ、次のエラーが出ました。

|LINK : warning LNK4001: オブジェクト ファイルが指定されていません。ライブラリを使用します
|LINK : warning LNK4068: /MACHINE の指定がありません; IX86 をデフォルトとします
|jdib32.dll : warning LNK4017: MZP 文はターゲット プラットフォームでサポートされていません;
| 無視しました
|ライブラリ jdib32.lib とオブジェクト jdib32.exp を作成中
|LINK : fatal error LNK1104: ファイル "jdib32.lib" を開けません。
|LINK : fatal error LNK1141: エクスポート ファイルのビルド中に障害が起こりました。

どうやったら作成できるんでしょうか?
700692:03/02/12 23:21
>>693
分かる範囲で適当に試して済んでるなら書き込みませんよ。
上記のソース+何通りかは試してます。
ウインドウプロシージャは関数だからパラメータで渡す事はできないので、
分からんのです。
>>692

char* s = (char*)(WNDPROC)WndProc;
WndClassSet(s);

もし、やりたいことが、

WndClassSet("WndProc");

みたいなことだとしたら、おまえにCは向いてないから別の言語選択しる。
ちなみに

void CCWnd :: WndClassSet(WNDPROC proc){

でも充分いけるぞ。
(Windowプロシージャが仮想関数とかじゃなければな)
703しょしんしゃ:03/02/12 23:51
>>698
作成したダイアログボックス(チャット用のウィンドウの予定です)にあるリストボックスです

HWND hChatDlg;
hChatDlg=CreateDialog((HINSTANCE)hm,MAKEINTRESOURCE(IDD_CHAT),hWnd,(DLGPROC)ChatDlgProc);
SendMessage((HWND)GetDlgItem(hChatDlg,IDC_CHATLIST),LB_SETHORIZONTALEXTENT,(WPARAM)100,0);

IDD_CHAT はダイアログのIDでIDC_CHATLISTはダイアログ内のリストボックス
です。

もしかしてタイミングとかやばいんですかね?お願いします。。
なぜWM_INITDIALOGでしょりしない?
>>703 LBS_MULTICOLUMNになってない?
706しょしんしゃ:03/02/13 00:10
>>704
それもしてみてますがやっぱりバーは現れないです。。
707しょしんしゃ:03/02/13 00:16
>>705
それは、VCのリストボックスのプロパティのスタイルのところにある、
「複数列」というチェックボックスの部分でしょうか?

チェックはついていません
>>703
・GetDialogItemはちゃんと有効なハンドルを返してる?
・リストボックスの幅は100より小さい?
709しょしんしゃ:03/02/13 01:28
>>708
うわっ わかりました。。。
リストボックスの幅に足りてませんでした。何やってんだろ、、、

ご迷惑おかけしました。ありがとうございます!!
>>699
VCにはimplib.exe相当のものが存在しないので
VCでつくったDLLをBCで利用することは可能だが逆は不可能。
getprocaddress使えばええやん
712699:03/02/13 23:30
>>710
回答ありがとうございます。
ダメでしたか。
マシンが高速化されてるし、DirectXもあるから、DIBは需要少ないんですね。
713デフォルトの名無しさん:03/02/13 23:46
>>712
自分でダミーのdll作って、lib作れば
714699:03/02/14 00:17
>713
初心者なので、ちょっとムリかも。
715デフォルトの名無しさん:03/02/15 00:57

 VC++の自作アプりを配布するときに、フリーで
ソースも付けたいと思ってるんですが、プロジェクトごと
圧縮して配布して良いもんなんですかね?

 別にウイルスとかヤバイのじゃないけど、シリアルとか
そのまま配っても漏れませんか?

716デフォルトの名無しさん:03/02/15 02:16
ハローワールドってなにですか?
職安
718716:03/02/15 03:16
>>717
ありがとうございます。解決しました。
719デフォルトの名無しさん:03/02/15 11:45
VC++のデバッガで以下のエラーを教えてくれる方法知りませんか?

int a;

void main(void){

int b=1;

if(b==0) a=0;

b=a;       //<- ここで「”a”に初期値が与えられていません」なエラー

}
720デフォルトの名無しさん:03/02/15 11:46
>>719
コンパイラの警告レベルを4にしろ。
そして警告は全てエラーにする、を選択しとけ。
721デフォルトの名無しさん:03/02/15 18:55
インターネットを介した通信プログラムを作りたいと思うのですが
お手本になるようなオープンソースなプログラムってありますか?
>>721
CSocketで調べれば良いんじゃない?
723デフォルトの名無しさん:03/02/15 19:02
>>721
unix
>>722
検索しました。
いろいろみつかって何とかなりそうです。
頑張ってみます。
725721:03/02/15 19:16
うそだぴょーん、まったくわかんねーよ。
わかりやすいページがあったら教えてくれ。頼む。
726721:03/02/15 19:17
>>725は偽物ですので。
>>726
はいはい、偽物さんは帰った帰った。
VCスレでのUNIX発言を取り消そうと必死なのだろうか?
>>726
ジサクジエンだろ?
730デフォルトの名無しさん:03/02/15 22:24
タイトルバー無しのウィンドウをアプリケーション本体の
ウィンドウよりも上につくろうとしてますが、てこずってます。

・CreateEx()でWS_EX_TOPMOSTを指定したが
 アプリケーションウィンドウよりは上にはならない。
・CreateEx()のpParentWnd,nIDを0にすると上にはなるが
 独立したウィンドウになるので
 タスクバーに含まれてしまい気持ちが悪い。
・pParentWnd,nIDを0にしてWS_EX_TOOLWINDOWを指定すると
 タスクバーに含まれないが、ウィンドウにタイトルバーがついてしまう。

CreateEx(WS_EX_TOPMOST,
     className, "", WS_CHILD|WS_BORDER,
     rect, GetDesktopWindow(), nID);
で、今、このようにデスクトップウィンドウを親に指定してやれば
望みどおりアプリケーションウィンドウよりも前面の
タイトルバー無しのウィンドウができたんですが
nIDにへたな番号を渡すと他のアプリと干渉しないかが心配です。
そもそももっとうまくやる方法はないのでしょうか?
>>730
>タイトルバー無しのウィンドウをアプリケーション本体の
>ウィンドウよりも上につくろうとしてますが
なにがしたいの?
732730:03/02/16 00:17
スタートボタンにカーソルあわせると
ポップアップしたヘルプが出るじゃないですか。
ああいうのを作りたいんです。
それだけならHtmlHelp()を使えばいいですが
ウィンドウの中身に、いろいろなフォントをまぜて
表示したりビットマップ貼ったりしたいんです。
HtmlHelpだとそこまではできないようなので。
ツールチップのことか?
なら、ツールチップ使えばいいじゃん。
734730:03/02/16 00:31
ツールチップ!?

・・・検索中・・・

ポップアップヘルプでググってたけど、なかなか求めてるのが
ひっかからなくて、おかしいなと思ってたら・・・
ちなみに手元の本にはツールヒントって書いてあって
ちゃんと説明もあった・・・出直してきます。(´・ω・`)ショボーン
735デフォルトの名無しさん:03/02/16 02:42
ウィンドウの中で円が壁に当たると反射させたいのですが
実行させると壁を突き抜けてどっか行ってしまいます。どこに間違いがあるんでしょうか。
コードが稚拙なのはご了承ください。
int xpos;
int ypos;
int xmov;
int ymov;
int size;
int win_xsize;
int win_ysize;
void CS27Wnd::OnPaint()
{
CPaintDC dc(this);
dc.Ellipse(xpos, ypos, xpos + 100, ypos + 100); }
int CS27Wnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
SetTimer(1, 10, NULL);
return 0; }
void CS27Wnd::OnSize(UINT nType, int cx, int cy)
{if (nType == SIZE_MINIMIZED)
{ return;
}
win_xsize = cx;
win_ysize = cy; }
736デフォルトの名無しさん:03/02/16 02:42
void CS27Wnd::OnTimer(UINT nIDEvent)
{xmov = +5;
ymov = +5;
if (xpos + xmov > win_xsize) {
xmov = -5; }
if (ypos + ymov > win_ysize) {
ymov = -5; }
if (xpos + xmov < 0) {
xmov = +5; }
if (ypos + ymov < 0) {
ymov = -5; }
xpos = xpos + xmov;
ypos = ypos + ymov;
Invalidate(); }
>>736
各変数の初期値は適宜初期化されてるとして……

OnSize()で
win_xsize = cx;
win_ysize = cy;
ってなってるけど、●の大きさ考えてないよね?
あと、OnTimerで常に
xmov = +5;
ymov = +5;
してるのもどうかと思う。
この条件文だと、 xpos + xmov ( xpos + xmov )がはみ出るときしか跳ね返らない。
↑は xpos + xmov ( ypos + ymov )の間違い。

一度跳ね返るとウィンドウ内に戻るから、跳ね返りの条件に当てはまらずにまた右下へ向かう。
その結果右下端でバウンドするのが最終結果だと思うけど。

OnTimerで方向ベクトル(xmov、ymov)を初期化するべきか、
実際の円が動く範囲は直径を考えるとどこからどこまでか、
ということがポイント。
>>735-736
どうしても分からん頭持ってるならブレークポイントいれて見てみろや
740デフォルトの名無しさん:03/02/16 15:33
void CChildView::OnContextMenu(CWnd* pWnd, CPoint point)
{
  CMenu menu;
  VERIFY(menu.LoadMenu(IDR_MENU_POPUP));
  CMenu* pPopup = menu.GetSubMenu(0);

  pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);
}

上記のような感じで右クリックでポップアップメニューを出しているのですが、
UPDATE_COMMAND_UI をハンドルしてもチェックマークを入れることができません。
なぜなのでしょうか? どっかが根本的に悪い気がするのですが。
>>740
TrackPopupMenuの最後の引数はメインフレームのウィンドウへのポインタだった気がする。
742740:03/02/16 19:46
>>741
ありがとうございます。
this → AfxGetMainWnd の修正で旨くいきました。

743736:03/02/16 20:07
>>737-739
有難うございました。
744デフォルトの名無しさん:03/02/17 00:56
char st1[]={"1","1"};//←エラー
char st2[]="11";//←OK

・・・なんで?
>>744
疑問の余地もないと思うが
>>744
char st1[]={'1','1'};かchar *st1[]={"1","1"};だろ(^_^;)
>>746
ネタニマジレス(以下略
>>747=ネタということにしたい>>744
>>748=と言うことにしたい>>744
int型の子息演算でオーバーフロー例外を投げさせる方法、またはインラインアセンブラ以外で
キャリーフラグを調べる方法はないですか。
751744:03/02/17 11:01
>>746
ありがとう。

いや、マジだったんだけど、前者は連結されると思ってたのね。
”と’の違いがよく分かってなかったから。今でもあんまりだけど。

いや、ホントごめんなさい。
>>750
C#使う
>>750
A < B + C ならば A - B < C
A < B * C ならば A / B < C
754ユウジ:03/02/19 01:57
VC++6.0 XPでMFCの環境です。

保存してあるテキストファイルを読み込んでエディットボックスに表示
させたいと思っています。
テキストを行ごとにそれぞれのエディットボックスに表示させたい
のですが表示することができません。
どのようなコーディングをすればよいのか教えていただけませんでしょうか。
755デフォルトの名無しさん:03/02/19 02:36
>>754
エディットボックスの配列を作って、
for (int i = 0; i < MAX; i++)

てっかんじで、Ebox[i] というエディットボックスに書き込むといいのでは。
756デフォルトの名無しさん:03/02/19 03:18
>>754
何をやった上でできないのか不明だから答えづらいけど、
クラスウイザードでオブジェクトを作成してエディットコント
ロールの操作はできているわけ?

>>754
せめて途中経過や試したことくらい書けよボケ
>>754
最後の行の日本語が間違ってるぞ。
「代わりに作ってください」だろ。






ツツシンデオコトワリイタシマス
759デフォルトの名無しさん:03/02/19 22:58
VC++6.0のファイル検索をするプログラムをダイアログベースで作成中です。
ファイル検索の進捗を表すプログレスバー付きダイアログに検索中断ボタンを設置したの
ですが、どうすればうまく機能させられるかわかりません。現在の処理手順は以下です。

モードレスダイアログをCreateし、AfxBeginThreadにてワークスレッドを作成。
//ワークスレッド
検索処理を行い、AfxBeginThreadに渡したダイアログのポインタを
通してSetPosを実行、検索終了したら終了フラグを立てて終了。
//メインスレッド
ワークスレッド作成後はダイアログをDestroyWindowさせない為、終了フラグが立つまで
forでループをする。

この手順だと検索中は中断ボタンのクリックを受け付けません。この手順自体に無理が
あるのでしょうか?

760デフォルトの名無しさん:03/02/19 22:59
こんなことになってるぞ。呆れた。と言うより笑ってしまった。とほほ・・・。

http://pakopako.misty.ne.jp/enter.cgi?id=fdeai
>>759
>終了フラグが立つまで forでループをする。
さて、ダイアログはいつメッセージを処理するんでしょうね?
762デフォルトの名無しさん:03/02/20 22:12
リッチエディットコントロールについて質問です。
リッチエディットの任意の位置に文字列を挿入するにはどうすればよいのでしょうか。
SetWindowText()だと今まであった文字列が消えてしまいます。
調べたところEM_SETTEXTEXというメッセージでできるようなのですが、
このメッセージはどこにも定義されていないようです。EM_GETTEXTEXならあるんですが…
解決方法を知っている方いましたら、教えてください。
763762:03/02/20 22:36
自己解決しました。WM_REPLACESELというメッセージがありました。
764759:03/02/20 22:46
プログレスダイアログなるものを発見して解決しました。そんなものがあるとは知らず
素のダイアログにプログレスバーを貼り付けてました(´Д`)
>761
メッセージループはしていたのですが、キャンセルボタン押下時のメッセージ受付の
方法とかがわかりませんでした。
765デフォルトの名無しさん:03/02/21 11:43
共用体ってインテリセンス使えない?
LARGE_INTEGERのLawPart & HighPartが出てこないよ〜
766デフォルトの名無しさん:03/02/21 14:22
小数点以下の値を、指定した位置で四捨五入、切り捨て、切り上げするには
どうしたら良いのでしょう?
四捨五入だけだったら%3.2fとかって書けば良いのは分かるんですけど。
初歩中の初歩かと思うんですけど、教えてください。
>>766
足して割ればいいやん。
//小数点2桁で四捨五入
a = floor(doublevalue * 100 + 5) / 100;
とか
//小数点1桁で四捨五入
a = floor(doublevalue * 10 + 5) / 10;
とか。
768デフォルトの名無しさん:03/02/21 15:24
みなさん、円周率の定数得るときどうしていまつか?
>>768
手打ちでええやん。
const double PI = 3.14159265358979;
>>767
負号に注意な。
>>767>>770
参考しながらなんとか思い通りのモノが出来ました。
レスありがとうございました。
あのCreateDirectoryって、最下層まで一気にフォルダ作ってくれないんですか?
例えば、c:\2ch\vc\test\readme.txtだとしたら、まず2ch作ってその下にvc作って…
としないとダメなんでしょうか?
>>772
Delphiにおいで。
774名無し@沢村:03/02/22 02:12
>>772
SHCreateDirectoryEx()
775デフォルトの名無しさん:03/02/22 02:19
>>772
MakeSureDirectoryPathExists
imagehlp.hのインクルードとimagehlp.libのリンクを忘れるな。
>>774
氏ねボケ
>>776
文句があるなら理由を書け
>>777
理由。
779名無し募集中。。。:03/02/22 15:00
独習Cに書いてらるmain(int argc,char argv[])関係のプログラムってVC++でちゃんと動きます?なんかエラー出るんですけど
>>779
argv[]じゃなくて*argv[]
>>779
エラーが出るならエラーメッセージくらい書いたら?
782779:03/02/22 15:05
どうもです、*argv[]でした。*argv[]で動かないです。エラーメッセージ出ないでエラー0、警告0で、実行したら強制終了するんです
>>782
独習Cを持っていないからわからないけど、多分アクセス違反だな。
写し間違いはない?
あと、http://pc2.2ch.net/test/read.cgi/tech/1044938752/のスレの方がいいかも
784779:03/02/22 15:11
どうもです、もうちょっと本読んで見ます
785デフォルトの名無しさん:03/02/22 16:13
VC++にて下記を実行すると

char szSound[100] ;
GetPrivateProfileString( "CLOCK", "SOUNDFILE", "あ", szSound, 100, "c:\Clock.ini" ) ;

szSoundには「あ」がせっとされます。
c:\Clock.iniは存在します。
セクション名もキー名もあっています。
SOUNDFILEキーには「c:/test.wav」を設定しているので
szSoundには"c:/test.wav"がセットされるハズだと
思うのですが何がいけないのでしょうか?
教えてください。
786tantei:03/02/22 16:14
★あなたのお悩み解決致します!!
●浮気素行調査
彼氏、彼女、妻、夫の浮気を調査致します!!
●盗聴器盗撮機発見
あなたの部屋に誰かが仕掛けているかも!!
●行方調査
行方不明になっている家族の消息を調査致します!!
●電話番号から住所割り出し
一般電話、携帯から住所を割り出し致します!!
●ストーカー対策
社会問題ともなっているストーカーを撃退致します!!
その他人生相談からどんなお悩みでも解決いたします!!
 直通  090−8505−3086
URL  http://www.h5.dion.ne.jp/~grobal/
メール  [email protected]
   グローバル探偵事務局 

>>785
文字列の中で\マークがどのような振る舞いをするか考えてみよう。
\は変換指定子に使われるんだよ。
ディレクトリの区切りは/を使うか、あるいは\\を使うようにしよう。
788785:03/02/22 16:28
>>787
ありがとうございます。

char szSound[100] ;
GetPrivateProfileString( "CLOCK", "SOUNDFILE", "あ", szSound, 100, "c\\Clock.ini" ) ;

「\\」にしたのですがやはりダメです。。
何でだろう。。
>>788
× c\\Clock.ini
○ c:\\Clock.ini

単なる入力ミスかもしれんが、一応。
790785:03/02/22 16:36
>>789
ちゃんと「c:\\clock.ini」としているのですがダメなんですよぉ(T-T)
書き込み権限がないとか。
792名無しさん@そうだ選挙にいこう:03/02/22 17:03
"あ"-修正->""
793デフォルトの名無しさん :03/02/22 17:13
char szSound[100];

GetPrivateProfileString( "CLOCK", "SOUNDFILE", szSound, szSound, 100, "c:\\Clock.ini");
794785:03/02/22 17:51
>>793
それでもダメなんですぅ。。(T-T)
795デフォルトの名無しさん:03/02/22 18:05
int型の変数にCString型の変数の値を入れたい場合は
どうしたらよいっすか?
796名無し@沢村:03/02/22 18:14
>>795
CString str;
int n; として

n = (int)(LPCTSTR)str;
797名無し@さん:03/02/22 18:18
DQNな質問で悪いんだけど・・・。

VC++勉強しよう思うんだけど、やっぱりCもC++もやったことない
(正確には、Cはデータの型とscanf,printfが使えるぐらい)
人間はまずC,C++を勉強しないと無理?
ちなみにプログラミング自体は初心者じゃないです。
798デフォルトの名無しさん:03/02/22 18:24
>>796
うまくいかないっす(^^;
CString str;
int n;

str = "0";
n = (int)(LPCTSTR)str;

ってやっても
nには 0が入らないっす。
>797
無理
>798
atoi
801デフォルトの名無しさん:03/02/22 18:25
>>797
地道にcとc++を勉強しましょう。
結局はそれが近道です。
そんなに時間はかかりませんから。
>798
釣られたんだよ。


n = ::atoi( str );
でやってみ。
803デフォルトの名無しさん:03/02/22 18:29
>>797
今はどんな言語がつかえるの?
804デフォルトの名無しさん:03/02/22 18:30
>>800
>>802
ありがとうです。
うまくいきました。

今度は、CString型にint型の変数をセットしたいのですが
どうしたらよいですか?
805デフォルトの名無しさん:03/02/22 18:31
c:\\の前にも\\をつけてみたら?
つまり"\\c:\\Clock.ini"
806名無し@沢村:03/02/22 18:34
>>798
なんだ、そういうことか。
_tcstol()か_ttoi()だな。

>>797
ヌヒにはC++を知らないで "Visual C++" を使えると思った理由を問いたい。
807デフォルトの名無しさん:03/02/22 18:38
>>805
それでもダメでした。。。
>>807
もう諦めろ!
>804
str.Format( _T("%d"), n );
810デフォルトの名無しさん:03/02/22 18:46
DDKってダウンロードできないんですか?
811797:03/02/22 19:00
やっぱりそうか〜。みなさんアドヴァイスありがとうございます。
とりあえずC++の本買ってきます。

>>803
・・・・・・HSP(ボソッ)。お金がないんだよう。ヽ(`Д´)ノ
一応BASIC,CASLあたりも余裕です。当たり前か。
VBもちょこっとかじりますた。あ!そうそう、あとはTOWNS-GEA(以下略)

>>806
使えると思ったわけじゃないんだけど、VBなんかはBASICなんて名前が
付いてるけど、BASICとは全くの別物と言ってもいいような言語じゃ
ないですか。ある程度知識があればBASICはショートカットできそうだし。
そんな感じで、VC++もC++とはほとんど別物なのかな〜と・・・。
>>811
一理あるな。VC++にもC++にない仕様がイパーイある。
でもC++のクラスについて理解しておかないと何も組めない罠。
813デフォルトの名無しさん:03/02/22 19:14
>>811
VCの場合は、CやC++のコードを組んでいって、ここぞと言うときに
MS独自の関数を使うという感じがします。
平屋の家を、2階建て3階建てに増築したようなもので、
分かりづいらいです。
814797:03/02/22 19:17
>>812
BASIC程度なら、勘でなんとかなりますしね。
う〜んその辺がVC++とVBの違うところか・・・。
pDC->TextOut(中略)
とかサッパリです。「pDC->」←なんじゃこれは!
勉強しよっと。目指せ1ヶ月でVC++マスター。
おまいはCのポインタをちゃんと理解しているのかと小一時間…
816デフォルトの名無しさん:03/02/22 19:27
>>815
Cのポイントぐらい理解しています。
だったらポインタから構造体(この場合はクラスだが)のメンバに
アクセスするには -> を使うことぐらい(以下略)
818797:03/02/22 19:31
>>813
ほうほう、例えば計算機作るなら、計算する部分はC++で組んで、
計算機のウインドウの制御はMSの関数でやるってな感じですか?

>>815
してないです。Cもほんのちょこっとやっただけなんで。
でもポインタの概念は知ってますよー。
819797:03/02/22 19:33
連続スマソ。

>>816
誰だチミは??
いくらDQNでもこんなことをageで書くようなことはせんですよ。
820デフォルトの名無しさん:03/02/22 19:37
>>819
いい加減うざいぞ、お前。
>>820
オマエモナー
>>814
pDCがポインタだから->を使うんだろ?
そうでなければ.でいいんだが。
また、
(*pDC).TextOut(中略)
でも動くけどな。
>>822
>>817で外出。
ここでポインタの話なんかしなくていいから。
したけりゃCスレでも行け。
825797:03/02/22 20:00
>>820
sageで書こうね。>>816の自作自演?

>>822
そうか、なんとなーく分かってきた。
って言っても画面に文字を表示できるだけじゃあダメダメなんで
もうちょい勉強してきます。
826デフォルトの名無しさん:03/02/22 20:44
エディットボックスにカーソルを合わせて
Enterキーを押すと閉じてしまいます。
Enterキーを押しても閉じないようにするにはどうしたらよいか
教えてください。
カルチョジュセヨ
827デフォルトの名無しさん:03/02/22 21:45
>>825
sageようがくだらない質問はするな。もうくんなよ。
>>826
そろそろダイアログボックスで組むのやめれば?
829826:03/02/22 22:10
>>828
そろそろって。。。
まだはじめたばかりなんだけどなぁ。。
ポインタが分からないんじゃなく、
デバイスコンテキストというものが何なのかがわからないんでしょ?
デバイスコンテキストは、描画対象だと思えばいい。
831デフォルトの名無しさん:03/02/22 22:39
Excelのセルを操作したいんですけど、VCでやるのは難しいですか?
832デフォルトの名無しさん:03/02/22 22:41
>>831
面倒くさいだけ。難しくはない。
833797:03/02/22 22:56
>>830
ポインタが分からないっていうか、ポインタ「も」分からないんだけど、
ポインタの質問をしにきた訳ではなく、VC++がサッパリ分からない例えに
pDC->TextOut(中略)
を出しただけです。
でも親切にどうもありがとう!とりあえず本買ってきたんで、今から
じっくり読みます。
>>826
ダイアログには普通OKボタンというものがあって、Enterキーを押すと自動的に押されるのだ。
たとえボタンを付け忘れていても、Enterキーを押すと気をきかせてOnOKを呼んでくれるのだ。
そしてCDialogのOnOKにはダイアログを閉じる処理が書かれているのだ。
だから自分でOnOKを追加して、「押しちゃイヤン」とかメッセージを出させるようにするといいよ。
>>826

HogehogeDlg::OnOK()
// CDialog::OnOK(); ←(・∀・)イイ!!

HogehogeDlg::OnCancel()
// CDialog::OnCancel(); ← (・∀・)カンペキ!!
あ、俺もそれどうにかしようと思ってて面倒いから放置してた。
OK、キャンセルのボタン消した後だと追加するの大変だから
最初にOK キャンセルをダブルクリックして関数を追加しておくといいね。

でも閉じるボタン押してもウインドウが閉じなくなるから
ESCでは閉じなくて Xボタンで閉じるようにしないといけないな


コマンドボタンの標準ボタンのチェックはずせばいいじゃん
>837
実際に試してみい
Visual Studio 6.0 を使っているのですが、マシンに搭載されているCPUの数
を調べる方法はあるのでしょうか。
(CPUの数に合わせたスレッド数でマルチスレッドを行いたいのです)

初心者の質問ですみません。分かる方よろしくお願いします。
>>839
GetSystemInfo()
SYSTEM_INFO構造体のdwNumberOfProcessors

ヘルプを読んだだけなので間違ってるかも。
841837:03/02/24 10:55
>>838
おわ!ホントだった!
んじゃID_OKを変えるということで。
>840
無事うまくいきました。
素早いレスありがとうございました。
OKボタンの標準ボタンのチェックをはずすなら、他のボタンを標準ボタンにしなきゃだめよ。
別に標準がなきゃいけないわけでもなかろうに。
標準がないとOKボタンが押されたのと同じ動作になるんだよ。
だからOKボタンの標準をはずして他のボタンを標準にすれば、
Enterを押した時のその他のボタンが押されるのでダイアログが閉じない。
他の重要なメッセージが大量のメッセージの中に埋もれてしまうのでデバッグ時の
'Hogehoge.DLL' をロードしました、合致するシンボル情報は見つかりませんでした
というメッセージを出さなくする方法はありませんか?

847デフォルトの名無しさん:03/02/24 18:45
>>835
それってどうやるの?
どこに書けばいいの??
848デフォルトの名無しさん:03/02/24 19:03
CTestDlg1にはメンバ変数objA というクラスがあります。
CTestDlg2にはメンバ変数objB というクラスがあります。

objAをobjBに参照渡しをする場合どうしたらよいのでしょうか?

>>848
できないんでない?
>CTestDlg1にはメンバ変数objA というクラスがあります。
>CTestDlg1にはメンバ変数objA というクラスがあります。
>CTestDlg1にはメンバ変数objA というクラスがあります。
>CTestDlg1にはメンバ変数objA というクラスがあります。
>CTestDlg1にはメンバ変数objA というクラスがあります。
>CTestDlg1にはメンバ変数objA というクラスがあります。
>CTestDlg1にはメンバ変数objA というクラスがあります。
>CTestDlg1にはメンバ変数objA というクラスがあります。
>>847
OKボタンとキャンセルボタンがあるダイアログのサンプルを探してきてコピペろ
852デフォルトの名無しさん:03/02/25 04:09
ちょっと教えて君でスマソ。
Visual C++ 6.0 SP5を持ってます。
コンパイラが同一の場合、WinXP上でコンパイル、リンクして生成したオプジェクト(EXEなど)と、
WinME(98など)上で、コンパイル、リンクして生成したオブジェクトって、
いかなるときでも同じはずですよね。
もし、違うものが生成されるとしたら、どんな特殊なときなのか教えてください。
>>852
コンパイルする環境によってデフォルトで定義されるマクロが違うから生成されるものも異なる。
タイムスタンプ
855デフォルトの名無しさん:03/02/25 04:30
>>853
あくまでそのレベルですよね。
同じコンパイル環境で、OS依存はありえないですよね。
856デフォルトの名無しさん:03/02/25 04:35
コンパイラの中に
if(Win98){
98 用のバイナリを生産
} else {
NT用のバイナリを生産
}
と書かれていたら、異なるバイナリが生産されてしまうな。
>>855
だから違うって言ってるだろ?
一般にWin98でコンパイルすればWin98用exe、NTでコンパイルすればNT用exeができる。
>>857
なにが「一般に」だ。
デフォルトのコンパイルオプションを見ろ。
859あああ:03/02/25 10:47
VC# .NETでしばらく遊んでたんですが、小さなアプリでさえ動作が
重い(CLRをロードするから?)のでVC++ .NETに乗り換えました。

理解が違ってるとあれなのでお伺いしたいんですが
・マネージドコード
-> C++、C#、VBで書いたコードの違いは最終的にはCLRに吸収されて
  同じものができる。好みの言語でプログラミングができるという
  だけの話。

・アンマネージドコード
  いわゆるネイティブなアプリを作るにはVC++を使って、しかも.NET
Frameworkを使わずに書かなければならない

こう理解して問題ないのでしょうか。ひょっとして凄く恥ずかしい
こと書いてるかも??
まず先に

 ( ・∀・)   | | 
 と    )    | |  ガッ
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>859
>>852
OS依存のライブラリをスタティックリンクした場合とか?
862デフォルトの名無しさん:03/02/25 14:04
たとえば、世に出ているXPやME対応のアプリ、とうたっているアプリは、
どのようにして開発しているんでしょうね。
開発PCのOSに依存するコードが生成されているとしたら、
社員の使っているPC(にインストールされているOS)によって、
できるプログラムが異なると、いろいろややこしくなりますよね。
>>862
だから動作確認するんだろうが
メールランクライハカンベンシロ

 ( ・∀・)   | | 
 と    )    | |  ピコッ
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>860
865デフォルトの名無しさん:03/02/25 14:13
>>863
それ以前の生成されるコードのレベルの話じゃん。
>>855
だからそのレベルでありえてるだろと。
何が聞きたいのかわからん。
>>862
下位互換って知ってるかな……
ここ、ひねくれてる香具師多いな。
知ってても答えねー、みたいな(w
つーか>>862のようなことを心配してるんだったら
コードレベルで同じかどうかなんて気にしてもしゃーないべ。
>>862>>852のことを踏まえて言ってるのかな?

たとえばWin95でコンパイルされたなら、それ以降の9x系には基本的に対応。(MSがそう謳ってる)
けれども作ったときにはWinMeなんて出てなかったりしたから、当然「対応」なんて書けない。
「Me対応」っていうのは要するに「Meで動作を確認しますた」ってことなワケよ。

中にはMeの場合に特別な処理をしたりとか、OSによって処理を切り替えたりする部分があったりして
その処理にMe用を入れて「Me対応」という場合もあったり、特定のバージョンでないと動かないように
してあったりするものがMeでも動くようになればそれで「対応」ってこと。
9x系とNT系でexe自体を分けてるのもあるしね。

>社員の使っているPC(にインストールされているOS)によって、
>できるプログラムが異なると、いろいろややこしくなりますよね。
そんなソフト会社イヤだ……
>>870
デバイスドライバは9x系とNT系で分けているよね。当たり前だけど。
コンパイラはOSによって出力されるコードに違いはない
Win32APIでも特定のバージョン以上に対応させる動作をさせるためには
コンパイルオプションで挙動を変えられるようにヘッダーで処理を分けるようになっている
例えばWindows9x環境でUNICODEを有効にしてコンパイルすることは出来るが
9x系では動かずNT系でのみ動作するバイナリを吐く
>>852
PEフォーマットで調べろや
IMAGE_FILE_HEADER には少なくともTimeDateStampが存在するぞ
>>871
そりゃ違うOSだからな……
>>873
そういうレベルの話ではないと思われ……
「…」が流行っているのだろうか……
>>874-876
ジサクジエンなのだろうか…
878デフォルトの名無しさん:03/02/25 15:53
具体的に、VCC++6.0SP5でNT4.0SP3でコムパイルした香具師と
Win4.0SP6でコムパイルした香具師は同じだよな。
と自分で書いてておかしくなってきた(w
しまつたageてもた・・・
age以前に単語むちゃくちゃだな。
しかもOSの差じゃなくてSPの差を書いて「具体的」って。
なんだ、真剣に答えてくれないのか。
デムパと思われたか・・・卯津田詩嚢
883デフォルトの名無しさん:03/02/25 16:39
Win98上でコンパイルしたコードとWinXP上でコンパイルしたバイナリは
同じになる可能性が高いが、同じにならないようにコンパイラを
設計することもできる。MSの考え方次第ではないか。
VCは同じになるが、VBは同じにならないから気を付けろ
たっぷり開発環境のOCXのバージョン異存に苦しめられてくれ
>>884
スレ違い氏ね
>>882
誰だか知らんが、答えてもらえないのは大抵の場合質問の仕方が悪いよ。
昔、国産PCでのコンパイラで、コプロがあるかないかで、
浮動小数点演算のライブラリをリンクするか、
同処理をエミュレーションするライブラリをリンクするかを
判断しているものがあったな。ターボパスカルだったか忘れた。
VCもIEのバージョンによって動作変わるよ。
889デフォルトの名無しさん:03/02/25 18:51
動作が変わることと出力コードが変わることとは直接はリンクしてない罠。
_creatで得た低水準入出力ハンドラを FILE*に割り当てるにはどうしたらよいのでしょうか?
(_filenoの逆)
コンパイラというのは、ある言語からある言語への単なる変換プログラムだ。
結果が変わる訳あるまい。

例えば、NKFをどこの環境で動かそうが、文字コード変換の結果が
変わらないのと同じってことだ。
892デフォルトの名無しさん:03/02/25 20:49
sndPlaySound関数を使用したいのですが下記のエラーが発生してしまいます。
ちゃんと #include <MMsystem.h>はやっています。
何でエラーが発生するか教えてください。

clockDlg.obj : error LNK2001: 外部シンボル "__imp__sndPlaySoundA@8" は未解決です
Debug/clock.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー
winmm.libをリンクしろってMSDNに書いてる
894デフォルトの名無しさん:03/02/25 20:58
>>893
リンクの方法を教えてください!!!
よろしくお願いします。
>>894
実行時に動的に呼び出すか
リンクオプションで指定するか
ソースコード中にライブラリリンクの疑似命令を埋め込むか
好きにしろ
>>894
ヘルプ読めボケ
氏ね
897デフォルトの名無しさん:03/02/25 21:35
CString a;
a = "TEST" ;

string b = a ;

これって型が違うけどエラーが出ないよね?
何でですか?
898デフォルトの名無しさん:03/02/25 21:43
string a ;
CString b ;

b に aをセットしたいのですがエラーが出ます。
CString型にstring型を代入するにはどうしましょ?
b=a.c_str()
>>894
リンクの方法も知らんとは。
馬鹿なやつよのぅ。
基本だろ!
最近はリンカの存在感が薄いもんな
リンカ、東野と付き合ってるらしいが本当か?
>>902
詰まらん。
904デフォルトの名無しさん:03/02/26 11:43
下げマンらしいね。
905デフォルトの名無しさん:03/02/26 12:03
WindowsSDKでプログラムを作ってるんですが、
MFCのコレクションクラスを使うことはできないのですか?
コレクションクラスのヘッダーファイルをincludeすると、
「"windows.h"をインクルードしたらいけません」みたいな
コンパイルエラーになってしまいます。
>>905
MFCを使うならぜんぶMFCで統一すること。
STL使えば?
907905:03/02/26 12:38
なるほど。やっぱり、そうですか。
では STLってどこで入手できるんですか?
908ねかま:03/02/26 12:56
>>907
たぶんあなたのHDDの中に入っているんじゃないかしら。
909905:03/02/26 13:20
えっ!そうなんですか!?
使っているのはVC6.0なんですが、
探してもどこにあるのかよくわかりませんでした。
VCのCD-ROMの中なんでしょうか?
それともSDKの中に含まれてるんでしょうか?
910ねなべ:03/02/26 13:25
>>909
○▲★■の中に入ってるよ
911ねなべ:03/02/26 13:26
>>910
氏ね
912ねなべ:03/02/26 13:27
>>910==911
自爆自演ヤメレ
913905:03/02/26 13:59
失礼しました。
C:\Program Files\Microsoft Visual Studio\VC98\Include
の中にありました。
914219-105-109-105.adachi.ne.jp:03/02/26 14:49
C言語の知識が皆無に等しいくせに、VC++.netを買った私は馬鹿ですか?
買った行為はともかく
>>914のような書き込みが馬鹿だということを色濃く表している
>>915
そうっすか。どうもっす
917デフォルトの名無しさん:03/02/26 18:53
>>897について答えられる人がここに何人いるのだろうか?
LPCTSTRだから。
919デフォルトの名無しさん:03/02/26 19:37
sndPlaySound( "c:/test.wav" , SND_LOOP ) ;
を実行しても繰り返し再生してくれません!!!
何故???
>>919
そんなPath無いから。
921デフォルトの名無しさん:03/02/26 19:51
>>920
音楽はなりますが
繰り返し再生してくれないのです。
922デフォルトの名無しさん:03/02/26 20:32
>>921
You must also specify the SND_ASYNC flag to loop sounds.
これじゃないかな。
SHFileOperationの戻り値をすべて列挙する。
おしえてください。
924デフォルトの名無しさん:03/02/26 23:37
デフォルト引数を使ってる関数を分割コンパイルした時、
ヘッダファイルだけインクルードしてもデフォルト引数の値が
パラメータヒントに出てこないのはなぜだ!なんか対策方法ある?

---main.cpp---
#include "main2.h"
int main(void) {
    int rc = foo();//ここのfooが「int foo(int a)」になっちゃう。
    return 0;}//int foo(int a = 2)になって欲しいのに。
---main2.cpp---
#include "main2.h"
int foo(int a){return a * 2;}
---main2.h---
int foo(int a = 2);
sleep関数が使えません
どのライブラリに入ってますか?
>>925
MSDNで調べてください
すみません。質問です

SendAsyncProc関数を使おうと思っているのですが、
3番目の引数の型「ULONG_PTR」でシンタックスエラーがでてしまいます。
MSDNにはWindows95以降、windows.hをインクルードと書いてあるのですが、
VCのインストールされたフォルダを全検索しても「ULONG_PTR」という単語はヒットしません。
googleで検索したところ、gdiplus関係がヒットしたのですがその辺を調べれば良いのでしょうか・・?

環境はWindows2000
VisualC++6.0ProfessionalEdition(SP5)
参照MSDNは2001年1月リリースとMSDNライブラリVisualStudio6.0です

よろしくお願いします。
928名無し@沢村:03/02/27 03:16
>>927
ヌヒよ、VC7の環境では以下のように定義されているぞ。

typedef _W64 unsigned long ULONG_PTR, *PULONG_PTR;
>>927
basestd.hに入ってる。

ソースコードの適当なところにULONG_PTRって打って、F12を押してみよう。
定義されているところへジャンプしてくれる。
(ブラウザ情報付きでコンパイルしなおす必要があるけど)
basetsd.hだった……
しかもDXSDK…鬱
VOID CALLBACK SendAsyncProc(
HWND hwnd,// 目的ウィンドウのハンドル
UINT uMsg,// メッセージ
DWORD dwData,// アプリケーション定義の値
LRESULT lResult// メッセージ処理の結果
);

ULONG_PTRは見当たらないが。
MSDNライブラリVisualStudio6.0より。
>>927
ULONG_PTR がないってことは 2001年9月 以前の古いSDKだと思われ。
ULONG_PTR とか INT_PTR って型は古いSDKのヘッダでは宣言されていない。
新しいSDKをダウンロードしてくるか、かわりに昔の名前 ULONG を使う。
MS自身が2つの型を混同しているので当分 ULONG_PTR と ULONG は同じ型だろう。
ただ、わざわざ名前を変えたのには理由があるのだろうから
時間がある時にでも新しいSDKにアップデートしておいた方がよいと思う。
933デフォルトの名無しさん:03/02/27 13:58
今気が付いたんだけど
CFileFindとかでC:\*.*を検索するとC:\WINNTが検出されない訳だがこれって仕様?
環境はWindows2000 VC++6.0
>>933
仕様っていうか……
「 . 」が入ってないんだからヒットしなくて当然だと思う
935デフォルトの名無しさん:03/02/27 14:35
>>934
あーそれは関係ないんじゃないですか?。
.がなくてもProgram FilesとかHITするし
C:\*でもヒットしないし。
Windowsの仕様では*.*=*ですから。
936927:03/02/27 22:13
なるほど。
サービスパックはちょこちょこ当てていたので、その辺りも修正されてるつもりでいたのですが
そうではなかったのですね。
今からダウンロードしてインストールしたいと思います。
ありがとうございました。
937しょしんしゃ:03/02/28 18:37
ダイアログの特定のコントロールをアクティブにするにはどうしたらいいでしょう?
SetFocus
>>937
SetActiveWindowではだめか?
940デフォルトの名無しさん :03/02/28 20:21
VC++.netでDirect3DクラスとD3DXクラスを使うプロジェクトを作るには
新規作成から何を選べばいいんでしょう?
極端な話コンソールアプリからだって使えるから
ナニを選んでも使える
>>937
デフォルトボタンの面倒もちゃんと見てもらいたかったら
GotoDlgCtrlかWM_NEXTDLGCTL
943940:03/02/28 22:06
空のソリューションを選べばいいんでしょうか
初歩ですいません
944りすとぼっくす:03/02/28 23:09
リストボックスをソートするにはどうしたらいいのでしょう?
リソースエディタのプロパティを使ったらできたのですが、そうではなく
あるタイミングでソートを関数で実行したいのですが・・・。
945:03/02/28 23:25
>944
CListCtrl::SortItems
を呼び出すんじゃなかったっけ?
忘れた。
946りすとぼっくす:03/02/28 23:35
>>945
すいません説明がたりませぬでした。
非MFC環境どす。
947:03/02/28 23:38
>946
LVM_SORTITEMS ってメッセージ?
非MFCはよくわからん。。
間違ってたら誰かサポートしてくれぃ。
じゃ、サポート・・・かな?
LVM_SORTITEMS はリストビューのメッセージ。
たぶん >946 が聞いてるのはリストボックス。
非MFC環境の質問なら↓の方が向いているかも。
http://pc2.2ch.net/test/read.cgi/tech/1018239290/l50
949デフォルトの名無しさん:03/03/01 01:08
フォトショップのツールウィンドウみたいに、子ウィンドウを
親ウィンドウのクライアント領域の外まで移動可能にするには
どのようにすればいいですか?

普通に子ウィンドウを作成したのでは親ウィンドウの外に出ることが出来ないのですが…
>>949
CreateWindowでウィンドウを作成するとき、HMENUをNULLにすれば良い。
あと、WS_CHILDは指定しないこと。
951949:03/03/01 01:29
>>950
できました!ありがとうございます。

ウィンドウスタイルで指定するものだと勝手に思い込んでいたので
検索しても見つからなくて困っていました。3時間も使ってしまって鬱だ…
952デフォルトの名無しさん:03/03/02 13:28
CAD用アドオンをWin2000+VC++6で作ってます。

CADアプリがマウスカーソルを握っている状態でモードレスダイアログを呼び出した時、
マウスカーソルが非表示になる場合があり、解決策が見つかりません。
以下の方法を試しましたがダメなのです。

●一度マウスカーソルを非表示にして再度表示
 → ぜんぜんダメ。

●ダイアログ表示前に原点にマウスカーソルを移動させておき、ダイアログ表示後に元に戻す
 →CRTでは回避できた(表示された)のに、液晶ではダメ。

●ダイアログ表示後にSendMessage(hWnd, WM_SYSCOMMAND, SC_KEYMENU, 0)でウィンドウメニューをアクティブにする。
 →マウスカーソルは表示されるが、ダイアログ表示後のリターンでメニューがドロップダウンしてしまうのでダメ。

どなたか知恵を貸して下され・・・・
>液晶ではダメ。
ほう、それでは出力を普通のディスプレイと液晶、同時に出力すると
液晶の方だけカーソルが表示されないのか?
そいつはすげぇや、心霊現象だよ
>>953
普通のディスプレイってなんですか?
あの〜、まったくの初心者がこんなアフォなこと聞いて良いのか知りませんけど、
ボタン押したらuhoho.exeが起動するように
HINSTANCE ret=ShellExecute (m_hWnd,"open","uhoho.exe",NULL,NULL,SW_SHOW);
if((int)ret<=32) AfxMessageBox("処理できない.",MB_OK);
って書いたんです。
そしたら処理できなかったんですわ。
何ででしょうか?

ちなみにuhoho.exeはインストーラーで150Mあります。
小さいファイルだったら起動するんです。
>>954
異常でないディスプレイのことです。
>>955
メモリが足りない…とかじゃないよな。
うん。
>>953
液晶ディスプレイについてしか言及されてないじゃん。
なんで「普通のディスプレイ」の話が出てきてるの?
>>953
 →CRTでは回避できた(表示された)のに、液晶ではダメ。
この部分だと思われ
ちがった>>958だ……












           つ ぅ か 普 通 の デ ィ ス  プ レ イ っ て な ん だ  よ










ビデオカードからの出力信号がCRTと液晶で変化が生じているのなら、確かに怪現象だと思うが
出力媒介によって表示を変えることが出来るという新技術の発見ということになる
特許を申請汁
>>962
デコーダが違えばそれも可能なわけだが。
>>961
うざいよ
>>963
同じ出力信号で液晶とCRTという条件だけでどうやってやるの?
色を薄くしてコントラストの強度を利用するくらいしか思いつかない
それが分かれば今回の件も解決なわけだが
966名無し@沢村:03/03/02 16:54
>>955
ヌヒよ、CreateProcess()でもだめか?
んだんだ。
>>955
ファイル名がいかん
>>955
エラーの内容をしっかり確認しる。
970デフォルトの名無しさん:03/03/03 20:29
C++やVBなどでGUIアプリを作成する場合
とうぜん画面設計がありますよね?
皆さんは画面設計について何か参考にされているものってあり
ますか?
参考書や他のアプリを参考にするとか?
ボタンの配置1つとっても考えると難しいものですよね?
画面設計について参考になるサイトや書籍等ありましたら
教えてください。
971仕様書無しさん:03/03/03 20:35
>>970
野生の勘で。
つーか、とりあえず作ってみて、使いづらかったら考える。
>>970
プログラマ板に「こんなUIは使いづらい」というようなスレッドがあったと思う。
もうないかもしれないけど、誰かがそれをまとめたサイトを作っていたから探してみては?
973972:03/03/03 21:13
うなづけるものがいくつかあったよ。
フォルダオプションとかIEのインターネットオプションとか(-_-;
>>970
ダメなユーザインタフェイス講座
http://www.geocities.co.jp/SiliconValley-Oakland/8192/

これか? 
975972:03/03/03 21:18
>>974
そうそれ。

http://mentai.2ch.net/prog/kako/997/997370579.html
そういえばタイトルは「readme.txtにアンインストール情報を!」だったな(^_^;)
こんなUIのソフトは嫌だ!
http://pc2.2ch.net/test/read.cgi/software/1023253730/

ソフト板にあった
>>976
あ、俺が立てたスレだ(笑
( ´_ゝ`) フーン
979デフォルトの名無しさん:03/03/03 22:20
教えてください。
CStringクラスがぶっこわれるんですけど(ゴミが入る)
char * sage="test";
CString hoge = sage;
このような場合ってhogeはポインタみたいな指し方するんですか?
これだと領域とってくれますか?
hoge = CString(sage);
スプリッタってどうやったら作れますか?
WTLを使ってますがそれっぽいクラスやAPIが見当たりません。
981デフォルトの名無しさん:03/03/03 23:29
>>979
壊れているといっている理由をまずかけよ
>>980
スプリッタはWTLなら標準で入ってるだろ
よく観察してみろ
>>979
壊れているのはCStringクラスじゃ無くておまえの頭だろ!
>>982
そのままの名前のヘッダがありました。スマソ。