くだすれVisual C++(超初心者用)

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Visual C++使いが優しくコメントを返しますが、
お礼はVisual C++の布教と初心者の救済をお願いします。

Visual C++ Home Page
http://www.microsoft.com/japan/msdn/visualc/

前スレ
http://pc8.2ch.net/test/read.cgi/tech/1135817069
21は前スレの1:2006/02/28(火) 09:43:16
ム板ではかんたんに立つんだよな、なぜか。

パート○○とか、ダサイっしょ
3デフォルトの名無しさん:2006/03/01(水) 00:46:57
if(3get){
for()
}
4デフォルトの名無しさん:2006/03/01(水) 04:44:38
Visual Studio 2005 Express Editionとの違いを教えてください 
5デフォルトの名無しさん:2006/03/01(水) 07:24:29
>>4 少しは自分で調べろ。
6デフォルトの名無しさん:2006/03/01(水) 13:18:37
>>4
Express Edition : Microsoftが作っている
BCB : Borlandが作っていた
7デフォルトの名無しさん:2006/03/01(水) 14:10:09
>>4
Visual Studioは本来、VC++だけでなくVB (.Net)やVC#などもセットになったIDE。
このスレはその中でもVC++のスレ。VC++ならどんなバージョンでも受け付ける。
8デフォルトの名無しさん:2006/03/01(水) 17:06:19
エスパー?
9デフォルトの名無しさん:2006/03/04(土) 00:20:00
すいません! 初心者なんですが C#とC++のどちらをやればいいのか迷ってます!
やはり初心者にはC#の方が良いのでしょうか?
いつかはネットワークプログラミングをできるようになりたいです!
どちらを選択したら良いのか教えてください!
10デフォルトの名無しさん:2006/03/04(土) 00:29:19
両方。
ネットワークプログラミング → C
11デフォルトの名無しさん:2006/03/04(土) 02:31:39
「猫でもわかる〜」
を買ってwin32アプリの製作を目指しているものなのですが、
LinuxのコンソールでC言語を習得したつもりでもまったく違う環境と
あまりに多いAPIに悩まされています。

最初は「おまじない」みたいな感じでソースを書いて流し読みでも良いのでしょうか・・・・
12デフォルトの名無しさん:2006/03/04(土) 06:18:37
>>11
コードよりも概念が重要
理論がわかってれば細かいコードはどうでもよくなる
13デフォルトの名無しさん:2006/03/04(土) 06:48:08
>>12
その概念って、どうやって理解すればいいの?
推薦図書とかあったら教えて。
14デフォルトの名無しさん:2006/03/04(土) 08:50:40
>>13
自分は Mac から移行したから GUI の扱いに抵抗はなかったが、DOS から Mac に
移行したときは参った。Mac -> Windows 移植では、Mac の API と互換の関数を
最初に作ったのだが、振るまいが分からないときは、送られて来る msg を逐一
ファイルに取ったりした。で、
static FILE *fd;
#ifdef TEST
if ((fd = fopen("err.txt", "a+"))!=NULL){
fprintf(fd, "...", x, y, ...);
fclose(fd);
#endif
なんてのぶち込んだ。1ステップずつ追うときはデバッグ実行でもいいが、
要所要所を見るときは、この方が楽だと思った。大体の処理傾向がつかめると
他への応用も効くようになる。余り基本的でない部分ではサンプルのままで
やって置くのがいいと思う。慣れるとキャストしながらポインタを使いまわす
ようになるが、やりすぎると痛い目に会う。幸運を祈る。
15デフォルトの名無しさん:2006/03/04(土) 13:05:36
error LNK2001: 外部シンボル ""int __stdcall WSACleanup(void)" (?WSACleanup@@$$J10YGHXZ)" は未解決です。


こんなエラーがWSACleanup();を使うと出てしまうんですが、何が原因なんでしょうか・・・・
サンプルソースすらコンパイルできないなんて・・・・

#include <stdio.h>
#include <winsock2.h>

int main() {
TCHAR str[1024];
WSADATA wsaData;

WSAStartup(2 , &wsaData);
printf("バージョン = %d.%d\n記述 = %s\n状態 = %s\n" ,
(BYTE)wsaData.wHighVersion , wsaData.wHighVersion >> 8 ,
wsaData.szDescription ,wsaData.szSystemStatus
);
WSACleanup();
return 0;
}
16デフォルトの名無しさん:2006/03/04(土) 14:07:18
>>15
ライブラリはリンクした?
17デフォルトの名無しさん:2006/03/04(土) 14:11:21
>>16
え・・・・
kwsk
18デフォルトの名無しさん:2006/03/04(土) 14:17:05
>>17
関数はライブラリをリンクしないと使えない。
何もしなくても基本的なライブラリはリンクされるようになっているから、
printfなんかのC標準関数や一般的なWinAPIの関数はヘッダをインクルードするだけで使えている。

自分の使いたい関数がどのライブラリを要求するかはWindows関係ならMSDNを引けば書いてある。
19デフォルトの名無しさん:2006/03/04(土) 14:27:01
2015:2006/03/04(土) 15:18:22
できた!!!!
ありがとうございました!!
21デフォルトの名無しさん:2006/03/04(土) 16:24:31
VCEEなりBCCなり使ってコンパイルすればいんじゃないの?
そこから先は、環境によったりするからコンパイルを試して
からじゃないとわからないと思う。

共通して言えるのは
1.SDKやらPSDKなりの必要な物を入れる。
2.ライブラリ等にパスを通す。
3.未解決ってエラーが来たら、Googleなりで調べて使用している
 ライブラリを追加or2をやる。
2221orz:2006/03/04(土) 16:25:21
to>>19
23デフォルトの名無しさん:2006/03/04(土) 16:43:49
先回の900スレあたりでいろいろと教えてもらった者です
( `・ω・´)ノヨロシクー
テキストボックスから読み込んだ文字列を、16進数に変換するプログラムで
16進数以外を入力したら
"変換が正常に行われませんでした"
を出したいのだけど
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
errno=0;
pin_ptr<const wchar_t> text = PtrToStringChars(textBox1->Text);
//16進数に変換
wchar_t* pEnd;
unsigned long ul = std::wcstoul(text, &pEnd, 16);
/*整合性のチェック(16進数かどうか)
if(errno != 0){
/* errno has changed, so error has occurred */
MessageBox::Show("変換が正常に行われませんでした");
}
}

なぜか数字は、8桁迄は問題無いけど、9桁以上入力すると
"変換が正常に行われませんでした"
が表示されるし
A-Fを8桁以上入れると
"変換が正常に行われませんでした"
A-F以外なら何桁でも何も出てこない
本来意図する反対の様な振る舞いなんだが
漏れが意に反するコードを書いているためだと思うが
(´ε`;)ウーン…ワカラン
なんで?
24デフォルトの名無しさん:2006/03/04(土) 16:59:49
>>23
http://msdn.microsoft.com/library/ja/vclib/html/_crt_strtoul.2c_.wcstoul.asp
VC++のunsigned longは32bitで、それはちょうど十六進法で8桁。9桁以上はオーバーフローしないわけがない。
あとpEnd使っていないじゃないか。
25デフォルトの名無しさん:2006/03/04(土) 17:11:57
>>24サンクス
では変換する文字列の頭にに0xを付けたら16進数と認識してくれるってこと?
MSDNで調べたらpEndってオブジェクトに対応するテキストの最後の文字へのポインタですってあるけど、
wchar_t* pEnd;
では駄目なのかな?
26デフォルトの名無しさん:2006/03/04(土) 17:20:59
>>25
pEndは、wcstoul()呼び出し後にチェックすることで変換終了点を検出するために用意したのではないのか?
そうでないなら、要らない。
27デフォルトの名無しさん:2006/03/04(土) 17:28:30
「str/wcsto〜」系の関数は正しく変換できたかを確かめるのに*pEnd == L'\0'かどうかを見るんだよ。
28デフォルトの名無しさん:2006/03/04(土) 17:32:31
こういうこと?
//if(errno != 0){
if(*pEnd != L'\0'){
29デフォルトの名無しさん:2006/03/04(土) 17:45:46
>>27なるほど
25=28ですが
if(*pEnd != L'\0'){
でコンパイラも通ったし、結果も意図する事となったポイんだが
errnoの使い方が中途半端というか、全然分からないのだけど
errnoで判定する為にはどうしたらよろしか?
30デフォルトの名無しさん:2006/03/04(土) 17:59:41
射精思想
31デフォルトの名無しさん:2006/03/04(土) 18:23:38
>>29
24のURL読んだ?
オーバーフローまたはアンダーフローが発生したときにerrnoが設定されると書いてあるだろ。
つまりその他の場合にはerrnoは何も設定されない。

もちろんこれはMSの独自仕様ではなく、ISOの決めたこと。
32デフォルトの名無しさん:2006/03/04(土) 18:43:18
>>29ですが
たしかに、そうだけど
変換を実行できなかった場合は 0 を返します
ともあるので
16進数以外の場合0を返すってことではないのかな?
33デフォルトの名無しさん:2006/03/04(土) 18:55:57
仕様にない細かい部分はライブラリのソースみればわかる。
もしライブラリのソース持ってなかったら、
いろいろなケースを想定して納得がいくまでテストすればいい。
34デフォルトの名無しさん:2006/03/04(土) 19:27:28
>>29ダス
errnoで16進数か、否かを判定するのは標準的ではないという事でよろしだな
┐(´д`)┌ヤレヤレ
35デフォルトの名無しさん:2006/03/04(土) 21:41:08
質問です。XP、VS8 です。

素朴な疑問なのですが、
プロジェクトの設定の追加依存ファイルでライブラリを追加するのと、
どこかのヘッダに #pragma comment(lib, "hoge.lib") とするのでは、
何か違いがあるのでしょうか。
36デフォルトの名無しさん:2006/03/04(土) 21:44:38
違うけど違わない
37デフォルトの名無しさん:2006/03/04(土) 21:45:01
プロジェクトの設定の追加依存ファイルでライブラリを追加するのと、
どこかのヘッダに #pragma comment(lib, "hoge.lib") とするのが違う。
38デフォルトの名無しさん:2006/03/04(土) 21:50:13
目的が同じで手段が違う
39デフォルトの名無しさん:2006/03/04(土) 21:51:35
結果が同じで、目的と手段が違う
40デフォルトの名無しさん:2006/03/04(土) 22:08:55
>>36-39
ありがとうございます。
41デフォルトの名無しさん:2006/03/04(土) 22:14:09
>>38>>39
どっちだよ
42デフォルトの名無しさん:2006/03/04(土) 22:21:12
なんでwin32apiは、typedefをキチガイじみてるほどしているのだ?
あれのせいで見慣れない記述がイッパイ出てくるから、
プログラムが理解しにくくなっているよな
43デフォルトの名無しさん:2006/03/04(土) 22:32:14
その方が意味を取り違えたりしないからじゃねぇ?
44デフォルトの名無しさん:2006/03/04(土) 23:20:12
VC8です
wchar_t* arg_2;
_ultow(arg_1,arg_2,16);
こんな使い方したら、
: warning C4996: '_ultow' が古い形式として宣言されました。
: '_ultow' の宣言を確認してください。
と指導を受けました、_ultowをどう書き直したらいいの?
45デフォルトの名無しさん:2006/03/04(土) 23:26:01
>>42
慣れれば大したことは無い。
46デフォルトの名無しさん:2006/03/04(土) 23:27:25
>>44
ヘッダの宣言を確認してください。
47デフォルトの名無しさん:2006/03/04(土) 23:51:23
>>44です
よく読んだら
_ultow_s (arg_1,arg_2,32,16);
最近はこう書くようですね
48デフォルトの名無しさん:2006/03/05(日) 00:13:57
VC++ 2005 でMFCを使わない簡単なアプリを作ってみました。
できた実行ファイルをバイナリエディタでみてみると
最後のほうにPADDINGという文字がいくつも並んでいるのですが、
これは仕様でしょうか?
この文字を削ってファイルサイズを小さくすることはできないのでしょうか?
49デフォルトの名無しさん:2006/03/05(日) 00:17:56
>>48
#pragma comment(linker, "/opt:nowin98")
5048:2006/03/05(日) 00:29:43
>>49
早速のレスありがとうございます。
試してみたのですが、
main.obj : warning LNK4229: 無効なディレクティブ '/opt:nowin98' が見つかりました。無視します。
というメッセージが出てPADDINGという文字はそのまま残ってしまいました。
他に設定しなければいけない箇所があるのでしょうか?
51デフォルトの名無しさん:2006/03/05(日) 01:39:12
wchar_t* hoge;
という変数をテキストボックスに表示したいのですが
巧くいきません
String型とかに変換しないと出来ないのでしょうか?
52デフォルトの名無しさん:2006/03/05(日) 02:38:11
>>48
なんだろう?見てみたけど、VC++2005でも特にそういうのはなかったよ。
つまり仕様でないことは確か。
53デフォルトの名無しさん:2006/03/05(日) 09:11:01
ファイルは1バイトずつじゃなくてブロック単位で読み書きするから
意味もなくサイズ削ってもしょうがない。
54デフォルトの名無しさん:2006/03/05(日) 09:17:56
>>51
NT系限定でよいのならSetDlgItemTextWやSetWindowTextWなんかを使う。これが1番簡単。

9xでも動くようにしたければ、MSLUを使うか、
WideCharToMultiByteなどで一旦マルチバイト文字列へ変換してSetDlgItemTextAやSetWindowTextA。

或いはATLを使っているのなら、
SetDlgItemTextやSetWindowTextの引数にATL::CW2CT(hoge)でいける。
これはATL 7.0以上。それ以前だと少し違う。
55デフォルトの名無しさん:2006/03/05(日) 10:37:32
>>54さん
ありがとう
>>51です
>>SetDlgItemTextWやSetWindowTextWなんかを使う。これが1番
これってMFCのライブラですよね、余りよく知らないのですが
CLRのフォームアプリケーションでプログラム作っているのですが
CLRでMFCのライブラリ使えるのでしょうか?
色々試してみたのですが
wchar_t hoge[] = L"Kitty on your lap";
textBox1->Text=Convert::ToString(*hoge);
こう書くとコンパイルは通るのですが
"Kitty on your lap"の最初のkしか表示できないんですよね(;^ω^)
56デフォルトの名無しさん:2006/03/05(日) 11:42:32
>>55 CLR 使うならMFCは捨ててマネージドなオブジェクト
使う方がいいと思うけど・・・・
って、そういうことを言ってるんじゃない?
57デフォルトの名無しさん:2006/03/05(日) 17:20:40
>>55
マネージドなら先に言え。
(const )wchar_t*はSystem::Stringのコンストラクタで変換できからこれでいけるはずだ。

textBox1->Text = gcnew System::String(hoge);

C++/CLIでなければgcnewをnewにでも直してみろ。
58デフォルトの名無しさん:2006/03/05(日) 17:40:26
CStringList の POSITION の値をインデックスの番号に変換できるようなの無いですか?
5958:2006/03/05(日) 17:55:32
FindIndex( があったの思い出した。忘れてください
60デフォルトの名無しさん:2006/03/07(火) 21:28:37
コンストラクタの中で、そのクラス自身のメンバ関数を呼び出しているのを時々見ますが、
これは間違いではないんですか?
一見、インスタンスの生成が完了してないのだから、危険な気がしますが・・・
61デフォルトの名無しさん:2006/03/07(火) 21:30:56
age
62デフォルトの名無しさん:2006/03/07(火) 21:38:43
age
63デフォルトの名無しさん:2006/03/07(火) 21:52:48
別に問題ないよ。
複数のコンストラクタから
共通に初期化メソッドを呼び出すこともある。
もちろん初期化してないメンバ変数を
使うようなメソッドが呼び出されないように
注意する必要があるし、例外についても気をつける必要があるけど。
6460:2006/03/07(火) 22:01:06
>>63
ありがとございます。
65デフォルトの名無しさん:2006/03/07(火) 22:50:50
CStringList m_strList;
・・・
int i = m_strList..GetCount();

# warning C4244: '初期化中' : 'INT_PTR' から 'int' に変換しました。データが失われているかもしれません。

INT_PTR は int から typedef されてるからいいじゃないですか。
いちいちキャストしたり INT_PTR で変数を宣言しなきゃいけないですか?
66デフォルトの名無しさん:2006/03/07(火) 22:58:44
>>65
INT_PTRに限らず_PTRと付く型はWin32では32ビットだが、
Win64では64ビットになるという整数型。

だからLPCSTRとLPCTSTRのように本当は同じ型ではない。
67デフォルトの名無しさん:2006/03/07(火) 23:17:20
Win32だから int で64ビットもいらないです
68デフォルトの名無しさん:2006/03/07(火) 23:27:45
そうは言っても世の中何があるかわからない。
2000年問題だって2038年問題だってそう。
69デフォルトの名無しさん:2006/03/08(水) 00:31:46
VisualC++ ExpressEditionとDirectX SDK、Platform SDKをインストールして
とりあえずDirectXのサンプルを動かしてみようと思っても全然でけへんのです。

インクルードファイルとかライブラリのディレクトリ設定はできたと思うんですけど、
未解決の外部シンボルってエラーが100個以上でます。
サンプルも動かせないのかこいつは。文句言うな動けって感じです。
70デフォルトの名無しさん:2006/03/08(水) 00:36:36
あれ、あれあれ。ひょっとしてこれ、ATLとかMFCとかって奴じゃないですよね。
金払えって事じゃないですよね。
71デフォルトの名無しさん:2006/03/08(水) 00:40:36
>>69
プロジェクトに適切なlibファイルを指定したか?
72デフォルトの名無しさん:2006/03/08(水) 02:34:38
VC++.NETでこのようなエラーが出ました。
------------
error LNK2001: 外部シンボル ""protected: virtual struct AFX_MSGMAP
const * __thiscall CAboutDlg::GetMessageMap(void)const "
(?GetMessageMap@CAboutDlg@@MBEPBUAFX_MSGMAP@@XZ)" は未解決です。
------------
解決の方法が分からないのですが、どなたか教えていただけないでしょうか。
73デフォルトの名無しさん:2006/03/08(水) 06:10:50
C++初心者です。
VisualC++を使ってC言語を学びたいのですが
お試し版のような無料VisualBasicなどないのでしょうか?
もちろん合法であるものですが、あれば知っている方教えてください。
Expressを試したのですがデバックやコンパイルが出来なかったので・・
Expressでも普通に計算させてExcelに表示させることぐらいはできるのでしょうか?
74デフォルトの名無しさん:2006/03/08(水) 06:12:57
>>73 gcc 使えばいいんじゃない?

それと、Visual C++ 2005 Express Edition で
デバッグやコンパイルができない、なんていってるようじゃ、
使える物なんて無いと思うが。
75デフォルトの名無しさん:2006/03/08(水) 06:15:36
>>74
レスありがと〜
ガンバッテミル。。。
76デフォルトの名無しさん:2006/03/08(水) 07:44:54
>>75
Visual C++ 2005 Express Edition 質問箱
http://pc8.2ch.net/test/read.cgi/tech/1140806916/
77デフォルトの名無しさん:2006/03/08(水) 08:36:39
gccでExcelに表示の方がはるかに難しいと思う。
78デフォルトの名無しさん:2006/03/08(水) 09:59:17
>>76
私がそのリンク先に行くのは早すぎる気がして、、初心者にすらなれていない超初心者など、、

でもなんとかExcel表示まで出来るようになりました。(気合で自己解決しました)
Express EditionというのはC++参考書のものとは少し違うのかな。
<表示までになんとなく変えたところ>
・#include <〜〜〜> ⇒ #include "〜〜〜"
 これはExpressに限った事なのでしょうか?
・main(){〜〜〜} ⇒ int _tmain(int argc, _TCHAR* argv[]){〜〜〜}
メイン関数を一つのみのプログラムだったので今回は問題なかったのですが、
 いくつかメイン関数を増やしてプログラムするときは上記を挿入すればよいのでしょうか?
 何か他にも注意すべき点などあれば教えてください。
79デフォルトの名無しさん:2006/03/08(水) 10:01:50
>>78
#includeのは<>で平気だと思うが。

_tmainはプロジェクトのプロパティの文字セットをUnicodeからマルチバイトにすれば、int main()が使える。
80デフォルトの名無しさん:2006/03/08(水) 10:15:18
>>79
出来ました、ありがとです。
81デフォルトの名無しさん:2006/03/08(水) 11:21:26
>>71
DirectXSDKのディレクトリにある、LibとIncludeを
それぞれライブラリフォルダとインクルードフォルダに設定すればいいはずですよね。
Libの中にあるx64とかx86とかに設定しなおしても駄目だし、こいつ何なのって感じです。
82デフォルトの名無しさん:2006/03/08(水) 11:41:22
>>81
それはライブラリとインクルードファイルのありかを設定しただけ。
実際に使うと言わなければ使われない。
インクルードファイルは#includeで、
ライブラリファイルはプロジェクトのプロパティのリンカの追加の依存ファイルのところ。
83デフォルトの名無しさん:2006/03/08(水) 13:38:50
VCでテストのためのコンソールアプリを書いたのですが、関数ポインタを
宣言しようとするとエラーにされます。

int _tmain(int argc, _TCHAR* argv[]){
 WORD WINAPI (*GetVersion)(void);
....
}
とすると、「error C2059: 構文エラー : '('」を喰らいます。
どうやら WINAPI 宣言が引っかかっているようで、これを外すとコンパイルが
通ります。

しかし、関数ポインタで表現したい関数がそもそも WINAPIをつけて宣言されて
いるわけですが、
1.関数ポインタに何故 WINAPI宣言を付けられないのか。
2.WINAPI宣言をつけなくとも問題なく動作するのか。

どうなんでしょうか?
84デフォルトの名無しさん:2006/03/08(水) 13:46:47
-WORD WINAPI (*GetVersion)(void);
+WORD (WINAP *GetVersion)(void);
85デフォルトの名無しさん:2006/03/08(水) 13:47:32
ミスった。
+WORD (WINAPI *GetVersion)(void);
8683:2006/03/08(水) 13:56:00
>>85 今コンパイルが通ったので実行して確認しました。ありがとうございます。
87デフォルトの名無しさん:2006/03/08(水) 14:07:41
浦島太郎で申し訳ないんですが、コンソールアプリで#include "stdio.h"とか
#include "windows.h"とかやってしまったのに、インクルードできてる、って
変ですよね?

本来ならば#include <stdio.h>とか#include <windows.h>でなければならない
はずなんですが。
#またMSの独自仕様か・・・。
88デフォルトの名無しさん:2006/03/08(水) 14:23:38
>>87
いいえ。

見慣れない書き方だけど、間違ってはいない。
ISO C/C++の仕様で#include "〜"でヘッダなどが見つからなければ、
#include <〜>と見なして探すことになっている。
8987:2006/03/08(水) 15:59:08
レスサンクス。いや、そういう意味じゃなかったんだけど、書き方が悪かった
ですね。すみません。

gccとかに慣れた身には、""で囲まれた部分へのパスはコンパイル時にコマンドラインで
指定するもんだ、と思っていたので。
たとえば、移植の際に障害になるようなシステム標準のヘッダファイルは、修整した
コピーを独自のディレクトリにつっこんで、そこから読み出すような動作をさせたい
時があります。
だから、"〜"で指定したファイルが見つからないからといってシステムのディレクトリに
探しに行くような仕様では都合がわるいな、と思ったわけです。

またMSの独自仕様なのか、と思ったわけで。
他にも<iostream.h>じゃなくて<iostream>じゃないとダメとか、coutはダメでstd::coutとか・・・。
90デフォルトの名無しさん:2006/03/08(水) 16:25:11
>>89
根本的なところでいろいろ誤解していそうだ。
""で囲んだインクルードファイルは、カレントになければ<>と同様に探すのはCの仕様。
<iostream.h>は過去のヘッダファイルで現在は<iostream>、
後者ではnamespaceを指定しない限り、namespace解決のためにstd::coutとする。
MSがどうとか厨臭いこと言う前に、もっと自分を磨きなさいな。
91デフォルトの名無しさん:2006/03/08(水) 16:29:33
gccの俺様使用か
92デフォルトの名無しさん:2006/03/08(水) 16:32:30
ついでに言うと、
>gccとかに慣れた身には、""で囲まれた部分へのパスはコンパイル時にコマンドラインで
>指定するもんだ、と思っていたので。
この辺も大誤解。
93デフォルトの名無しさん:2006/03/08(水) 16:35:51
>>89
>gccとかに慣れた身には、""で囲まれた部分へのパス
>はコンパイル時にコマンドラインで 指定するもんだ、
>と思っていたので。

もしかして -I オプションのこと言ってるの?
それは < > のインクルードパスじゃねぇの?
94デフォルトの名無しさん:2006/03/08(水) 17:10:41
>それは < > のインクルードパスじゃねぇの?
だからそれは""のときにも(ローカルになければ)探す対象になるんだってばさ。
95デフォルトの名無しさん:2006/03/08(水) 19:30:46
>>82
やっと動きましたー!
API関係のライブラリ群がリンカの依存ファイルに
入れられてなかったのが原因だったみたいです。
存在しても宣言しなければ使えないんですねー。滅茶苦茶感動してます。
ありがとうございました。来てよかったです。
96デフォルトの名無しさん:2006/03/08(水) 23:38:55

VC++で勉強し始めてふと疑問に思ったのだが
VC++で作られたアプリってやっぱり全てWINMAINから始まっているんですかね?
97デフォルトの名無しさん:2006/03/08(水) 23:42:19
いいえ
98デフォルトの名無しさん:2006/03/08(水) 23:43:53
>>97
WINMAINから起動させない場合ってどういう時でしょうか?
どうやれば特定のメソッドから起動できます?
99デフォルトの名無しさん:2006/03/08(水) 23:45:19
WinMainです。

というのを冗談にしても、VC++で用意されているものだけでもmain, wmain, wWinMain, _tmain, _tWinMainがある。
(DllMainは除いておく)

さらに自分でエントリポイントを決められるので、奇抜なことをしたいならどうぞ。
100デフォルトの名無しさん:2006/03/10(金) 05:42:03
バッファに良くMAX_PATH使うのですが、駄目なのでしょうか?
ファイル名を扱う場合など、バッファのサイズはどのようにして決めれば良いのでしょう?
101デフォルトの名無しさん:2006/03/10(金) 05:43:20
なぜ駄目だと思う?
102デフォルトの名無しさん:2006/03/10(金) 15:08:47
バファリンだから。
103デフォルトの名無しさん:2006/03/10(金) 15:31:28
半分は優しさでできてるんだけど、
あとの半分は?
104デフォルトの名無しさん:2006/03/10(金) 17:30:07
The Unicode versions of several functions permit a maximum path length of
approximately 32,000 characters composed of components up to 255 characters in length.
To specify that kind of path, use the "\\?\" prefix.
105デフォルトの名無しさん:2006/03/12(日) 11:24:36
すいません、どなたか教えて頂きたいのですが、VC++でダイアログ(例えば自分で生成したForm1クラス)を
別クラス内で表示する場合、

Form1* a = new Form1();
a->showDialog();

と正常に処理できるのですが、

Form1 a;
a.showDialog();

だとエラーが出てしまいます。
どうして、ポインタ参照でしか表示することができないのでしょうか?
106デフォルトの名無しさん:2006/03/12(日) 11:34:27
>>105
前者は明示的にdeleteされるまで生存するが、後者はその関数終了時までしか生存できないので。
107デフォルトの名無しさん:2006/03/12(日) 12:18:45
テキストファイル(200行ぐらいの)を開いて、1行づつArrayに格納するには、どうすればいいのでしょうか?
108デフォルトの名無しさん:2006/03/12(日) 12:19:28
テキストファイルを開いて、1行づつArrayに格納すればいい。
109デフォルトの名無しさん:2006/03/12(日) 13:41:20
CStdioFile::ReadString テキストを 1 行読み込みます。
110デフォルトの名無しさん:2006/03/12(日) 13:45:49
CArchiveがfstreamより明らかに使いにくいんですが、
何がいいんですかコレ?
111デフォルトの名無しさん:2006/03/12(日) 17:31:46
すみません教えてください。
MSDNのC/C++リファレンスって日本語のは無いのでしょうか・・?
F1を押すと英語が・・
112デフォルトの名無しさん:2006/03/12(日) 17:44:45
いい機会だから英語で読めばいいと思う。
113デフォルトの名無しさん:2006/03/12(日) 17:51:05
どこか初心者向けの解説をしているサイトは無いでしょうか
自分でググった所どうもヴァージョンが古いもので解説しているみたいでして・・・
114デフォルトの名無しさん:2006/03/12(日) 17:52:12
>>113 がどんなバージョンを使っているか、誰も分からない。
115デフォルトの名無しさん:2006/03/12(日) 17:54:43
・・・orz。
MFCのリファレンスとかは日本語で出るのに・・・。
116デフォルトの名無しさん:2006/03/12(日) 17:57:03
>>114
すいませんでした、つい先ほど公式からDLしたので多分最新Ver.だと思います
117デフォルトの名無しさん:2006/03/12(日) 19:45:15
>>114
連続ですいませn
Microsoft Visual Studio 2005
Version 8.0.50727.42 (RTM.050727-4200)
Microsoft .NET Framework
Version 2.0.50727

インストールされている Edition: VC Express

Microsoft Visual C++ 2005 76542-000-0000011-00125
Microsoft Visual C++ 2005
ver.は↑の奴です
118デフォルトの名無しさん:2006/03/12(日) 20:01:34
>>117
なんか英語の多いよね。
インストールしたMSDNでは英語のAPI説明が、
Web上にあるMSDNでは日本語でひっかかったことあるよ。
まぁぐぐればどっか解説してるページにでもひっかかるし、その方が速いよ。
119デフォルトの名無しさん:2006/03/12(日) 20:16:37
>>118
そうですか、がんばってググります

別の質問ですがビルドしたexeは何所にあるんでしょうか?
120デフォルトの名無しさん:2006/03/12(日) 20:18:53
検索すれば分かるだろ、それくらいやれよ
121デフォルトの名無しさん:2006/03/12(日) 20:48:39
ビルドしたexeを起動したんですが
0.何秒しか表示されないのですがこれは正常なんでしょうか?
122デフォルトの名無しさん:2006/03/12(日) 21:09:16
>>121 すぐに処理が終わるコンソールアプリなら正常じゃないか?
Ctrl + F5 で起動してみれば?
123デフォルトの名無しさん:2006/03/12(日) 21:17:17
>>122
ビルドエラーが発生しました。続行して最後に成功したビルドを実行しますか?
ではいを選択すると指定されたパスが見つからないとエラーメッセージが出ます・・・
124デフォルトの名無しさん:2006/03/12(日) 21:21:45
>>123 そりゃ、ビルドエラーが発生してるんだから、
実行ファイルは生成されていないわけで、あたりまえ。
まずはビルドエラーを解消しなきゃね。
125デフォルトの名無しさん:2006/03/12(日) 21:42:05
>>124
ビルドエラーですか・・・
一応ググってみます
126デフォルトの名無しさん:2006/03/12(日) 22:01:26
全然ダメです・・・
初心者向けのサイトがあったかと思えばVerが全然違ったりして・・・
127デフォルトの名無しさん:2006/03/12(日) 22:01:57
>>125 いや、ググらなくても。
ビルドエラーが出てるってことは、コンパイルかリンクの
いずれかでエラーが発生しているってことだから、
エラータブか出力タブに詳細な表示が出てるはずなんだけど。
128デフォルトの名無しさん:2006/03/12(日) 22:03:21
いくらなんでも酷いな・・・
129デフォルトの名無しさん:2006/03/12(日) 22:19:49
いつも疑問に思うんだが、そこまで聞かなきゃわからないのに、
なんで分かりにくいVC++使うんだろう。素直にVBとかHSPとかにしておけばいいのに。
del6とかもあるんだし。
130デフォルトの名無しさん:2006/03/12(日) 22:20:49
>>129
VBとかHSPとかってのは簡単なんでしょうか?
131デフォルトの名無しさん:2006/03/12(日) 22:21:01
俺探し物したらあっという間に1時間とか経っちゃうけど
>>126はたったの20分か。素早いな。
132デフォルトの名無しさん:2006/03/12(日) 22:28:34
>>130
簡単。詳細はスレ違いだから、該当スレで聞いておくれ
133デフォルトの名無しさん:2006/03/12(日) 22:33:08
VBでもHSPでも正しく書かなければエラーが発生するという点では同じだと思うが。
134デフォルトの名無しさん:2006/03/12(日) 22:56:07
そりゃそうだ。
ただ、気にしなければいけない項目は大きく減る。
一眼レフとバカチョンカメラの違いのようなもんじゃないか?
135デフォルトの名無しさん:2006/03/12(日) 23:07:41
インクルードやライブラリとかそのへんからつまずくだろう
136デフォルトの名無しさん:2006/03/13(月) 05:16:00
馬鹿がプログラミングを仕様なんてのがそもそも間違いなんだが、
馬鹿に限って「プログラミング=VC++」なんて夢を抱いたりしちゃうもんだから土ツボにはまる罠。
馬鹿は大人しくVBAでもやってなさいってこった。
137デフォルトの名無しさん:2006/03/13(月) 05:19:02
VisualStudio Spoke2003のヘルプでわからないことがあります。教えてください。

購入したときはウィンドウのなかに左に検索文字列を入力する画面があって
右に検索結果が表示されていて、右下に検索文字列にヒットした結果が表示されていました。

が、しかし検索文字列を入力する部分が別ウィンドウになってしまって元に戻らなくなりました。

購入したときのウィンドウに戻すにはどうすればいいでしょうか?お願いします。

購入したときは以下のような構成だった。
--------------------------------------------------
|            |
|検索文字列入力  | ここに検索結果にリンクしている記事
|            |
|            |
|            |
|            |
|            |
|            |
|            |-----------------------------------
|            |検索結果 何件見つかりました
|            | 
|            |
138デフォルトの名無しさん:2006/03/13(月) 05:20:23
>> 137
申しわけありません、書き込むスレッド間違えたのでほかで質問します。
139デフォルトの名無しさん:2006/03/13(月) 05:24:21
>>137です SPOKEにもVISUAL C++はいってて 同じヘルプ画面だと思うので
教えてください、
140デフォルトの名無しさん:2006/03/13(月) 05:46:37
>元に戻らなくなりました。
「元に戻せなくなりました」だろうなぁ。
141デフォルトの名無しさん:2006/03/13(月) 06:36:18
コンソールアプリで、自分(コンソール?)のHWNDを取得するのはどうしたら
よいのでしょうか?
CWnd::GetSafeHwnd()を呼び出そうにも、そんな名前はシラネとか言われてしまいます。
142デフォルトの名無しさん:2006/03/13(月) 06:43:20
( ゚д゚)ポカーン
143デフォルトの名無しさん:2006/03/13(月) 07:16:50
コンソールウィンドウにそんなもんあったっけ?
あったとすると、そのコンソールウィンドウに
描画できるんだろうか。無理だと思うけどなぁ。
144137:2006/03/13(月) 07:50:11
無事に解決できました。
145141:2006/03/13(月) 07:53:45
自己解決しました、ありがとうございます
146デフォルトの名無しさん:2006/03/13(月) 08:25:06
>>141-143
FindWindowはできたと思う。
ウィンドウハンドルを使って何の意味があるかはわからないけど。
147デフォルトの名無しさん:2006/03/13(月) 10:52:00
コマンドプロンプトに絵を描く。実用性皆無w
#include <windows.h>
BOOL IsWindows9x() { return (GetVersion() >= 0x80000000); }
int main(int argc, char *argv[])
{
    HWND hWnd;
    HDC hdc;
    char szOldText[80], szId[32], szTemp[32];
    int x, y;
    GetConsoleTitle(szOldText, sizeof(szOldText));
    do {
        wsprintf(szId, "grph%08X", GetTickCount());
        SetConsoleTitle(szId);
        do {
            Sleep(100);
            GetConsoleTitle(szTemp, sizeof(szTemp));
        } while (lstrcmp(szId, szTemp));
        if (IsWindows9x())
            hWnd = FindWindowEx(NULL, NULL, "tty", szId);
        else
            hWnd = FindWindowEx(NULL, NULL, "ConsoleWindowClass", szId);
    } while (hWnd == NULL);
    SetConsoleTitle(szOldText);
    if (IsWindows9x())
        hWnd = FindWindowEx(hWnd, NULL, "ttyGrab", NULL);
    hdc = GetDC(hWnd);
    for(y = 0; y < 256; y++)
        for(x = 0; x < 256; x++)
            SetPixelV(hdc, x, y, RGB(x, y, (510 - x - y) / 2));
    ReleaseDC(hWnd, hdc);
    return 0;
}
148147:2006/03/13(月) 10:57:23
Win9xに対応させるためにごちゃごちゃやっているが、W2K以降に限定すれば
GetConsoleWindow()で十分だったりする.
149デフォルトの名無しさん:2006/03/13(月) 13:32:42
>>147 よし、この調子で cygwin のコマンドプロンプトに
絵を書いちゃうぞ! コマンド名はもちろん sl.exe
150デフォルトの名無しさん:2006/03/13(月) 15:02:04
Visual C++の1.0っていつリリースされたんですか?
知ってる人、教えてください。かなり昔なはずなんだけど。
151デフォルトの名無しさん:2006/03/13(月) 15:20:55
152デフォルトの名無しさん:2006/03/13(月) 15:31:56
>>150
おまけでもういっこ
ttp://www.emsps.com/oldtools/mscppv.htm
153デフォルトの名無しさん:2006/03/13(月) 17:35:12
スタンダード 40,000
プロフェッショナル 98,000
154141(本物):2006/03/13(月) 18:42:24
>>146-148 おぉ、ありがとうございます。

つか、ある出来あいのライブラリをコンソールアプリに結合してテストしようとしたのですが、
意味なく?WHNDを要求するので困ってました。

>>145 成りすましして楽しいか? 人間のクズは死ね。
155141(本物):2006/03/13(月) 21:49:34
>>154
死ねという人はヒドイと思います(><)
156141:2006/03/13(月) 21:51:21
>>154
その程度で本人証明できたつもりか? おめでてーな。
つーか、他人を屑呼ばわりすることも充分屑行為だぞ。
157デフォルトの名無しさん:2006/03/13(月) 21:52:19
そういうときは、NULLとか、GetDesktopWindowとか渡してみるのはどうか?
158141(本物):2006/03/13(月) 22:09:15
>>155-156 お前らはリカーシブで屑。回線切って首吊れ。

>>157 サンクス。NULLでも動きましたが、ちょっと心配。

ちなみに、>>147のサンプルだと、char [] をLPCWSTRにキャストしやがれみたいな
エラーが出まくりです。VC8だと明示的にキャストしないとまずいようですね。
159デフォルトの名無しさん:2006/03/13(月) 22:12:43
本質を知らずにキャストを行う者に、アナテマ。
160141:2006/03/13(月) 22:21:12
>>158
他人を屑呼ばわりする暇に、少しはこの辺のスレでもよんで勉強したらどうだ?
VC8はディフォルトでUnicodeを使う設定になっているはずだぞ。
それと、「ある出来合いの」ライブラリの仕様を確認しないでNULLを渡すなんて狂気の沙汰だ。
#あ、だから他人を屑呼ばわりするのか。
161デフォルトの名無しさん:2006/03/13(月) 22:22:24
他人を屑呼ばわりする暇に、少しは検索でもして勉強したらどうだ?
162141:2006/03/13(月) 22:24:22
>>160 自分の文書を読み返せ。人格が分離してるぞ。低脳屑ww
163141:2006/03/13(月) 22:27:57
いいんだよ、漏れは元々屑なんだから。
164デフォルトの名無しさん:2006/03/14(火) 00:02:10
>>漏れは元々屑なんだから
漏れ.....てんならシズクだな。
165デフォルトの名無しさん:2006/03/15(水) 14:32:06
wchar_tとWCHARって同じ型だよね?
どっちを使ったほうが良いとかってあるの?
unsigned intとかよりもDWORD使った方が良いの?
166デフォルトの名無しさん:2006/03/15(水) 20:10:24
すいません、vc++.netを使っているのですが
stdafx.hというのはデフォルトでは用意されておらず、
自分で作るものなのでしょうか?

プリコンパイル済みヘッダーがないとかなんとかエラーが出て
#include "stdafx.h"をインクルードすればいいとあったのですが
今度はstdafx.hがないと怒られる始末です。
167デフォルトの名無しさん:2006/03/15(水) 20:31:59
>>166
新しいプロジェクトを作るときに空のプロジェクトを選ばなければ、
stdafx.hは自動的に作られる。

だから新しいプロジェクトを作り直す方が楽。
168デフォルトの名無しさん:2006/03/15(水) 20:33:28
オプションをプリコンパイル済みヘッダーを使用しないにした方が楽
169デフォルトの名無しさん:2006/03/15(水) 20:36:48
>>165
wchar_tとWCHARは同じ。
ただしwchar_tはCのヘッダでtypedefされているかC++組み込み型。
WCHARはWindows.hの中の中でwchar_tからtypedefされている。

unsigned intとDWORDの関係は微妙。
unsgined intはただの符号無し整数型で、DWORDは32ビット符号無し型。
ただWin16のときにDWORDはunsgined longの意味で使われていたという前歴を持ち、
現在でもWinAPIで多用されていると言う実情がある。
170デフォルトの名無しさん:2006/03/15(水) 20:43:44
>>169
う〜ん、要は特に規則とかはなく、好きな方使えってことか
詳しくありがとう
171デフォルトの名無しさん:2006/03/15(水) 22:00:43
文字列を読みこんでEditboxに表示させるときはCStringを使っていますが、int型のタブ区切りを読みこんで表示させるにはどうすればいいでしょうか。
VC++6でやっています。
172デフォルトの名無しさん:2006/03/15(水) 22:59:24
恥を忍んで聞かせてください。

インクルードファイルでクラス定義の参照が出来たり
出来なかったりで悩んでいます。
具体的にはClassA.hでClassAの定義、ClassB.hでClassBの定義、
ModuleC.cpp先頭でClassA.h、ClassB.hの順番でインクルードしています。
ClassB.h内ではClassA型のメンバ変数を宣言していますが、これが
エラーになったりならなかったり・・・何が原因でしょうか?
ClassB.h内でClassA.hをインクルードすれば確実に通りますが、
出来ればインクルードはModuleC.cpp内に統一したいと考えています。
173デフォルトの名無しさん:2006/03/15(水) 23:08:42
皆さま、VC++でRPCってどういう方法を採用されていますか?

昔ながらのソケット通信のつもりでしたが、MSDNを読んでみると次のように
3つほど紹介されていたので迷っています。
1.ASP.net:Microsoft.NetのFoudationClassの豊富な機能が利用可能
2.ATLでWebサービスまたはISAPI:DCOMが簡単に作成可能
3..Netリモート処理:16bitOSでも利用可能

出来ればDataSetのやり取りを手軽に実現したいのですが、IISを立てるのが
許されない環境の場合はソケット通信しか無いでしょうか?
174デフォルトの名無しさん:2006/03/15(水) 23:11:20
>>172
ClassB.h内でClassA.hをインクルードせず、
ClassAをインスタンス化するのは無理。
ただし、前方宣言してClassA*型、もしくはClassA&型のメンバにすればコンパイルは通る。
その場合にしても実装ファイル(たとえばClassB.cpp)内でClassA.hをインクルードしなければ、
インスタンス化できないし、メソッドもコールできない。
インクルードしなければClassBにとってClassAがなんだかわからない状態なんだから当たり前。
(サイズがわからなきゃインスタンス化できないし、メソッド名だってわからない)
175デフォルトの名無しさん:2006/03/15(水) 23:18:14
>>171
日本語が変
176デフォルトの名無しさん:2006/03/15(水) 23:18:26
>>171
int型のタブ区切りというのが良く判りませんが、
EditboxのDDX変数がm_strEditTextだとして

int iNum1=1;
int iNum2=2;
int iNum3=3;

m_strEditText.Format("%d %d %d", iNum1, iNum2, iNum3);
UpdateData(FALSE);

とかじゃ駄目ですか?
177デフォルトの名無しさん:2006/03/15(水) 23:22:31
>>176
すみません日本語が変でした
int型のデータがタブ区切りで保存されているファイルを読みこんで〜、でした
178デフォルトの名無しさん:2006/03/15(水) 23:23:49
ModuleCでa.h b.hの順序でincludeしてるならmodule.cppのコンパイルでは
問題ないでしょ?というか、何のエラーが出るんだ。
むろん、ほかの翻訳単位相手なら、常にb.hをincludeする前に、
a.hをincludeしているか確認する必要がある
179デフォルトの名無しさん:2006/03/15(水) 23:25:07
int型のデータがタブ区切りで保存されている、ってこーゆーデータのことなのかい?
int i[] = { 100, '\t', 200, '\t', 300};
fwrite(i, 1, sizeof i, fp );
180デフォルトの名無しさん:2006/03/15(水) 23:27:11
>>179
そうです
1(タブ)2(タブ)3(タブ)4
5(タブ)6(タブ)7(タブ)8
9(タブ)10(タブ)11(タブ)12




という感じに保存しています
181デフォルトの名無しさん:2006/03/15(水) 23:28:03
>>174
お答えありがとうございます。

私もそう思っていたのですが、なぜかこのパターン
(ClassB.h内でClassA.hをインクルードしない)で
コンパイルの通っているファイルがあるのです。
(同じプロジェクトに共存しています)
注意深く見比べてみましたが前方宣言のようなものも無く、
どちらのクラスもヘッダ内にメソッド定義までしている
所も同じなので原因が判らずにいます。
できれば、共通で使用するヘッダは一箇所にまとめたいと
思ったのですが・・・
182デフォルトの名無しさん:2006/03/15(水) 23:30:32
ずーっと前の方の別のヘッダを経由してたりして、a.hが読み込まれていない、という
確証はもちろんあるわけだよね?
183デフォルトの名無しさん:2006/03/15(水) 23:33:55
>>178
a.h b.hの順序でincludeしても、何故かエラーになってしまうのです。
今手元に環境が無いので正確には覚えていませんが、ClassA型の
メンバ変数宣言のところで
「;が必要です」
「ClassAは不明なデータ型です」
などのエラーが出てきます。

同じファイルでClassB.hにClassA.hをインクルードすると
コンパイル可能で、期待通りの動作をしてくれます。
184デフォルトの名無しさん:2006/03/15(水) 23:37:19
>>182
はい、コンパイルの通っている別のクラス(ClassDとします)
ではヘッダ内にインクルード文はありません。
その代わり、stdafx.h内でインクルードされており、
stdafx.hはModuleC.cppの先頭でClassD.hよりも前にインクルード
されています。
185デフォルトの名無しさん:2006/03/15(水) 23:39:16
>>167,168
thx!
空で作ったプロジェクトで、ないと怒られるのは理不尽だな〜
186デフォルトの名無しさん:2006/03/15(水) 23:45:04
>>184のstdafx.hはAppInit.hだったかもしれません。
追加するときは中身確認してますが、あの辺のヘッダ名うろ覚えなので・・・
187デフォルトの名無しさん:2006/03/15(水) 23:50:33
>>172
>>174の通りで、他には何もない。

とりあえず、ビルドじゃなくてリビルドすれば?
ヘッダファイルを書き換えたときに再コンパイルされてないんじゃないの?

それにしてもstdafx.hにユーザ定義のクラスを入れるとは怖いことしますね。
188デフォルトの名無しさん:2006/03/16(木) 00:09:06
>>187
参照回数が多く、あまり変更されないプロジェクト専用のインクルード
ファイルをインクルードして良いと書いてあったと思うのですが
プロジェクト内で共通に参照するヘッダでもインクルードは避けるべき
でしょうか?
(現在の現場の既存のモジュール構成がこうなっているのです)

でも最初に見たときは違和感を感じましたので>>187さんが>>174
ご指摘のとおり、使うクラスで都度インクルードすることにします。
189デフォルトの名無しさん:2006/03/16(木) 00:17:21
>>180
自分では動作確認する環境が無いのですが、
http://www.orchid.co.jp/computer/cschool/csv1.html
を少し修正すれば使えないでしょうか?

でも、fscanfで簡単に読み込みとは行かないですかね?
(暫くC言語触ってないので覚えてないですけど)
190デフォルトの名無しさん:2006/03/16(木) 01:23:57
>>189
そのページのソース、無茶苦茶だな。
参考にしない方が身の為だぞ。

>>180
普通にfscanf()でも使えば?
行単位であることに意味があるならfgets()+sscanf()で。
191デフォルトの名無しさん:2006/03/16(木) 09:51:45
STLやBoostに含まれるテンプレートクラスライブラリを
使っているとき、テンプレートの展開でエラーが出る
ことがあります。しかしエラーメッセージには
テンプレートの定義のファイルと行が示されます。

自分のコードのどこで展開された結果エラーが出ているのかを
知る事はできないのでしょうか?
192デフォルトの名無しさん:2006/03/16(木) 16:18:15
>>191
出力ウィンドウのほうを見れば、どこから呼び出しているかが書いてある。
193デフォルトの名無しさん:2006/03/16(木) 16:53:32
オープンしたファイルの内容を
通常とは逆にファイルの終端から読み込んで
先頭で終わるプログラムはどう書けばいいですか?

読み込むファイルの行数は常に増えて不定です。
194デフォルトの名無しさん:2006/03/16(木) 17:18:30
ファイルポインタ知らんのか
195193:2006/03/16(木) 17:31:47
わからないです
196いかん、ここはVCスレだった:2006/03/16(木) 17:47:22
>>193
FILE * fp = popen("/bin/tail -r targetFile", "r");
197>>196 いや、VCもCだからOK:2006/03/16(木) 18:03:15
>>193
fseek
198デフォルトの名無しさん:2006/03/16(木) 19:45:37
デバッガが思うように機能してくれません。
具体的にはデバッグ実行中、一時停止の後F10キーを押しても飛ばされてしまう行があったりとか
(この行にはブレークポイントも付けられませんでした。宣言文ではないのですが。)
クィックウォッチで変数の値を見ようとしても、明らかにスコープ内なのに
シンボル"var" が見つかりません。
と出たりしてしまいます。
過去ログにリビルドしたら直ったというのもあったので、試してみましたが駄目でした。

環境は Visual Studio 6.0
VC++6.0
Windows XP です。

何か思い当たる節などありましたらご助言頂けると幸いです。よろしくお願いします。
199デフォルトの名無しさん:2006/03/16(木) 19:53:14
>>198
最適化してない?
勿論、Debugビルドだよね?
200198:2006/03/16(木) 20:56:41
>>199
おかげさまで直りました!
本当にありがとうございました。

---
最適化なんて知らなかったし…。
ワークスペース丸ごともらって来ちゃったからなぁ…。
201デフォルトの名無しさん:2006/03/16(木) 23:27:06
ワークスペース!
202デフォルトの名無しさん:2006/03/17(金) 02:04:44
VC8です、オリジナルのヘッダーファイル入れたいのですが
何処においたらいいでしょうか?
パスの設定がわかればいいんだけど
203デフォルトの名無しさん:2006/03/17(金) 06:12:18
どこでも好きな所へ
204デフォルトの名無しさん:2006/03/17(金) 22:14:05
>>202
なんてステキな日本語なんだ。
205デフォルトの名無しさん:2006/03/18(土) 01:44:40
追加インクルードパスは何個でも好きなだけ追加できる。
206デフォルトの名無しさん:2006/03/18(土) 09:48:27
LoadLibraryを使って、pstorec.dllを読み込みたいのですが
MSDNを見て真似て見ましたが、巧くいきません
ms-help://MS.MSDNQTR.v80.ja/MS.MSDN.v80/MS.TECHART.v10.ja/jpdllpro/html/_win32_loadlibrary.htm
LoadLibrary
指定された実行可能モジュールを、呼び出し側プロセスのアドレス空間内にマップします。

追加のロードオプションを指定するには、LoadLibraryEx 関数を使います。

HMODULE LoadLibrary(
LPCTSTR pstorec.dll // モジュールのファイル名
);
これだでは使えないのでしょうか?
207デフォルトの名無しさん:2006/03/18(土) 10:07:35
>>206
まさかこれをコピペした?
HMODULE LoadLibrary(
LPCTSTR pstorec.dll // モジュールのファイル名
);
208デフォルトの名無しさん:2006/03/18(土) 10:42:51
>>206
デツ
う、うん
TextSS のWindowsXP(Professional)64bit化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?

210デフォルトの名無しさん:2006/03/19(日) 16:03:14
此処まで酷いマルチは初めて見た
>>209は氏ね
211デフォルトの名無しさん:2006/03/21(火) 18:03:00
すみません
VC++をこれから勉強していくのですが、
お勧め本とか教えていただけないでしょうか?
212デフォルトの名無しさん:2006/03/21(火) 21:41:51
213211:2006/03/22(水) 00:48:41
>>212
すみません、申し訳ありませんが逆引を薦められても困ります。

C言語、C++言語についてはまったくの初心者というわけではないです。
VC++に関しては初心者ですが・・。

できればVC++6の本をお勧めしていただければ幸いです。
214デフォルトの名無しさん:2006/03/22(水) 00:58:54
とりあえず VC が言語名じゃなくて製品名なのを分かった上での質問か?
215デフォルトの名無しさん:2006/03/22(水) 01:25:48
まったくの初心者なわけではない

じゃわからん。
C++なら
クラスがわかる
継承の概念がわかる
オーバーロード、オーバーライドがわかる
ストリームがわかる
STLは使うくらいならできる
operatorのオーバーロードがわかる
例外安全のテクニックがわかる
C++でオブジェクト指向設計ができる
STLを使いこなせる
メタプログラミングに造詣が深い

など
216デフォルトの名無しさん:2006/03/22(水) 03:25:11
>>213
そのように取捨選択できるのなら、推薦書スレにでも行って
自分で選べばいいと思うんだが。
217デフォルトの名無しさん:2006/03/22(水) 04:46:16
>>213
>>212はIDEの使い方、MFCやATL、COMの使い方まで網羅してる
質問のレベルからしてまずこれ読んだ方がいいと思う
逆引きシリーズでVC6向けも出てる
218デフォルトの名無しさん:2006/03/22(水) 12:23:28
その値段と内容から考えると中味薄そう
まあ悩むほどの値段でもないし
219211:2006/03/22(水) 13:58:44
そうですね、失礼しました。
まったくの初心者ではないというのは
上の例でいくと

クラスがわかる
継承の概念がわかる
オーバーロード、オーバーライドがわかる
ストリームがわかる
STLは使うくらいならできる
operatorのオーバーロードがわかる
例外安全のテクニックがわかる
C++でオブジェクト指向設計ができる


といった感じです。
UNIXのCとC++の経験ありで、一番長く付き合ったのは
JAVAですので、ポインターも分かりますしオブジェクト指向も理解しているつもりです。

よろしくお願いします。
220デフォルトの名無しさん:2006/03/22(水) 14:36:09
>>219
林 晴比古
新Visual C++ NET入門 ビギナー編
221デフォルトの名無しさん:2006/03/22(水) 14:44:26
>>219
マルチ死ね。
222デフォルトの名無しさん:2006/03/22(水) 15:32:33
マルチには林の糞本で十分。
223デフォルトの名無しさん:2006/03/22(水) 22:52:46
IEからJSCRIPTで操作できるActiveXのプログラムを作りたいと考えていて、
とりあえず手始めに下のHTMLをIEで表示したときに、ボタンをクリックすると
HelloWorldという文字列をAlertダイアログで出力するようなものを作ろうと思っています。
どこかこのような初歩的なことを分かりやすく解説しているページかor書籍はないでしょうか?
標準講座MFC6.0という本を読んでいますがどうもよくわかりません。
私のスキルとしては、VCを使って、同様の動作をするダイアログベースのアプリケーションであれば何とかつくることができます。



<html>
<head>
<OBJECT ID="DAControl"
CLASSID="?????????????????">
</OBJECT>

<script language="javascript">
function hello(){
alert( DAControl.hello);
}
</script>
</head>
<body>
<input type="button" onClick="hello()" value="hello">
</body>
</html>

224デフォルトの名無しさん:2006/03/24(金) 00:49:35
Visual C++ 2005 Express Edition で使える命令一覧と、
その命令を解説しているサイトはありませんか?
225デフォルトの名無しさん:2006/03/24(金) 00:55:51
ありません
226デフォルトの名無しさん:2006/03/24(金) 01:13:37
>>225
ググっても見つかりませんでした。
やっぱり無いのですか。
227デフォルトの名無しさん:2006/03/24(金) 03:04:47
MSDN
228デフォルトの名無しさん:2006/03/24(金) 03:14:16
MSDN以外でありませんか!!!???
229デフォルトの名無しさん:2006/03/24(金) 07:22:43
練習に ansi-c のみで .h か .lib から抜き出してリストしたら。

sed だか awk でもできるのかな。よく知らんが。
230デフォルトの名無しさん:2006/03/24(金) 07:27:29
C++で命令といえるのはpragmaくらいのものじゃね?
231デフォルトの名無しさん:2006/03/24(金) 07:46:54
コンパイラやリンカのコマンドラインオプションのことじゃね?
232デフォルトの名無しさん:2006/03/24(金) 08:48:55
ビルド後の処理
233デフォルトの名無しさん:2006/03/25(土) 19:53:13
WIN32APIの勉強を始めました。
本を買ってきてリストを本文の通り打ち込んでも
コンパイラエラーになって困っています。
何回も確認しましたがコードは一字一句間違っていません。
コンパイラにつけるオプションが原因なのでしょうか?
オプションは/GXにしています。以下プログラムとエラーの一部です。
どなたか教えてください。
#include<windows.h>
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE , LPSTR, int )
{
MSGmsg;
HWNDhwnd;

hwnd = CreateWindow( "STATIC",
"スタティックコントロール",
SS_CENTER |
SS_NOTIFY | WS_VISIBLE ,
100, 100, 100, 100,
HWND_DESKTOP,
NULL, hInstance, NULL );
Microsoft (R) Incremental Linker Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.

/out:test.exe
test.obj
test.obj : error LNK2019: 未解決の外部シンボル __imp__CreateWindowExA@48 が関
数 _WinMain@16 で参照されました。
test.exe : fatal error LNK1120: 外部参照 1 が未解決です。
NMAKE : fatal error U1077: 'cl' : リターン コード '0x2'
Stop.
234デフォルトの名無しさん:2006/03/25(土) 21:03:06
user32.lib
235側近中の側近 ◆0351148456 :2006/03/25(土) 21:17:56
(っ´▽`)っ
くたばれVisual C++(超初心者用)

と読んでしまいました
236デフォルトの名無しさん:2006/03/25(土) 23:21:44
EditBoxのメンバ変数でCString型のものがあるのですが、それをfoutでファイルに出力したら16進数?に出力されます。
int型のほかのメンバ変数だと普通に出力できてるのですが何故でしょうか。
VC+6使用です。
237デフォルトの名無しさん:2006/03/25(土) 23:53:41
>>234
ありがとうございました。
cl /GX test.cpp user32.lib
としたらうまくいきました。
238デフォルトの名無しさん:2006/03/26(日) 00:19:04
VC++ Expressを使い始めたのですが、これで標準のヘッダとか
見てると、グレーになった文字の部分がときおりあるのですが、
どういう部分がグレーになるのでしょうか?
それとも自動ではなく、意図的にそこの部分をグレーに設定してる
のでしょうか?
239age:2006/03/26(日) 00:25:19
質問です。

特定のstructを適当にテキストに変換して、逆にテキストから復元出来るように
したいのですが、C++で一般的な手法ってありますか?

ちなみに、structには、ポインタ型やstd::vector等は含まないものです。
240デフォルトの名無しさん:2006/03/26(日) 00:27:22
ISH
241デフォルトの名無しさん:2006/03/26(日) 06:18:32
>>238 #if とか #ifdef なんかで
プリプロセッサではじかれるモノは
灰色になる。

とはいえ、どこまで実際のコンパイル時の
条件を追っかけてくれてるかはわかんないけど。
242デフォルトの名無しさん:2006/03/26(日) 06:33:10
2005ExpressってSpy++ないんですか?
243デフォルトの名無しさん:2006/03/26(日) 06:47:20
ねーよ、買え
244デフォルトの名無しさん:2006/03/26(日) 06:55:31
ありがとう。
やっぱないのか、VCなんていらないんだけどなぁ
245デフォルトの名無しさん:2006/03/26(日) 07:00:22
>>244 じゃぁ、使わなけりゃいいじゃんVC
VCいらないって言う人がなんでこのスレッドにいるの?
246デフォルトの名無しさん:2006/03/26(日) 07:12:43
Spy++があるのかないのか質問しただけだろ
そうムキになんなよ
247デフォルトの名無しさん:2006/03/26(日) 18:46:33
VC++2005では、
export template<class T> .....
のようなexport指定子ってサポートされてないんだね。
最近できた仕様らしいので、間に合わなかったのか?
248デフォルトの名無しさん:2006/03/26(日) 18:50:06
exportをサポートしているコンパイラなんかあったっけ?
249デフォルトの名無しさん:2006/03/26(日) 19:01:06
ないのか・・・実は
250デフォルトの名無しさん:2006/03/26(日) 23:16:31
>>236
(LPCTSTR)csText
251デフォルトの名無しさん:2006/03/27(月) 21:22:18
すんまそ
当方今までC・C++でHELLO WORLDから入って
ファイル操作や、計算だのやってきたものなのですが(CUIインターフェースしかやってない)

GUIの勉強がしたいのです
どのようにCでGUIを作成していくのか、どこか参考になるスレやサイト
CでGUIを作成していく課程の簡単な説明などお教えください
252デフォルトの名無しさん:2006/03/27(月) 21:47:16
253デフォルトの名無しさん:2006/03/28(火) 02:17:56
>>250
ありがとうございます、いまその方法で解決しました。
254デフォルトの名無しさん:2006/03/28(火) 10:13:23
251ですが、マルチになったので、こちらではスルーをお願いします
255デフォルトの名無しさん:2006/03/28(火) 13:29:04
>>239
Boost.Serializationかな。
256デフォルトの名無しさん:2006/03/29(水) 21:45:52
257デフォルトの名無しさん:2006/03/30(木) 10:13:58
ttp://www.kumei.ne.jp/c_lang/sdk/sdk_04.htm
ここにあるのをやってみようと思ったら
MSVCRTD.lib(wcrtexew.obj) : error LNK2001: 外部シンボル "_wWinMain@16" は未解決です
Release/test.exe : fatal error LNK1120: 外部参照 1 が未解決です。
と出てしまう。

環境 XP 使用ソフトVC++6.0パーソナル
WIN32 アプリケーションでプロジェクトを作成して、そこにソースぶちこんでるだけなのに

つーかこのサイトイントロダクションのところからエラーがあったりして萎えるんだけど
あとメールをしても返事がないらしい
以下にソースを載せるので、誰かどうしたら出来るか教えてください
258デフォルトの名無しさん:2006/03/30(木) 10:14:51
#include <windows.h>
#include <string.h>

void ShowMyText(HWND);

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg) {
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_PAINT:
ShowMyText(hWnd);
break;
default:
return(DefWindowProc(hWnd, msg, wParam, lParam));
}
return (0L);
}

void ShowMyText(HWND hWnd)
{
HDC hdc;
PAINTSTRUCT paint;
LPCSTR str = "HELLO WORLD";

hdc = BeginPaint(hWnd, &paint);
TextOut(hdc, 10, 10, str, lstrlen(str));
EndPaint(hWnd, &paint);
return;
}
259デフォルトの名無しさん:2006/03/30(木) 10:17:15
あとuser32.libとかもリンクさせたのですが、何も変わらず

誰か助けて。。。もうこの理不尽なエラーにイライライライラして
260デフォルトの名無しさん:2006/03/30(木) 10:30:08
自己解決しますた

なんだよ、このサイト。すげぇわかりにくい
何がネコでもわかるだ。ネコにでも伝わるような文章かけよ、クズ
261デフォルトの名無しさん:2006/03/30(木) 10:37:33
そりゃ、ネコ以下には伝わらんだろ
262デフォルトの名無しさん:2006/03/30(木) 10:52:43
うっせーよ、俺はかわいいヌコだちくしょーめ
263デフォルトの名無しさん:2006/03/31(金) 09:56:46
だからネコは地雷だって言ったろ?
264デフォルトの名無しさん:2006/03/31(金) 10:05:23
猫のコードがすんなりコンパイル通らないなんてのは、
たいていは多バイト文字がらみとポインタを typedef
した型名で L がついてる奴がらみだったり、くらいだろ?
APIそのものの使い方が変わってる訳じゃないんだから、
そんなの時代の流れにあわせて自分でいじりながら
コンパイル通せばいいと思うんだがなぁ。
265デフォルトの名無しさん:2006/03/31(金) 10:36:12
自力でコンパイルエラー取れないようじゃ
まだapi使うの早いだろ
266デフォルトの名無しさん:2006/03/31(金) 10:49:25
>>258
そのプログラムの中味はこの2行ぐらいだぞ
あとはどうでもいい部分

LPCSTR str = "HELLO WORLD";
TextOut(hdc, 10, 10, str, lstrlen(str));
267デフォルトの名無しさん:2006/03/32(土) 15:49:06
ちょっと質問です。XP, .NET 2005 です。

いい加減 Unicode 対策をしようと思って、Winmain を _tWinMain にしたら、リンクエラーが出ました。
> MSVCRTD.lib(crtexew.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。

エントリポイントを _tWinMain にすればうまくいきましたが、
_tWinMain を使ってる人は、プロジェクトを作るごとにわざわざエントリポイントの設定を行っているのですか?
2005 はデフォルトで Unicode 対応になっているのに、ちょっと不自然に思っての質問です。
よろしくお願いします。
268デフォルトの名無しさん:2006/03/32(土) 16:32:54
ネコでものサイト
ネコの顔の絵が邪魔じゃなくて
すげぇ読みやすい
イライラしない
269267:2006/03/32(土) 17:06:22
色々と勘違いしていたようです。
tchar.h をインクルードすれば、エントリポイントを変更せずにすみました。
ありがとうございました。
270デフォルトの名無しさん:2006/04/02(日) 02:51:03
>>268
まるで

ネコでものサイト
ネコの顔の絵が邪魔で
すげぇ読みにくい
イライラする

と言ってるようなもんだな。天才だよお前。
271デフォルトの名無しさん:2006/04/02(日) 20:42:29
ちょっと質問よろしいでしょうか。

クラスAにクラスB・C・Dをそれぞれ保持させています。
そのクラスB・C・Dでそれぞれクラスxの機能を使用したいのですが
それぞれにクラスxを保持させる以外にいい方法はないでしょうか。

アドバイスをお願いします。
272デフォルトの名無しさん:2006/04/02(日) 20:50:30
誤爆?
273デフォルトの名無しさん:2006/04/02(日) 21:04:12
ゴバクったかもしれませんorz
274デフォルトの名無しさん:2006/04/03(月) 01:03:10
>>271
一応答えておくとBridgeパターン。
275デフォルトの名無しさん:2006/04/03(月) 14:36:20
環境:VisualStdio.NET
言語:C++
Win32アプリケーション

エディットボックスやボタンなどのプロパティ(FontSize、Visible等)を
リソースエディタではなくプログラムの方で動的に変更することってできるのでしょうか
276デフォルトの名無しさん:2006/04/03(月) 15:56:22
できます。
277デフォルトの名無しさん:2006/04/03(月) 15:56:24
GetDlgItem() で dialog 上の個々の項目は HWND が取り出せる。
やったことはないが、edit box はその hWnd から edit control が取り出せる
んじゃね。show, hide, enable, gray も hWnd 対象でできる。
278デフォルトの名無しさん:2006/04/04(火) 13:17:18
MoveToとLineToで直線をピクチャボックス内に描画しようとすると、その外側にも
直線が描かれてしまいます。どうすればピクチャボックス内に収められますか?
279デフォルトの名無しさん:2006/04/04(火) 13:30:24
SelectClipRgn()
280デフォルトの名無しさん:2006/04/04(火) 13:56:37
外に書いたらピクチャボックスの意味がないのでは?
281デフォルトの名無しさん:2006/04/04(火) 14:31:48
三次元空間内の点のピクチャボックス上での座標を計算して直線で結ぶ
処理をしたかったんです。
ピクチャボックス上での座標の計算値は必ずしもピクチャボックスには収まらないので
困っていましたが、SelectClipRgnで簡単にクリッピングできると知りました。
ありがとうございます。>>279
282デフォルトの名無しさん:2006/04/06(木) 16:40:24
VCの初心者です。
以下のようなソースコードの、二つ目のCMainDialogの「~」ってなんでしょうか?
調べてもよく分かりません。
よろしくご教授願います。


CMainDialog::CMainDialog(void)
{
m_dwID = IDD_MAIN;
}

CMainDialog::~CMainDialog(void)
{
}
283デフォルトの名無しさん:2006/04/06(木) 16:41:35
c++の基礎をやれ
284デフォルトの名無しさん:2006/04/06(木) 16:48:08
>>282
デストラクタ
285デフォルトの名無しさん:2006/04/06(木) 16:48:09
デストラクタ
オブジェクトが破棄される前に一度呼ばれる
286デフォルトの名無しさん:2006/04/06(木) 17:52:50
質問です
CHAR型に#FFDDEEのようなカラーコードが入っていたら
int型に0xFF、0xDDと個別に入れるようにするにはどうしたらいいのでしょうか
よろしくお願いします
287デフォルトの名無しさん:2006/04/06(木) 18:02:55
CHAR型はないけど
GetBValue(), GetGValue(), GetRValue()
288デフォルトの名無しさん:2006/04/06(木) 18:06:43
>>286
CHAR型がどんなものか知らんが、取り敢えず文字列ならこんなもんで。
{
char * str = "#ffddee";
int r, g, b;
sscanf(str, "#%2x%2x%2x", &r, &g, &b);
printf("%#x, %#x, %#x\n", r, g, b);
}
289デフォルトの名無しさん:2006/04/06(木) 18:10:01
壁紙を色別に分けてるんだがDLした壁紙を毎週数百枚処理するのは大変だ
自動的に振り分けてくれるツールだれか作ってくれ
290287:2006/04/06(木) 18:10:28
文字列で入っていたのか、ドギャーン、驚愕の事実。
たしかにそんな感じだ。
プッ こいつCHAR型とか書いてるよ、とか思ってた自分がチョー恥さらし
291288:2006/04/06(木) 18:13:45
>>290
XWindowの色リソースやhtmlの色指定は#123456とか書くもんで。
このスレ的にはどうかと思ったんだがね。
292287:2006/04/06(木) 18:23:47
>#123456とか書くもんで。
そういえばそうだった、普段htmlとかないから、ここみて、
プッ こいつ16進の書き方もしらねーのかって思ってた。

>int型に0xFF、0xDD
って、あるから、16進の書き方しらないってことはないんだよな、
こっちの勝手な勘違い。
293286:2006/04/06(木) 18:28:25
>>288
上記のコードで出来ました、ありがとうございました

>>287
次回から質問するときは万人に判るように質問したいと思いますorz
ありがとうございました
294デフォルトの名無しさん:2006/04/06(木) 20:25:28
プロジェクト内のクラスで外部ヘッダファイルに書いてるクサスを参照していて
そのヘッダはインクルードしてるから当然コンパイルは通るんだけどリンカで
外部参照が解決できないってエラーが出た。
何が原因として考えれれるでしょうか?
295デフォルトの名無しさん:2006/04/06(木) 20:27:55
「外部ヘッダ」で定義されたクラスのメンバ関数とかが実装してある
libなりcppなりも参加させよう
296デフォルトの名無しさん:2006/04/06(木) 20:28:29
クラスだった、スマンコ
297デフォルトの名無しさん:2006/04/06(木) 20:29:25
APIの頭についてる
::って何?
プラットホームSDK?
もしそうならどっちを使ったらいいの?
298デフォルトの名無しさん:2006/04/06(木) 20:30:48
>>295
速レスありがとうございます。

リンカのオプションで追加参照、追加インクルードもしてます。
cppは参加してないけどlibが居ればリンクは出来るんですよね?
299デフォルトの名無しさん:2006/04/06(木) 20:33:06
>>297
グローバル

aaa::bbb() ならaaaという名前空間のbbb()という関数のことを意味する。
::bbb()ならグローバルな名前空間のbbb()を意味する。
300デフォルトの名無しさん:2006/04/06(木) 20:35:45
>>289
もう少し具体的に。
単色の壁紙じゃないんだから、「色別に分けろ」と人間に命令したってどうやって分けるか
判断できないだろ。

後、人に物を頼むときの口の利き方を覚えろ。
301デフォルトの名無しさん:2006/04/06(木) 20:37:01
>>299
ありがとうございます。
#ちなみに今のが2ちゃんねる初書き込みです。どきどき。
Win32 APIを使う場合、あってもなくえも一緒って事ですかね
サンプルコードで、あったりなかったりするので・・・
302デフォルトの名無しさん:2006/04/06(木) 20:39:07
>298
そのcppがコンパイルされた結果のobjが詰まっていたりするlibなら。
303294:2006/04/06(木) 20:40:41
あー、そうかなんとなく判ったぞ。
libのバージョンが古くて関数が実装されてないとかかもしれないです。
>>302さん、ありがとう。
304デフォルトの名無しさん:2006/04/06(木) 20:47:09
>>301
例えば、CWndの派生クラスを作ったとする。
その派生クラスの中でGetWindowRect()を呼ぶとCWnd::GetWindowRect()を呼ぶことになるし、
::GetWindowRect()を呼ぶとグローバルの(つまりAPIの)GetWindowRect()を呼ぶことになる。

だから必ずしも「あってもなくても一緒」というわけでもない
305デフォルトの名無しさん:2006/04/06(木) 20:51:45
>>304さん とってもよくわかりました!
MFCのCWndって各APIをラップしたメソッドが実装されてるって
事ですよね?
だから生のAPIを呼ぶ時は「::」つきで、CWndのメソッドを呼ぶ
時は無しでって事ですよね?
306デフォルトの名無しさん:2006/04/06(木) 20:53:44
305です
追記:
もちろんすべてのAPIがラップされてるわけじゃないと思います。
307デフォルトの名無しさん:2006/04/06(木) 21:06:31
みなさんありがとうございました!
ずっと「::」ってなんだろ?って気持ち悪かったので(^^;
308デフォルトの名無しさん:2006/04/06(木) 21:21:53
SDKでも「::」つけてAPIコールしてる人がいるけど
通常の関数やメソッドとAPIの見分けがつけやすいからかなー?
309デフォルトの名無しさん:2006/04/06(木) 21:25:25
通常の関数でも付けるだろ。
310デフォルトの名無しさん:2006/04/06(木) 21:32:21
>>309さん
動作的な事じゃなく、コーディング規則的な事なんですかねぇ?
311デフォルトの名無しさん:2006/04/06(木) 21:35:54
>>310
だから最初に教えたとおり、::はグローバルだということを明示的に示しているわけで、
APIだからというのとはちょっと違う。

それといちいちageるな
312デフォルトの名無しさん:2006/04/06(木) 21:41:31
>>311さん ありがとうございます
よく分かりました。

>それといちいちageるな

これってみなさんがやってるようにE-Mailにsageとか書けって事ですよね?
弊害でも?(板違いでごめんなさい)
313デフォルトの名無しさん:2006/04/06(木) 21:53:26
>>308
他にもIDEで::を打つと入力候補一覧が自動的に出てきたりもするから
使っているっていう人もいるようだよ。
314デフォルトの名無しさん:2006/04/06(木) 21:57:27
>>300
失礼しました
全てのピクセルを見て一番多かった色のフォルダに入れれば大体振り分けられるのではないかと考えています
色は赤や白を赤=R200~255/G0~50/B0~50、白=R230~255/G230~255/B230~255など予め定義しておいて
それに基づいて判断すれば間違いないと思います
どうぞお願いしますこの野郎早くコーティングに入れや
315デフォルトの名無しさん:2006/04/06(木) 22:02:22
>>313さん
レスありがとうです!
なるほどー。最近のIDEは凄いっすねー。
316デフォルトの名無しさん:2006/04/06(木) 23:07:52
下らない質問ですが、
visual C++のnew とかdeleteってスレッドセーフなのでしょうか?

つかVC++でスレッドセーフじゃないAPIってありますか?
317デフォルトの名無しさん:2006/04/06(木) 23:50:48
>>316
マルチスレッド版かDLL版を使えば平気であるはず。CRT関数も同じく。

C++のライブラリはここ読め。
http://msdn.microsoft.com/library/en-us/vcstdlib/html/vclrfThreadSafetyInStandardCLibrary.asp
318デフォルトの名無しさん:2006/04/07(金) 06:30:03
>>316 サンクス
319デフォルトの名無しさん:2006/04/07(金) 12:34:44
ちょこっと質問です
一行エディットでEnterを押すと複数行ではないのでビープ音が出るのですが、このビープ音を消したいと思い
自分なりに調べたらSystemParametersInfo()を使用するのかと思ったのですが
元々これでは出来ないのか、自分のコードがヘタレなのか消せませんでした。。

サブクラス化を使えばビープ音は鳴らなくなったんですが、関数だけで消せないでしょうか?
320デフォルトの名無しさん:2006/04/07(金) 14:33:45
VC#で質問です。
テーブル処理がしたいのですが、デザイン画面でWindowsフォームのDataGridを配置しても列の設定ができないのは、そもそもDataGridを使うのが間違っているということでしょうか?
エクセルの様にセルを置いて、セル内にデータを入れたり、それを計算するアプリが作りたいです。

エクセルでヤレ!っていわれそうだけど・・・
321デフォルトの名無しさん:2006/04/07(金) 15:22:02
自己解決でけました。Datasetっての使うんですね。
322デフォルトの名無しさん:2006/04/07(金) 16:53:59
質問です。
VC++の勉強を始めたのですが、Win32APIのサンプル集のサイトとかってないですか?
MSDNには、サンプルはのっていないんですよねー。
いくら調べても見つかりません。
どなたかご教授願います。
よろしくお願いします。
323デフォルトの名無しさん:2006/04/07(金) 17:33:17
MSDNにサンプルあるよ
MFCとSDK
ほかもいろいろ
324デフォルトの名無しさん:2006/04/07(金) 18:21:30
>323
どこですか?
URLを教えて下さい。
お願いします。
325デフォルトの名無しさん:2006/04/07(金) 18:36:37
MSDNインストールしたら入ってなかったか?
MSのサイトはしょっちゅう構成が変わるから自分で探すしかないな
326デフォルトの名無しさん:2006/04/07(金) 18:40:05
327デフォルトの名無しさん:2006/04/07(金) 18:50:48
>>326
ありがとうございます。
328デフォルトの名無しさん:2006/04/08(土) 00:00:29
VisualC++を触ってみた。
他人の書いたちょっとしたプログラムを読んだが、読み終わってからようやく全体が理解できてきた。MFCはMSDN見ながら理解した(つもり)。

で、見たソースはフラグ処理が多いのだが、これは一般的なのか?
あとフラグの種類を列挙型で宣言せずに生の数字入れるのは一般的なのか?
329デフォルトの名無しさん:2006/04/08(土) 01:59:41
エディットボックスに文字を表示したいのですが、
どうすれば良いですか?

エディットボックス1、2、3と三つありまして、
「+」ボタンを押すと
エディットボックス1と2の数字を足した物を3に表示したいのですが。

CString s1;
CString s2;

m_edit1.GetWindowText(s1);
m_edit2.GetWindowText(s2);

ans = num1 + num2;

m_edit3.SetWindowText(ans); //この箇所の書き方がわかりません。。

num1とnum2とansはfloatでグローバル宣言しています。
具体的にコメントの箇所が分からないのですが、
全体的におかしい所ありましたら、指摘してください。

ショボショボのプログラムですみません。。。
330デフォルトの名無しさん:2006/04/08(土) 06:00:09
get
数字かどうかチェック
CStringをfloatに
計算
floatをCStringに
set

DDX DDVを使う方法もある
331デフォルトの名無しさん:2006/04/08(土) 06:04:15
スゲー、天才じゃね!?
332デフォルトの名無しさん:2006/04/08(土) 07:41:57
>>328 フラグ処理って何かさっぱり分からん。
ビットマスク使ってフラグを処理してるってこと?
そりゃそのプログラム作った人の趣味だろ。
enum 使わないのもその人の趣味だろ。
べつに Visual C++ がどうこうという問題じゃないし、
MFC のせいでもない。
333デフォルトの名無しさん:2006/04/08(土) 11:03:21
>>330
ありがとうございます。
334長文すみません。:2006/04/08(土) 15:08:32
VC++ .NETを使っています。
ビットマップをファイルから開くプログラムを作りたいと考え、
GetOpenFineName()を使って、以下のようにコーディングしました。

しかし、ファイルを繰り返し開くこうとすると、

BitPlayerAPI2.exe の 0x7d6414ae でハンドルされていない例外が発生しました :
0xC0000005: 場所 0x05ed2038 を読み込み中にアクセス違反が発生しました。 。

というエラーメッセージとともに、強制終了してしまいます。
何が悪いのでしょうか。
教えていただければ幸いです。
335長文すみません。:2006/04/08(土) 15:09:33
OPENFILENAME ofn;//ファイルオープンダイアログの初期化
TCHAR sfile[MAX_PATH];
ZeroMemory(&ofn, sizeof(ofn));
ZeroMemory(sfile, sizeof(TCHAR)*MAX_PATH);
sfile[0] = '\0';

ofn.lStructSize = sizeof(ofn);// OPENFILENAME 構造体の初期化
ofn.hwndOwner = hWnd;
ofn.lpstrFile = (LPSTR)sfile;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFilter = "ビットマップ(*.bmp)\0*.BMP\0\0\0";
ofn.nFilterIndex = 1;
ofn.lpstrTitle = TEXT("ファイルを選択してください");
ofn.lpstrInitialDir = NULL;
ofn.lpstrCustomFilter = NULL;
ofn.nMaxCustFilter = 0;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.nFileOffset = 0;
ofn.nFileExtension = 0;
ofn.lpstrDefExt = NULL;
ofn.lCustData = 0;
ofn.lpfnHook = 0;
ofn.lpTemplateName = 0;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
336長文すみません。:2006/04/08(土) 15:10:49
続き

if (GetOpenFileName(&ofn))// GetOpenFileName() の呼び出し
{
・・・//ファイル名を取得できたときの処理
delete[] (BYTE*)sfile;
delete[] (BYTE*)&ofn;
}
else
{
・・・//できなかったときの処理
delete[] (BYTE*)sfile;
delete[] (BYTE*)&ofn;
}
337デフォルトの名無しさん:2006/04/08(土) 16:34:25
newしてないのにdeleteしてるとか
338長文すみません:2006/04/08(土) 17:14:08
>>337
deleteを無しにしてもダメでした。

「GetOpenFileName バグ」でググッてみたところ、
同様の問題があったのですが、未解決でした。

というか、Win付属のメモ帳でも、「ファイル(F)-開く(O)」で、
何回も同じtxtを開くと、無言で落ちます。(俺のPCでは。)
(デバッグ中ではないので、>>334の様なメッセージは出ません)

俺のWinが逝っちゃってるんでしょうか(T_T)
339デフォルトの名無しさん:2006/04/08(土) 17:37:12
ファイルハンドルをクローズしていないとか?
340デフォルトの名無しさん:2006/04/08(土) 18:05:44
こんな時はみなさんどうしてますか?
ダイアログプロシージャ内の処理で
・WM_INITDIALOG内で初期化エラーをメッセージボックスで出す
 例)設定ファイルの存在確認エラーなど
・WM_PAINT内で初期化済みのリソース(メモリデバイスコンテキストなど)
 を使用して描画。
モーダルなメッセージボックスで処理を止めてもディスパッチされるので
プロシージャにはWM_PAINTのメッセージは飛んでくるんですよ。
ここで、初期化エラーによりメモリデバイスコンテキストはまだ未初期化
なわけです。
341デフォルトの名無しさん:2006/04/08(土) 18:07:19
自分は以下のような感じで対処したのですが、他に良い方法とかお約束とか
あったら教えてください

BOOL CALLBACK DialogProc(HWND hDlg,UINT Msg, WPARAM wParam,LPARAM lParam)
static HANDLE hEvStart; //イベントハンドル
if(hEvStart == NULL){
hEvStart = CreateEvent(NULL, TRUE, TRUE, NULL);//イベント生成
}
if(WaitForSingleObject(hEvStart, 0) != WAIT_OBJECT_0){
return FALSE;
}
switch(Msg){
case WM_INITDIALOG:
ResetEvent(hEvStart); //初期化開始 他の処理ガード
初期化
if(初期化失敗?){
MessageBox();
}
SetEvent(hEvStart); //初期化終了通知 他の処理ガード解除
return TRUE;
case WM_PAINT:
描画処理
return TRUE;
}
return FALSE;
}
342長文すみません:2006/04/08(土) 18:38:09
>>339さん
if (GetOpenFileName(&ofn))
{
bitmap->hBitmap = (HBITMAP)LoadImage((HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE),ofn.lpstrFile,IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
}
として、ファイルのパスだけ使っているので、ファイルハンドルとかはないと思うのですが、、、

ofn.lpstrFileの箇所を"something.bmp"として、GetOpenFileName()を使わなければ、問題なく画像は開けます。
ただし、当然ながらカレントディレクトリのsomething.bmpしか開けません。

逆に、
if (GetOpenFileName(&ofn))
{
}
と、if文の中身を空にしても、上記のバグが取れません。
343デフォルトの名無しさん:2006/04/08(土) 18:38:12
>>338さん
本当だ(゜゜;
メモ帳落ちる!知らなかった・・・
ちなみにWinXp proです
344長文すみません:2006/04/08(土) 18:39:45
>>338
えぇー!
ひょっとしてWinの仕様ですか?
んなアホな!
345デフォルトの名無しさん:2006/04/08(土) 18:43:17
>>340
デバイスコンテキストならNULL判定を噛ませればよいだけでは?
346デフォルトの名無しさん:2006/04/08(土) 18:56:47
>>345さん
お返事ありがとうございます。
確かに毎回NULL判定して、はじけば大げさにイベント作ったりしなくて
OKですが、メッセージボックスが出たタイミングでどのリソースが
未初期化かをチェックして、それを弾くというのがバグを生み出しそう
だったので・・・(見落としとかありそうで)
それならいっそ初期化が終わったタイミングで初めてプロシージャ内の
処理が流れる方が簡単&確実かなって思いました。
が、やっぱりなんか大げさな気も・・・。
そこで他の方の解決法が気になった次第です
347343:2006/04/08(土) 19:11:38
が、自作アプリはOKだな・・・・

ofn.lpstrFilter = "ビットマップ(*.bmp)\0*.BMP\0\0\0";
最後の\0がひとつ多いから?
348338:2006/04/08(土) 19:12:56
GetOpenFileNameの問題ですが、
親父のPCで試したところ、メモ帳は落ちませんでした。
そして俺の駄プログラムも問題なさげに動く。。。

どちらのPCも、Win XP Home Edition Version 2002 Service Pack 2ですが、
親父のPCがPentium4、1GB RAMに対し、俺のはCeleron、480MB RAMです。

ちなみに俺のWinはGetSaveFileNameでも同じ問題が生じます。

はぁ〜 もうダメだ。
わからん(--;)
349343:2006/04/08(土) 19:24:30
マシンスペックは
AMDのAthlon64X2 4600+でメモリが2Gですが。。。
OPENFILENAME ofn;
はWin2kでサイズが増えたので
Win2kでコンパイルしたのをWin98で実行させると落ちるとかあったけど・・・
sizeof()で大丈夫そうだしコンパイル環境と実行環境が同じだしなぁ・・・
なんだろー?
350338:2006/04/08(土) 19:27:34
>>343さん
アドバイスありがとうございます。

>最後の\0がひとつ多いから?
試してみましたが、これも関係ないみたいです。

いろいろありがとうございます。
もうちょっと、自分で調べてみようと思います。
351343:2006/04/08(土) 19:31:23
ofn.nFilterIndex = 1;
をゼロにしてデフォルトにしてみるとか

これ以上はおいらのアプリと差があんまりみつからないなぁ
でわがんばってー!
352343:2006/04/08(土) 20:19:35
もう見てないかもですが
騙されたと思って
OFN.lStructSize = 88;
ってしてみるとどうなります?現象は一緒?
353デフォルトの名無しさん:2006/04/08(土) 20:56:26
ZeroMemoryしたのに
あるものは '\0'
あるものは 0
あるものは NULL
を突っ込んでて非常に見苦しい。
354338:2006/04/09(日) 00:37:35
>>343さん、>>353さん
ありがとうございます。

ofn.nFilterIndex = 1;
ofn.lStructSize = 88;
ともに変化はありませんでした。

このGetOpenFileNameの部分は、MSのサポート技術情報を参考にしました。
確かに、ZeroMemoryすれば、'\0'、0、NULLは必要ないですね。
勉強になりました。
355デフォルトの名無しさん:2006/04/09(日) 21:35:20
CHoge& F()
{
 return hoge;
}

CHoge hoge = F();

これコンパイル通るんですよね・・・。
CHoge& hoge = F() にするところを & が抜けて、デストラクタが余計に呼び出されて・・・orz

こういうのを防ぐために、コピーコンストラクタおよび代入演算子を private にする、ってのは
設計的にありですか?
356デフォルトの名無しさん:2006/04/09(日) 23:34:19
>>355
普通にやります。
デフォルトコンストラクタを呼び出したくない場合も同様です。
357355:2006/04/10(月) 00:54:06
>>356
ありがとうございます、安心して使います。
358デフォルトの名無しさん:2006/04/10(月) 10:40:45
うぃっす
コンパイルして出来たexeを直接実行しても結果が出ないでターミナルが閉じちゃうのはなぜ?
359デフォルトの名無しさん:2006/04/10(月) 11:09:11
>>358
結果を折角表示しているのに、その結果をゆっくり見ることができるようにプログラミングしていないからだ。
解決策の例を挙げよう。
・プログラムが終了しないようにする。
・結果を見られるように適宜実行を中断する。
・CUI環境から起動する。
・デバッグ環境からデバッグ実行で起動する。
360デフォルトの名無しさん:2006/04/10(月) 11:10:34
>>359
先輩最高です。
これからもよろしくおねがいします。
361デフォルトの名無しさん:2006/04/10(月) 11:47:16
bool型の配列をZeroMemoryで初期化したとき、
全部falseの意味になりますか?
362デフォルトの名無しさん:2006/04/10(月) 13:51:33
>>361
C言語勉強しなおせばいいんじゃね?
363デフォルトの名無しさん:2006/04/10(月) 13:57:11
>>362
スレタイ読めるかな?
364デフォルトの名無しさん:2006/04/10(月) 14:05:07
"くだ"らない質問"す"る奴は帰"れ"Visual C++(超初心者用)
365デフォルトの名無しさん:2006/04/10(月) 17:21:09
>>361
Visual C++に限ってはたしかにそうなるはずだけど、他でどうなるかは知らない。
普通にstd::fillを使え。
366デフォルトの名無しさん:2006/04/11(火) 06:15:22
ExpressEditionをインストールしてPlatformSDKも入れて
入門書のサンプルコードを打ち込んでみたら、

error C2664: 'lstrcpyW' : 1 番目の引数を 'char [80]' から 'LPWSTR' に変換できません。
とエラーが出ます・・・。

サンプルコードはこれです。何がいけないのでしょう??
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow){
SYSTEMTIME tm;
char s[80];
int iRet;
GetLocalTime(&tm);
if((tm.wHour >= 0) && (tm.wHour < 12)){
lstrcpy(s, "おはようございます");
}else if(tm.wHour < 17){
lstrcpy(s, "こんにちは");
}else{
lstrcpy(s, "こんばんは");
}
iRet = MessageBox(NULL, s, "MsgBox", MB_OK);
return 0;
}

367デフォルトの名無しさん:2006/04/11(火) 06:49:01
>>366
MS VC++2005はデフォルトの文字コードがUNICODEになったからそうなる。
プロジェクトのプロパティを探せば文字コードの設定があるはずだからMBCSに変更する。
368デフォルトの名無しさん:2006/04/11(火) 07:06:48
>>367
そうだったんですか。できました、ありがとうございました。
369デフォルトの名無しさん:2006/04/11(火) 07:14:41
そもそもlstrcpyに""とか、char[80]とかを渡すのが悪い。
ちゃんと_T("")とか、TCHAR[80]を渡せ。
370デフォルトの名無しさん:2006/04/11(火) 07:30:23
>>369
どうもです。
まだ入門書の2章までしか進んでなくて、TCHARとかは次の章だったので
知りませんでした。
これだとUNICODEに自動変換してくれるのですね。
371デフォルトの名無しさん:2006/04/11(火) 08:18:37
ところで、NT系のファイルパス用のバッファって、
MAX_PATH(=260)より32767 + 1(NULL用) + "\\.\"で32772が正解?

TCHAR szPath[32772];

みたいな?
372デフォルトの名無しさん:2006/04/11(火) 08:21:39
(°д ゚)ハァ?
373デフォルトの名無しさん:2006/04/11(火) 08:27:39
それでおk
374麻布卒www:2006/04/11(火) 18:17:52
質問です。

今C言語の勉強をしています。
コンパイラはボーランドの無償版、エディタは学習用のソフトをDLしました。
それで今日、BCC Developerなるものが存在する事を知り、こちらをDLしました。
これからはこれを無償版でコンパイルして勉強していこうかと思います。
そこで、製品版に
BCC C++ Builder 6 professionalというものがアカデミックで3万円ですが、これから僕が選ぶ環境とどう違うんですか?
また、Visual studioというのはなんですか?
これを買ってはいけないのですか?
僕はVisual C++と僕が勉強中のC++の違いはなんですか?

教えてください。
375デフォルトの名無しさん:2006/04/11(火) 18:26:46
>>374
Visual C++ 2005 Express Editionね

http://www.microsoft.com/japan/msdn/vstudio/express/visualc/

Visual C++ 2005 Express Edition は、コンパイラ、コード エディタ、デバッガ、
プロジェクトシステムなどを備えた、強力な C++ プログラミング ツールです。
学校の課題からゲームまで、あらゆる種類のプログラムを作成できるツールやライブラリが揃っています。
・・・だそうだ。
376デフォルトの名無しさん:2006/04/11(火) 18:28:06
>BCC Developerなるものが存在する事を知り、こちらをDLしました。
ここまでいえばあなたなら分かるでしょう。
377麻布卒www:2006/04/11(火) 18:49:38
分からないorz
Visualがつくとどう変わるんですか?
単なるコンパイラの製品名の差ですか?という事は全く文法も同じ?
うわーん分からない〜Visualってなんだお〜

まじえろい人おしえて
378デフォルトの名無しさん:2006/04/11(火) 19:13:13
>>377
勉強で利用なら、書き込んだログの秒1桁目が
偶数ならMicrosoft社→Visual C++ 2005
奇数ならBorland社→Borland C++ Builder 6 Professional
でもいいんじゃね?
379デフォルトの名無しさん:2006/04/11(火) 19:16:26
C++はISOに国際規格がある。
それに基づいて色々な法人や団体がそれぞれC++コンパイラを作っていて、
自分の製品として売り物にしていたり無料で公開していたりする。

Microsoftが作ったC++コンパイラの製品名がVisual C++。
Borlandという会社が作ったのがC++ Builder。
(Visual StudioはVisual C++以外の言語のコンパイラも含まれている製品)

どちらもコンパイラだけではなく、
プログラム作りがより便利になるような「統合開発環境」を含めての製品になっている。

ちなみにボーランドの無償版ことBoland C++ Compiler (BCC)はC++ Builderのうち、
C++コンパイラなどを抜き出したもの。少々バージョンが古い。

BCC Developerは(おそらく)BCCの利用者向けに作られた統合開発環境。
Bolandとは無関係な個人が作ったフリーソフト。
380麻布卒www:2006/04/11(火) 19:27:45
なるほど。

まだ初歩しかしてないので、このフリーの統合環境をいじってみます。
将来的にはばっちりソフト開発が出来ないと困るのですが、BCC BuilderとVisual Studioどっちがオヌヌメですか?
高いものなので買ってみてゴミじゃねーか!!!ってなると学生の身分としてはきつくて;;

って、Borlandのとマイクロソフトのコンパイラ、全く同じ作用をするならわける必要ないですよね?
ってことはちょっと仕様が違ったりするんですか?
Visual Studioの方は
Visual Basic
C#
C++
J#
対応と書いてありますが、つまりこれは

マイクロソフトはVisualのコンパイラ単体でも無償版を出していないという事ですね?
381デフォルトの名無しさん:2006/04/11(火) 19:32:46
学生ならアカデミック買えるから良いじゃないかっ!
382デフォルトの名無しさん:2006/04/11(火) 19:33:49
>>380
なんでやねん。
Visual C++ 2005 Express Edition
Visual Basic 2005 Express Edition
Visual C# 2005 Express Edition
全部無償じゃん。

どこをどう読んだら、無償版を出していないっていう結論になるんだYO
383麻布卒www:2006/04/11(火) 19:35:49
いまやってるCはC++の上位互換という事でC++のコンパイラでコンパイル出来ますよね?
という事でVisual C++ 2005 ExpressをDLしてみました。
インストール容量大きすぎてむりぽ。
384麻布卒www:2006/04/11(火) 19:37:41
アカデミックでもBorlandが3万という事は確認しています。
3万というと、一ヶ月の食費並・・・とても出せない・・・。
大学、無料で配れ・・・Borlandと手を結んでくれ・・・。
385デフォルトの名無しさん:2006/04/11(火) 19:43:41
>>383 どんなPC使ってるんだYO〜
386デフォルトの名無しさん:2006/04/11(火) 19:49:28
ちゃんとHDD容量以外の必要環境も足りてるんだろうか・・・
387麻布卒www:2006/04/11(火) 19:52:37
3年前のノートです。メビウス。
よく、フリーズします。基本的にHDD足りてない・・・3Dゲームできない。
シルクロードオンラインか、FF11がやりたいです。
PCください。
今やっと
for whileあたりを少し使えるようになったくらいですが、雑魚ですか?
388デフォルトの名無しさん:2006/04/11(火) 19:54:24
>>384
Visual Studio 2005のアカデミック(Standard相当)は4800円
389麻布卒www:2006/04/11(火) 19:56:25
やすいですねー。
みんなは何使ってるの?
390デフォルトの名無しさん:2006/04/11(火) 19:58:23
Visual Studio 2005 Professional
391麻布卒www:2006/04/11(火) 20:01:51
いくら?
392デフォルトの名無しさん:2006/04/11(火) 20:02:52 BE:54348274-
>>389
お前がそんなこと聞いて何かの役に立つの?
393麻布卒www:2006/04/11(火) 20:07:39
え・・・なんでお前呼ばわりされるんですか・・・。
ただ純粋に聞いてるだけなんですけど。
394デフォルトの名無しさん:2006/04/11(火) 20:20:04
俺も Visual Studio 2005 Professional つかってるなぁ。
でもそれは Visual Studio.NET 2003 theSpoke Premium
使っててタダでもらったやつなんだけどね。

IntelliSense (エディタ上での自動補完)の機能
だけでも Visual C++ 2005 使ったらいいと思うけどなぁ。
395麻布卒www:2006/04/11(火) 20:24:27
つまり、多少間違っていても結構直してくれるって事ですか?
例えば
printfをprinftとか書いた場合、直してもらえますか?
これがdebug?
396デフォルトの名無しさん:2006/04/11(火) 20:25:42
>>394
おれもSpokeのやつだな。
397デフォルトの名無しさん:2006/04/11(火) 20:25:50
>>394
定数を拾ってくれるだけでも、ありがたいんですよね。
398デフォルトの名無しさん:2006/04/11(火) 21:07:32
>>395
そこまで聞くの?
399麻布卒www:2006/04/11(火) 21:08:01
ばかですいません・・・。
400デフォルトの名無しさん:2006/04/11(火) 21:38:06
>>395 使ってみれば分かるよ。
たとえば、 prin まで入力したら
あとは printf みたいなものも候補として表示してくれる。
引数の型とかについてのヒントもくれる。
401デフォルトの名無しさん:2006/04/11(火) 21:54:10
が間違ってるのを直してくれたりはしないな。
402デフォルトの名無しさん:2006/04/12(水) 01:34:30
まぁ確かにこんなところで意味不明なコテ名乗っている馬鹿の頭は治せねぇな
403デフォルトの名無しさん:2006/04/12(水) 15:22:26
VC++初心者です。
MFCでネイティブなアプリケーションを作るために、VC++を始めました。
作成されたEXEを別のパソコンに移して実行すると、
「ダイナミックリンクライブラリMFC71.DLLが指定されたパスに見つかりませんでした」
と出ます。
EXEだけで実行できるようにしたいのですが、どうしたらいいのでしょうか?
調べても、いい方法が
見つかりません。
ご存知の方、ご教授願います。
404デフォルトの名無しさん:2006/04/12(水) 15:28:28
プロジェクトのプロパティとかでビルドの設定でMFCのDLLを使用しないとか
スタティックリンクにするとかに設定する。
使ってるVC++のバージョン書かかないと正確な方法は答えられない。

MFCならウィザードの時、DLLかスタティックか選択できなかったっけ?
405デフォルトの名無しさん:2006/04/12(水) 15:54:53
テンプレートクラスの定義を***.hで、実装を***.cppでやってコンパイルしようとしたら、
未解決の外部シンボルが云々と言われてしまいました。
定義の内部に実装を書かかずに解決する方法はないんでしょうか。

***.h
template <class T> class Kurasu
{
   T data;
   Kurasu();
};


***.cpp
#include "***.h"
template <class T> class Kurasu<T>::Kurasu()
{
  ...
}

というふうに。

406デフォルトの名無しさん:2006/04/12(水) 15:57:12
定期的に見かけるなこの質問
407デフォルトの名無しさん:2006/04/12(水) 16:00:49
>>403 がつかってるのは、たぶん
Visual Studio .NET 2003 なんだろうなぁ。
MFC71.DLL ってことだから。
とりあえずスタティックなライブラリをリンクしておけばおk
408デフォルトの名無しさん:2006/04/12(水) 18:04:20
>>404
>>407
「構成プロパティ→全般→MFCの使用」で、スタティックライブラリを選択したら、
EXEを実行できました。
ありがとうございました。

409デフォルトの名無しさん:2006/04/12(水) 18:06:38
Windowsエクスプローラの詳細表示みたいに、
行の左端に小アイコンを表示させるリストコントロールを作りたいのですが、
アイコンが表示されません。(アイコンのスペースは確保されているが)

OnInitDialog()内に以下のように記述しているのですが、何が問題なのでしょうか?


//m_lstInfo:レポートタイプのリストコントロール
m_lstInfo.SetExtendedStyle(m_lstInfo.GetExtendedStyle()|
LVS_EX_SUBITEMIMAGES|LVS_EX_FULLROWSELECT);
CImageList m_ImageList;
m_ImageList.Create( 16, 16, ILC_MASK, 0, 0 );
CBitmap bmp1, bmp2;
//IDI_ICON_FILE,IDI_ICON_FOLDER:アイコンリソース
int idxIcon1 = m_ImageList.Add( AfxGetApp()->LoadIcon( IDI_ICON_FILE ) );
int idxIcon2 = m_ImageList.Add( AfxGetApp()->LoadIcon( IDI_ICON_FOLDER ) );

m_lstInfo.SetImageList( &m_ImageList, LVSIL_SMALL );

m_lstInfo.InsertColumn( 0, _T("サンプル"), LVCFMT_LEFT, 300 );

// CListCtrlにアイテム追加
m_lstInfo.InsertItem( 0, _T("アイテム@"), idxIcon1 );
m_lstInfo.InsertItem( 1, _T("アイテムA"), idxIcon2 );


開発環境:VC++6.0
410デフォルトの名無しさん:2006/04/12(水) 18:42:12
lpIconName
ロードするアイコンのリソース名が入った、NULL で終わる文字列へのポインタを指定します。
上位ワードに 0 を、下位ワードにアイコンリソースの ID を入れた値を指定することもできます。
この値は、MAKEINTRESOURCE マクロを使用して作成できます。
411409:2006/04/12(水) 20:31:37
自己完結しました。

CImageList m_ImageList;
をローカルで宣言してたせいでした。
412デフォルトの名無しさん:2006/04/12(水) 20:32:00
VS2005のVCです。
ネットにある例を参考にCStringをcharに変換しようと思い

CString str = "abc";
char *p = new char[str.GetLength()+1];
strcpy( p, str );
delete [] p;

をコンパイルすると
「'strcpy' : 2 番目の引数を 'CString' から 'const char *' に変換できません。」
と出ます。
どうすればいいのでしょうか?
413デフォルトの名無しさん:2006/04/12(水) 21:00:33
>>412
strcpy(p, CT2A(str));
414デフォルトの名無しさん:2006/04/12(水) 21:25:27
>>405
コンストラクタがデフォルトのprivateになってるから・・・とか?
415デフォルトの名無しさん:2006/04/12(水) 21:30:48
>>405
無理。
416デフォルトの名無しさん:2006/04/12(水) 21:37:20
ヘッダがなくDLLのみが存在するとき、
EXPORTSされてる関数名と序数はdumpbinを使用して得ることができましたが、
それぞれの関数の戻り値・引数リスト(型や大きさ)を得る方法がわかりません。
どうすればできるか/そもそもそんなこたーできねーだァか教えてください。
417デフォルトの名無しさん:2006/04/12(水) 21:48:15
つ 逆アセンブラ
418デフォルトの名無しさん:2006/04/12(水) 22:51:48
visual studio 2005でMFC AppWizardを実行して、
CTえstViewクラスのOnDraw関数の中に以下のプログラムを追加したのですが、
うまく動きません。

void Ctest2View::OnDraw(CDC* /*pDC*/)
{
Ctest2Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;

// TODO: この場所にネイティブ データ用の描画コードを追加します。
pDC->TexeOut(0,0,"ようこそvisualc++の世界へ");
}

なぜですか?ちなみに手持ちの参考書と微妙に違う箇所が気になります。
上記の
void Ctest2View::OnDraw(CDC* /*pDC*/)
ですが、参考書では
void Ctest2View::OnDraw(CDC* pDC)
となっています。

エラーは
error C2065: 'pDC' : 定義されていない識別子です。
error C2227: '->TexeOut' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。
型は ''unknown-type'' です。
とでました。
まったくもって意味がわかりません。
お願いします。
419デフォルトの名無しさん:2006/04/12(水) 22:53:09
おまえすごいな。
420デフォルトの名無しさん:2006/04/12(水) 22:54:23
>>418
/*と*/で囲まれた部分はコメントとして扱われ、コンパイラに無視される。
421デフォルトの名無しさん:2006/04/12(水) 22:55:33
    i<´   }\   , - 、
   ヽ.._\./  .ンく r-兮、 __
    ∠`ヽ.! /   ヾニEヲぐ ,ゝ->    さすがくだすれだ、
   /_`シ'K-───‐-、l∠ イ       あきれてものも言えねえぜ
   l´__,/l\、_ ̄0¨0)゙@Yヘ, -┤
.    l'___|⌒ヾ''ー==、ーr='イ i二|       
   / .」   i   /./7r‐く  lー!
.   f.  ヽ‐i人.∠'<   _i. l,.-ゝ.
    トiヘヘ「ト〈      `X  トレi7__|
   〉ト:トハj`! i.    /  トー┤lルj,リ
  /‐+----+‐l    iー--i---ヾ'〃
.  l_i____i__|   |___i,__i_|
422デフォルトの名無しさん:2006/04/12(水) 22:55:57
コメントをはずしてコンパイルしてみました。

error C2039: 'TexeOut' : 'CDC' のメンバではありません。
'CDC' の宣言を確認してください。

となりました。
どこを修正すれば良いですか?
423デフォルトの名無しさん:2006/04/12(水) 22:58:38
>>422
つづりが違う。
424デフォルトの名無しさん:2006/04/12(水) 23:01:23
>>423
どこを修正すればいいですか?
425デフォルトの名無しさん:2006/04/12(水) 23:05:38
こんな間違いが分からないヤツはいない。
おまえら釣られすぎ
426デフォルトの名無しさん:2006/04/12(水) 23:21:44
申し訳ないですがわかりません。
すみませんが、教えて下さい。
427デフォルトの名無しさん:2006/04/12(水) 23:23:36
VS.NETから/*pDC*/となるんだよなぁ・・・
コメント外すのメンドクセ
428デフォルトの名無しさん:2006/04/12(水) 23:38:35
マジレスすると、
pDC->TexeOut(0,0,"ようこそvisualc++の世界へ");

この行を消せば直るよ!


                 ハ_ハ  
               ('(゚∀゚∩ なおるよ!
                ヽ  〈 
                 ヽヽ_)

429デフォルトの名無しさん:2006/04/13(木) 00:14:09
ねーさんTexeOutじゃなくて、TextOutだと思うなー
430デフォルトの名無しさん:2006/04/13(木) 00:55:08
>>429
すみません。。。

コンパイルすると次のエラーがでました。
error C2664: 'BOOL CDC::TextOutW(int,int,const CString &)' : 3 番目の引数を 'const char [26]' から 'const CString &' に変換できません。(新しい機能 ; ヘルプを参照)
理由: 'const char [26]' から 'const CString' へは変換できません。
class 'ATL::CStringT<BaseType,StringTraits>' のコンストラクタが 'explicit' と宣言されています。
with
[
BaseType=wchar_t,
StringTraits=StrTraitMFC_DLL<wchar_t>
]
431デフォルトの名無しさん:2006/04/13(木) 00:57:20
_T("文字列")
432デフォルトの名無しさん:2006/04/13(木) 01:02:59
へえ、VC2005ってCStringはexplicitで宣言されるようになったんだ。

pDC->TexeOut(0,0,CString(_T("ようこそvisualc++の世界へ")));
これで直ると思われ。

C++の基礎からやった方がいいんじゃないか?
433デフォルトの名無しさん:2006/04/13(木) 01:06:15
Visual C++2005の専門書が見当たらないのですが。
Visual C++.NET とVisual C++2005の主な違いはなんなんでしょうか?
また、Visual C++2005を購入する場合、専門書はVisual C++.NET
を買うべきでしょうか?それともVisual C++の本を買うべきでしょうか?
どちらなんでしょう??
434デフォルトの名無しさん:2006/04/13(木) 01:07:50
>>432
無事にでました。
ありがとうございました。

C++の基礎から勉強する事にします。
435デフォルトの名無しさん:2006/04/13(木) 01:44:03
>>433
WindowsプログラミングはWin32 APIベース(API/MFC/VCL/...)か、.NET Frameworkベースかが
今選べるポピュラーな選択肢だ。
3〜4年前からMicrosoftは.NETベースへの移行を宣伝しているけれど、
現状ではまだまだ主流になったとはいえない状況。
Visual C++ 2005では、Win32(MFC)/.NET Frameworkどちらの開発もできる。

Win32 APIベースでは、いわゆるネイティブコードを生成できる。
これはつまり、実行効率(処理スピード)が期待できる。
それに対し.NETは…自分で調べた方がいいだろう(笑)

どちらをやるべきか決めた上で、専門書を買った方がよいとは思う。
436デフォルトの名無しさん:2006/04/13(木) 04:02:07
配列の要素数の最大はいくつでしゅか?
437デフォルトの名無しさん:2006/04/13(木) 04:05:12
3つくらいじゃないでしゅか。
438デフォルトの名無しさん:2006/04/13(木) 04:59:50
BYTEって文字列に変換出来ないよね?
439デフォルトの名無しさん:2006/04/13(木) 05:09:53
出来ないよ
440デフォルトの名無しさん:2006/04/13(木) 05:15:34
>>439
サンクス、("%*",byte変数)なら表示出来るかな?
441デフォルトの名無しさん:2006/04/13(木) 05:28:16
質問よろしいでしょうか?
下記のような、継承関係の無い2つのクラスがあった場合、
B::method()からA::aにアクセスすることは可能でしょうか?

class A{
public :
int a;
}

class B{
public:
  method(){
A::a = 100;
}
442デフォルトの名無しさん:2006/04/13(木) 05:42:37
よーく考えよ〜、頭は大事だよ〜♪
443デフォルトの名無しさん:2006/04/13(木) 06:25:57
なんのためにおまえ A::a を public にしてんの?
444デフォルトの名無しさん:2006/04/13(木) 06:58:54
       |b"1
      [^0, ]! f ./^)!
      [  、ヽ l.」 |     _。.。._  __。。.
      [ .ヽ  .\ ]!    |  Y (゜  .l!
      「       ]! /'.ヽ.\ .l゛ ゚ー|
       .\,,    ./ ゚。。.。._)、゚l_.ヽ  |[
         \、  」     ヽ.\゚t.ヽ_ |!
          .l!  .l!      ゚l、\。.゜、[〈x_
          | |      ヽ_ ^ ゛  .\
          .ヽ  」        .l!       ゝ
           | 」        」     ,,,,,,,,,,.\
           [  [       〔 ____    (鬱! .\
           [  [       ] _^鬱_    ─   )、こんにちは
           ]  ]       ] ^゜  | 。     .l! シーモンキーだよ。
           」  [       |   k。.J ./   [
           | 〈       t |──''" /  ./゜ どうせ明後日には忘れられると思うけど
           | |       ヽ_ .\__  _g゛  ./゜ それまでよろしくね。
           | .ヽ        ゝ_  ^^゜" ./(
            _1  ^^''''''ー.。,,    ^ー1.-f゚゜  \_
             .\-.。F-、、  ゛-、。   __/    ^\
                   ゛ヽ。.  ^'1'^^^       |
                      .\。._______ ・   ・ ||
                            \     」 |
445412:2006/04/13(木) 08:45:58
>>413
ありがとうございました。
446デフォルトの名無しさん:2006/04/13(木) 09:21:13
なんでもいいからコンパイル通ればいいということか
447デフォルトの名無しさん:2006/04/13(木) 09:42:45
>>444
よろぴく
448デフォルトの名無しさん:2006/04/13(木) 14:55:57
sTRINgをCHARにへんかんするにはどうするのか?
449デフォルトの名無しさん:2006/04/13(木) 14:57:59
c_str()のことか?
450デフォルトの名無しさん:2006/04/13(木) 23:30:48
すみません、基本
451デフォルトの名無しさん:2006/04/13(木) 23:34:50
>>450
途中送信すみません。

ウィンドウクラスで自作アイコンを利用する為の***部分が分かりません。
LoadIcon( NULL, ***(アイコンのID) );
452デフォルトの名無しさん:2006/04/13(木) 23:53:11
>>451
リソーススクリプトで自分が指定したID
453デフォルトの名無しさん:2006/04/14(金) 00:09:49
>>452
問題の部分
wc.hIcon = LoadIcon( NULL, IDI_ICON );

リソース部分
#define IDI_ICON 101
これだと何故かエラーが出ました。
エラー内容
二番目の変数をint型からLPCSTR型に変更出来ません。
(C/C++6.0、WIN32Api)
454デフォルトの名無しさん:2006/04/14(金) 00:17:01
MAKEINTRESOURCE
455デフォルトの名無しさん:2006/04/14(金) 00:41:14
>>454
解決しました。 ありがとうございました。
456デフォルトの名無しさん:2006/04/14(金) 03:28:09
VC++2003で作っています。

今まで親だったFORMを新たに作ったFORMの子にするにはどうしたらよいえしょうか?
やりたいことは、今まで作ってたダイアログベースのアプリケーションを
タスクトレイだけに表示するようにしたいです。

調べるとダミーの親FORMの子として、MainのFORMを作成して
ダミーを見えなく?することで、完全にタスクトレイのみのアプリケーションとして見えるようです。
今まで作成していたFORMを別のFORMの子にできたらと思っています。
457デフォルトの名無しさん:2006/04/14(金) 11:57:51
>>456
タスクトレイ以外で見えなくしたいだけなら子にする必要ないよ。
458デフォルトの名無しさん:2006/04/14(金) 17:10:32
windowsプログラミング(MFCではない)で、ドロップしたファイル名を
リストボックスに表示させるプログラムを作っています。
ファイル名を取得する所までは出来たのですが、
その情報をリストボックスに送る事が出来ずに困っています。

ダイアログボックスのみを表示するプログラムなのですが、
SendMessage(GetDlgItem(hWnd, IDC_LIST1), LB_INSERTSTRING, (WPARAM)(リスト番号), (LPARAM)(文字列))
の関数では駄目なのでしょうか?

どなたか、ご回答をお願い致します。
459デフォルトの名無しさん:2006/04/14(金) 17:17:41
どこかからサンプルを拾って来る所から始めようか。
460458:2006/04/14(金) 17:38:18
書き忘れました。言語はC++です。

>>459
検索しても該当するサンプルが見つからなかったのです。
C#ならあったのですが。
461デフォルトの名無しさん:2006/04/14(金) 17:42:12
>(LPARAM)(文字列))
ここは具体的にはどうかいてるの?
462458:2006/04/14(金) 17:47:52
>>461
*str[]にファイル名を配列格納しています。なので
(LPARAM)(str[番号])
と指定しています。
463デフォルトの名無しさん:2006/04/14(金) 18:57:07
単純に何か文字表示してみりゃいいだろ
いきなり複雑なことやるから自力で原因がつかめなくなる
馬鹿なくせに背伸びするな
464458:2006/04/14(金) 19:10:16
>>463
ダイアログボックスが生成される時にデフォルトで表示させる事は出来ています。
それがドロップ対応になると、関数が通ってくれなくなるのです。
自分でもまだまだ調べている途中ですが、それでも解決出来なかったので、
こちらに書き込みさせて頂いたのです。
465デフォルトの名無しさん:2006/04/14(金) 19:14:56
あーいえばこーゆう、こーいえばあーいう
466デフォルトの名無しさん:2006/04/14(金) 19:18:09
いちいち配列に格納する必要性がわからん
1つずつ読んで1ずつ追加するだけだろ
最初の1個できればあとは同じ
467デフォルトの名無しさん:2006/04/14(金) 19:27:30
ソース
468デフォルトの名無しさん:2006/04/14(金) 19:28:06
醤油
469デフォルトの名無しさん:2006/04/14(金) 19:28:40
マヨネーズ
470デフォルトの名無しさん:2006/04/14(金) 19:29:18
ケチャップ
471デフォルトの名無しさん:2006/04/14(金) 19:31:11
マスタード
472デフォルトの名無しさん:2006/04/14(金) 19:32:57
タバスコ
473デフォルトの名無しさん:2006/04/14(金) 20:41:12
すいません超初心者ですJAVAってなんですか??
474デフォルトの名無しさん:2006/04/14(金) 20:54:02
コーヒー
475デフォルトの名無しさん:2006/04/14(金) 20:59:54
ザ・ハット
476デフォルトの名無しさん:2006/04/14(金) 23:38:14
すみません、C/C++でエディタボックスやリストボックス等の使い方があるサイトが知りたいのですが

MFCアプリケーションではなくWin32アプリケーションです。
477デフォルトの名無しさん:2006/04/14(金) 23:41:54
478デフォルトの名無しさん:2006/04/14(金) 23:44:44
>>477
わかりました、頑張ります。
479デフォルトの名無しさん:2006/04/14(金) 23:48:55
よかったのか(´・ω・`)
480デフォルトの名無しさん:2006/04/14(金) 23:51:49
>>479
まあ、ある意味間違っては無いですし…
上の流れもありますからね。
481デフォルトの名無しさん:2006/04/15(土) 03:13:36
CString text;
text = "hoge\n";
text += "hoge"

CFile fp;
fp.Open( "tmp.txt", CFile::modeCreate | CFile::modeWrite );
fp.Write( text, text.GetLength() );
fp.Close();

をすると、「h o g e」 などと書かれてしまいます。

CFile fp;
char* p;
long len;
fp.Open( "tmp.txt", CFile::modeCreate | CFile::modeWrite );
len = text.GetLength();
p = text.GetBuffer( len );
fp.Write( p, len );
fp.Close();
text.ReleaseBuffer()

等としても同様に「h o g e」になってしまうのですが、どうすれば良いのでしょうか?

しかも最後まで書かれません。これはGetLength()で帰ってくる値が文字数であってバイト数では無いから、なのでしょうけども・・・。
どうすれば・・・。
482デフォルトの名無しさん:2006/04/15(土) 04:01:59
>>481
プロジェクトがUNICODE用になってるね。
VS2005の話ならプロジェクトのプロパティでUNICODEを使うからマルチバイト文字セットを使うに変更。
483デフォルトの名無しさん:2006/04/15(土) 09:48:06
>>481
>これはGetLength()で帰ってくる値が文字数であってバイト数では無いから
UNICODEプロジェクトなら文字数が帰ってくる。
だから

>fp.Write( text, text.GetLength() );



>fp.Write( text, text.GetLength() * sizeof(_TCHAR));

としないとだめ。
484481:2006/04/15(土) 12:57:46
おぉ〜感謝感謝!
文字列処理も結構するので、UNICODEで暫く頑張ろうと思ってまふ
485481:2006/04/15(土) 13:04:08
全文書き込める様になったけど、相変わらず文字と文字の間にスペース入りますねえ。
h o g e は変わらず・・・。うーん・・・
486デフォルトの名無しさん:2006/04/15(土) 14:08:24
VS2005の挙動は良く知らないんだけど、
text = _T("hoge\n"); 
text += _T("hoge"); 
ではどう?
487デフォルトの名無しさん:2006/04/15(土) 14:37:30
最初にBOM書き込むようにすれば?
488481:2006/04/15(土) 18:20:00
>>486
ダメですねえ。相変わらず h o g e になります。

>>487
BOMを最初に書く、どうやるのだろう・・・

CStringに入れた文字列をただただファイルに書きたいだけなのに・・・

こうなればFILE*か、と思ったらfopen等は古い形式と言われ

p = (char*)text.GetBuffer( text.GetLength() * sizeof( TCHAR ) );
FILE*fpw;
fopen_s( &fpw, "test2.txt", "w" );
fwrite( p, sizeof( TCHAR ), text.GetLength(), fpw );
fclose( fpw );
text.ReleaseBuffer();

をやったら、、、「h o g e」

やっぱ同じじゃーん・・・。
もうダメポ・・・。
489デフォルトの名無しさん:2006/04/15(土) 18:44:53
すげえ馬鹿
490デフォルトの名無しさん:2006/04/15(土) 18:55:13
>>488
超初心者未満はお引取りください
491デフォルトの名無しさん:2006/04/15(土) 19:13:21
TCHARというのは、ある時はchar、ある時はwachar_tになる型で、
ある意味charでもwchar_tでも無い型なわけだから、双方ともに変換がいるわけ

//面倒だから#include <atlconv.h>しとけ。

USES_CONVERSION;
char *p = T2A( LPCTSTR(text) );
FILE*fpw;
fopen_s( &fpw, "test2.txt", "w" );
fwrite( p, 1, strlen(p), fpw );
fclose( fpw );
でいけるとおもう。
まあ、CStringじゃなくて、CStringAを明示的に使う手もか。
492デフォルトの名無しさん:2006/04/15(土) 19:18:10
構造体を二重配列で持ちたいのですが、宣言と領域確保をどうすればいいのか教えてもらえないでしょうか?

具体的には、現在、下記のような構造体で
 m_structCONVERTSET[n]
として使っているのを
 m_structCONVERTSET[n][m]
として使いたいのです。(n,mは変動)


typedef struct convertset{
BOOL bCodeConvert;
CStringArray gCodeTableArray;
} CONVERTSET;

CONVERTSET*m_structCONVERTSET;

int nMaxSize = 10;//最大値は変動。
m_structCONVERTSET = (struct convertset *)malloc( sizeof(struct convertset) * nMaxSize );//領域確保
493デフォルトの名無しさん:2006/04/15(土) 19:19:42
std::vector< std::vector< CONVERTSET > >でよくね?
494デフォルトの名無しさん:2006/04/15(土) 19:36:00
>>488
CString BOM(_T("\ufeff"));
CString text(_T("hoge"));
CString out = BOM + text + _T("\r\n");
CFile cf(_T("test2.txt"), CFile::modeCreate | CFile::modeWrite);
cf.Write(out, out.GetLength()*2);
cf.Close();
可変長の文字列を扱うなら素直にiostreamかstdioを使ったほうがいいと思うがな。
495デフォルトの名無しさん:2006/04/15(土) 19:59:28
>>493
すいません、それをどう使えばいいのでしょうか。
496デフォルトの名無しさん:2006/04/15(土) 20:16:17
タスクバーアプリを作りたいんだけど
どうしても左隅にウィンドウが残ってしまいます。
どうしたよいでしょうか?
497デフォルトの名無しさん:2006/04/15(土) 20:17:38
見なかったことにする・・・とか
498481:2006/04/15(土) 23:40:38
>>490
そう苛めてくれるな、もう引き取るよ・ω・

>>491
>>494
アリガトー、エロイ人!
499デフォルトの名無しさん:2006/04/16(日) 08:39:13
>>481=484=485=488=498
そう短気にならずに粘って下さい。

ここの板は技術なのに、すぐ人格に言及しようとする性向の人が出て来ます。
2ちゃんねるは、そういう人も混じるところ。駅のホームかどこかで
ヒマにあかせて打っていたりする。欲求不満の捌け口にしている人もいる。

昔の言い方をすれば、お天道さまが見ている。そのうち天罰が当たるでしょう。
500デフォルトの名無しさん:2006/04/16(日) 17:34:20
libファイルって何ですか?
501デフォルトの名無しさん:2006/04/16(日) 17:49:31
>>500
Static Link Libraryのことだよ。
502デフォルトの名無しさん:2006/04/16(日) 21:35:46
>>500
501の言う静的ライブラリの場合とDLLを参照するためのインポートライブラリである場合の2種類がある。
静的ライブラリは単にオブジェクトファイルを固めたようなもの。
インポートライブラリは、関数などの実体がDLLにあるという情報が書かれている。
503500:2006/04/16(日) 21:55:30
フリーで配布されてるDLLを使いたいんですが、
dllとdefファイルしか入ってないんです。
普通、libファイルないと組み込めないですよね?・・・
でも、皆さんそれだけて作ってるようなので
libファイルって結局なんなのかなぁとか思って質問したのですが。

dllからlibファイルを生成するようなツールってあるんですか?
504デフォルトの名無しさん:2006/04/16(日) 22:20:51
作ってるやつに直接聞くのが常識
505デフォルトの名無しさん:2006/04/16(日) 23:11:09
libでdefファイルから生成できることがわかったんですが、
LKN1106エラーで結局作れてません・・・
ちなみに使おうとしてるのはSQLiteです。

VS2005落とさないとだめなのかなぁ・・

506デフォルトの名無しさん:2006/04/16(日) 23:12:29
>>503
その場合、defファイルにDLLインポート用のことが書かれているはず。
つまりお前がlibに期待している役割を担っているはずということだ。
507デフォルトの名無しさん:2006/04/16(日) 23:13:08
>>505
libを作らなくてもdefのまま使えなかったっけ?
508500:2006/04/16(日) 23:20:05
>>506>>507
libファイルを作らなくても使えるんですか?
509499:2006/04/17(月) 07:46:20
アイフルの取立て屋の録音聞いていると、2チャンネルでたまにお見かけする
言葉使いだな。やっぱ、バチが当たったな。
510デフォルトの名無しさん:2006/04/17(月) 08:43:18
>>508
APIのLoadLibraryを使えばできる。これでがんばれ。

LIB /DEF でインポートライブラリを作るときは元になるOBJも必要で、
この指定がないとカラのライブラリが出来る。

レガシーなDEFを使ってDLLとインポートライブラリを作るときは次のように指定するが
cl /LD xxx.cpp /link /DEF:xxx.def
説明のためにまどろっこしい順序で実行すればこう
cl /c xxx.cpp
lib /DEF:xxx.def xxx.obj  ここでインポートライブラリができる。 xxx.objを忘れずに。
link xxx.obj xxx.exp     ここでDLLができる

つまりDEFだけあってもインポートライブラリは作れない。
511デフォルトの名無しさん:2006/04/17(月) 08:47:07
一箇所訂正
link xxx.obj xxx.exp
link /DLL xxx.obj xxx.exp (正)
512デフォルトの名無しさん:2006/04/17(月) 18:42:46
LoadLibarayでやるのは無理です。
インポートライブラリを作るときもオブジェクトファイルが必要なんですか。。。
ぅーん。困った。
513デフォルトの名無しさん:2006/04/17(月) 18:50:15
誰も困ってないからどうでもいいや
514デフォルトの名無しさん:2006/04/17(月) 18:54:36
>>512
インポートライブラリの目的は、defで定義された関数がobjのどこから見つかるかを知り
スムーズにDLLを呼び出すことにある。
515デフォルトの名無しさん:2006/04/17(月) 21:00:19
DLL作ったやつ > DLL使うやつ > このスレで質問に答えるやつ
情報量はこの順に多いわけだし
俺ならDLL作ったやつに直接聞くけどな
516デフォルトの名無しさん:2006/04/17(月) 21:22:37
>>515
だれや、DLLを作ったやつって?
517デフォルトの名無しさん:2006/04/17(月) 21:35:23
VC6(MFC)なんですが ちょっと質問です

ieをオプションつきで起動(メニューバーとかない状態)、
ブラウザ内のHTMLドキュメント読み込みがcmpleteまで待機、
ieのウィンドウハンドルを取得

までをやりたいのですが
VBScriptだと簡単にできたのですが、
これをVCでやるには、、、、


VBだとちなみに
CreateObject("Wscript.〜") でieを .Run で立ち上げてパラメータ絵をセットしていました
518512:2006/04/17(月) 22:01:34
俺が使おうとしてるのはSQLiteです。
519デフォルトの名無しさん:2006/04/18(火) 00:58:35
始めまして、質問させてください。
超初心者でVisual C++ 2005 Express Editionを使って勉強し始めました。
とりあえずウィンドウを表示しようとしていますが、

fatal error C1083: include ファイルを開けません。
'windows.h': No such file or directory

といったエラーが出てコンパイルできないのです。
どうしたらいいものでしょうか、2日ほどPCと睨めっこでそろそろ挫けそうです。
520デフォルトの名無しさん:2006/04/18(火) 01:01:11
Visual C++ 2005 Express Edition
では、.Net以外の開発はできないはず

ようはC言語の勉強は無理です

どうしてもというならば、そのファイルを度j個からかほろってくると
521デフォルトの名無しさん:2006/04/18(火) 01:09:58
>>517
COM使うんなら基本的にやり方は同じ。
522デフォルトの名無しさん:2006/04/18(火) 01:12:52
>>521

たとえば

var wShell = CreateObject("Wscript.Shell")

って一文をVCに直すにはどうすれば(;´д⊂)
523デフォルトの名無しさん:2006/04/18(火) 01:24:33
>>520
C言語自体は可能だろ。
524デフォルトの名無しさん:2006/04/18(火) 01:57:31
2005って.netしか無理なの?
525デフォルトの名無しさん:2006/04/18(火) 01:59:57
んなこたーない
526デフォルトの名無しさん:2006/04/18(火) 03:04:57
>>519
Express Editionには Windows SDKがついてこないので、
windows.h系の開発がしたければ別途Windows SDKをダウンロードしてインストール。
どこかのスレに設定の方法がアップしてあったが流れて見当たらない。
ぐぐったら出てくると思うから探してみて。
527デフォルトの名無しさん:2006/04/18(火) 03:08:20
つーか他のスレで同じ質問してるな。
Platform SDK だった。
528デフォルトの名無しさん:2006/04/18(火) 09:20:10
>ようはC言語の勉強は無理です

あふぉ?
Windows の API や GUI まわりと
言語との間になんの関係が?
529デフォルトの名無しさん:2006/04/18(火) 09:33:08
Win32コンソールアプリケーションを作っています。
ソースファイル(CPPファイル)に「IsRegistoryInstalled」という関数を作ったのですが、ビルドすると、「エラー2 error C3861:'IsRegistoryInstalled': 識別子が見つかりませんでした」と出てしまいます。
そこで、この関数をヘッダファイル(Hファイル)に移してビルドすると、
「エラー1 error C2065: 'strValue' : 定義されていない識別子です。」とでてきます。strValueはCString型です。どうも、ヘッダファイルではCString型を使えないようです。
ヘッダファイルにも、「#include "stdafx.h"」としたんですよ。ウイザードでも、MFCを使えるように選択しました。
ヘッダファイルでだけMFCが使えないなんておかしくないですか?
Win32コンソールアプリケーションでMFCを使えるようにするにはどうしたらいいのでしょうか?
ご存知の方、よろしくご教授願います。
530デフォルトの名無しさん:2006/04/18(火) 09:37:40
>>529
まずC言語の基本的事項は分かってる?
プリコンパイルヘッダについても理解してる?
それに加えてC++の基本的なことも勉強してから
MFCに取り組んだ方がいいと思う。

あと、registry の綴りが間違ってる。
531デフォルトの名無しさん:2006/04/18(火) 11:27:18
レジストーリー
きっと、POS端末に物語をインストールするんだよ。
532デフォルトの名無しさん:2006/04/18(火) 12:05:49
Win32コンソールアプリケーションを作っています。
ソースファイル(CPPファイル)に「IsRegistoryInstalled」という関数を作ったのですが、ビルドすると、「エラー2 error C3861:'IsRegistoryInstalled': 識別子が見つかりませんでした」と出てしまいます。
そこで、この関数をヘッダファイル(Hファイル)に移してビルドすると、
「エラー1 error C2065: 'strValue' : 定義されていない識別子です。」とでてきます。strValueはCString型です。どうも、ヘッダファイルではCString型を使えないようです。
ヘッダファイルにも、「#include "stdafx.h"」としたんですよ。ウイザードでも、MFCを使えるように選択しました。
ヘッダファイルでだけMFCが使えないなんておかしくないですか?
Win32コンソールアプリケーションでMFCを使えるようにするにはどうしたらいいのでしょうか?
ご存知の方、よろしくご教授願います。
533デフォルトの名無しさん:2006/04/18(火) 12:08:30
適当にやるんじゃなくて、ちゃんと依存関係を考えて記述汁
534デフォルトの名無しさん:2006/04/18(火) 12:08:51
Win32コンソールアプリケーションを作っています。
ソースファイル(CPPファイル)に「IsRegistoryInstalled」という関数を作ったのですが、ビルドすると、「エラー2 error C3861:'IsRegistoryInstalled': 識別子が見つかりませんでした」と出てしまいます。
そこで、この関数をヘッダファイル(Hファイル)に移してビルドすると、
「エラー1 error C2065: 'strValue' : 定義されていない識別子です。」とでてきます。strValueはCString型です。どうも、ヘッダファイルではCString型を使えないようです。
ヘッダファイルにも、「#include "stdafx.h"」としたんですよ。ウイザードでも、MFCを使えるように選択しました。
ヘッダファイルでだけMFCが使えないなんておかしくないですか?
Win32コンソールアプリケーションでMFCを使えるようにするにはどうしたらいいのでしょうか?
ご存知の方、よろしくご教授願います。
535デフォルトの名無しさん:2006/04/18(火) 12:09:22
Win32コンソールアプリケーションを作っています。
ソースファイル(CPPファイル)に「IsRegistoryInstalled」という関数を作ったのですが、ビルドすると、「エラー2 error C3861:'IsRegistoryInstalled': 識別子が見つかりませんでした」と出てしまいます。
そこで、この関数をヘッダファイル(Hファイル)に移してビルドすると、
「エラー1 error C2065: 'strValue' : 定義されていない識別子です。」とでてきます。strValueはCString型です。どうも、ヘッダファイルではCString型を使えないようです。
ヘッダファイルにも、「#include "stdafx.h"」としたんですよ。ウイザードでも、MFCを使えるように選択しました。
ヘッダファイルでだけMFCが使えないなんておかしくないですか?
Win32コンソールアプリケーションでMFCを使えるようにするにはどうしたらいいのでしょうか?
ご存知の方、よろしくご教授願います。
536デフォルトの名無しさん:2006/04/18(火) 12:12:24
普通に使えたけど
どうしたら使えなくなるか教えてほしいなあ
537デフォルトの名無しさん:2006/04/18(火) 12:59:35
ExpressEditionで勉強しています。
入門書の1冊目が終わったので、とりあえず何か作りたいと思います。
カレンダーを作るには、どうしたらいいのでしょうか?
ヒントでもいいのでお願いします。
JavaのCalendarクラスのようなものは、C++にはないのでしょうか?
538デフォルトの名無しさん:2006/04/18(火) 13:07:52
時計やカレンダのサンプルならいくらでもあるだろう
コントロールでよければ貼るだけだし
539デフォルトの名無しさん:2006/04/18(火) 13:11:18
>>538
見つけたのですが、こういう感じで作るのが普通なのですか?
カレンダーは自分で作成しないといけないのですか?

http://www.h4.dion.ne.jp/~zero1341/c/11a/c11a.cpp
540デフォルトの名無しさん:2006/04/18(火) 13:41:25
このサンプルコードが
http://www5.airnet.ne.jp/tomy/cpro/etc20.htm

error C2011: 'tm' : 'struct' 型の再定義
c:\program files\microsoft visual studio 8\vc\include\time.h(119) : 'tm' の宣言を確認してください。
error C2079: 'date' が 未定義の struct 'tm' で使用しています。
error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
error C2027: 認識できない型 'tm' が使われています。
c:\program files\microsoft visual studio 8\vc\include\time.h(119) : 'tm' の宣言を確認してください。
error C2228: '.tm_mon' の左側はクラス、構造体、共用体でなければなりません
error C2027: 認識できない型 'tm' が使われています。
c:\program files\microsoft visual studio 8\vc\include\time.h(119) : 'tm' の宣言を確認してください。
error C2227: '->tm_mday' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。
error C2027: 認識できない型 'tm' が使われています。
c:\program files\microsoft visual studio 8\vc\include\time.h(119) : 'tm' の宣言を確認してください。
error C2227: '->tm_mon' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。
error C2027: 認識できない型 'tm' が使われています。
c:\program files\microsoft visual studio 8\vc\include\time.h(119) : 'tm' の宣言を確認してください。
などどエラーが53個出て動かないのですが、tmの宣言をどういうふうに
変えたらいいのでしょうか・・・?
541デフォルトの名無しさん:2006/04/18(火) 13:45:52
Cでコンパイル
542デフォルトの名無しさん:2006/04/18(火) 16:01:06
サンプルコードにあったのですが、
lpCmdLineの前に付いている*はどのようなときに付くのでしょうか?

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR lpCmdLine, int nShow)
{
// データファイルから起動されたときの処理
if (*lpCmdLine)
{
// フルパスのファイル名をコピーする・ただし、両側の引用符を削除する
strcpy(FileName, *lpCmdLine == '"' ? lpCmdLine+1 : lpCmdLine);
int pos = strlen(FileName) - 1;
if (pos > 0 && FileName[pos] == '"')
FileName[pos] = 0;

GetFileTitle(FileName, FileTitle, sizeof(FileTitle)-1); // 短い名前
bOpenStart = TRUE; // フラッグ
}
543デフォルトの名無しさん:2006/04/18(火) 16:17:15
そんなレベルじゃVCやるのは100年早い
544デフォルトの名無しさん:2006/04/18(火) 16:21:39
100年後は生きていません
545デフォルトの名無しさん:2006/04/18(火) 16:29:47
>>542
超初心者未満はお引き取りください。
546デフォルトの名無しさん:2006/04/18(火) 17:18:30
>>542
C或いはC++が身についているかどうか怪しいのに、
C或いはC++でWindowsプログラミングをしようなんて、狂気の沙汰。
547デフォルトの名無しさん:2006/04/18(火) 17:44:42
フローチャート書くとこから始めればいいんぢゃね?
548デフォルトの名無しさん:2006/04/18(火) 18:54:23
俺はCを一通り終わらせたあとにWinAPIやったが、そこで詰まることはなかったな
LPTSTRのLPはポインタを表す。ポインタにつける*の意味は分かるよな?
549デフォルトの名無しさん:2006/04/18(火) 18:56:39
>>522
#importを使っていけばこんな感じ。
#undef GetWindowStyle
#undef GetFreeSpace
#import <wshom.ocx>

int main()
{
    IWshRuntimeLibrary::IWshShellPtr wShell;
    HRESULT hr = wShell.CreateInstance(L"Wscript.Application");
}
550初心者以下:2006/04/18(火) 19:54:22
マイクロソフトのVisual Studio.netというソフトを自分のノートパソコンにインストールしたいのですが、プロバイダと契約していないのでインターネットからインストールできません。何か他にインストールする方法をご存知の方教えて下さい。
551デフォルトの名無しさん:2006/04/18(火) 20:00:47
売ってる店を探す。あったらそこへ買いに行く。
552デフォルトの名無しさん:2006/04/18(火) 20:01:30
553初心者以下:2006/04/18(火) 20:09:22
レス本当にありがとうございます。
3万円…かなりするもんですね…。一度インストールしてしまえばもう使わないのに。どうしよう…。
554デフォルトの名無しさん:2006/04/18(火) 20:12:10
( ゚д゚)ポカーン
555初心者以下:2006/04/18(火) 20:18:13
3万円もしませんでしたね苦笑。通信販売で購入考えてみます。(たくさん種類があってよくわかりませんが…)本当にありがとうございました。本当に助かりました。
556デフォルトの名無しさん:2006/04/18(火) 20:35:17
ttp://umeici.hp.infoseek.co.jp/files/aya5_240.zip
↑のソースをVC7SP1でビルドしようとしているのですが、
error C2955: 'std::collate' : クラスのテンプレート名で仮引数リストの指定がありません。
というエラーが出てビルド出来ません。
「boost::reg_expression<wchar_t>」は「boost::wregex」に置換してあります。
Boostは1.33.1でregex関係しか入れてません、ググっても全くわかりませんでした。
お願いします。
557デフォルトの名無しさん:2006/04/18(火) 21:25:18
こんな馬鹿もVC使う時代になったのか
ちょっと信じられない
558初心者以下:2006/04/18(火) 21:34:09
大学1年で、今月パソコン買ったばかりです。家にパソコンがなかったのでパソコンに関しては無知です。エクセルやワードすら最近使えるようになりました…
559556:2006/04/18(火) 21:46:14
ソース内ではcollateを呼び出してる箇所が見当たらないで、わけがわらなくて。
それとも何か、指定しないと駄目なんでしょうか。
560デフォルトの名無しさん:2006/04/18(火) 22:43:14
>>553
一度インストールしてしまえばもう使わないとは、
つまりハードディスクの肥やしにするということですか?
561デフォルトの名無しさん:2006/04/19(水) 00:03:48
>>558
何のために買うの?
>>560の通り?
562519:2006/04/19(水) 00:28:24
>526さん
レスありがとうございます。
しかし、既に「Platform SDK」は既にインストールされています、インストールの仕方を間違えてるのかもしれません。
もうちょっとがんばってみます。
563デフォルトの名無しさん:2006/04/19(水) 17:18:38
インストールしただけで、パスの設定をしていないだろ。
564556:2006/04/19(水) 18:32:20
変なことして、自己解決。
どっかでバグ出そうだけどしょうがない。
565デフォルトの名無しさん:2006/04/19(水) 19:11:26
回答もらいたいからあげるけどさ
今まで何も疑問もなく使ってきた
GetWindowTextとSetWindowTextだが
エディットボックスに単独で「/」って入れると文字化けするのはなぜ?
GetWindowTextって勝手に最後に\nか\0かつけてたっけ

解決法もキボン
566デフォルトの名無しさん:2006/04/19(水) 19:20:37
どう文字化けするかといったら
「/」が「*s」になる。

567デフォルトの名無しさん:2006/04/19(水) 19:55:05
すまんこ
俺が勘違いしてただけだった
568デフォルトの名無しさん:2006/04/19(水) 21:17:04
なんだかよくわからないので、ここで質問

今、IMEを制御するプログラムをいじってるんだが、こんな風にするとパソコンが
フリーズする。なぜだろうか?
プログラムをデバッグモードで起動して→IMEを全角/半角キーで起動
→ウィンドウプロシージャの中にデバッグポイントを打って
→そこでステップ移動をすると高確率でフリーズ・・・
どうも、IMEを起動してる状態でデバッグのステップ移動をしていると
フリーズするみたいなのだが、どういうことだろうか?
また、普通にデバッグをせずにプログラムを起動した時は普通に問題なく
動いてる。つまり、デバッグのステップ移動時にしか起こらない症状。

環境は .net2003+XPのsp2
回答を頼む。

ついでに、おーage age
569デフォルトの名無しさん:2006/04/19(水) 22:12:06
VC7+IMEでフリーズ ってどこかで読んだような気がした
570デフォルトの名無しさん:2006/04/20(木) 11:32:13
レジストリやiniファイルで設定された値を基に
起動時コンボボックスに表示する項目を変えたいのですが

void ChogeDlg::OnPaint()
{
if (IsIconic())
{
.................................
}
else
{
// ここでコンボボックスリストの初期化
}
}

ここでいいのでしょうか?
とりあえず上手く行ってはいますが、自信がありません。
571デフォルトの名無しさん:2006/04/20(木) 11:55:04
鼻から牛乳噴いた。

WM_CREATEでやるもんじゃね?
572デフォルトの名無しさん:2006/04/20(木) 12:26:21
>>571
嘘はいいよ
573デフォルトの名無しさん:2006/04/20(木) 12:31:14
571の人気に嫉妬
574デフォルトの名無しさん:2006/04/20(木) 13:29:31
>>570
どこでもいい。
575デフォルトの名無しさん:2006/04/20(木) 13:47:42
WM_INITDIALOG
576571:2006/04/20(木) 17:51:46
あぁ、すまん。ダイアログね。鼻から牛乳噴いてくるー
577デフォルトの名無しさん:2006/04/20(木) 21:25:05
VisualStudio2003のVC++で派生クラスの親を基底クラスのvectorにすると、
基底クラスにCArrayを使うとコンパイルが通らなくなります。
ClassA : public ClassB な場合に、ClassBのメンバにCArrayを使えません。
(コピーコンストラクタが使えないと言われ、作るとマネージにしろと怒られる)

CTypedMapPtrのCMapStrToObjでもVALUEに指定するクラスに多重継承を使うと
CMapStrToObjのメソッドが使えなくなります。
CTypedMapPtr<CMapStrToObj, CString, ClassC*>な場合に、
ClassC : public ClassD, public ClassC ではCTypedMapPtrのメンバしか
見えなくなります。

これはどちらも仕様として諦めるしかないのでしょうか?
過去に同じような問題で解決できた方がいらっしゃいましたらご教示お願いします。
578デフォルトの名無しさん:2006/04/20(木) 21:26:57
すみません、上の
ClassC : public ClassD, public ClassC は、
ClassC : public ClassD, public ClassD の間違いです。
579デフォルトの名無しさん:2006/04/20(木) 21:27:38
ClassC : public ClassD, public ClassE でした・・・orz
580デフォルトの名無しさん:2006/04/21(金) 00:10:51
>>568
これかな。俺は2kだけどよく同じ現象にやられる。IME切っとけば回避できるけど。
でも、SP1で修正されたことになってるな…
ttp://support.microsoft.com/default.aspx?scid=kb;ja;JP418661

ちなみに完全にフリーズしたわけじゃないから、
何時間か我慢してれば元に戻るよ。
581デフォルトの名無しさん:2006/04/21(金) 01:21:42
>>577
STLを使っているのにCArrayを使うと言うセンスが理解できない。
582デフォルトの名無しさん:2006/04/21(金) 01:22:06
VC6にプラットフォームSDK 2003SP1 は入れても全てがきちんと動かないって書いてあるんだけど度
ie関連のATLだけこうしんできないかね?
583デフォルトの名無しさん:2006/04/21(金) 07:23:19
>>581
実は上のケースでvectorのほかにも連想記憶を使いたかったのですが
同様の理由で無理だったのでCArrayにも実体を保持して誤魔化そうかと
考えていました。
今は単純な継承のCMapとCArrayで誤魔化していますが、STLではもっと
スマートな解決策があるのでしょうか?
調べては見たものの良い方法が見つからないのでぜひお教えください。
584デフォルトの名無しさん:2006/04/21(金) 07:54:30
>派生クラスの親を基底クラスのvectorにする
ここがいまいち分からないけど
class D : public std::vector< B >
ってこと?
585デフォルトの名無しさん:2006/04/21(金) 11:05:38
vc++6.0使ってます。

リソースエディタでダイアログにリストボックス付けたのですが、
リストに文字列を設定するにはどうしたらいいですか?
586デフォルトの名無しさん:2006/04/21(金) 11:19:03
おいおい、そんな調子でVC使っていけるのか?
587デフォルトの名無しさん:2006/04/21(金) 11:31:11
大丈夫、わからないときはまた聞くから。
588デフォルトの名無しさん:2006/04/21(金) 11:35:24
頭にぱっと10通りぐらい思いついたけど
やってみないと実際使えるかどうかわからん。
589デフォルトの名無しさん:2006/04/21(金) 13:41:07
MFCならクラスウィザードでそのダイアログのクラス作って
変数の追加でリストボックスのコントロール追加して
メッセージのWM_INITDIALOGでリストボックスの変数にAddStringする

これでよかったっけ
590デフォルトの名無しさん:2006/04/21(金) 14:49:14
>>589

ご返答ありがとうございましたm(_ _)m
いろんな参考書を見つつやっていて、まだよくわかってないのですが
アドバイスいただいたキーワードを元に、もっと調べてみます;
591デフォルトの名無しさん:2006/04/21(金) 15:05:45
SendInputの実験しようと思って、以下のようなコンソールアプリを作ってみたのですが、
 「'INPUT' : 定義されていない識別子です。」
ってでてしまいコンパイルできません。
INPUT構造体はwinuer.hで定義されてるので、windows.hをincludeしとけば問題ないと思うのですが、
なにか他にやらなければいけないことがあるのでしょうか?

環境はWin2000+VC6です。


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

int main() {

INPUT input;
input.type = INPUT_MOUSE;
input.mi.dwFlags = first | second;
SendInput(1, &input, sizeof(INPUT));

return 0;
}
592デフォルトの名無しさん:2006/04/21(金) 15:14:13
winuer.h 使うならdllがいるのでは?
593デフォルトの名無しさん:2006/04/21(金) 15:21:13
>>591
winuser.hを見ればわかる。
594591:2006/04/21(金) 15:46:04
#define _WIN32_WINNT 0x0500って追加してもまだ出てしまう・・・
595デフォルトの名無しさん:2006/04/21(金) 16:07:36
コンソールアプリからAPIを使う方法を調べればいいんじゃないか?
596568:2006/04/21(金) 17:14:02
>>569 >>580
やっぱり、仕様っぽいですね・・
IMEの時は、デバッグのステップ移動をしないようにして
対処するしかないみたいだね。

ありがとう。安心した。
597デフォルトの名無しさん:2006/04/21(金) 17:47:45
>>591
stdafx.hの中も見ておいたほうがよさそうな予感。
598デフォルトの名無しさん:2006/04/21(金) 22:59:59
>>584
そうです、>>577の例で言うと
ClassA : public vector<ClassB>
としていましたが、ClassBにCTypedMapPtrやCArrayのメンバを追加して
複数のキーで検索できるようにしたいと思っていました。

今日仕事帰りに本屋によって数時間探してみたのですが、
mulitimapというのが使えるかもしれないので調べてみようと思います。
ヒントになる情報をくれた>>581さんもありがとう。
599デフォルトの名無しさん:2006/04/21(金) 23:11:04
そもそもSTLのコンテナは継承されるような作りではない。
600デフォルトの名無しさん:2006/04/22(土) 07:00:14
おれ、 std::vector<T> 継承しまくりw
601デフォルトの名無しさん:2006/04/22(土) 09:26:30
this->push_back()できて[]で参照できて便利なんだよね。
連想配列メンバとoperator[]でも実装できるんだけど。
602デフォルトの名無しさん:2006/04/22(土) 11:29:43
VC++V6.0で書かれたソースコードのメニューを
取っ払いたいんだがその方法が分からない。
どうやったら消えるのか教えてほしい。
リソースエディタで編集できるまでは分かったものの
それで消せるようには見えない。
リソースファイルやアイコンファイルをプロパティの設定で
「ビルドしない」にしてもしつこくメニューが出てくる。

ちなみにソースコードは
http://hirotake.web.infoseek.co.jp/

InverseKinematic.lzh (231KB) (Visual C++ Ver 6.0用)
(解凍したら「ワークスペースを開く」でInverseKinematic.dswをクリックするだけでビルド準備OK)

どうか教えてくれ。
603デフォルトの名無しさん:2006/04/22(土) 11:50:16
>>1-602
基礎を飛び越そうとしても良い事無いぞ。
地道が一番。
604デフォルトの名無しさん:2006/04/22(土) 13:09:40
VC6ということは理解してるようだが、
SDK MFC ATL WTL その他があることすら知らないようだ。
605602:2006/04/22(土) 13:19:31
いやMFCだが、それがこの問題と関係あるのか?
あまり無駄なやりとりで暇を潰している暇はないんで手短に頼む。
それともこのスレタイと>>1は偽りなのか?
それなら他で聞くが。
606デフォルトの名無しさん:2006/04/22(土) 13:24:58
だったらさっさと他で聞け
607デフォルトの名無しさん:2006/04/22(土) 13:29:37
質問者が回答者を怒らせてどうする
608602:2006/04/22(土) 13:33:39
いや、馬鹿回答者が既に十分俺を怒らせてるだろ。
以下、ここでは質問しない方がいいよ、ここの住人みんな馬鹿だから。
じゃーな、ばーーーーーーか。( ´,_ゝ`)プッ
609デフォルトの名無しさん:2006/04/22(土) 13:41:22
ばいばーい
610デフォルトの名無しさん:2006/04/22(土) 14:09:58
リソースエディタで編集できるとわかったのに、消せると思わないところが不思議だ。
611デフォルトの名無しさん:2006/04/22(土) 15:45:40
どうせ違法コピーでヘルプもMSDNもろくに読んでないんだろうが
くだすれにもホドがあると言う事だな
612デフォルトの名無しさん:2006/04/22(土) 17:04:32
けんくぁわやめようよぉ〜
613デフォルトの名無しさん:2006/04/22(土) 17:34:42
VS2005Expressが無償で手に入る時代に違法コピーをする意味がわからんだす
614デフォルトの名無しさん:2006/04/22(土) 17:35:27
VC6.0を未だに使いつづける神経がわからんな。
615デフォルトの名無しさん:2006/04/22(土) 17:39:21
>>613-614
公開した人間がVC6用だと書いているからVC6を入手したんだよ、きっと。
616デフォルトの名無しさん:2006/04/22(土) 20:25:44
学校で、C++の授業が始まったんですが、
ハローワールド打っても、コマンドプロンプトみたいな画面でできます。

GUIのWinアプリの場合はその他に何を弁居売れ売いんでしょう?
617デフォルトの名無しさん:2006/04/22(土) 20:30:24
>>616
お前の頭にウィンドウズプログラミングの知識を入れればよい。

ただし、お前がプログラミングを始めたばかりなら今すぐはやめとけ。
いわば、プログラミング言語の習得そのものを基礎とすれば
ウィンドウズプログラミングは応用・実践にあたることだから。
618デフォルトの名無しさん:2006/04/22(土) 20:30:36
>>616 GUI なアプリなんて
学校の授業と関係ないだろ。
寝てろ。
619デフォルトの名無しさん:2006/04/22(土) 21:22:25
>>616
窓プログラミングは難しい
620616:2006/04/22(土) 21:23:45
ありがとうございます。
vectorとかの作者さんたちはみなやっぱり凄腕なんですね!
とりあえず、C++の授業がすべて終わったら、応用に取り掛かってみようと思います。
621デフラグさん ◆mRgSYalFkQ :2006/04/22(土) 21:23:57
>>616

  [゚д゚] デフラグガカンリョウシマシタ
 /[_]ヽ
  | |
++CGIUWin、、、。いいうががきしすすそたたっってでででででなにののののはままみもょれをんんアコトド
ドハプププマリルロロワンンーー他何合場売売始学居弁打授校業画面?
622デフォルトの名無しさん:2006/04/22(土) 21:29:14
>>620
アレは一番最初が一番きつい。精神的に。
623デフォルトの名無しさん:2006/04/22(土) 23:41:42
C++が全部終わるまで待つ必要は無いけど、向き不向きがはっきりしてくる団塊でもある。
つか、C/C++の授業なんか待ってないで独学でガシガシ読み進めるだけの貪欲な学習欲と
根性が無ければ長続きしないと思うよ。
624デフォルトの名無しさん:2006/04/22(土) 23:52:27
素人・C++でGUIならBCB進めるけどね
625デフォルトの名無しさん:2006/04/23(日) 00:58:39
BCBは恐ろしい言語だ。
C++はおろか、ポインタすら知らなくてもプログラムができてしまう。
626デフォルトの名無しさん:2006/04/23(日) 01:21:44
BCBって何ですか?
627デフォルトの名無しさん:2006/04/23(日) 01:45:15
左肩に打つはんこみたいな注射のことだよ。
628デフォルトの名無しさん:2006/04/23(日) 01:45:49
それはBCG
629デフォルトの名無しさん:2006/04/23(日) 01:58:59
ロマンティックが止まらない
630デフォルトの名無しさん:2006/04/23(日) 03:06:57
それはCC………ガールズ
631デフォルトの名無しさん:2006/04/23(日) 03:53:35
歌うときは D.D. GAPS になるはず。
632デフォルトの名無しさん:2006/04/23(日) 20:42:42

ファイルの中身を○バイト分シフトして同じファイルに上書き保存するにはどうすればいいですか?
シフトすることによって生まれた空間は無かった事にして上書き保存したいです。
633デフォルトの名無しさん:2006/04/23(日) 20:46:34
いったん全部読み込んで
fseekでバイト分移動してそこから書き込み始め
634デフォルトの名無しさん:2006/04/23(日) 20:47:39
fseekしてそこから読み込んで書き込みだった
635デフォルトの名無しさん:2006/04/23(日) 21:12:50
ありがおうとうあ
636デフォルトの名無しさん:2006/04/24(月) 02:10:51
巨大なファイルだったら全部読み込めない事もあるから、
書き込み用と読み込み用に一つずつ開いて、読み込みの方は
fseek()でずらしてから読み込み、書き込みファイルに転送。

全部終わったら、読み込みファイルを消去、次に書き込んだファイル
を読み込みファイルと同じだったファイル名にリネーム。
637デフォルトの名無しさん:2006/04/24(月) 02:12:19
書き込み用の一時ファイルは、他のファイル名と重ならない事が保証
されているtmpnam()を使って作成する。
638デフォルトの名無しさん:2006/04/24(月) 02:23:23
unix系でしかプログラム作ったことがなかったのですが、どうしてもWindowsで
動くプログラムを書かなければいけない羽目になって、初めてVC(VS2005)の
プログラムを参考書の山と格闘しながら作っています。

そのプログラムが無茶とは知りつつ通信系のプログラムで、CAsyncSocket
を使ってTCP/IPで通信するものなのですが、文字コード変換をどうやって
良いのかわからずに困っています。過去ログから、プロジェクトのデフォルト
文字コードを変更すればなんとかなりそうなことはわかったのですが、できれば
内部処理はUNICODEのまま、外部との通信をシフトJISやEUCで行いたい
のですが、簡単に使える変換ライブラリ(できれば、CStringとの相互変換)の
ようなものは、どこかにありませんでしょうか。

あまりのドキュメントの多さと、訳の分からない型の多さ、そしてただソースを
読みにくくしているとしか思えない(笑)ハンガリアン記法と独自の命名規則で
もう泣きそうです。TT
639デフォルトの名無しさん:2006/04/24(月) 02:24:37
>>638
ぐぐれ
640デフォルトの名無しさん:2006/04/24(月) 04:46:44
>>638
Cygwin(or Mingw)を使って、iconvを使えば殆どUnixのままのコードが動くのに。
641デフォルトの名無しさん:2006/04/24(月) 18:32:39
>>638
Shift JISならCString類の変換演算子やコンストラクタを使って、
const char *を取り出したりconst char*から初期化・代入したりできる。
642デフォルトの名無しさん:2006/04/24(月) 18:47:47
文字コードの変換はUnixだろうがWinだろうがやることは同じだぞ
標準ライブラリだけで可能だ
643デフォルトの名無しさん:2006/04/24(月) 18:51:00
>>642
UnicodeとSjisの相互変換をやる標準ライブラリはなんですか?
644デフォルトの名無しさん:2006/04/24(月) 18:53:24
EBCDICと(ry
645デフォルトの名無しさん:2006/04/24(月) 18:55:11
>>644
流石にそれは高々100程度のエントリの配列を用意するだけだろ。
646デフォルトの名無しさん:2006/04/24(月) 18:56:28
検索なんかしてる暇無いのではやく誰かおしえろ
647デフォルトの名無しさん:2006/04/24(月) 18:56:43
標準ライブラリを使ったテキスト処理
648デフォルトの名無しさん:2006/04/24(月) 19:00:54
xercesに入ってたっけ、単体は知らん。
unicode, sjisならWindowsのAPIにあった気がするが、unicodeは2byte固定だったかな。
649デフォルトの名無しさん:2006/04/24(月) 22:24:12
>>643
Windows上の処理系ではロケールを"japanese"などに設定すれば、
マルチバイトをShift JIS(CP932)、ワイド文字をUTF-16として、
mbstowcs/wcstombs類を始めとしたC/C++のマルチバイト・ワイド文字変換のライブラリが使える。

また、ロケールを""にするとシステム標準を使うと言うことで、
日本語版Windowsでなら"japanese"相当だが、
他国語版Windowsならその地域に適切なものが選ばれるようにもなる。
650デフォルトの名無しさん:2006/04/24(月) 23:33:28
templateについて今更ながら質問させてください。
デストラクタをcppファイル側に定義するとリンク時に外部参照エラーになり、
cppファイル側のデストラクタをコメントアウトしてヘッダ内でインライン定義
するとリンク出来て期待通りに動作もしてくれるのですが、デストラクタや
他の関数は大丈夫なため原因がよく判りません。

templateの場合はvirtual関数はインライン定義しか出来ないなどの制限が
有るのでしょうか?
651デフォルトの名無しさん:2006/04/25(火) 00:13:19
>>650
exportキーワード・・・・・・
652デフォルトの名無しさん:2006/04/25(火) 00:18:40
>>651
それVC++でも使えないだろ。
653638:2006/04/25(火) 00:34:42
みなさん、いろいろありがとうございます。レス遅れてすみません。

>>639
ググったらいろいろ出てきてしまって、どれが一般的な方法かわからなかった
ので、ここで皆さんにお聞きしてしまいました。

>>640
作らなきゃいけないプログラムが、Linux上のサーバーにWindowsからアクセス
するサンプルなので、Cygwinとかは反則になってしまいます ^^;

>>641
Shift JIS限定で、CAltString… 系と組み合わせればとりあえず変換できる
ことがわかりました。ググって引っかかったものにもあったので、とりあえずは
これで実装して、後で修正することにしました。

>>642
C/C++の標準ライブラリにそのような機能があるとは知りませんでした。
すみませんが、もう少し詳しく教えていただければ助かります。

ちょっと前の今は亡きCマガジンに、参考になりそうな記事があったようです
が、残念ながら手元にありません。機会があったら、バックナンバー置いて
ありそうな本屋に行ってみます。
654デフォルトの名無しさん:2006/04/25(火) 01:48:07
検索ダイアログを作ろうと考えています。
RegisterHotKeyで検索ダイアログをポップアップさせようとしているのですが、Visual C++のリソースエディタで作成したダイアログをポップアップさせることは可能なのでしょうか?
655デフォルトの名無しさん:2006/04/25(火) 07:04:14
つ【CDialog】
656デフォルトの名無しさん:2006/04/25(火) 08:16:23
ダイアログ出すのに悩むやつがいるんだ
657デフォルトの名無しさん:2006/04/25(火) 08:31:25
悩む。

今朝もトイレで起きようか、まだガマンしようかと悩んだよ。ダイヤログより簡単だが。
人生は悩み多し。
658デフォルトの名無しさん:2006/04/25(火) 09:06:03
>>653
流れ嫁。
>642はその後悉くからかわれている通り、何かの勘違いだ。
659デフォルトの名無しさん:2006/04/25(火) 09:35:58
ずばりそれ専用のライブラリがないと何もできないんだろうかね?
660デフォルトの名無しさん:2006/04/25(火) 09:38:07
ゆとりの賜物
661デフォルトの名無しさん:2006/04/25(火) 09:39:12
馬鹿はVBでも使ってろ
662デフォルトの名無しさん:2006/04/25(火) 09:51:44
>>659
EUC、SJIS、ISO-2022位は相互変換も簡単だが、Unicodeが絡むと面倒でね。
つーか、そんなことくらい承知の上での発言だよな。
663デフォルトの名無しさん:2006/04/25(火) 09:53:42
A2Wいいよ
664654:2006/04/25(火) 21:33:26
>>655
ダイアログはCDialogは使っていません。
今手元にソースがないので忘れてしまいましたが、関数にリソースIDを渡して表示させる関数を私用しています。
ダイアログを表示させたいのではなく、Ctrl + Fなどのホットキーでダイアログをポップアップさせたいのです。

>>656
ダイアログを出すのに悩んでいるわけではありません。
665デフォルトの名無しさん:2006/04/25(火) 21:35:20
(°д ゚)ハァ?
666デフォルトの名無しさん:2006/04/25(火) 22:30:34
OnKeyDownとかOnChar辺りで何とかならんの?
667デフォルトの名無しさん:2006/04/26(水) 13:08:43 BE:34938836-
普通はコマンドハンドラ当てておいてショートカットキーだよな。
668デフォルトの名無しさん:2006/04/26(水) 16:23:18
>>667
だよな。664 は隠しキーとかやりたいんかな。

むかし NEC の文豪にはよくあって遊んだ。
669591:2006/04/26(水) 17:10:17
>591
「プリコンバイル済みヘッダーファイルを使用しない」
にプロジェクトの設定を変えたらビルドできた。

なんでこうなるのだろう?教えてエロイ人
670デフォルトの名無しさん:2006/04/26(水) 17:15:24
プリコンバイル済みヘッダーの中に何か書いてあるから
671654:2006/04/26(水) 18:16:09
>>666
OnKeyDownはウィンドウのイベントハンドラですよね。
例えばエディタだったらメインウィンドウがひとつしかないから
それでよいかもしれないですが、どのウィンドウがアクティブになっていようが
たちどころに検索ダイアログを出すようにしたいわけです。

で、調べたら見つかったのがRegisterHotKeyだったのですが(猫でもわかる・・・の第193章)
ダイアログの作り方がだいぶ違い、それなりにコーディングしても
WM_HOTKEYに制御が来てなくて(ホットキー自体は設定できていたようですが)
そもそもVCのリソースエディタで作ったダイアログのプロシージャに
ホットキー制御を渡せるものかと疑問に思っている次第です。

>>667
隠しキーをしたいわけではないです。
672デフォルトの名無しさん:2006/04/26(水) 19:27:52
相手するやつがいるから
673デフォルトの名無しさん:2006/04/26(水) 19:36:10 BE:46584746-
>>671
>そもそもVCのリソースエディタで作ったダイアログのプロシージャに

そもそもダイアログリソースが何なのか理解できていない悪寒。
674デフォルトの名無しさん:2006/04/26(水) 19:36:54
相手するやつがいるから
675デフォルトの名無しさん:2006/04/26(水) 21:30:30
デバッグすると
プロジェクト : error PRJ0003 : 'cmd.exe' の起動中にエラーが発生しました。
と表示されてしまいます。
システム環境変数で、%SystemRoot%\system32 とやったのですけど改善されないんですけど・・・
どうすればいいんでしょうか。
676デフォルトの名無しさん:2006/04/27(木) 11:48:56
つ[諦め]
つ[挫折]
677デフォルトの名無しさん:2006/04/27(木) 12:39:43
それなんて言うライフカードのCM?
678デフォルトの名無しさん:2006/04/27(木) 19:42:26
ファイル内容をリストコントロールで表示するプログラムをVC++6.0で作成しているのですが、
サイズ表示のソートが下記のようになってしまい、サイズの大小ソートにすることが出来ません。
どうすればよいのでしょう?

  149byte
  15byte
18954byte

(InsertColumn時の列設定はLVCFMT_RIGHT)
679デフォルトの名無しさん:2006/04/27(木) 19:47:01
てめぇのプログラムがバグってるから。
680デフォルトの名無しさん:2006/04/27(木) 19:48:04
自分で比較用の関数用意する
681デフォルトの名無しさん:2006/04/27(木) 21:38:27
>>678
ソートされてるじゃん。
682デフォルトの名無しさん:2006/04/27(木) 22:51:04
俺の目にもソートされているように見える。
683デフォルトの名無しさん:2006/04/28(金) 00:29:45
文字列としてはしっかりソートされてるね。
684678:2006/04/28(金) 12:46:04
windowsのエクスプローラでの表示のように、数値としてソートされたいのですが。
685デフォルトの名無しさん:2006/04/28(金) 12:51:36 BE:23292443-
じゃあ数値としてソートすればいいんじゃねーの。
686678:2006/04/28(金) 14:30:31
カラムクリック時の自動ソートで実現したいのです。
(Winエクスプローラで言えば、『サイズ』をクリックすれば数値ソートされる。)

InsertColumn時に引数に何か入れるのか、SetItem時の引数に何か入れるのか、
どちらでも無いのか分からないのです。
687デフォルトの名無しさん:2006/04/28(金) 15:11:41
>>686
>680
688デフォルトの名無しさん:2006/04/28(金) 15:14:16
何でもかんでも自動でやれるなら、オマイ要らないやん。
689デフォルトの名無しさん:2006/04/28(金) 17:43:38
実際要らない子なんだろ。
690デフォルトの名無しさん:2006/04/28(金) 21:11:39
ここで聞けば自動的に教えてくれるじゃないですか
691デフォルトの名無しさん:2006/05/02(火) 11:07:00
質問です。
プロジェクトを編集して、デバッグするためにF5を押すと「プロジェクトの構成が変更されています ビルドしますか?」と表示されますが、
これが何も編集せずにF5を押しても出てくるようになってしまいました。
コンパイルオプションを変更した時と同じようにソースコード全体をコンパイルしてしまい時間がかかります。
この現象はデスクトップPCからノートPCにプロジェクトをコピー後、ノートPCでプロジェクトを開くと起こるようになりました。
一体何が起こったのでしょうか。
692デフォルトの名無しさん:2006/05/02(火) 11:12:51
取り敢えず、ディレクトリとファイルのパーミッションを疑ってみようか。
693デフォルトの名無しさん:2006/05/02(火) 12:57:09
>>692
レスありがとうございます
ファイルを調べているうちに、やっと原因がわかりました
原因はOSの日付が間違って設定してあったせいでした。
つまりデスクトップの日付がノートPC現在の日時より何日か進んでいたために、デスクトップで作成されたソースコードが常に新しいファイルとしてVCに検知されてしまっていたのです。
日時を正しく設定することの大切さを学んだ気がします。
694デフォルトの名無しさん:2006/05/02(火) 13:01:24
恐らくは、「プロジェクトファイルの日付が新しいままだから」だろうな。
695デフォルトの名無しさん:2006/05/03(水) 21:54:19
VC.NET 、VC++7 で
クラスの定義を .h に書き、実装を .cpp に書いて
なおかつコンストラクタやメンバ関数に inline キーワードをつけるとコンパイルが通らなくなります

inline を外すか、あるいはヘッダファイル中に実装まで全部記述すればいいようですが
どうしてファイルを分けたらダメなのでしょうか
696デフォルトの名無しさん:2006/05/03(水) 22:34:07
.hにあるプリプロセッサが.cppには・・・
いや分からんな
697デフォルトの名無しさん:2006/05/03(水) 23:17:24
inet_ntoa()と同じような関数を教えてください。
それかどこかに同じようなライブラリ無いですか?凄く困ってるんで教えてください。
inet_ntoa()は諸事情により使えません。
698デフォルトの名無しさん:2006/05/03(水) 23:42:58
自分で書いた方が早くね?
699デフォルトの名無しさん:2006/05/04(木) 00:37:44
>>695
コンパイラが各cppファイル(翻訳単位)をそれぞれコンパイルした後、
できたオブジェクトファイルをリンカがくっ付けて1つの実行ファイルを作っている。

コンパイラは各翻訳単位を独立にコンパイルしている。
だから1つの翻訳単位を処理しているときには他の翻訳単位に目が行かない。
目が行かないから関数がヘッダに無い場合inlineかわからないし、わかってもインライン展開できない。
700697:2006/05/04(木) 00:48:16
inet_ntoa()のアルゴリズムを参考にしたいのですが、
WinSock.hの中身はどうしたら見れますでしょうか?
701デフォルトの名無しさん:2006/05/04(木) 00:51:17
つ メモ帳
702デフォルトの名無しさん:2006/05/04(木) 00:58:42
>>699
ありがとうございます
703デフォルトの名無しさん:2006/05/04(木) 00:58:56
unsigned char *p = (unsigned char*)&in.s_addr;
sprintf(str, "%d.%d.%d.%d", p[0], p[1], p[2], p[3]);

こんな感じじゃねーの?
704デフォルトの名無しさん:2006/05/04(木) 01:04:34
SDKにはwinsockのソースは入ってなかった。非公開?
705697:2006/05/04(木) 02:25:25
PlatformSDKには入ってた気がするんですがねぇ…。
ダウンロードするのが面倒だけど仕方無いか。
706デフォルトの名無しさん:2006/05/04(木) 07:24:45
それ位ソース見ないで作れよ。
707デフォルトの名無しさん:2006/05/04(木) 10:11:46
作れるけどどういう実装されてるか気になるだろ。
708デフォルトの名無しさん:2006/05/04(木) 10:51:41
unsigned char型のデータをchar b[255]へ
代入したいんだけど、どうすればいい?

× b = Array(a);
× b = Convert::ToCharArray(a);

撃沈シマスタ、教えてくださいエロイ人
709デフォルトの名無しさん:2006/05/04(木) 11:00:21
b[0] =a ;
710708:2006/05/04(木) 11:03:35
それもやったけど
: error C2440: '=' : 'unsigned char' から 'char [255]' に変換できません。
配列型への変換はありませんが、参照またはポインタから配列への変換があります。
沈みました
711デフォルトの名無しさん:2006/05/04(木) 11:06:59
うそをつけ。だとしたら、
unsigned char a = 'x';
char b[255];
b[0] = a;
でもエラーになると言い張るつもりか?
712デフォルトの名無しさん:2006/05/05(金) 22:06:47
aがunsigned charかunsigned char の配列かで話はかわるわけだが
713デフォルトの名無しさん:2006/05/06(土) 04:48:36
RegisterHotKeyの質問です。
何度もすみません。

ダイアログから、以下のように親ウィンドウにホットキー設定をして
RegisterHotKey(hParent, IDC_HOTKEY1, uMod, uVirtual)

親ウィンドウのプロシージャで
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
switch (message) {
case WM_HOTKEY:
MessageBox(hWnd, "ホットキーが押されました!", "HOTKEY!", MB_OK);
break;
}
return 0;
}
としてホットキーを捕まえようとしているのですが、WM_HOTKEYに制御が来ません。

ただ、親ウィンドウにホットキー設定はできているようで、Alt+F4などを設定すると
デフォルトのウィンドウを閉じる動作が何も行なわれなくなります。

何か足りないのでしょうか?
(ソースは抜粋ですみません)
714デフォルトの名無しさん:2006/05/06(土) 16:56:44
VC++EEでもネイティブなGUIアプリって作れるんでしょうか?
リソースエディタがないってことなので無理なのかな?
C#みたいなエディタがついてないってこと?
715デフォルトの名無しさん:2006/05/06(土) 17:07:06
リソースエディタなくても作れる
716デフォルトの名無しさん:2006/05/06(土) 17:10:19
>>715
エディタがなくて作るって、コードでやるしかないんですよね?
GUIは手軽に作りたいんですけど・・
717デフォルトの名無しさん:2006/05/06(土) 17:21:36
ただコントロール貼っただけだとVBぽくてかっこ悪い。
そういうダサいのでよかったらVB使った方が楽だし
わざわざVC使う意味がないと思う。
718714:2006/05/06(土) 17:28:36
>>717
レスサンクスです

そうですか・・・でも、VBのコードの記述はどうも見た目が嫌なんですよね
文字だらけって感じで、あとゆくゆくは複雑な処理とかもやってみたいんで

ちなみに、かっこいいデザインってすごく興味湧きました
やった拘るならインターフェースもかっこよく行きたいんですけど
どこかでチラッと見たんですが、グラフィックソフトか何かで
GUIの部分ボタンなどを作ってその画像をはっつけてやるって手法があるみたいですが
そういうことをされてるんですか?
719デフォルトの名無しさん:2006/05/06(土) 17:31:57
>ただコントロール貼っただけだとVBぽくてかっこ悪い。
これはちょっと・・・
無駄に独自デザインのコントロールの方がよっぽどかっこ悪い。
本人はカッコよいと思ってるんだろうけど、傍から見るとかなり痛い。

720デフォルトの名無しさん:2006/05/06(土) 17:52:47
んじゃVC使うなよカス
721デフォルトの名無しさん:2006/05/06(土) 17:58:27
ビットマップ・アイコンはペイントとかフリーのお絵かきソフトで書けばいい、
リソースファイル(rc)自体はテキストファイルで自分で編集可能。

EEはMFCとかついてないからプラットフォームSDKいれてAPIをじかに呼び出すか、
GUIのライブラリも入れるかになるだろ、WTLも使えるみたいだし。
MFCはライセンス的に無理と思うのでMFC好きなら代わりにwxWidgets使ってろ。
722714:2006/05/06(土) 18:08:39
>リソースファイル(rc)自体はテキストファイルで自分で編集可能。
やっぱ、コードでやるんですね・・
どうもC++EEは無理っぽいです
723デフォルトの名無しさん:2006/05/06(土) 20:11:59
>>708
const char* b = reinterpret_cast<const char*>(a);でも大体は間に合うと思うけど。

本当に代入したいなら、配列は代入できないので個々の要素を代入する必要がある。
aがunsigned char a[255]だとしたらたとえばこう。
using namespace boost::lambda;
std::transform(boost::begin(a), boost::end(a), boost::begin(b), ll_static_cast<char>(_1));
724デフォルトの名無しさん:2006/05/06(土) 22:17:45
>>723
>708を読む限り、aはunsigned charなんじゃないか?
725デフォルトの名無しさん:2006/05/07(日) 00:32:08
ならば_snprintfか?
726デフォルトの名無しさん:2006/05/07(日) 04:31:37
C#を最近初めてAPIとかいじってると、
C++だと楽なんじゃないかなーと思い
しかも、frameworkを入れなくてもいけるので
気軽に配布できるしってことで
学生時代に買って挫折してほったらかしだったVC++6.0を
またはじめようと思うんだけど、もう書籍もないですし
今からじゃ遅いですか?
727デフォルトの名無しさん:2006/05/07(日) 04:34:18
気合いです
728デフォルトの名無しさん:2006/05/07(日) 14:00:23
>>713
もしかして、もう分かったのかもしれないけど、
その抜粋を見て思ったのが、もしかして
default:
return (DefWindowProc(hWnd, msg, wp, lp));
が抜けてるんじゃないかと。
コールバック関数で捕捉しないメッセージはwindowsに確実に投げ返してやらないと。
>>717
VCで作るGUIで効果を発揮するのはマルチWindowのときだよ(MFC使用)、
独自にカスタマイズすると子ウィンドウ(ダイアログではない)と親ウィンドウの間のイベント処理がアミダみたいになってくる。
そうじゃないなら、VB使うのがベストセレクションと思う。
JAVAのGUIもいまいちだし、WIN32APPで作っても、VBの方が遥かに楽だし。
729728:2006/05/07(日) 14:26:59
ちょっと猫さんまるごと持ってきて書き方間違えた
default:
return (DefWindowProc(hWnd, msg,wParam,lParam));
それともうひとつ
case WM_COMMAND:
switch(LOWORD(wParam)){
default:
return (DefWindowProc(hWnd, msg,wParam,lParam));
}
も要るよ。WM_COMMANDはダイアログ使ってるし、終了処理で必ず使ってると思うけど。
730デフォルトの名無しさん:2006/05/07(日) 16:32:27
質問させてください。

Visual C++ 2005 ProfessionalでプロジェクトをRelease構成でビルドしたのですが、
ビルドは成功するものの、出力フォルダ(Release)の中にexeファイルが見あたりません。
Debug構成の時も、デバッグ実行できるのにDebugフォルダにはexeファイルがないのです。

exeファイル形式以外の出力設定になっている、という事なのでしょうか。
Visual C++からでなく、スタンドアローンで起動できるexeファイルを作るにはどうすればよいのでしょうか。
731デフォルトの名無しさん:2006/05/07(日) 16:49:19
質問です。

最新のVCでビルドを行ったところ、
http://msdn2.microsoft.com/ja-jp/library/ms177253(en-us,vs.80).aspx
ここに書いてあるような、ふるいVCでは通るが今回からは通らなく
なったようなコンパイルエラーが発生しました。
現在「C4430:型指定子がありません - int と仮定しました。メモ: C++ は
int を既定値としてサポートしていません」で躓いています。このエラーの
対象となっているヘッダファイルが
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include\GdiPlusImaging.h
であり、MSが提供する共通のファイルですので、ここを修正するわけには
いかないと考えています。いったいどうすればよいのでしょうか?選択肢
としては以下のようなものを思いつきましたが・・・

1.バックアップをとって修正する。
  → 同様エラーが発生する場合に逐一修正を書ける必要があり、現実的ではない。
2.#pragma warningを使用する。
3.VCのバージョンを下げる

上記3項以外に妙案がありましたらご教授お願いします。
以上、よろしくお願いします。
732デフォルトの名無しさん:2006/05/07(日) 17:40:10
>>730
自己解決しました。
出力ファイルのパスが自分の想定と違う階層に設定されていただけでした。

他に疑問点がまた湧いたのですが、
Releaseディレクトリ内にexe出力ファイルの階層を設定したのですが、今度は
プロジェクト直下(Releaseディレクトリの一つ上)のファイルを実行時に読めなくなりました。
どの階層をカレントディレクトリと見なすか、という指定をビルド構成として設定する事は
できないのでしょうか?
733デフォルトの名無しさん:2006/05/07(日) 17:42:27
できる
734デフォルトの名無しさん:2006/05/07(日) 18:05:04
>>733
具体的にはどの項目をいじれば良いんでしょう?
735714:2006/05/07(日) 18:20:45
>>728
>WIN32APPで作っても、VBの方が遥かに楽だし
これってVB6のこと?もう販売してないよね?
736デフォルトの名無しさん:2006/05/07(日) 19:42:51
マニュアル読まない人マンセー
737デフォルトの名無しさん:2006/05/07(日) 20:00:57
>>732
実際にどういう風にそのアプリを運用するんだ?
実行時には実行モジュールのある場所がカレントディレクトリである保証はないぞ。
IDE内から起動する場合についてはIDEの設定次第で変更できるし、
エクスプローラから直接起動する場合でもショートカットで変更できる。

>>735
>728の言うことはノイズと思ったほうがいい。
MFCにはMFCなりの長短所があるし、それは他の環境にもいえることだ。

>>731
目的がはっきりすれば、取るべき対策が決まるのではないか?
例えばVC8を使いたいのならば3の選択肢は有り得ないだろう。
738デフォルトの名無しさん:2006/05/07(日) 20:45:00
>>737
レスありがとうございます。
とりあえずVC8使いたいので3はなしですね。
2を試してみましたが、4430は取れたんですけど、
ほかにもごろごろエラーは存在します(すべて
コンパイラのバージョン違いに起因するようなもの
です)
なので地道にpragma指定すればいつかは全部
とれそうなんですけど、MSはこういうのを想定して、
さくっと解決してくれる方法を提供してないんですかねぇ・・・
739デフォルトの名無しさん:2006/05/08(月) 04:01:49
だめだ・・・・VB、C#やってきたが
C++全然わからん・・・・

クラス宣言の仕方も、呼び出し方も、API使う方法も、
ていうか、ヘルプ・・・断片的な説明だけでわからん・・・
まったくの初心者から例えば電卓ソフトを作るまでの一貫したチュートリアル作ってくれよ・・・
1週間たっても、Hellowしか打てないなんて・・・もうC++やめだ・・・
740デフォルトの名無しさん:2006/05/08(月) 04:05:55
とっととやめてしまえ
741デフォルトの名無しさん:2006/05/08(月) 06:11:10
電卓のGUI部分は簡単だな
中で計算する人が大変かも
742デフォルトの名無しさん:2006/05/08(月) 09:59:53
イ`
743デフォルトの名無しさん :2006/05/08(月) 13:46:50
>>739
そういわずに地道にやってけよ
最初はどんな作業でも混乱するし、わけわからんもんだし
CでもC++でもJAVAでもC#でもVBでも
本一冊読んですべてを理解できても使いこなせるなんて
わけ無いし。
諦めずに一歩ずつつ進みましょう。
744デフォルトの名無しさん:2006/05/08(月) 14:23:00
趣旨は要するにチュートリアルが無くちゃヤダヤダってことだろ?
おれも欲しい
745デフォルトの名無しさん:2006/05/08(月) 15:33:58
C#できるならC++/CLIで練習すれば?
同じライブラリが使えるから文法の勉強に集中するにはよさそう
746739:2006/05/08(月) 16:56:39
>>745
>>744
>>743
どうも励ましありがとう。こんなやさしい人がいるとは
プログラマって根暗のキチガイしかいないと思ってたけど違うんですね
そうですねーいきなりAPIアプリってのが難しいんでしょうね
CLIなら初歩的な関数はヘルプみなくても書けるんでまずそこからのほうがいいですね

なんとなくわかってきたのが、frameworkなどの関数群に当たるのが
MFCだったりPratformSDKに含まれるAPI関数だったりするんですよね?
で、非MFCのAPIアプリを作る場合、API関数だけでイベント(メッセージ?)処理や
GUIへの操作をしなきゃだめってことかな?だとしたら、大変だな・・・
747デフォルトの名無しさん:2006/05/08(月) 18:06:31
すいません。質問です。
Visual C++以外にも言えることなんですけど、Visual Studio 2005 Express Edition(無償)
ではソフトの配布まで出来るのでしょうか?
本を買って読んでみたところアイコンファイル、画像ファイル作成、セットアッププロジェクトの作成は
出来ないと書いてあるのですが・・・どうなんでしょう
748デフォルトの名無しさん:2006/05/08(月) 18:15:37
できる。
コンパイルしてできたexeを配布すればいい
749デフォルトの名無しさん:2006/05/08(月) 18:33:31
そうですかーわかりました(*- -)(*_ _)ペコリ
インストール形式では作れないということですね
750デフォルトの名無しさん:2006/05/08(月) 18:37:01
>>749
販売もできるよ
アイコンエディタは標準ではついてないけど
あれで作る人もいないし、いらない機能

あと、インストール形式にもできるよ
751デフォルトの名無しさん:2006/05/08(月) 18:43:41
そうなんですか!!
他のフリーソフトと組み合わせるってことですかね。
752デフォルトの名無しさん:2006/05/08(月) 18:48:58
>>751
そういうこと
753デフォルトの名無しさん:2006/05/08(月) 18:55:24
そこまで辿り着いたらまた質問させていただきます(*- -)(*_ _)ペコリ
754デフォルトの名無しさん:2006/05/08(月) 20:01:49
Visual Studio 2005 Express Edition(無償)で
コンパイルしてできたexe は .Net FrameWork2.0
がインストールされた環境でないと実効不可。
755デフォルトの名無しさん:2006/05/08(月) 20:26:36
いいえ、それはトムです。
756713:2006/05/08(月) 22:15:30
>>729
ありがとうございます。一応ご指摘いただいた箇所はVC++の自動生成されたコードで満たされているようです。以下が完全なウィンドウプロシージャです。

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
  int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc;
  INITCOMMONCONTROLSEX ic; // ← これが何か判らない
  switch (message) {
  case WM_COMMAND:
    wmId = LOWORD(wParam); wmEvent = HIWORD(wParam);
    // 選択されたメニューの解析 :
    switch (wmId) {
    case IDM_ABOUT: DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About); break;
    case IDM_EXIT: DestroyWindow(hWnd); break;
    default: return DefWindowProc(hWnd, message, wParam, lParam);
    }
    break;
  case WM_PAINT: hdc = BeginPaint(hWnd, &ps);
    // TODO: 描画コードをここに追加してください...
    EndPaint(hWnd, &ps); break;
  case WM_DESTROY: PostQuitMessage(0); break;
  case WM_CREATE:
    ic.dwSize = sizeof(INITCOMMONCONTROLSEX); // ← 猫さんとこと同じ書き方で書いてみた
    ic.dwICC = ICC_HOTKEY_CLASS;
    InitCommonControlsEx(&ic); break;
  case WM_HOTKEY: MessageBox(hWnd, "ホットキーが押されました!", "HOTKEY!", MB_OK); break;
  default:
    return DefWindowProc(hWnd, message, wParam, lParam);
  }
  return 0;
}

なぜ出来ないのかが本当にわからず、Webを探しても完全なサンプルが見つからず本屋で何冊も良いサンプルがないか立ち読みしたんですが解決には至っていません。
757713:2006/05/08(月) 22:16:51
756の書き込みですが、改行制限があるため、多少改行を減らしていて
見づらくなっています。すみません m(_ _)m
758デフォルトの名無しさん:2006/05/08(月) 22:20:54
小規模ならVB
大規模ならVC
とよく聞きますけど
なぜなんでしょうか?
VBで小規模を手軽に作れるなら大規模でも簡単に作れそうな気ガしますが
759デフォルトの名無しさん:2006/05/08(月) 22:28:04
セロテープは小規模用
ガムテープは大規模用
760デフォルトの名無しさん:2006/05/08(月) 22:38:25
小さいプログラムなら遅さが目立たないが
大きくなると無視できなくなる。
761デフォルトの名無しさん:2006/05/08(月) 22:55:50
正直、名前空間が無い言語は大規模開発がキツイ
762デフォルトの名無しさん :2006/05/09(火) 03:11:34
リソースを追加したていった時にIDを変えると新たに
またそのIDに対して番号ふられるけど、元の番号を
resource.hから削除していった方が良いんでしょうか
それとも元のIDはIDで保存しとくべきなんでしょうか
追加してIDを変更して新たなIDをあてがっても番号
は衝突しなさそうなのですが、なんとなく無駄な気がします
そこのところはどうなんでしょうか?
教えてほしいです。
763デフォルトの名無しさん:2006/05/09(火) 05:45:24
#define だからEXEの容量は変わらない。
気になるなら好きにすればいい
764デフォルトの名無しさん:2006/05/09(火) 07:19:33
dllにクラス記述しても使えないんでしたっけ?
765デフォルトの名無しさん:2006/05/09(火) 08:28:36
んなこたー(ry
766713:2006/05/09(火) 10:15:57
WM_HOTKEY に制御が来ない理由がわかりました。
RegisterHotKey() の第一引数に渡している HWND が
対象としている HWND ではないのが原因でした。

以下のように書き換えたところ、とりあえずホットキーが取れました。

----
static hWnd_parent;

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
  ...
  hWnd_parent = hWnd;
  DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);


LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) {
  static HWND hParent = GetParent(hDlg);
  ...
  // RegisterHotKey(hParent, IDC_HOTKEY1, uMod, uVirtual); // これだとうまくいかない
  RegisterHotKey(hWnd_parent, IDC_HOTKEY1, uMod, uVirtual);
----

GetParent(hDlg) で取れた hParent と DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About)
に渡した hWnd が違うモノなのがいまいちよく理解できていませんが、調べてわかったらまた報告します。
767デフォルトの名無しさん:2006/05/09(火) 10:26:15
GetParentを2回呼べばよかったと思う
768デフォルトの名無しさん:2006/05/09(火) 10:35:29
GW_OWNER だった
769デフォルトの名無しさん:2006/05/09(火) 13:47:44
開発環境に .net 使い始めたのですが、ペイン間のフォーカス移動を行う
ショートカットキーを教えてください。

Ctl+TABでソース間の移動はできるのですが、
ソースから出力結果のウィンドウへの移動が行えません。
もちろんマウス使えばできます。

ペインという用語は間違ってるかもしれません。よろしくです〜
770デフォルトの名無しさん:2006/05/09(火) 13:53:01
>>769
なんでマウスじゃだめなの?
771デフォルトの名無しさん:2006/05/09(火) 13:55:36 BE:38820454-#
>>769
MDIの子ウィンドウ切り替えと同じ。
772769:2006/05/09(火) 14:02:32
>>770
それ言い出したら、ショートカットキーとか、アクセスキー不要になりません?

>>771
それって、Ctr+Tabですよね、ソースウィンドウの切り替えしかできないんですけど;;
773デフォルトの名無しさん:2006/05/09(火) 14:26:31
F6
774デフォルトの名無しさん:2006/05/09(火) 14:40:21
VC6は可能だな
775769:2006/05/09(火) 14:42:32
>>773
ありがと〜
F6は無反応でしたが、Shift+AltF6で移動しました。
776デフォルトの名無しさん:2006/05/09(火) 15:04:13
>>772
のびたの癖に生意気だぞぉ〜
777デフォルトの名無しさん:2006/05/09(火) 16:10:19
猫193章のHOTKEYだけど、できたよ。
ただし、リソースのプロパティでIDを
MYMENU→"MYMENU"
MYDLG→"MYDLG"
に変えて。もちろんcomctl32.libはプロジェクトの設定でリンクさせる
778デフォルトの名無しさん:2006/05/09(火) 16:31:09
それ知らないとはまる
MAKEINTRESOURCEも使える
779デフォルトの名無しさん:2006/05/10(水) 09:35:23
質問です。

あるクラスの実装などで、メモリーを確保した時、必ず後でメモリーを開放しなければいけないのでしょうか?
また、開放するコードが必要なタイミングを教えて下さい。
780デフォルトの名無しさん:2006/05/10(水) 09:41:22
状況による
781デフォルトの名無しさん:2006/05/10(水) 09:57:25
サーバープログラムでもない限りメモリの開放など必要無い
782デフォルトの名無しさん:2006/05/10(水) 10:01:25
うわ、変なの来た・・・
783デフォルトの名無しさん:2006/05/10(水) 10:09:47
>780
C#や、VB.Netの場合、
スコープがクラスで確保する以外は開放するコードが不要で、コンパイラが自動でしてくれるらしいのですが、
C++の場合、実装コード自体、どのレベルで実装しているのかがイマイチ分からないんです。
全ての実装で最後に開放するコードを書くのは、全体のコードが長くなって大変で面倒。
784デフォルトの名無しさん:2006/05/10(水) 10:15:19
>>783
自分で書く分に関しては、極力newやmalloc()を使わないようにし(標準コンテナを使う)、
もし使う場合は関数内で確保と解放を対にするかデストラクタで保証する。
785デフォルトの名無しさん:2006/05/10(水) 10:17:32
C++で.NETアプリ作ってる奴って頭痛いと思うんですがどうですか?
786デフォルトの名無しさん:2006/05/10(水) 10:26:25
ほっといてやれ
787デフォルトの名無しさん:2006/05/10(水) 10:30:41
C#や、VB.Netの延長でろくに勉強しないで使うつもりなんだ
788デフォルトの名無しさん:2006/05/14(日) 07:47:51
4日前から初めてC++のプログラミングの勉強を始めたんですが、
if文で躓きました。。
1900年〜2000年までの西暦を入力して元号(香A氏A潤A~)を
表示するプログラムを作れ。入力範囲を超える場合、「入力範囲を超えています。」
と表示。
という問題なのですが、どなたか教えていただきたいです。
789デフォルトの名無しさん:2006/05/14(日) 07:54:35
4日でできると思うなボケ。
790デフォルトの名無しさん:2006/05/14(日) 08:05:26
>>788
したいことを順番に、大体でいいから文章で書いてみよう。
たとえば

int main()
{
//変数の宣言

//西暦を入力

//もし、入力された数値が範囲を超えていたら
//「入力範囲を超えています」と表示
//そうでないなら
//元号がいつか調べる
//元号を表示

return 0;
}

こんな風にしてから、一つずつプログラムに書いていくと流れが分かりやすいよ。

if ( 条件 )
{
 処理
}
もし、条件が合う時、処理をする。
791デフォルトの名無しさん:2006/05/14(日) 09:36:56
宿題スレ行けば誰かやってくれるよ
792デフォルトの名無しさん:2006/05/14(日) 21:12:26
>>720
UIしか担当できないやつでもC++を語るかw
VCはUIのためと断言できる境地はすごいと思います、これからも頑張ってください
793デフォルトの名無しさん:2006/05/14(日) 21:30:53
元の質問がGUIの話だからな
794デフォルトの名無しさん:2006/05/15(月) 00:05:06
テキストボックスである種の文字列を表示すると斜めに傾いて見えるのですが、
これをなんとかしてまっすぐに表示できませんか?
795デフォルトの名無しさん:2006/05/15(月) 00:12:07
たとえばどんな文字列?
796デフォルトの名無しさん:2006/05/15(月) 00:23:02
たとえばこういうのです↓

 非マナー非マナー非マナー非マナー非マナー非マナー
  非マナー非マナー非マナー非マナー非マナー非マナー
  非マナー非マナー非マナー非マナー非マナー非マナー
  ーナマ非ーナマ非ーナマ非ーナマ非ーナマ非ーナマ非
  ーナマ非ーナマ非ーナマ非ーナマ非ーナマ非ーナマ非
 ーナマ非ーナマ非ーナマ非ーナマ非ーナマ非ーナマ非
 非マナー非マナー非マナー非マナー非マナー非マナー
  非マナー非マナー非マナー非マナー非マナー非マナー
  非マナー非マナー非マナー非マナー非マナー非マナー
797デフォルトの名無しさん:2006/05/15(月) 00:23:16
VC++のアプリから標準のメーラを起動して、
凄く長い本文をつけられるような方法があれば教えてもらえませんでしょうか?
HINSTANCE hInst = ShellExecute(NULL, "open", "mailto:[email protected]?body=本文...", NULL, NULL, SW_SHOWNORMAL);
と今はしているのですが、これだとある程度文章が長くなると起動できなくなってしまうようでした。
よろしくお願いします。
798デフォルトの名無しさん:2006/05/15(月) 00:58:48
visualC++で ネットワークプログラミングやってるんですが、
wininet 使ってinternetopen()関数やらを書いてみるとデバッグ
エラー出るんです。。。
///////////////////////////////////////
'InternetOpenW' : 1 番目の引数を 'const char [16]' から 'LPCWSTR' に変換できません。
///////////////////////////////////////
ってな感じです。
799デフォルトの名無しさん:2006/05/15(月) 01:00:16
TCHARをきちんとハンドルするか、A関数を明示的に呼ぶか、
プロジェクトでUNICODEの設定を外せ
800デフォルトの名無しさん:2006/05/15(月) 01:03:42
ネットワークプログラミングやっているなら、
マルチバイト文字とワイド文字については理解していた方がいいと思われ。
801デフォルトの名無しさん:2006/05/15(月) 08:19:31
>>798

>>799氏が指摘しているように、
#define UNICDE
もしくは
#define _UNICDE
がどっかで定義してある。
#define MBCS
に変更しる
802デフォルトの名無しさん:2006/05/15(月) 13:24:00
 VC.net2003で、以下のコードを実行するとAを通らず、Bを通ってしまいます。
 何故でしょう。

#define TEST
#define TEST_DEF  defined(TEST)

#if TEST_DEF
  // A
#else
  // B
#endif
803デフォルトの名無しさん:2006/05/15(月) 14:08:21
何故ってそのまんまじゃん。
804802:2006/05/15(月) 14:13:46
>> 803
TESTが定義されているから、TEST_DEFは真になる。
TEST_DEFが真なら Aを通る、と思ったのですが、Bを通ります。

 試しに
#if defined(TEST)
と書き換えると、ちゃんと Aを通ります。
805デフォルトの名無しさん:2006/05/15(月) 14:23:27
>>804
#define TEST_DEF  defined(TEST) 
#define TEST 
と逆にすればAになるから

#define TEST_DEF  defined(TEST) 

#define TEST_DEF  defined() 
と評価されているらしい。

g++だと逆にしなくてもAになる。どっちが標準なのかは知らないが評価順序の違いじゃね。
806デフォルトの名無しさん:2006/05/15(月) 14:26:57
#ifでマクロ展開してdefinedが出てきたときの動作は未定義っぽぃな。
807802:2006/05/15(月) 14:57:01
 素早い回答ありがとうございます。

>> 805
 なるほど。
 調べてみたらたしかに「#ifなどの条件付き取り込みの評価に先だって、
置換処理によって definedが生成される場合は動作は未定義」(X3014 16.1.4)
とありました。

>> 804
 未定義だから、なんでしょうね。
808デフォルトの名無しさん:2006/05/16(火) 00:08:40
UNICODEの設定はずしてみたら今度は、
C:\WINDOWS\system32\ntdll.dll' を読み込みました。シンボルが読み込まれていません。
というのがやたらでます・・・
809デフォルトの名無しさん:2006/05/16(火) 00:18:07
それはエラーではない
810デフォルトの名無しさん:2006/05/16(火) 20:20:39
age
811デフォルトの名無しさん:2006/05/16(火) 20:33:52
インクリメンタルリンクって何ですかね?
ぐぐるとエラー解決法とかは出てくるんですが
意味見たいのがなかなか見当たらなくて困ってます
812デフォルトの名無しさん:2006/05/16(火) 21:02:56
以下のような感じでsystem()関数を使って、my.exeという別のプログラムをループで繰り返しています。
param.txtファイルの中身は、毎回変わります。

int main()
{

for(i=1 ; i<=10 ; i++){

param.txtファイルの作成をこのあたりで行う;

system("my.exe param.txt");

}

}

その場合、不正なparam.txtファイルを与えると、my.exeがエラーして
"問題が発生したため、my.exe を 終了します"
というポップアップウインドウが開くのですが、それを出さずに、エラーしたとしても無視して
引き続き次のループを実行したいのですが、可能でしょうか?
つまり、何十時間もかかるようなループを自動で実行している時に、エラーで中断させたくないのです。
アドバイスよろしくお願いします。
813デフォルトの名無しさん:2006/05/16(火) 21:06:31
>>812
my.exeの実行に時間が掛かるのでなければ、
CreateProcess()を使って並行動作させてしまえばいい。
どれかのmy.exeが落ちたとしても、そのプログラムは
動作しつづけられる。
#それよりも何よりも、不正なparam.txtを作らないとか、my.exeを修正するのが常道だが。
814デフォルトの名無しさん:2006/05/16(火) 21:13:05
for


if (ファイルオープン 失敗)
{
 失敗処理
 continue;
}


}
815デフォルトの名無しさん:2006/05/16(火) 21:38:59
みなさんアドバイス
ありがとうございます。
my.exeは、ある種のシミュレーションプログラムで、
メモリもCPUリソースもたくさん消費するので、複数同時に実行させることはできないのです。
また、一回の計算(例えばi=1のとき)で、数時間かかるので、10回計算させるには数十時間かかります。
また、param.txtファイルに関しては、シミュレーションの初期設定のような感じの情報が
記述されていますが、内容が正しくても数時間の計算で途中でエラーしてしまうことがあるんです。
さらにそのmy.exeは、他の人が作っているプログラムなので、私が自由に変更できないんです。
そういういろいろな制約がありますので、とにかくポップアップウインドウを出さずに
エラーしてもしなくても、最後まで連続で計算させたいのですが。

816デフォルトの名無しさん:2006/05/16(火) 21:48:32
>>811
絶対ググってないだろ。
817デフォルトの名無しさん:2006/05/16(火) 22:21:19
>815
http://www.atmarkit.co.jp/fwin2k/win2ktips/527apperror/apperror.html
これ設定たら終わりじゃねーの?
818デフォルトの名無しさん:2006/05/16(火) 22:36:38
817さん
情報ありがとうございます。大変参考になります。
でもちょっと気がかりなのは、最後のほうに書かれている

なお[重大なエラーが発生した場合は通知する]チェック・ボックスをオフにしたときでも、
Visual Studioなどの開発ツールをインストールしている場合は、以下のようなエラー通知
ダイアログが表示される。

とありますので、別のポップアップが開くようですね。困った。
819デフォルトの名無しさん:2006/05/16(火) 23:18:50
その「別ポップアップ」はhttp://support.microsoft.com/kb/188296/jaに従って
AeDebugレジストリを消去すれば出なくなる。(JITデバッグが不可能になるということでもあるが)
820デフォルトの名無しさん:2006/05/16(火) 23:19:59
配布された課題に、クラスの中で

class ABC
{
public:
ABC()
: mr_d(NULL) { }
~ABC()
{ }


て記述があるんですが5行目の:が1日かけて調べてもわかりません
コンストラクタでmr_dを初期化してるように思うんですが
参考書では

ABC(){mr_d=NULL;}

という書き方しか載っていないんです.こういう書き方も存在すると考えていいんでしょうか?
他に同じように":"を用いる書き方ってありますか?

教えてください><
821デフォルトの名無しさん:2006/05/16(火) 23:21:16
>>820
猫でも(ryかWisdomSoftに行け。
822デフォルトの名無しさん:2006/05/16(火) 23:22:03
禿本買えよ。
823820:2006/05/16(火) 23:25:02
>>821

誘導thx
824デフォルトの名無しさん:2006/05/16(火) 23:29:12
819さん
ありがとうございます。
レジストリを変更する以外に方法はないでしょうか?
わたしのPCであればそれで解決なのですが、他人のPCや、
お客さんのPCでも実行したいので、レジストリ変更の方法は
避けたいです。
よろしく。
825デフォルトの名無しさん:2006/05/16(火) 23:35:24
CreateProcess使うとか偽DLL使うとかして、my.exeにInjectionさせて
VectoredExceptionHandlerでも導入する手はどうか。
826デフォルトの名無しさん:2006/05/16(火) 23:37:15
エラーレポートダイアログをポーリングで探して、検出したら
「はい」「いいえ」をソフトで押すアプリを作る手もあるな
827デフォルトの名無しさん:2006/05/16(火) 23:39:57
タイムアウトを設定して、経過したらTerminateProcessしてしまうとか。
828デフォルトの名無しさん:2006/05/16(火) 23:47:35
わかった、そのダイアログのボタン押し要員を確保すればいいんだよ。
829デフォルトの名無しさん:2006/05/16(火) 23:50:41
825さん
ありがとうございます。
実はCreateProcess()の方法でもトライしてみたのですが、エラーが発生すると
やはりポップアップダイアログが表示されてしまうのですが。
それともCreateProcess()関数のパラメータの与え方を工夫すると、
ポップアップ表示を無効にできますか?
830デフォルトの名無しさん:2006/05/16(火) 23:55:08
要するに他人が作ったプログラムを実行した時にエラーを出さないようにしたいということか
どう考えてもVCと関係があるとは思えないな
いいかげんにしてほしいものだ
831デフォルトの名無しさん:2006/05/17(水) 00:03:52
http://japan.internet.com/column/developer/20050830/26.html#section_2
ここら辺を参照すること。CreateProcessを使うのは最低条件。
この上にコードインジェクションで自分で書いたmy.exe用の例外処理コードを滑り込ませる
832デフォルトの名無しさん:2006/05/17(水) 00:17:11
しかしお粗末だな
systemで他のプログラム呼んでるだけだぞ
833デフォルトの名無しさん:2006/05/17(水) 00:46:58
831さん
ありがとうございます。教えていただいたHP、
難しくて、よく理解できませんが勉強してみます。
でも本当はWindowsのVCとLinuxのgccの両方でコンパイルしたいので
system()で簡単にできればと思っているのですが。無理のようですね。
834デフォルトの名無しさん:2006/05/17(水) 03:53:53
VC++.netでサンプルプログラムをいじっているのですが、
cppファイルやrcファイルを変更しても反映されません。
ビルドしてコンパイルして起動すると最初のままです。
どうしてなのでしょうか。
パスの違いなどではないっぽいんですが。
835デフォルトの名無しさん:2006/05/19(金) 11:21:18
もしやサンプルのソース或いはディレクトリなどがR/Oだったりしないだろうな。
836デフォルトの名無しさん:2006/05/20(土) 10:21:31
Visual Studio 2005 Standard Editionをインストールしたのですが、コマンドプロンプトで
cl.exeを実行しようとすると、「cl.exe - コンポーネントが見つかりません」
とエラーが出ます。「mspdb80.dllが見つからなかったため、このアプリケーションを
開始できませんでした。アプリケーションをインストールし直すとこの問題は
解決される場合があります。」と言っているのですが、他のマシンにインストールしても
同じエラーが出ます。実際には以下のフォルダに存在しているのですが…
C:\Program Files\Microsoft Visual Studio 8\Common7\IDE
C:\Program Files\Microsoft Visual Studio 8\VC\bin\amd64
環境変数はPATHにC:\Program Files\Microsoft Visual Studio 8\VC\binを加えた
だけなのですが、他にも環境変数の設定が必要、ということなんでしょうか?
ちなみに、Visual Studio上ではclは実行できています。
837デフォルトの名無しさん:2006/05/20(土) 10:28:24
>>836
スタートメニューのプログラム→Visual C++ 2005 Express Edtion→Visual Studio Tools→Visual Studio 2005 コマンドプロンプト
838デフォルトの名無しさん:2006/05/20(土) 10:57:19
vcvars32.bat
839デフォルトの名無しさん:2006/05/20(土) 18:56:56
VC++(6.0)をさわり始めてみたのだがこれはこれでなかなか面白いな。
コントロールとか使う前にClassWizardでソースに追加しなきゃいけないのが、しばしわからなくていろいろやっててやっとわかった程度。
あの追加するときの種類で「コントロール」「値」はいいんだけど「Value」ってなんだ?
ちなみに値って参照するだけ用なんだな。
840デフォルトの名無しさん:2006/05/20(土) 19:07:01
>>839
何と比べているのか理解不能
841デフォルトの名無しさん:2006/05/20(土) 19:43:36
ひとりごと
842836:2006/05/21(日) 08:51:41
どうもありがとうございました。大変助かります。
843デフォルトの名無しさん:2006/05/21(日) 10:58:19
いえいえ、どういたしまして^^
844ろぼっと:2006/05/21(日) 18:08:42
すいません、VisualC++やろうと思うんですが、本によると「Microsoft Visual C++6」
というのがないと出来ないそうなので、Micrlsoftからそれをダウンロードして
インストールしたんですが、プログラムの中に入ってないみたいで、学習できません。
どうすればいいでしょうか?
すまんが上げさせてもらいます
845デフォルトの名無しさん:2006/05/21(日) 18:24:58
煽る気も起きない
846ろぼっと:2006/05/21(日) 18:26:59
ツリじゃありません。おながいします
847デフォルトの名無しさん:2006/05/21(日) 18:29:22
最近の釣りはレベル低いな
848ろぼっと:2006/05/21(日) 18:30:59
いやつーか、今色々ググってるんですが、見つかりません
おながいですから、VisualC++がどうやったら出来るか教えてください
849ろぼっと:2006/05/21(日) 18:31:50
ここは初心者スレじゃないですか?
おまえら態度悪いな、おまえらには聞いてねーよ。

親切な人教えてください。
850デフォルトの名無しさん:2006/05/21(日) 18:32:24
答え:買う
851ろぼっと:2006/05/21(日) 18:34:27
>>850
了解

>>849
うんこ
852デフォルトの名無しさん:2006/05/21(日) 20:53:57
>>851
もうVC6は売ってネエ
853デフォルトの名無しさん:2006/05/21(日) 21:40:55
854デフォルトの名無しさん:2006/05/22(月) 21:41:25
お願いします。
VC++.NETで、

class abcd
{
   〜〜〜
}

abcd.(エー、ビー、シー、ディー、ドット)

ってやった時に、
今まではポップアップでクラスのメンバが選べたのですが、
急にポップアップがでなくなりました。
元に戻す方法を教えてください。
855854:2006/05/22(月) 21:44:00
すみません、焦りすぎました。

class ABCD
{
   〜〜〜
};

ABCD abcd;

abcd.

とりあえず今までは正常に動いてたということを前提でお願いします。
856デフォルトの名無しさん:2006/05/22(月) 22:28:17
>>855
可能性は2つある。

1)***.ncbが壊れた
 この場合そのプロジェクトのフォルダーにある***.ncbを削除すれば復活する

2)コードの途中で不注意に終わるべきものが終わってない場合
 例
   printf(" ajoasoa);
abcd.←ここでは上の引用符が閉じてないのでインテリ扇子は動作しない。

857デフォルトの名無しさん:2006/05/22(月) 23:47:08
改行コードを'0A'でファイルを作る方法を教えてください。
printf("%s\n" , "123");
とすると改行コードが'0D0A'になってしまいます。
858デフォルトの名無しさん:2006/05/23(火) 00:14:31
>>857
バイナリモードでファイルを開く。

stdoutに対してもfreopenが使えるから、
printfでも\nを\n(0A)として出力させるようにはできる。
859857:2006/05/23(火) 03:54:34
>>858
ありがとうございます。さっそく試してみます。
860855:2006/05/23(火) 06:53:47
>>856
おはようございます。
1の方法で治りました、ありがとうございましたー。
861デフォルトの名無しさん:2006/05/23(火) 07:24:52
\fだか\rだかでよくね?
862デフォルトの名無しさん:2006/05/23(火) 07:35:02
\rは0D
863デフォルトの名無しさん:2006/05/23(火) 09:04:43
printf("%s%c" , "123", 0x0A);
はどう?
864デフォルトの名無しさん:2006/05/23(火) 09:10:41
なぜテキストモードとバイナリモードがあるか考えてみれ
865デフォルトの名無しさん:2006/05/23(火) 10:48:11
VisualStudio6.0のリソースエディタで、ダイアログボックスにボタンなどをはりつけようとしたところ
コントロール一覧のウインドウが表示されなくなっていました。
どうやればまた表示できますでしょうか。
866デフォルトの名無しさん:2006/05/23(火) 12:50:43
>>863
初心者は回答しなくていいよ。
867デフォルトの名無しさん:2006/05/23(火) 19:48:06
>863
テキストモードでの 0A -> 0D 0A変換が、いったいどこで行われるのかを
気にかけるべきだと思うが。
868857:2006/05/23(火) 21:44:54
int result;
result = _setmode( _fileno( stdin ), _O_BINARY );

とopenする前にしてみたんですが、result に-1が返ってきて
バイナリモードに変換できません。どうしてでしょうか。
869デフォルトの名無しさん:2006/05/23(火) 21:47:03
stdinだから
870857:2006/05/23(火) 21:49:00
>>869
あ、間違えました。stdoutもstdinも両方やってみましたが同じでした。
871デフォルトの名無しさん:2006/05/23(火) 21:52:23
>>870
>858
872857:2006/05/24(水) 01:21:01
>>871
freopenをする前に
result = _setmode( _fileno( stdout ), _O_BINARY );
するということではないのでしょうか?
873デフォルトの名無しさん:2006/05/24(水) 12:34:46
外部ライブラリを利用しているのですが、デバッグでのビルドは成功するのに、
リリースでビルドしようとすると、外部ライブラリのシンボルが片っ端から
未解決になります。

プロジェクトの設定はデバッグ・リリース共同じなのですが。
874デフォルトの名無しさん:2006/05/24(水) 12:46:40
デバッグとリリースはライブラリが別
875デフォルトの名無しさん:2006/05/24(水) 13:23:09
>>874 サンクス。解決しました。
876デフォルトの名無しさん:2006/05/24(水) 13:40:08
>>872
freopen()の説明を読んだ?
読んだ上でそんな戯言を抜かすのなら阿呆だ。
#尤も、MSDNのfreopen()の項のサンプルは間抜けだが。
877857:2006/05/24(水) 23:58:01
>>876
setmodeはopenした後だったようですね。
fmodeでやってできました。ありがとうございます。
878デフォルトの名無しさん:2006/05/25(木) 02:41:48
>>877
freopenでバイナリモード指定すりゃ済む話だろ。
879デフォルトの名無しさん:2006/05/25(木) 19:45:43
コードの最適化って何?どうやって設定するの?
880879:2006/05/25(木) 19:46:17
VC2005EEで
881デフォルトの名無しさん:2006/05/25(木) 21:13:34
>>879
Releaseビルドすれば最適化機能が有効になる。
882デフォルトの名無しさん:2006/05/25(木) 21:22:25
おいおい
883デフォルトの名無しさん:2006/05/25(木) 23:12:08
くだらない質問で恐縮なんですが・・・
TCHAR とかの T って何の略ですか?
884デフォルトの名無しさん:2006/05/25(木) 23:24:09
ワイド文字とマルチバイト文字の自動切換え、でいいのかな >>TCHAR
885884:2006/05/25(木) 23:27:49
すまん。質問の意味が違ったか。
ヌルーしてくれ。
886883:2006/05/25(木) 23:51:57
実は思ったきっかけが、
例えば _tcscpy_s などは T Char String CoPY Safe(?) などと推測しているのですが、
_tsprintf_s には 'c' がないので何でかなーって思ったのです。
887デフォルトの名無しさん:2006/05/26(金) 00:22:04
>>886
_tcscpy_sはそんな感じだと思う。
_stprintf_sのほうははワイド文字版の関数がswprintf_sだから、
それに合わせてcがないと思えばいいと思う。

_tcs/wcs〜となっているものはchar版がstr〜という名前になっている。
888857:2006/05/26(金) 01:39:37
>>878
そうでした。wb指定でできました。ありがとうございます。
889デフォルトの名無しさん:2006/05/26(金) 01:43:12
だから>871からずっとそう指摘してきているのに……
なんでMSDNを読めといわれてさえ理解できないのだろう……_/ ̄|○
890デフォルトの名無しさん:2006/05/26(金) 10:40:30
Win32コンソールアプリケーションでCstringを使いたいのですが
ヘルプに書いてあったafx.hをインクルードしても使えませんが
何が原因でしょうか?
891デフォルトの名無しさん:2006/05/26(金) 16:50:12
初心者な質問で恐縮ですが
main()
{

}
892デフォルトの名無しさん:2006/05/26(金) 16:54:35
>>891は間違いです、途中で送信してしまいました(;´Д`)

main()内で生成されたインスタンスを別のクラス内などで使いたい場合は
どのような手段が有効なのでしょうか?
893デフォルトの名無しさん:2006/05/26(金) 17:01:58
これは酷い・・・
894デフォルトの名無しさん:2006/05/26(金) 17:07:55
>>892
引数で渡せばいいだろ。
895デフォルトの名無しさん:2006/05/26(金) 20:28:00
コンソールアプリケーションを作ると

press any key continue

って文字が出てくるんですけど消す方法は無いのでしょうか?
896デフォルトの名無しさん:2006/05/26(金) 22:46:17
>>895
コマンドプロンプトから実行したりEXEのアイコンをダブルクリックして実行したりすれば表示されない。
897895:2006/05/26(金) 23:05:43
>>896
ありがとう
愛してる(^^)
898895:2006/05/26(金) 23:49:59
あと、もうひとつお聞きしたいんですが、

VCだとsystem関数は使えないんですか?
なんか"error C2065: 'system' : 定義されていない識別子です。"ってでるんですが・・・
画面をリセットさせたいんですけど・・・

DOSだと、" system("cls") "でできますよね?
VC++でのやり方を教えて下さい(><)
899895:2006/05/26(金) 23:54:39
あわわ・・・

<stdlib.h>をインクルードし忘れてただけみたいでした・・・
どうもすみません(><)
900デフォルトの名無しさん:2006/05/27(土) 00:02:47
>>898
WriteConsoleOutputを利用するんじゃなかったけ?
901895:2006/05/27(土) 08:06:35
>>898
WriteConsoleOutputとは何でしょう?
プログラム初心者なもので・・・
902895:2006/05/27(土) 08:07:38
うわw
間違えました・・>>900さんへのレスですw
903デフォルトの名無しさん:2006/05/27(土) 11:38:20
>>901
API
Console Functionsで調べると解る
904デフォルトの名無しさん:2006/05/27(土) 12:45:34
>>901
Windowsの関数。
905デフォルトの名無しさん:2006/05/27(土) 19:22:38
2003から2005に変えたらプログラムが動かなくなりました。
どうすれば直るのですか?
906デフォルトの名無しさん:2006/05/27(土) 19:40:53
2003に戻す。
907デフォルトの名無しさん:2006/05/27(土) 20:15:19
環境を別PCに移行したいのですが、文字色とかの設定をそのまま移行する方法はありませんか?
それらしきファイルも見つからなかったのですが、手動で設定するしかないのでしょうか?
908デフォルトの名無しさん:2006/05/27(土) 20:23:47
書き忘れました。VC++6です
909907:2006/05/28(日) 02:05:45
よく考えたらあんまカスタマイズしてなく、
設定に1分もかからないので手動でやりました(´・ω・`)
910デフォルトの名無しさん:2006/05/28(日) 07:11:16
cout を使うときって、書式を指定するのが面倒くさいですよね。
GUIベースだとcout自体あまり使う機会は無いと思うのですが、
どうしても、というときはsprintf(foo,
911デフォルトの名無しさん:2006/05/28(日) 10:03:17
>>910
つBoost.Format, (ATL::)CStringT::Format
912デフォルトの名無しさん:2006/05/28(日) 18:19:49
VC++ 2005 Expless & PSDK でプログラミングしようかと思うのですが、
基本的なことを学習するのに良いサイトをお教え願います。
913デフォルトの名無しさん:2006/05/28(日) 18:22:43
914デフォルトの名無しさん:2006/05/28(日) 18:26:57
915デフォルトの名無しさん:2006/05/28(日) 18:32:13
基本的な考えが間違ってる
916デフォルトの名無しさん:2006/05/28(日) 20:43:34
 
917905:2006/05/28(日) 20:53:43
ヘッダ−をどう書き換えれば動くようになるのでしょうか?
どう修正してよいか分かりません。
918デフォルトの名無しさん:2006/05/28(日) 20:58:55
普通に作ってればそのままビルドすれば動くはず
919905:2006/05/28(日) 21:06:28
>>918
動かないから言ってるんですが。無責任なことを言わないで下さい。
920デフォルトの名無しさん:2006/05/28(日) 21:09:28
>>919
なんだその態度。もう来なくていいよ
921デフォルトの名無しさん:2006/05/28(日) 21:11:50
>>919
責任ある回答を期待するなら無責任な質問はするなよ。
お前の質問じゃこの方しか答えられない。
ttp://ishizuka.net/ei/
922デフォルトの名無しさん:2006/05/28(日) 21:54:53
>>905
そもそも何がどう動かないのか書いてくれないと手助けのしようも無い。
923デフォルトの名無しさん:2006/05/28(日) 21:59:12
>>922
ほっとけ。質問の仕方も分からんやつはこのスレに来る資格は無い。
924910:2006/05/28(日) 22:57:53
>>911 サンクス。

朝書き込む途中でハングしたようで、半端に書き込まれてしまった…。
925917:2006/05/29(月) 11:48:51
>>919がID無し板名物のなりすましか…
本物の917です、winnt.hの220行目修正したら動きました。
typfef void * PVOID,* POINTER_64;

typfef void * PVOID;typfef void * POINTER_64;
にしたら直りました。
質問の仕方が悪くてすみませんでした。
926デフォルトの名無しさん:2006/05/29(月) 12:33:04
winnt.hを修正してしまう池沼
927デフォルトの名無しさん:2006/05/29(月) 14:06:18 BE:46585038-#
本物の方が斜め上を行っている罠
928925:2006/05/30(火) 22:25:12
まあ、エラーはヘッダーに出てたし、動かないと困るし。
未だに正しい修正方法探してるけど見付からないし。

まぁ今の所異常は出てないから暫くは平気でしょ、多分。
929デフォルトの名無しさん:2006/05/30(火) 22:46:03
池沼はこれだから困るな。
どうせヘッダーファイルの検索順が変わったとかそういうことだろ。
930デフォルトの名無しさん:2006/05/31(水) 00:26:49
>>925
好きに直してつかえ
929とかはタダのチキンなカス
931デフォルトの名無しさん:2006/05/31(水) 07:11:36
>>928
POINTER_64でググったら、<windows.h>をインクルードする前に
#define POINTER64 __ptr64と書けばよいという話が見つかるが。
932デフォルトの名無しさん:2006/05/31(水) 08:37:47
これが超初心者クオリティか・・・カスばっかだなwwwwww
933デフォルトの名無しさん:2006/05/31(水) 10:30:50
超初心者スレにクオリティ求めるなよw
934デフォルトの名無しさん:2006/05/31(水) 23:22:38
wwwwww

wが多いやつにまともなやつはいない
935デフォルトの名無しさん:2006/06/01(木) 00:46:45
みさくら誤変換機にかけてみた



wwwwww

wが多いぃやちゅにまともにゃやちゅはひぃにゃいぃのぉおお

936デフォルトの名無しさん:2006/06/01(木) 14:08:32
みしゃくら誤変換機にかけてみたのぉおぉぉ゙お゙ッッーッvv、お゙お゙ーーっッvv

なんだよこれはwwwwwwwwwww
937デフォルトの名無しさん:2006/06/01(木) 22:05:10
VC++6で、あるファイルの更新日時を取得する一番楽な方法はどうすればいいでyそうか?
GetFileTimeだと難しそうなのですが。
938デフォルトの名無しさん:2006/06/01(木) 22:14:49
じゃあ、GetFileAttributesEx
939デフォルトの名無しさん:2006/06/03(土) 23:07:50
VC++で使える画像形式を変換するライブラリを探しています。
メジャーで良い感じのってなんですか?
jpg とか gif から raw RGB565 に変換したいです。
940デフォルトの名無しさん:2006/06/05(月) 14:21:16
すみません,お伺いします.
通常のC++/MFCでプログラムしているのですが.
その時にクラス構成などをXMLで出力したいと思ったとき
XmlSerializerを使えば出来ると聞いたのですが.
MFCとの共存が出来るのでしょうか

もしくはXML出力だけDLLにした場合
C++/MFCのアプリから参照できるのでしょうか?

どなたかお願いいたします.
941デフォルトの名無しさん:2006/06/06(火) 21:37:17
>>939 imagemagickとか?
http://mechanics.civil.tohoku.ac.jp/soft/node43.html

jpgtoppmとかはunix関係で有名だな。
http://www.cs.cornell.edu/dali/examples/jpgtoppm/jpgtoppm.c.html

VC++じゃないが、汎用のCで書かれている。
94255:2006/06/07(水) 16:22:21
他の人が別なプラットフォームでつくったCのコードとMakefileから
ビルドしようとしています。このMakefileを見たところ、mfcuia32.libが
リンクに必要なようなのですが、私の環境(XP SP2+Visual Studio 2005
Standard Edition)ではこのファイルが存在しません。
このファイルは、XPのファイルでしょうか?それともVisual Studioのもの?
デフォルトではインストールされず、何かインストール時にオプションを
選択せねばならなかったのでしょうか?

Visual C++の質問じゃないような気もしますが、よろしくお願いします。
943デフォルトの名無しさん:2006/06/07(水) 19:11:15
作った人に聞け
944デフォルトの名無しさん:2006/06/07(水) 22:49:33
>>942
mfcuia32.libはVC6のLibには含まれてる。

Exports
ordinal name
1 _OleUIAddVerbMenu@36
8 _OleUIBusy@4
2 _OleUICanConvertOrActivateAs@12
6 _OleUIChangeIcon@4
7 _OleUIConvert@4
5 _OleUIEditLinks@4
3 _OleUIInsertObject@4
4 _OleUIPasteSpecial@4
10 _OleUIPromptUser
9 _OleUIUpdateLinks@16
945942:2006/06/07(水) 22:55:24
>>943
ごもっとも…

>>944
なるほど、VCのバージョンの違いによるものなんですかね…
さてどうするか。VC6をどうにかして手に入れるか…
946デフォルトの名無しさん:2006/06/07(水) 23:34:17
OleDlg.libはどうよ?
947デフォルトの名無しさん:2006/06/08(木) 06:20:23
ライブラリが何だか理解してるんだろうか?
ライブラリ自体の名前はたいした意味はない。
948デフォルトの名無しさん:2006/06/08(木) 07:02:33
listviewから派生したクラスのOnInitialUpdate()にコードを追加したのですが、
なぜかC1001エラーが出てコンパイルできません。
追加したコードをコメントアウトしても同様です。

hoge\foolistview.cpp(63): fatal error C1001: コンパイラで内部エラーが発生しました。
(コンパイラ ファイル 'msc1.cpp'、行 1392)

コード追加直前までコンパイルできていたので、オプションは関係ないはずです。
何がまずいのでしょうか?
949デフォルトの名無しさん:2006/06/08(木) 08:50:10
取り敢えずリビルドしてみたら。
950デフォルトの名無しさん:2006/06/08(木) 10:40:13
>>949 リビルドしたら動きました。サンクス。

もうなにがなんだか…。
951942:2006/06/08(木) 15:33:07
>>946-947
すみません、ちゃんと理解してないと思います。
「あらかじめコンパイルされた関数群」程度の認識です。
952デフォルトの名無しさん:2006/06/08(木) 17:48:47
CString ss = _T("ABC");
TRACE(_T("Data = %s\n"), ss);

これを、Unicodeビルドでやると、結果が
"Data = "
になってしまいます。マルチバイトビルドだと上手くいきます。
Unicodeビルドで上記の様なTRACEをやりたい場合、どのように記述すれば良いのですか?
953デフォルトの名無しさん:2006/06/08(木) 17:59:04
適当に%Sとか答えてみる。
954デフォルトの名無しさん:2006/06/08(木) 18:05:47
>>953
"Data = A"
となりました・・・
955デフォルトの名無しさん:2006/06/08(木) 18:20:28
>>952
適当にTRACE(_T("Data = %s\n"), static_cast<PCTSTR>(ss));
956952:2006/06/08(木) 18:31:24
>>955
ばっちりです
ありがとうございました
957デフォルトの名無しさん:2006/06/09(金) 10:39:37
VC++での構造についての質問です。

VC++ではドキュメントとビューのクラスを用いてプログラムしますよね。
データを管理するクラスA、ビューのクラスB、ドキュメントのクラスCが
あるとすると、UIのイベントが発生して、データを変更する必要が生じた
場合、このAのメンバ関数を呼び出すのは、Cから呼び出すのが一般的だと
解釈して良いのでしょうか。

Bのクラスが直接Aのメンバ関数を呼び出すような形だと、Bのイベント処理
部分は、Aの実装に深く依存してしまいます。
(ただし小さいプログラムならば、これでもいいのでしょうが)

UI(イベント)→B→C→Aみたいな順で処理が進むのが理想だと思うのですが。
Cはちょうどフックというか、緩衝になりますね。
958強いて言えばMFCか:2006/06/09(金) 11:09:15
>VC++ではドキュメントとビューのクラスを用いてプログラムしますよね。
いいえ、そうプログラムするのはあなたの勝手ですが、VC++にそんな制限はありません。
959デフォルトの名無しさん:2006/06/09(金) 11:35:47
>>957
俺はBとCの間にも緩衝をいれることがよくある
UI→B→イベント仲介者→C→A
仲介者(Mediator)にはAppクラスを使うのがお手軽
960デフォルトの名無しさん:2006/06/09(金) 12:28:45
>>958 言葉がたりませんでしたか。MFCを使うならば、といえばOK?

>>959 レスサンクス。
B-C間でイベントを仲介させるのはC→Aの処理の実装方法と何か関係が
ありますか?

Cの実装部分を変えれば、他のアプリに使いまわせるとか、そういう
概念でしょうか?
961デフォルトの名無しさん:2006/06/09(金) 13:24:00 BE:93168386-#
>>960
B-C間に仲介があると、ひとつのドキュメントに対して複数のビューが欲しいときに楽になる
からかと。
962959:2006/06/09(金) 13:31:36
いやC→Aをうまく実装してAを隠蔽できればそれでオッケー。
>>959は、そのあとのBとCの結合に関する話です。

>>961 それそれ
963デフォルトの名無しさん:2006/06/09(金) 14:08:58
>>961-962 おお、そうですね。

Aの変更が複数のビューにまたがって影響を及ぼす場合があるなら、
Cに処理を移す前に、1つのイベントで複数の処理に対処しなければ
ならない、ということですね。

ありがとうございます。
964デフォルトの名無しさん:2006/06/09(金) 15:34:49
環境:WinXpHome VC++6.0
下記のような、ワード等のファイルを関連付けされたアプリで開いた後、
CTRL+A→CTRL+Cを行い、クリップボード内のテキストを取得しようとしたのですが、クリップボード内に入っていませんでした。
keybd_eventがファイル起動完了より先に来てしまうのが原因なのでしょうか?
だとしたら、どう修正すれば良いのでしょうか?

SHELLEXECUTEINFO shelli;
ZeroMemory(&shelli,sizeof(SHELLEXECUTEINFO));

//SHELLEXECUTEINFO構造体に変数を展開。
shelli.cbSize = sizeof(SHELLEXECUTEINFO);
shelli.fMask = SEE_MASK_FLAG_NO_UI | SEE_MASK_FLAG_DDEWAIT;
shelli.hwnd = m_hWnd;
shelli.lpVerb = _T("open");
shelli.lpFile = gFilePath;///ワードのパスを格納
shelli.lpParameters = NULL;
shelli.lpDirectory = NULL;
shelli.nShow = SW_HIDE;
ShellExecuteEx(&shelli);//実行

keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event('A', 0, 0, 0);
keybd_event('A', 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event('C', 0, 0, 0);
keybd_event('C', 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);

//クリップボード内テキスト取得処理
(省略)
965デフォルトの名無しさん:2006/06/09(金) 16:09:14
MFCで自作で簡易HTMLレンダリングエンジンって出来ませんか???????
966デフォルトの名無しさん:2006/06/09(金) 16:13:11
できますよ
967デフォルトの名無しさん:2006/06/09(金) 16:14:29
教えてくだされ!!!!
御願いします.>>

968デフォルトの名無しさん:2006/06/09(金) 16:15:47
HTMLをテキストに変換
テキストを描画
969デフォルトの名無しさん:2006/06/09(金) 16:33:53
ありがとう御座います
詳しく教えてください!!!
御願いします(泣)
970デフォルトの名無しさん:2006/06/09(金) 16:49:26
>>969
それはネタなのかっ!?
971デフォルトの名無しさん:2006/06/09(金) 16:54:01
>>970
ネタ・・・・
ジャ無いっすよう〜(T_T)
972デフォルトの名無しさん:2006/06/09(金) 17:04:03
HTMLを読み込む、<BR>タグを改行に、その他のタグを消去、
エディットコントロールに貼り付けてはいおーしまい。

とか、言われても知らんぞ
973デフォルトの名無しさん:2006/06/09(金) 17:05:05
まずはウィンドウに"Hello, world!"と表示するプログラムを作れ。
話はそれからだ。
974デフォルトの名無しさん:2006/06/09(金) 20:43:55
VC++ 2005のリソースエディタでボタンやテキストボックスなどを
正確に(かっこよく?)配置する方法はありませんか?
イメージとしてはC#のような。
975デフォルトの名無しさん:2006/06/09(金) 22:53:46
dialogを教科書通りの方法で作成したのですが、
いざ、フォーム中のボタンなどを右クリックしてClassWisardを起動し、新規クラスの追加をしようとすると、
「クラス"○○"のファイル(C:\Documents ....)を開けません。」
と表示され、結局追加されません。
一応、cppとhファイルは作成されているようなのですが、ClassWisardには追加されていないので、
メンバ変数の設定なども出来ず、困っています。
このような場合、どのようにすればいいのでしょうか。ご教授をお願いします。
976デフォルトの名無しさん:2006/06/09(金) 23:14:15
なぞなぞは苦手なんだな
977デフォルトの名無しさん:2006/06/10(土) 19:15:04
大学でVC++とセンサつかってゲームつくる授業がでた
面白そうだと思って色々妄想膨らましてたけど
いざ授業にでてみたら・・・
















Visual C++ 1.5.1
何コレ・・・orz
これって画像とか使えるの?・・・
978デフォルトの名無しさん:2006/06/10(土) 19:20:21
DLLから関数を呼ぶとき_declspecを使う方法とDEFファイル使う場合があると思うが、
おまえらはどっち使ってる?
もしくは、どう使い分けてる?
979デフォルトの名無しさん:2006/06/10(土) 19:29:11
>>977
昔のバージョンの方がapi少ないしソースも短くて読みやすいし
ドキュメントもしっかりしてて学習には向いてる。
今では入手困難なプレミアムつきのバージョンだな。
980デフォルトの名無しさん:2006/06/10(土) 19:48:26
でも、もしWin16だったら、それはそれで面倒事が多い気がする。
981デフォルトの名無しさん:2006/06/11(日) 01:17:14
スレ梅に質問いいです?
CPU情報を表示するソフトを作りたいのですが
CrusoeのCPUが判定できる 外部DLLってありますか?
982デフォルトの名無しさん:2006/06/12(月) 16:52:36
.netを使えばポトペタで作成できると聞いたのですが、
アプリケーションの実行速度はどうですか?javaと似たようなものですか?
javaはあのもっさり感が何ともいえない。
983デフォルトの名無しさん:2006/06/12(月) 17:43:44
>>982
.NETでポトペタはC#向きJAVAと比べるのもC#
984デフォルトの名無しさん:2006/06/12(月) 17:46:10
俺はJavaほどのもっさりはないと感じている。
985デフォルトの名無しさん:2006/06/12(月) 18:49:11
986デフォルトの名無しさん:2006/06/14(水) 15:05:03
うめとこ
987デフォルトの名無しさん:2006/06/14(水) 15:08:05
1
988デフォルトの名無しさん:2006/06/14(水) 15:08:42
2
989デフォルトの名無しさん:2006/06/14(水) 15:09:18
3
990デフォルトの名無しさん:2006/06/14(水) 15:10:13
4
991デフォルトの名無しさん:2006/06/14(水) 15:13:37
ご`ヽ、
ら,り⌒\ 
 /  ノ  ゙ヽ
{ /`Y´ _)
ヽ'^) >. )
992デフォルトの名無しさん:2006/06/14(水) 15:53:56
6
993デフォルトの名無しさん:2006/06/14(水) 16:01:07
7
994デフォルトの名無しさん:2006/06/14(水) 16:15:40
8
995デフォルトの名無しさん:2006/06/14(水) 16:17:40
9
996デフォルトの名無しさん:2006/06/14(水) 16:23:19
あげといてやるよ
997デフォルトの名無しさん:2006/06/14(水) 16:25:14
998デフォルトの名無しさん:2006/06/14(水) 16:26:02
999デフォルトの名無しさん:2006/06/14(水) 16:27:07
1000デフォルトの名無しさん:2006/06/14(水) 16:27:37
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。