くだすれVisual C++(超初心者用)
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2005/12/29(木) 09:44:29もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Visual C++使いが優しくコメントを返しますが、
お礼はVisual C++の布教と初心者の救済をお願いします。
Visual C++ Home Page
http://www.microsoft.com/japan/msdn/visualc/
0002デフォルトの名無しさん
2005/12/29(木) 09:58:38http://pc8.2ch.net/test/read.cgi/tech/1118781438/l50
0003デフォルトの名無しさん
2005/12/29(木) 12:45:060004デフォルトの名無しさん
2005/12/29(木) 13:03:40visual studioくれwww
0005デフォルトの名無しさん
2005/12/29(木) 13:06:59いまなら2005が無料配布中ですよ。
0006デフォルトの名無しさん
2005/12/29(木) 19:23:17でも初心者には十分すぎると思われ。
0007デフォルトの名無しさん
2005/12/29(木) 19:40:41弘法は筆を選ばず
0008デフォルトの名無しさん
2005/12/29(木) 20:10:29(Win32APIを使った開発には必須)ができません(別にしないけど)
パスの指定で
実行可能ファイル C:\Program Files\Microsoft Platform SDK\Bin
という記述が間違っているのでしょうか?
かれこれ2時間悩みました。。
0009デフォルトの名無しさん
2005/12/29(木) 20:16:57できないとはおそらくエラーが出るということだろうが、もっと詳しく。
0010デフォルトの名無しさん
2005/12/29(木) 21:26:520011デフォルトの名無しさん
2005/12/29(木) 21:58:19Platform SDK 同梱なんだろうか。
.NET Framework SDK は同梱だった気がするけど。
0012デフォルトの名無しさん
2005/12/30(金) 00:00:40うん。入ってる。
MFCとATLが付いてるからね。
0013デフォルトの名無しさん
2005/12/30(金) 00:46:37のドライバとDLL使って
VC6でコンパイルしようとしたら
途中で固まるんですが、、
libのリンクとDLLをsystem32にいれて
ヘッダーもINCLUDEしてます。
コンパイル中・・で何分立っても進まなくなって強制終了してます・・。
ソースは
#include ".\uusbd.h"
void main(){
}
原因がわかりません、、
どなたか教えてください。
00148ですけど
2005/12/30(金) 01:13:36この説明、日本語版でぬけてるらしいです。
しっかりしてくれよぉ(;´Д`A
デフォルトでC:\Program Files\Microsoft Visual Studio 8\VC\VCWizards\AppWiz\Generic\Application\html\1033にある
AppSettings.htmファイルをエディタで開き、441行目から444行目を次のようにコメントアウトする
// WIN_APP.disabled = true;
// WIN_APP_LABEL.disabled = true;
// DLL_APP.disabled = true;
// DLL_APP_LABEL.disabled = true;
これで新プロジェクトでWin32 Consoleアプリを選んだときのウィザードにて、
Windows Application、DLL、Libが選べるようになる
0015デフォルトの名無しさん
2005/12/30(金) 02:35:41何を今更
0016前スレ974
2005/12/30(金) 09:30:37調子に乗って確保していくとスワップが発生するところまで
確保できてしまいます。そこで、「この辺で許しておいてやるか」
ってくらいのところでメモリの確保をやめたいのですが、
「まだメモリ確保できそう」とか「もうそろそろやばそう」
といった情報はどうすれば取得できるのでしょうか?
.NET Framework の中にある PerformanceCounter クラスのようなもの
を使うしかないでしょうか?
0017デフォルトの名無しさん
2005/12/30(金) 09:34:190018前スレ974
2005/12/30(金) 10:37:06パフォーマンスカウンタで Memory\Available MBytes
の値をゲットしようとあれこれ調べ始めてたところでした。
次いでなんで両方から情報を取得して比較してみます。
0019デフォルトの名無しさん
2005/12/30(金) 13:00:050020デフォルトの名無しさん
2005/12/30(金) 13:05:33例えば741.852を741.9と四捨五入したいときはどうするべ?
0021デフォルトの名無しさん
2005/12/30(金) 13:05:360022デフォルトの名無しさん
2005/12/30(金) 13:08:50人が作ったのを探す、自分で作る
002318
2005/12/30(金) 13:17:14パフォーマンスカウンタで取得した値も
GlobalMemoryStatus で取得した値も
ほとんど差がないですね。
前者 326385664バイト
後者 326369280バイト
0024デフォルトの名無しさん
2005/12/30(金) 13:33:43じゃコンナ感じ?(double)((int)(741.852*10^2+5)/10^2)
0025デフォルトの名無しさん
2005/12/30(金) 15:24:51一般的にroundは四捨五入ではなくbankers roundなので注意
0026デフォルトの名無しさん
2005/12/30(金) 18:36:54bankers roundってなに?
ISO/JISで定義されている、俗に言うISO丸めのことかな?
0027デフォルトの名無しさん
2005/12/30(金) 19:05:31今更ってみんなすんなりできたの?
0028デフォルトの名無しさん
2005/12/30(金) 19:07:33そうだね。
MSはVBAのroundを "銀行型"って言ってる。
http://support.microsoft.com/default.aspx?scid=kb;ja;418216
0029デフォルトの名無しさん
2005/12/31(土) 16:48:58std::wcout.imbue(std::locale("japanese"));
std::wcout << L"本日は大晦日なり";
のようにしているのですが、"japanese" のところに
与えられる文字列にはどのようなバリエーションがあるのでしょうか?
試しに "ja_JP.EUC-JP" などとすると実行時に例外 (std::runtime_error)
が throw されます。コンパイラは Visual C++ 2005 です。
003029
2005/12/31(土) 17:22:44//std::locale::global(std::locale("japanese"));
std::wcout.imbue(std::locale("japanese"));
std::wstring ws(L"本日は晴天なり");
std::wcout << ws << std::endl;
return 0;
}
上のコードをコマンドプロンプトで実行すると正しく日本語が
表示されますが、main() 関数内の一行目のコメントをはずすと、
何も表示されなくなります。なぜでしょうか?
0031デフォルトの名無しさん
2005/12/31(土) 17:41:19003229
2005/12/31(土) 17:48:19俺の環境(?)だと、
std::wcout.imbue(std::locale("japanese"));
しないと std::wcout はワイド文字列をちゃんと表示してくれません。
0033デフォルトの名無しさん
2005/12/31(土) 17:50:32http://msdn.microsoft.com/library/ja/vclib/html/_crt_Language_and_Country_Strings.asp
言語識別文字列と国/地域識別文字列の組み合わせ。
0034デフォルトの名無しさん
2006/01/02(月) 13:13:14VisualC++はRADではない、と教わったのですがダイアログベースのアプリケーション等を作る時などは
普通にGUIでコントロール部品を貼り付けてコードを書いたりしますよね
これはRADとは言えないのでしょうか?
「RADな開発環境」とは一体どういう意味なのでしょうか?
0035デフォルトの名無しさん
2006/01/02(月) 13:23:52生きててよかった
0036デフォルトの名無しさん
2006/01/02(月) 13:47:450037デフォルトの名無しさん
2006/01/02(月) 14:41:33C言語でファイルを入力し演算するソースを考えていまして
ファイルから下記の数字が入っているtxtファイルがあったとして
■ファイルの中身
-----------------------------
23
426
3
46
12
・
・
・
・
-----------------------------
このテキストファイルを読み込み一行ごとの数字を
それぞれ変数を作って入れたいのですが
どのように組めば宜しいでしょうか。
テキストファイルを中身を丸ごとひとつの変数には入れれる
のですが・・・。
環境 OS 2K .net2003
0038デフォルトの名無しさん
2006/01/02(月) 14:43:32本当にありがとうございました
0039デフォルトの名無しさん
2006/01/02(月) 14:44:030040デフォルトの名無しさん
2006/01/02(月) 14:48:30ごまかせるとか思ってたのかと。
0041デフォルトの名無しさん
2006/01/02(月) 15:13:26http://pc8.2ch.net/test/read.cgi/tech/1135125328/l50
0042デフォルトの名無しさん
2006/01/03(火) 18:25:54おれもよくわからんが、ビルダーマンセーなやつに聞いたら
ぽとぺたやって説明してくれた。
そいつにVC6のダイアログ作るところ見せたら(゚Д゚)ポカーンして
たが、どうなんだろうな。
0043デフォルトの名無しさん
2006/01/03(火) 18:51:43その数字はどのメンバですか?dwAvailPhys?
0044デフォルトの名無しさん
2006/01/04(水) 02:47:22ネイティブの方が楽に感じるのですが、やっぱりマネージドを覚えないとまずいでしょうか?
0045デフォルトの名無しさん
2006/01/04(水) 04:09:46どうすればいいですか?
いちいちプロンプトから実行するのがめんどくさい・・・
0046デフォルトの名無しさん
2006/01/04(水) 06:14:110047デフォルトの名無しさん
2006/01/04(水) 06:16:04意味分からん
0048デフォルトの名無しさん
2006/01/04(水) 08:08:33[ctrl]+[F5]
「デバッグ無しで開始」
0049デフォルトの名無しさん
2006/01/04(水) 08:12:17return の所にブレークポイント置くとか
005029
2006/01/04(水) 08:27:12グラフィカルなもの作るときには特に C# の方が作りやすいし。
0051デフォルトの名無しさん
2006/01/04(水) 08:43:42VC++ 2005のC++/CLIはだいぶまともになったと言う話だが。
0052デフォルトの名無しさん
2006/01/04(水) 08:50:50Managed C++ に比べてずいぶんすっきりきれいになった。
でも、一から Windows アプリを組むなら C# でいいじゃん、と思った。
0053デフォルトの名無しさん
2006/01/04(水) 11:26:21getch
getchar
0054デフォルトの名無しさん
2006/01/04(水) 14:23:410055デフォルトの名無しさん
2006/01/04(水) 14:49:19他人の作ったDLLを使うためにヘッダファイルを読み込んだのですが、
そのヘッダファイルには当然、関数の宣言しかされていません。
また、intellisenseの仕様は
void foo(); // これだけだとintellisenseが効かない
void foo(){}; // intellisenseが効く
となっていると思うのですが、
つまり関数の宣言だけのヘッダファイルをincludeしてもintellisenseが効きません。
このDLLを使うにあたってintellisenseの機能を使いたい場合はどうすれば良いのでしょうか?
どなたかご教示願います
0056デフォルトの名無しさん
2006/01/04(水) 15:47:00プロジェクトにヘッダファイルを追加かな?
0058デフォルトの名無しさん
2006/01/04(水) 16:35:220060デフォルトの名無しさん
2006/01/04(水) 16:44:280061デフォルトの名無しさん
2006/01/04(水) 16:46:58そんな訳はないと思うんだが。
とりあえず宣言だけずらずらと並べて、
実装は後回しにしてプログラム組んでいくことなんてよくあるけどなぁ。
っていうか、普通クラス設計ってそういうもんじゃね?
0062デフォルトの名無しさん
2006/01/04(水) 17:04:45あらかじめ作ったやつを参照するようになってる。
006355
2006/01/04(水) 17:13:15私もそんな訳無いよなあ…昔やったときはちゃんとintellisense使えた筈なのになあ
とか思いつつ実際に新規プロジェクト作って試してみてもそうなってしまうので困ってます
申し訳ないのですが試してみていただけないでしょうか?
最悪VCインストールし直しですかね…
006455
2006/01/04(水) 17:14:140065デフォルトの名無しさん
2006/01/04(水) 18:01:480066デフォルトの名無しさん
2006/01/04(水) 18:23:13関数の引数のヒント表示のこと? >>55 みると
対象となる関数には特に名前空間も指定していないみたいだから
NamaeKukan:: まで入力したら NamaeKuukan::Kansu が
候補に出てくるってことじゃないよね?
そうじゃなくて Kansu( まで入力したら引数に関する
ヒントが表示されるって言うもの??
006755
2006/01/04(水) 18:31:09すみません、ぐぐってみましたがちょっと良く分かりませんでした
ちょっと小一時間外出しなければならないので後でもう一度調べてみます
>>66
欲しい機能は
・「Kansu(」 まで入力したら引数に関するヒントが表示される機能
・「Kan」 まで入力して Ctrl+Enter で「Kansu」と補完してくれる機能
・「::」 「.」 「->」 記号の後を自動で補完する機能
の3つです
0068デフォルトの名無しさん
2006/01/04(水) 18:36:23Visual Studio .NET 2003 で確認。
void Kansuu1(int a, int b, int c); //IntelliSense効かない
void Kansuu2(void){}; //IntelliSense効く
namespace NamaeKukan {
Kansuu1(char a, char b, char c); //IntelliSense効かない
Kansuu2(char a, char b, char c){}; //IntelliSense効く
};
class Kurasu {
Kansuu1(void); //IntelliSense効く
Kansuu2(void){}; //IntelliSense効く
};
俺、クラスにする必要がない関数でもいつも
クラスの中で static public な関数にしてたから気づかなかった。
0069デフォルトの名無しさん
2006/01/04(水) 18:45:33ちゃんと引数のヒント出るよね。
0070デフォルトの名無しさん
2006/01/04(水) 19:00:54<cstdio>を覗くと名前空間stdの中にusing ::printf;と書いてある。だめだこりゃ。
0071デフォルトの名無しさん
2006/01/04(水) 19:03:38printf( と入力すると
引数のヒントが出るんだけど、
これなんでだろね。
0072デフォルトの名無しさん
2006/01/04(水) 19:11:37void Kansuu1(int a, int b, int c); //IntelliSense効く(ここが 2003 と違うところ)
void Kansuu2(void){}; //IntelliSense効く
namespace NamaeKukan {
Kansuu1(char a, char b, char c); //IntelliSense効かない
Kansuu2(char a, char b, char c){}; //IntelliSense効く
};
class Kurasu {
Kansuu1(void); //IntelliSense効く
Kansuu2(void){}; //IntelliSense効く
};
0073デフォルトの名無しさん
2006/01/04(水) 19:13:300074デフォルトの名無しさん
2006/01/04(水) 19:49:38>しかし#include <cstdio>としてもstd::でprintfなどは候補に現れない。
うむ〜かなり重傷だなぁ。それは。
0075デフォルトの名無しさん
2006/01/04(水) 19:52:32テンプレートだから出るってことか?
わからん〜 どういう理屈で出たりでなかったりするんだろう。
0076デフォルトの名無しさん
2006/01/04(水) 19:57:33願事 : 思いの儘となる しかしやり過ぎては悪し
待人 : 遅く来たる
失物 : 出づべし
旅立 : 早く行くが利
商売 : 見込み確かなれば儲け有り
学問 : 労多いが成果有り
争事 : 思うままに勝つ
転居 : 騒がずして吉
病気 : 気長く保養せよ 吉
縁談 : 良縁あり 人に頼んで進めよ
0077デフォルトの名無しさん
2006/01/04(水) 23:21:11特にコンパイルの方法が分からないのです!
どうかおしえてください。
おねがいします。(´・ω・`)
0078デフォルトの名無しさん
2006/01/04(水) 23:25:00そう。テンプレートだから。
正確にはインラインで定義されているからなのだろうが。
007955
2006/01/05(木) 08:16:22「昔やったときは出来たはずなのに・・・」
ってのは、いろいろ開発環境渡り歩いてるせいで多分VC#辺りと勘違いしたのだと思います
わざわざ試していただきありがとうございました
0080デフォルトの名無しさん
2006/01/05(木) 08:34:010081デフォルトの名無しさん
2006/01/05(木) 22:36:490082デフォルトの名無しさん
2006/01/06(金) 00:18:582003 → 2005 で良くなったってこと?悪くなったってこと?
008381
2006/01/06(金) 02:11:522005は補完やパラメータ表示をしてくれなかったり、表示がおかしい事がやたらと多い気がする。
この辺のことはみんなどう思ってるんだろ?
0084デフォルトの名無しさん
2006/01/06(金) 09:47:05「Kan」 まで入力して Ctrl+Enter で「Kansu」と補完してくれる機能
って、俺の VS だと 2003 でも 2005 でも使えないんだけど・・・
そもそも Ctrl + Enter を押しても改行が入るだけ。
おまえら、例えばメンバ関数内でメンバ変数を入力するとき、
IntelliSense 効かせるために this-> とかわざわざ打ってませんか?
0085デフォルトの名無しさん
2006/01/06(金) 10:48:17Ctrl+SpaceのTypo
0086デフォルトの名無しさん
2006/01/06(金) 13:51:38VS6,0だとCtrl + Spaceで補完できるよ。
文字を打たずにやると、参照できるすべての関数が表示される。
結構便利。
0087デフォルトの名無しさん
2006/01/06(金) 13:58:52Visual C++ つかってもう長い事たつのに、知らなかった・・・
言語やライブラリについて調べることは多いけど、
そういやIDE自体についてはヘルプを読んだことすらなかった。
0088デフォルトの名無しさん
2006/01/06(金) 16:49:24FP_NAN が定義されていない・・・
もしかして FP_NAN は非標準????
0089デフォルトの名無しさん
2006/01/06(金) 16:52:360090デフォルトの名無しさん
2006/01/06(金) 17:16:01どうりで、 nan() とか isnan() とかもないわけだ・・・
という事は C95 準拠ってことですか?
0091デフォルトの名無しさん
2006/01/06(金) 17:24:06我が家では、 Ctrl+Space は必ず異常終了してしまう。。。 VS6.0+SP6
0092デフォルトの名無しさん
2006/01/06(金) 17:30:43一部準拠してる場合もあるしバージョンによる違いもある。
0093デフォルトの名無しさん
2006/01/06(金) 19:52:210094デフォルトの名無しさん
2006/01/06(金) 20:24:06↓みたいな関数を作成した場合
CString getHoge()
{
TCHARbuf[4096];
〜略〜
CString strBuf;
strBuf = buf;
return strBuf;
}
戻り値のCStringのインスタンスstrBufって、呼出側で、明示的にdelete
しないと、いけないの?
それともJavaみたいに、オブジェクトの非参照カウントが0になると
自動的に開放される?
0095デフォルトの名無しさん
2006/01/06(金) 20:31:17概念的にはstrBufのコピーが一時オブジェクトとして作られ、それが戻り値になる。
deleteする必要はない。deleteするのはnewしたものだけ。
0097デフォルトの名無しさん
2006/01/06(金) 20:35:30単純に、
return buf;
でよろしい。
0098デフォルトの名無しさん
2006/01/06(金) 20:52:30意図を汲んでやれ。
strBufにbufを代入したいんじゃなく、
何らかの結果をstrBufに返したいんだと俺は解釈。
>>99
l::::::::::::::::::|_!::lヽ:::::::::ハ::::::::::::::::::::::::::::::::i、::! ノ
!:::::::::::::::::l-‐ェ!;ト ヽ:::::l ´!:::::::::::::::::::::::::::::l ` ヽ 幺ク 亡 月 | ┼‐ .|] |]
l:::::::::::::::::「(;;;)ヽ、__、::レ'´l:::::::::/l、:::::::::::::l / 小巴 三l三. ヽ_ノ / こ o o
!:::::::::/l:::l__,,,rタ"゙、;!)、__!::::/ノ 〉、::::::::l \
l::::/ lヽ! _ _ l;/´ ! >、::l /
ノノlヽ、_! r――‐┐ /_ノ:::| /
l::::::>、 レ,二二ェ! /i:::::::::::l  ̄ ̄|_ /ヽ、 /\ /\ /
l:::/ /::ヽ、 `ー-―-' ,ィ'::::!\:::::l (ヽ、//\/ \/ \/ \/
レ' ム-''´lヽ、 _,,./! ゙ヾ!__ヽ! ヽ´ヽ、ヽ
!  ̄ レ;'´ | (,ゝ、 \ ヽ l、
/| _,,.-/´ ;; .,,,-! ヽ、 ヽ、 | | ! l
/ 斤'"〇 /´ ,;;:''" _,l_ ヽ ヽ/ l | l
/; l、」_,,/ '' ゙;;/ ヽ、 〉 `ヽ l/
/!,r''´!/ / ';,/"゙''':;,,,,;;'' \ / ,!
/ l ,;; |l /`'';, ,, / ,;;''"゙'' l /
0099デフォルトの名無しさん
2006/01/06(金) 20:55:38ク
でも私は貝けない。
0100デフォルトの名無しさん
2006/01/06(金) 22:07:11oss << "nanashi";
std::string s = oss.str();
とすると、最後の代入演算子で本当にコピーが発生
してるんですよね??
もうこれ以上 oss をいじることはないんで、
oss の内部で使っている(と想像しているんだが)
string を切り離して取り出せません?
なんかコピーが発生しているのが非効率的に思えて。
0101デフォルトの名無しさん
2006/01/07(土) 00:14:26できない。
どうしても気になって仕方がなければ自分で代わりのものを作れ。
0102デフォルトの名無しさん
2006/01/07(土) 07:39:37やっぱりガベコレ欲しいなぁ、C++にも。
って言うと C++/CLI 使えや、ゴルァ
ってことになるんですかね?
0103デフォルトの名無しさん
2006/01/07(土) 07:43:240104デフォルトの名無しさん
2006/01/07(土) 07:50:40cout << s;
とかできるけど、こういうのはインスタンス化されてしまうだろうしな。
0105デフォルトの名無しさん
2006/01/07(土) 08:12:54リファレンスカウンタを実装したスマートポインタって
標準化されてましたっけ? boost にあった?
0106デフォルトの名無しさん
2006/01/07(土) 08:31:12boost::shared_array
これ?
0107森のクマさん
2006/01/07(土) 08:33:01ソースと実際の挙動とで違いがあるから。
コンパイラ様が、『真面目にコピーせんでもええやん』と解釈したら、参照テーブル作って終わり。
になるかもしれない
あと最後の一行、初期化になっていないのは認識しちょる?構築後代入
0108デフォルトの名無しさん
2006/01/07(土) 08:39:24>ソースと実際の挙動とで違いがあるから。
挙動の予測可能性がC++の原則?
0109デフォルトの名無しさん
2006/01/07(土) 09:40:06レスありがとう。メモリリークしてないか気になってて
安心した。
>>97
return buf;でも、コピーコンストラクタ(っていうんでしたっけ?)が
働いて、CStringオブジェクトが生成されて、そいつへの参照ポインタが
返却されるって認識でOKですよね?
無駄なコードは書かないに越したことないから、指摘ありがとう。
>>96
戻り値のCStringオブジェクトのインスタンスの実体が確保されてるのは
スタックではないのかな?と僕は思ってるのですが・・違う?
Cでいうところの、↓は開放済みスタックへの参照でNGと同じで
char *getHoge() {
char buf[256];
return buf;
}
↓これだと、OKみたいな
char *getHoge() {
static char buf[256];
return buf;
}
0110デフォルトの名無しさん
2006/01/07(土) 09:40:24そもそもbasic_ostream::str()はbasic_stringそのものを返す。
const basic_string&を返すのではないから無意味。
0111デフォルトの名無しさん
2006/01/07(土) 09:45:38実際にはgetHogeを呼び出す側が、スタックにsizeof (CString)分のメモリを用意して、
そこへのポインタを隠し引数としてgetHogeに渡す。
getHogeではreturnするとき、その隠し引数で渡されたポインタの指す先に、
戻り値オブジェクトを作成する。
インライン展開されれば話はまた違うだろうが。
0112デフォルトの名無しさん
2006/01/07(土) 09:55:19別の型にしておけばいいじゃん、と思って
typedef double millisecond;
typedef double microsecond;
typedef double second;
ってやったけど、
millisecond x = 0.1;
microsecond y = 0.2;
second z = 0.3;
としても x=y; y=z; z=x; とかなんの警告も出ないのね。
やっぱそれぞれクラスを作らなきゃだめ?
0113デフォルトの名無しさん
2006/01/07(土) 09:57:210114デフォルトの名無しさん
2006/01/07(土) 10:06:190115デフォルトの名無しさん
2006/01/07(土) 17:11:07直接任意のフィールドを取り出すことってできますか?
CSVファイルの二番目のフィールドを取るとかです。
0116デフォルトの名無しさん
2006/01/07(土) 17:21:280117デフォルトの名無しさん
2006/01/07(土) 17:36:10つ[sscanf()]
0118デフォルトの名無しさん
2006/01/07(土) 18:04:46strtokはどうしても好きになれませんでした。
0119デフォルトの名無しさん
2006/01/07(土) 19:22:55なぜ?
0120デフォルトの名無しさん
2006/01/08(日) 12:19:02VC++2005EEを使用しているのですが
msvcrt71.dll を参照している DLL と
それを LoadLibrary で呼び出す EXE があって、
EXE側が参照しているのが msvcrt80.dll なので、
DLL側とEXE側で errno が共有できません
EXE側からも msvcrt71.dll を LoadLibrary して GetProcAddress で _errno を引っ張ってきて
どうかうまくできるには出来たのですが、もっとスマートな方法はないでしょうか?
0121デフォルトの名無しさん
2006/01/08(日) 13:28:310123デフォルトの名無しさん
2006/01/08(日) 14:57:41問題が解けないからって出題者を馬鹿にして居直る人間
0124デフォルトの名無しさん
2006/01/08(日) 18:13:58リストビューのメイン項目に複数行文字列が入って、
その項目の中に1つだけ「テスト」という文字列が入っています。
その「テスト」という文字列が代入されている項目番号を取得したいのですが
どうしたらいいでしょう?
0125デフォルトの名無しさん
2006/01/08(日) 19:30:11検索する。
0126デフォルトの名無しさん
2006/01/08(日) 20:53:00そのためのCOM。そのためのIErrorInfo。
まあ、SetLastError,GetLastErrorのペアを使うようにする手もあるけど。
0127デフォルトの名無しさん
2006/01/08(日) 21:38:29エディタで青く色づけられるんだけど。
C# じゃなくって、 C++ でも event って予約語なの??
0128デフォルトの名無しさん
2006/01/08(日) 22:14:22おそらくC++/CLIの拡張。
0129120
2006/01/08(日) 22:15:27COMのことはよくわからないので GetLastError、SetLastError を試してみたのですが、
うまく行きませんでした。
DLL 側が errno しか使用していないのでダメみたいです。
ありがとうございます、勉強になりました。
013081
2006/01/08(日) 23:10:250131デフォルトの名無しさん
2006/01/08(日) 23:35:45今のとこ、
typedef int* (FP_ERRNO) ();
FP_ERRNO dll_errno = (FP_ERRNO) GetProcAddress(MH, "_errno");
int e = *dll_errno();
ってな感じでやってます。
0132デフォルトの名無しさん
2006/01/09(月) 00:00:24素人はどっちを買ったらいいか、特徴や利点などについて教えてください。
よろしくお願いします。
0133デフォルトの名無しさん
2006/01/09(月) 00:14:01有難うございました。
0134デフォルトの名無しさん
2006/01/09(月) 00:25:19日本語のヘルプがほしいんですが
0135130
2006/01/09(月) 02:33:37すまん、DLLの改変が出来るなら同じバージョンのCRT使えるか。
どうしてもDLLのerrnoが必要ならその方法でいいと思うよ。
0136120
2006/01/09(月) 03:11:37他の人が配布しているDLLを利用しているので
改変が出来ないんです
ご助言ありがとうございました。
このやり方で対応したいと思います。
0137124
2006/01/09(月) 14:57:420138デフォルトの名無しさん
2006/01/09(月) 19:56:21ウインドウ'sプログラムなのに
#include "window.h"がありません。
#include "stdafx.h"があります。
なじぇですka?
0139デフォルトの名無しさん
2006/01/09(月) 20:28:48"stdafx.h"はビルド時間を短縮するためのプリコンパイルドヘッダのためにある。
"stdafx.h"はプロジェクト毎に存在し、その中で<windows.h>などがインクルードされているはず。
0140デフォルトの名無しさん
2006/01/09(月) 21:34:270141デフォルトの名無しさん
2006/01/09(月) 21:42:43VC++6でウィンドウが最大化されているかどうかという
状態を取得したいのですが、ずばりそのものを
BOOLで取得できるような関数ってあるのでしょうか?
0142デフォルトの名無しさん
2006/01/09(月) 21:59:260143141
2006/01/09(月) 22:23:51なんていう関数か教えてください。
0144デフォルトの名無しさん
2006/01/09(月) 22:40:320145141
2006/01/09(月) 23:04:14ありがとうございました!!!!!
解決しました。
0146124
2006/01/09(月) 23:39:030147デフォルトの名無しさん
2006/01/09(月) 23:49:060148デフォルトの名無しさん
2006/01/10(火) 01:07:51なんていう関数か教えてください。
0149デフォルトの名無しさん
2006/01/10(火) 07:41:31MSDNライブラリのように、VCのエディタからF1でDirectXのドキュメントを表示させたいのですが、
VCに外部ヘルプを登録する方法はありませんか?
0150デフォルトの名無しさん
2006/01/10(火) 09:44:07MSDNの改造
http://otsu.cool.ne.jp/umajou/
DirectX全バージョンのSDKヘルプをMSDNに統合する
http://www.sofarts.com/oldnew/computer/env-soft/windows/app_programming/vs/vs-dx-msdn.htm
0151デフォルトの名無しさん
2006/01/11(水) 01:30:13SendMessage
0153デフォルトの名無しさん
2006/01/12(木) 09:38:55最近VC2003を使いだしたのですが、
リソースにアイコンのインポートができません。
なぜ?
0154デフォルトの名無しさん
2006/01/12(木) 09:42:260155デフォルトの名無しさん
2006/01/12(木) 10:26:29あ、そうです。
ありがとうございます。やってみます。
VC6ではインポートできるのに。。。
0156デフォルトの名無しさん
2006/01/12(木) 10:54:03初心者云々以前に日本語の勉強が必要そうだw
0157デフォルトの名無しさん
2006/01/12(木) 11:06:49コンソールアプリケーションでビットマップを作成するソフトを作りたいのですが、
メモリ上のビットマップイメージに文字列や円をAIPを使って
簡単に描画することは出来ないのでしょうか?
現時点では、ビットマップイメージを作成し出力する事はできるのですが…
どなたか詳しい方、何卒宜しくお願いします。
0158デフォルトの名無しさん
2006/01/12(木) 11:13:12これでできてるのでは?
0159デフォルトの名無しさん
2006/01/12(木) 11:15:39添削をお願いしますm(_ _)m
private: System::Void Form1_MouseDown(System::Object * sender, System::Windows::Forms::MouseEventArgs * e)
{
HWND Fgw = GetForegroundWindow();
ReleaseCapture();
SendMessage(Fgw, WM_SYSCOMMAND, SC_MOVE | 2, 0);
}
0160デフォルトの名無しさん
2006/01/12(木) 11:32:30出来ている事は、例えばint[x][y][3]の中にドットのマップを格納し、
それを元に画像を作るという事でレベルの低い事です。
現在はもうちょっとレベルの高い部分、
例えば座標10,100に赤で大きなフォントで"テスト"と書く
ような事を実現したいのですが、調べてもらないのです…
0161デフォルトの名無しさん
2006/01/12(木) 11:46:42マクロを指定できると思うのですが、
これをユーザで新規に定義する方法はありますか?
スレ違いの場合は、適切なスレを教えていただければ幸いです。
0162デフォルトの名無しさん
2006/01/12(木) 12:40:10>メモリ上のビットマップイメージに文字列や円を
メモリDCとCreateDIBSection();
>座標10,100に赤で
SetTextColor( hMemDC, RGB(255, 0, 0) );
TextOut( hMemDC, 10, 100, "テスト", 6);
0163デフォルトの名無しさん
2006/01/12(木) 13:00:02スレ違いっていうか、日本語の勉強をしなおしてきてください。
>>160
調べてもらない?
0164デフォルトの名無しさん
2006/01/12(木) 13:16:24どのコントロールから来たか識別するには
どうしたらいいですか?
0165デフォルトの名無しさん
2006/01/12(木) 13:22:05> >>161
> スレ違いっていうか、日本語の勉強をしなおしてきてください。
日本語の問題ではなくて質問内容の不備ということではないのですか?
0166デフォルトの名無しさん
2006/01/12(木) 13:48:09日本語の勉強をしなおしてきてください。
0167デフォルトの名無しさん
2006/01/13(金) 16:32:41頂いたヒントを元に以下のようなコードを作成したのですがどうしても上手く動きません。
何故でしょうか?詳しい方お願いします…
iWidth : ビットマップの幅
iHeight: ビットマップの高さ
line_length : ビットマップの1ライン分のバイト幅
lpBP : 元のビットマップのピクセルデータへのポインタ
CBitmap memBMP;
CDC memDC;
memDC.CreateCompatibleDC(NULL);
memBMP.CreateCompatibleBitmap(&memDC,iWidth,iHeight);
//ビットマップの内容を取得1:コピーするバイト長2:バッファ
memBMP.GetBitmapBits(iWidth*line_length,lpBp);
//メモリDCに内部処理用BMPを選択
memDC.SelectObject(memBMP);
//文字列の描画
SetTextColor(memDC, RGB(255, 0, 0) );
TextOut(memDC, 10, 10, "テスト", 6);
//元の画像への書き込み
memBMP.SetBitmapBits(iWidth*line_length,lpBp);
memDC.DeleteDC();
memBMP.DeleteObject();
0168デフォルトの名無しさん
2006/01/13(金) 16:40:00ttp://www.microsoft.com/japan/msdn/vstudio/downloads/default.aspx
こちらの記事には「また、Visual Studio .NET 2003のSP3からは」とかあるけど、誤植なんですか?
ttp://www.itmedia.co.jp/enterprise/articles/0506/15/news006.html
0169デフォルトの名無しさん
2006/01/13(金) 16:48:49作ったビットマップオブジェクトに描画してる(ちゃんとされているか怪しいが・・・)だけで
元の画像に変化無し
そもそも元の画像ってなに?
0170デフォルトの名無しさん
2006/01/13(金) 17:06:530171デフォルトの名無しさん
2006/01/13(金) 18:30:00SetとGetが逆かも。
CreateCompatibleBitmapはデバイス依存のビットマップを作成するから、
白黒とかパレットかもしれんのでCreateDIBSectionで24bitのビットマップを
自前で定義する。
ttp://www31.ocn.ne.jp/~yoshio2/vcmemo7-1.html
あとはぐぐるなり
0172デフォルトの名無しさん
2006/01/15(日) 14:40:52::SendMessage(hWndReBar, 0x0000042B, 0, 1);
とgoogleして出てきたソースからdefineされている値を突っ込んでみたのですが
どうにもうまく動きません。
解決方法ご存知の方居ましたらご回答お願いします。
0173デフォルトの名無しさん
2006/01/15(日) 15:14:340174デフォルトの名無しさん
2006/01/15(日) 17:03:52ソース理解するのも容易だし
0175デフォルトの名無しさん
2006/01/15(日) 17:51:29ひとつの文字列に格納したいのですが、上手くいきません。
ソースは以下なのですが、どうすればよいのでしょうか?
指南願います。
LPSTR InputText = "Ans.";
// 文字を格納
for(int i = 0; i < m_CurrentTypeNum; i++){
if(m_TypedWords[i] != ""){
lstrcat(InputText, m_TypedWords[i]);
}else{
lstrcat(InputText, "□");
}
}
lstrcat(InputText, "こたえ");
lstrcat(InputText, "\0");
return InputText;
0176デフォルトの名無しさん
2006/01/15(日) 18:07:05InputTextにはAns.を格納できるだけのメモリしか指していないし、
C/C++的には文字列リテラルへは書き込みできない。
普通はmallocしたりstd::stringやらCStringを使う。
0177デフォルトの名無しさん
2006/01/15(日) 18:53:35ありがとうございます。
CStringにはまだ慣れてないので、char操作してみます。
0178デフォルトの名無しさん
2006/01/16(月) 04:43:20関数ポインタを使うときに関数のサイズも知っておきたいので・・・
0179デフォルトの名無しさん
2006/01/16(月) 05:02:570180デフォルトの名無しさん
2006/01/16(月) 07:42:190181デフォルトの名無しさん
2006/01/16(月) 07:49:060182デフォルトの名無しさん
2006/01/16(月) 11:31:49関数ポインタの勉強をしてるときに
「ポインタの位置から関数分のサイズを別の場所にコピーすれば、
コピーした関数を実行できるのかな?」
と疑問に思ったんですが、関数のサイズがわからなくて・・・
0183デフォルトの名無しさん
2006/01/16(月) 11:54:08いまの IA32 のコードって全部 PC 相対になってるわけじゃないから、
リロケータブルじゃないし。だから実行にはローダが必要なわけで。
6809 とか 68000 系を使ってればできそうな気もするけど。
0184デフォルトの名無しさん
2006/01/16(月) 12:14:34自分で計算するのが早いと思う。
0185デフォルトの名無しさん
2006/01/16(月) 13:38:450186デフォルトの名無しさん
2006/01/16(月) 18:47:07なので、もう少し頭を絞らないといけない。
0187デフォルトの名無しさん
2006/01/16(月) 19:01:01スレッド 'Win32 スレッド' (0xf80) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x474) はコード 0 (0x0) で終了しました。
プログラム '[4020] Poo.exe: ネイティブ' はコード 0 (0x0) で終了しました。
これって正常ですか?(0x0)で終了しましたが1回にいくつも出てるんですが・・・
0188デフォルトの名無しさん
2006/01/16(月) 19:01:58正常
0189デフォルトの名無しさん
2006/01/16(月) 19:03:300190デフォルトの名無しさん
2006/01/16(月) 19:03:32知らないうちに呼び出してしまったのでしょうかね?
0191デフォルトの名無しさん
2006/01/16(月) 19:03:51何処で何のためにスレッド使ってるんでしょう?
0192デフォルトの名無しさん
2006/01/16(月) 19:07:530193187
2006/01/16(月) 19:11:28これですね!
ありがとうございました
0194デフォルトの名無しさん
2006/01/16(月) 19:13:130195デフォルトの名無しさん
2006/01/17(火) 02:27:57だれか知ってます?
ちなみにVC++.netです。
0196デフォルトの名無しさん
2006/01/17(火) 02:36:00とすると2ギガくらい?
だとすれば実用上問題ない大きさか。
ストリングで100メガとか超えるようなら黙ってcharでメモリ割り当てて
使いまわすわけだから。
0197デフォルトの名無しさん
2006/01/17(火) 07:58:14そろそろ自分用2chブラウザ作ってみたいと思い、
C++のソースを拾ったんだけど、
とりあえず何て拡張子のファイル叩けば良いの?
dsp
dsw
rc
cpp
...
あ、VS2003でdsp叩いたら
「変換してね。元にもどせないよ」
と出て、OK押下〜。
ここまで合ってる?
0198デフォルトの名無しさん
2006/01/17(火) 08:21:260199デフォルトの名無しさん
2006/01/17(火) 08:34:27何のソース?
俺も参考にしたいから教えてくれないか
0200デフォルトの名無しさん
2006/01/17(火) 08:42:27サンクスコ
>>199
http://www.geocities.jp/loveloveplatinum/
エミュとかもそうだけど、オラが興味持つAppのソースはいつもC++。。
まず環境からかぁ。。
0201デフォルトの名無しさん
2006/01/17(火) 08:46:07サンクスコ
0202デフォルトの名無しさん
2006/01/17(火) 08:54:57バージョン関係ないのかな。。
今日は会社午後からにしよ。。
0203デフォルトの名無しさん
2006/01/17(火) 09:10:37VS2003でzlib.hの構文は通らない?
とするとV6環境作らなきゃ?
現在の状況
1 http://www.geocities.jp/loveloveplatinum/ のソースゲット
2 C++ダター
3 VS2003でdsw叩いたら「VS2003ぽく変換しますよ?」→変換OK。
4 とりあえず、右も左もわからずビルド
5 「zlib.hが見つかりませんよ」
6 http://www.sra.co.jp/people/m-kasahr/zlib/
7 ↑から英語版落としてdswと同じディレクトリに配置
8 おっ、5のエラー消えた。
9 と思ったら構文エラー多発。→「プログラム内のエラーが100個を超えました。コンパイルは中断されます。」
現在に至る。
・zlib.hが違う?
・VS2003のC++じゃ文法違う?
オラが無知というのは置いといてくれ。。
0204デフォルトの名無しさん
2006/01/17(火) 09:12:52構文エラー多発なのは、zlib.hの中身。
ほぼ毎行怒られてる。。
ウワー丸出しデスネ。
0205デフォルトの名無しさん
2006/01/17(火) 09:18:08ここじゃないか?
0206デフォルトの名無しさん
2006/01/17(火) 09:24:11例えばリソースビューでダイアログを挿入し、CFooHGというクラスを追加します
するとクラスウィザードはFooHG.cppに
#include ".\foohg.h"
#include "FooHG.h"
とヘッダーファイルを2回インクルードしているんですが、どういう事でしょうか?
#include ".\foohg.h"は必要ない感じもしないでもないのですが・・・
0207デフォルトの名無しさん
2006/01/17(火) 09:24:27ver1.14〜1.23で全滅。
現在有力な俺的妄想
・VS2003じゃ構文違うんだっ
あと2時間ある。マターリやってみます。
0208デフォルトの名無しさん
2006/01/17(火) 09:42:370209デフォルトの名無しさん
2006/01/17(火) 09:45:56いらないと思ったらコメントにしてリビルドしてみればいい。
0210206
2006/01/17(火) 09:49:08クラスウィザードが入れたものなので、何か訳ありなのかな?と・・・
0211デフォルトの名無しさん
2006/01/17(火) 09:55:27これにzlibはいってたよ
0212デフォルトの名無しさん
2006/01/17(火) 10:35:06う〜ん。それ使っても怒られます。
error C2143: 構文エラー : ';' が 'const' の前にありません。
こんなんばかり。
やっぱり環境カナーと思い、久しぶりにV6引っ張り出したら
インスコ失敗。こんなのどうやったら失敗するんだよと。
インスコ中にXPのSP2から導入された火壁ダイアログが表示され、
「ポート空けちゃいますよ?」と言われ、「ブロック」を選択したあたりから
負けていたんだ。動きおかしかったもの。
プログラムの追加と削除でアンインスコしようと思ったら一覧に表示されないし。
VB6.0のインスコ中に何のデータを送信しようってんだ。
お断りだ。
さて、
システムの復元逝ってきます。
0213212
2006/01/17(火) 11:03:31Windows セキュリティの重要な警告
このプログラムをブロックし続けますか?
名前 Microsoft(R)VisualStudioVSA RPC EventCreator
発行元 Microsoft Corporation
・このプログラムをブロックし続けますか?
→後で決める
・JITの設定を上書きしますか?
→いいえ
ここで再起動求む。
再起動逝って来ます。
0214212
2006/01/17(火) 11:25:10でも>>203とほぼ同じ状況。
違うと言えば、エラーが4行になった事。
でも全て同じ行でのエラーで、最後のエラーが「予期せぬEOFが」っていうので
きっと言ってる事は同じか。
さて、レベル低杉。
0215212
2006/01/17(火) 11:32:22のファイル、ダウンロード後、
何も手を加えないで
VC++6.0EnterpriseEditionの環境でビルド通りました。
ありがとうございます。
--------------------構成: GickoBrowser - Win32 Release--------------------
リソースをコンパイル中...
コンパイル中...
CDropTarget.cpp
Etc.cpp
File.cpp
Gicko.cpp
GickoBrowser.cpp
GickoViewer.cpp
ItaTree.cpp
SureList.cpp
Tab.cpp
リンク中...
GickoBrowser.exe - エラー 0、警告 0
さて、これからC++の勉強。。
目標は2週間。今月末までにC#で形にします。
仮称)会社でばれずに2ちゃんねる。
0216212
2006/01/17(火) 11:48:42そいじゃF11でステップ印。。。
と思ったら、
「混合モード」からのスタートで全アドレスチェックをしてる感じ。
それじゃ板ファイル取得メソッドらへんにブレークポイントを置いて。。
F5押した。
'C:\WINDOWS\system32\kernel32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\user32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\gdi32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\comdlg32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
こんなんがデバッグ情報にいっぱいだけど、
VB&C#厨のオラにはワカラネス。
0217デフォルトの名無しさん
2006/01/17(火) 12:05:170218212
2006/01/17(火) 12:20:45ありがとう。気にしない事にする。
今したいこと。
・このC++のソースから2chとの接続してるメソッドを探し、ぱくる。
・その為に全体の流れを見ておきたい。
・そこでトレースですよ。
・F11押すと「デバッグ情報がない。続行するにはOK押して」
・OK押した。
・[停止]-[混合モード]とタイトルバーに表示され、0042C6D5などメモリアドレスと思われるものが表示される。そしてF11を押すたびに全アドレスを走査。
・ワカラナス。しょうがないのでデバッグの停止
・どっかそれらしきメソッドにF9押下でブレークポイント設定。
・さて、F5押下。ブレークポイントまで飛んでけ。
・エラー「これらのブレークポイントは向こうです。実行プログラムはプログラムのはじめで停止します。
・ワカラナス。
今知りたい事。
ソースを拾った時、アプリがどこから走るかを調べる方法。
昼休みだしよろしくおながいします。
追伸
もう我慢できずに会社ずる休み。
ニートじゃないよ。
0219デフォルトの名無しさん
2006/01/17(火) 12:39:34だからソース見て必ず通る場所にブレークかけるしかない。
0220デフォルトの名無しさん
2006/01/17(火) 12:50:14ありがとう。
それらしきところにブレーク置いても
・エラー「これらのブレークポイントは向こうです。実行プログラムはプログラムのはじめで停止します。
ワカラナス。
それで始まったデバッグも[混合モード]で
ワケワカラナス。
混合モードって回避できないのかな?
何らかのエラーの為に混合モードになってる?
いやー。思いやられる。
0221デフォルトの名無しさん
2006/01/17(火) 12:55:18どうしてこんなのが入ってるの?なんか気持ち悪いんだけど。
0222デフォルトの名無しさん
2006/01/17(火) 13:20:550223デフォルトの名無しさん
2006/01/17(火) 13:40:44毎度ありがとう。
・右クリック→ソースを表示
をすると、
「ポンッ」て音がして解除できない。。
インフォメーションマークのメッセージボックス表示音だと思う。
超初心者以下でモウシワケナス
0224デフォルトの名無しさん
2006/01/17(火) 14:11:28デバッグビルドでもソース出なくて混合モードになるな
どっかいじれば直るかもしれないけど、
ひろってきたやつだからまともに動く保証はないわけだし
0225212
2006/01/17(火) 14:24:44手間とらせてしまいました。
ありがとう。
>デバッグビルドでもソース出なくて混合モードになるな
通常の動きじゃないんだ。。。。
どちらにせよ、絶対的に知識足らなくて、
迷惑かけました。ごめんなさい。
また夜に来ます。
ありがとうございました。
0226デフォルトの名無しさん
2006/01/17(火) 14:59:140227デフォルトの名無しさん
2006/01/17(火) 15:01:580228デフォルトの名無しさん
2006/01/17(火) 15:58:590229デフォルトの名無しさん
2006/01/17(火) 18:14:17C++ で作ろうと思いたちました。C++は常用してます、UNIXでですけど。
最近の Windows 世界では MFC じゃなくて ATL なるライブラリを
使うのがはやり?みたいなので、↓のようなチュートリアルから
入ろうと思ってます。
http://www.microsoft.com/japan/msdn/vs_previous/visualc/techmat/feature/ATLwindowing/
が、最初に躓きました。まず、なんという種類のプロジェクトを
使えばいいんでしょうか??「ATLプロジェクト」から
ウィザードをたどってプロジェクトを生成するのかと思ったんですが、
途中で DLL / EXE の指定なんかが出てきて混乱してます。
ぐぐってみると「DLLではインプロセスサーバを作ります」なんていう
記述があるんですが、あり?俺ってCOMコンポーネント作りたかったんだっけ?
普通のアプリ作りたかったんだけどなぁ、と混乱しています。
ATLを使ったHello worldアプリを作るためには、
いったいどういう手順でウィザードを薦めればいいのでしょうか?
0230デフォルトの名無しさん
2006/01/17(火) 18:41:50「Win32プロジェクト」を作成し、最初から
用意されているコードを消せばいいだけのようですた。
しかーし、さらにぐぐってみるとなにやら WTL なる
ものがあるらしい。
0231デフォルトの名無しさん
2006/01/17(火) 18:41:58デバッグ情報が入っていない。
プロジェクトの設定でデバッグ情報ありにする。
0232デフォルトの名無しさん
2006/01/17(火) 19:45:56ATLプロジェクトはCOMサーバを作るためのプロジェクト。
普通のアプリケーションを作りたければ230のとおりで合っている。
0233212
2006/01/17(火) 21:25:22メニューの[プロジェクト]→[設定]を押下し、
表示された「プロジェクトの設定ダイアログ」で、
[リンク]タブをアクティブにし、
「デバッグ情報を生成する」にチェックを入れました。
が、おなじすねぇ。
環境ムズカシス。
0234デフォルトの名無しさん
2006/01/18(水) 09:01:36デバッグできた。
ソース開いてからF5かF11で起動
0235デフォルトの名無しさん
2006/01/18(水) 16:48:51どんな関数を使えばタイマーはじつげんできるのですか?
0236デフォルトの名無しさん
2006/01/18(水) 16:50:000237デフォルトの名無しさん
2006/01/18(水) 17:18:32SetTimer
0238デフォルトの名無しさん
2006/01/18(水) 18:35:53VisualStudioをインストールしたフォルダのどこかに
在った様な・・・
0239デフォルトの名無しさん
2006/01/18(水) 18:55:040240デフォルトの名無しさん
2006/01/18(水) 18:56:31すぐ見つかりました
愛してる
0241デフォルトの名無しさん
2006/01/18(水) 20:45:28コンパイルの仕方すらわかりません。
そのレベルの使い方が書いてある説明書の場所を教えてください。
0242デフォルトの名無しさん
2006/01/18(水) 21:23:08なんのアプリ(.NETか、Win32apiか、consoleか)を作りたいのか、
C++はある程度わかるのか、何をしたいのか(目的)などで
答えはかなり変わるのでは?
0244241
2006/01/18(水) 22:09:59勢いあまった・・・。
とりあえず、Win32アプリのサンプルプログラムをコンパイルしてみたいんですが・・・。
C++はわからないです。
Cを少しかじった程度なので・・・。
0245デフォルトの名無しさん
2006/01/18(水) 22:25:19expressはそのままではwin32アプリは使えないはず。
え〜っとどこかに・・・あ、あったあった。
ttp://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
これを参考にインストールするべし。
とりあえず、面倒だけどCを復習しながら、win32apiを直接使うと
いいかもね。
0247デフォルトの名無しさん
2006/01/18(水) 23:17:08目標としては自分の訪れたHPで記録されているcookieの
ビューワーを作りたいなんて考えてます。
0248デフォルトの名無しさん
2006/01/19(木) 00:10:35メモ帳で見れる。
0249デフォルトの名無しさん
2006/01/19(木) 02:09:47■死にたくなければ、このレスをコピーして他のスレに □
□10回貼り付けて下さい。1時間以内にです!もし無 ■
■した場合は、今日寝ている間に富子さんがやってきて□
□貴方の首を絞めに来ます。富子さんは太平洋戦争の■
■時に16歳という若さで亡くなった女の子で、未だに成 □
□仏していないそうです。信じる信じないは貴方次第。 ■
■今年になってからこのレスを無視した人で、“呪われ □
□て死亡した人”が続出しています。これは富子さんの ■
■呪い。呪われて死んでもいいのならこれを無視するこ□
□とでしょうね。 ■
■――貴方がこうしているうちに富子さんが後ろから見□
□ていますよ…。 ■
■□■□■□■□■□■□■□■□■□■□■□■□
0250デフォルトの名無しさん
2006/01/19(木) 03:05:221秒ごとに、何か計算した値をコマンドプロンプト
に出力させたいのですが、可能なのでしょうか?
/*
while(1){
計算処理
if(1秒たてば){
printf()
}
else 計算処理に戻る
}
などのようにできるなら、やり方を教えていただけないでしょうか?
0251デフォルトの名無しさん
2006/01/19(木) 03:27:37// 厳密には1秒ではないが、計算処理が充分に早ければ使い物にはなる。
for (time_t oldTime = time(NULL);;) {
//計算処理
if (oldTime != time(NULL)) {
oldTime = time(NULL);
printf("");
}
}
0252デフォルトの名無しさん
2006/01/19(木) 03:41:43Windowsアプリ(windows.hを使うアプリ)なら、SetTimerを使うこともできる。
0253デフォルトの名無しさん
2006/01/19(木) 03:51:03ありがとうございます。
試してみるとうまくいきました。
0254デフォルトの名無しさん
2006/01/19(木) 03:56:25SetTimerはどのように使えばよいのでしょうか?
調べたのですが、SetTimerの返り値がわかれば、
if(SetTimer())などのようにできるのでしょうか?
0255デフォルトの名無しさん
2006/01/19(木) 04:50:36SetTimerはウィンドウを作成することが前提なので
コンソールアプリを使うのであればあまり適さない。
0256241
2006/01/19(木) 07:44:01すみません、手探りで最後までやってみたんですけどできませんでした・・・。
多分、手順2か、3が間違ってると思うんですが、
手順2
リンク先で、「PSDK-x86.exe」をダウンロードしてきて、
C\Programfiles\Micro〜(ディフォルトの場所)にインストールする。
手順3
[オプション] →[プロジェクトとソリューション] →[Visual C++ フォルダ] の
[Visual C++ フォルダ]が見つからなかったので、[Visual C++ ディレクトリ]の
Win32プラットフォーム→実行可能ファイル、インクルードファイル、ライブラリファイルに
C:\Program File\Microsoft Platform SDK\Bin
同上、\Include、\Libとそれぞれ書き足す。
おかしい場所がないでしょうか?
お願いします。
0257デフォルトの名無しさん
2006/01/19(木) 07:55:50[オプション] [プロジェクトとソリューション] [Visual C++ ディレクトリ]
実行可能ファイル:C:\Program File\Microsoft Platform SDK\Bin
インクルードファイル:C:\Program File\Microsoft Platform SDK\Include
ライブラリファイル:C:\Program File\Microsoft Platform SDK\Lib
であれば手順3はOK
あとはわからないね。
0259デフォルトの名無しさん
2006/01/19(木) 08:58:36だからtimeGetTime使っとけって
精度msだから
0261247
2006/01/19(木) 12:23:22言葉足らずでした、すいません。メモ帳で中身が見る事が可能なのは
調べてわかったのですが、指定したurlのクッキーをvisualc++で
読み込んで、キーと値のリストを出したいのです。
0262デフォルトの名無しさん
2006/01/19(木) 12:49:31iなんたら
0263デフォルトの名無しさん
2006/01/19(木) 13:18:40. 1 大 阪 府 37.93 26 高 知 県 15.82
. 2 福 岡 県 31.68 27 静 岡 県 15.82
. 3 千 葉 県 27.82 28 長 野 県 15.77
. 4 愛 知 県 27.43 29 富 山 県 15.71
. 5 埼 玉 県 24.78 30 山 梨 県 15.53
. 6 東 京 都 24.76 31 香 川 県 15.24
. 7 京 都 府 24.60 32 熊 本 県 14.45
. 8 滋 賀 県 23.42 33 石 川 県 14.28
. 9 兵 庫 県 23.33 34 福 井 県 14.09
10 岐 阜 県 22.79 35 佐 賀 県 14.04
11 和歌山県 22.32 36 徳 島 県 13.45
12 奈 良 県 21.51 37 新 潟 県 13.41
13 神奈川県 21.33 38 宮 崎 県 13.16
14 宮 城 県 21.25 39 大 分 県 12.66
15 三 重 県 21.11 40 鳥 取 県 12.10
16 広 島 県 20.66 41 島 根 県 11.41
17 茨 城 県 20.53 42 青 森 県 11.39
18 岡 山 県 19.25 43 鹿児島県 11.16
19 栃 木 県 18.13 44 秋 田 県 10.66
20 愛 媛 県 17.89 45 岩 手 県 10.64
21 沖 縄 県 17.56 46 山 形 県 10.50
22 山 口 県 16.56 47 長 崎 県. 9.23
23 福 島 県 16.44 全国平均 18.08
24 北 海 道 16.36
25 群 馬 県 16.11
0264デフォルトの名無しさん
2006/01/19(木) 18:09:00ttp://lets-go.hp.infoseek.co.jp/c_setting09.html
0265デフォルトの名無しさん
2006/01/19(木) 21:22:23なにも考えずにSQLサーバー入れてしまった。
なんかまずいんだろうか。
0266デフォルトの名無しさん
2006/01/19(木) 22:50:20気にならないんならいいんじゃないの?
0267デフォルトの名無しさん
2006/01/20(金) 04:18:36main()
{
cout << "test\n";
return 0;
}
Visual Studio C++ 2005でこれがコンパイル通りません。
なんでだろ。
0268デフォルトの名無しさん
2006/01/20(金) 04:24:400269デフォルトの名無しさん
2006/01/20(金) 04:34:480270デフォルトの名無しさん
2006/01/20(金) 04:39:07#include <iostream>
にすればいいってことなのか?
違うな。
0271デフォルトの名無しさん
2006/01/20(金) 04:48:50using namespace std;
int main()
{
cout << "test\n";
std::cout << "test\n" ;
return 0;
}
こうすればいいのか、なるほど。
0272デフォルトの名無しさん
2006/01/20(金) 04:49:37こんな事にグダグダ書いてる暇があるんなら
http://wisdom.sakura.ne.jp/programming/cpp/index.html
でも読んどけ
0273デフォルトの名無しさん
2006/01/20(金) 05:22:47WTLとATLの関係がわかりません
WTLはウインドウアプリケーションを作成するための
テンプレートライブラリのようですが
ATLの位置づけがよくわかりません。これもWTLと同類のものでしょうか?
0274デフォルトの名無しさん
2006/01/20(金) 10:07:56Window関係はちょろっと踏み込んだ程度。
別にWTL/ATLのスレがあるから、そちらにいくがよろし。
0275デフォルトの名無しさん
2006/01/20(金) 11:12:420277デフォルトの名無しさん
2006/01/20(金) 11:17:42*.h Cがスキ
*.hpp C++がスキ
*.hxx C++以外認めない!!
0278デフォルトの名無しさん
2006/01/20(金) 11:47:03わかりやすく噛み砕いた説明どうもですw
レスありがとうございました
0279デフォルトの名無しさん
2006/01/20(金) 11:48:00>>277さんありがとうございました
0280デフォルトの名無しさん
2006/01/20(金) 12:35:350281デフォルトの名無しさん
2006/01/20(金) 12:40:170282デフォルトの名無しさん
2006/01/20(金) 12:46:125000円ぐらいで販売されるんじゃないの?
0283デフォルトの名無しさん
2006/01/20(金) 12:51:33それ書籍付きのVisual Studio Express
5000円で好きな本買った方がまし
0284デフォルトの名無しさん
2006/01/20(金) 12:55:39ただなのはベータ版?
0285デフォルトの名無しさん
2006/01/20(金) 13:28:05Form2 *NewMDIChild = new Form2();
NewMDIChild->MdiParent = this;
NewMDIChild->Show();
これで子ウィンドウを作ったのですが、変数を受け渡したり、
子ウィンドウの処理を親ウィンドウに反映させたりするには
どうしたら良いでしょうか。
0286デフォルトの名無しさん
2006/01/20(金) 15:23:590287デフォルトの名無しさん
2006/01/20(金) 15:48:18あらかじめForm2クラスの中に、変数を受け渡すためのアクセサを書いておいて、
親ウインドウからそれにアクセスする。逆はダメ。
0288デフォルトの名無しさん
2006/01/20(金) 17:21:17int → %d
float → %f
char → %c
__int64 → ?
wchar_t → ?
下の2つが分かりません
0289デフォルトの名無しさん
2006/01/20(金) 17:45:49つ[MSDN]
「printf 関数と wprintf 関数の書式指定フィールド」というページがある。
0290モンモン
2006/01/20(金) 17:51:54[2] 問題文�@x^2=5をとくことにより、小数点以下8桁までの正確な√5を求めなさい。
またそのときの反復回数は?
�A次の2次方程式の解を7桁まで正確に求めなさい
x^2-3x+2=0
�B次の方程式の解を7桁まで正確に求めなさい
πsin x-2x=0 (-π<x<π)
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: 不明
[3.3] 言語: (C++)
[4] 期限: [2006年2月1日まで]
[5] その他の制限: なし(どこまで習っているか、標準ライブラリは使ってはいけない等々)
0291デフォルトの名無しさん
2006/01/20(金) 17:53:19%fはdouble用。
可変個引数なのでfloatもdoubleに変換されているからfloatもいけるだけ。
0292デフォルトの名無しさん
2006/01/20(金) 18:03:230293デフォルトの名無しさん
2006/01/20(金) 19:27:58バロスw
0295デフォルトの名無しさん
2006/01/20(金) 22:20:50新しいプロジェクトからWindowsアプリケーションをつくるとコードが生成されますね。
このコードをコンパイルしようとすると
エラー1fatal error C1083: include ファイルを開けません。'windows.h': No such file or director
てなメッセージが出るんですけど、これはどーゆーことなんですか?
0296デフォルトの名無しさん
2006/01/20(金) 22:27:10そこに書いてあるとおり
0297デフォルトの名無しさん
2006/01/20(金) 22:30:15つまり、windows.hをどこかから引っ張ってこいと言うことですか?
具体的にどうするのか教えて欲しいです。
0298デフォルトの名無しさん
2006/01/20(金) 22:31:37プログラミングしようって言うんだ・・
windows.h が無いって言われてるんだから、
SDKのディレクトリ以下を検索するとか
しようとは思わないのか?????
0299デフォルトの名無しさん
2006/01/20(金) 22:36:29ttp://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
手順3以降はちゃんとやった?
0300デフォルトの名無しさん
2006/01/20(金) 22:43:240301デフォルトの名無しさん
2006/01/20(金) 22:55:24あと、いくら初心者でも少しは自分で調べようとしなさい。
書いてあるものは、最低限読みなさい。
それができないなら、VCは難しいですよ。
0302デフォルトの名無しさん
2006/01/20(金) 22:56:30再確認しましたがやっています。
0303286
2006/01/20(金) 22:58:56名前と同名のプロパティを追加すればよい(合ってますか?)という事が
わかりました。で、プロパティマップに追加すればHTMLから実行された時に
put_処理を通って<PARAM>でセットした値を利用する事ができるらしいのですが、
どうもput_処理を通っていないようです。
他にも何かしないといけない事があるのでしょうか。
0304デフォルトの名無しさん
2006/01/20(金) 23:13:10インクルードファイルのフォルダの設定が正しくなされていない。
0305デフォルトの名無しさん
2006/01/21(土) 03:51:20CListCtrlを使えばいいのでしょうか?
0306デフォルトの名無しさん
2006/01/21(土) 04:05:410307デフォルトの名無しさん
2006/01/21(土) 04:06:56フォントは既存のものを使う予定です
0308デフォルトの名無しさん
2006/01/21(土) 08:22:16TransparentBlt()を使うためにmsimg32を設定に追加する、とあるのですが
どうすればいいのですか?
0309デフォルトの名無しさん
2006/01/21(土) 09:20:53リンクするLIBとしてmsimg32.libを追加すればいいだけ
0310308
2006/01/21(土) 13:42:43ソース自体に問題あるみたいなんで確認できてないんですけど、
Transが外部〜はでなくなりました
ありがとうございました
0311デフォルトの名無しさん
2006/01/21(土) 14:03:260312デフォルトの名無しさん
2006/01/21(土) 14:54:23HPあるんだから直接聞けばいいのに・・・・
0313デフォルトの名無しさん
2006/01/21(土) 22:57:11目標はファイラー作成です。
Visual studioとその解説本・C言語の入門書を買いたいと思いますが、
オススメの本がありましたら教えてください。
0314デフォルトの名無しさん
2006/01/21(土) 23:04:57って、C言語の入門書って書いてあるってことは、
C++じゃなくてCがまだってことかな?
0315デフォルトの名無しさん
2006/01/21(土) 23:10:37本屋でC言語の本を立ち読みして
は〜 基本はBASIC(センター試験でもある高校数学のアレ)と一緒なんだな
って思ったのが昨日ってレベルです
0316デフォルトの名無しさん
2006/01/21(土) 23:29:54malloc使ってもうまくいかない…('・ω・`)
0317316
2006/01/21(土) 23:33:42これって仕様上無理なのか、それとも何か回避方法があるのか教えてください
0318デフォルトの名無しさん
2006/01/21(土) 23:57:404K*4K=16M
sizeof(float) = 4 ?
5こ
64MB*5 >300MB
スキに確保しろ、仕様上は確保できる範囲
0319デフォルトの名無しさん
2006/01/22(日) 00:18:51サンクス。仕様上確保できるなら私のやり方がまちがってるっぽいね…
もうちょっと頑張って考えてみます
コンパイルでエラーが出ないってつらいなぁ
0320デフォルトの名無しさん
2006/01/22(日) 00:52:20heapの領域は足りている?mallocはheap領域にメモリを確保すると
思うけど、その領域が足りていないんじゃ?
確か、linkのオプションで指定できたと思うから、
コマンドプロンプトで、link /?とかMSDNで確認してみるといいかも。
0321デフォルトの名無しさん
2006/01/22(日) 01:15:130322デフォルトの名無しさん
2006/01/22(日) 01:21:500323デフォルトの名無しさん
2006/01/22(日) 01:43:53malloc( sizeof ( float [4096][4096]) );
で13個(832M)確保できた。
(RAM+ページングが1024M)
0324デフォルトの名無しさん
2006/01/22(日) 06:06:35FAR ポインタの区別はないんですか?
Windows って、セグメントセレクタはもはや使われてなくて
セグメントセレクタ固定のフラットなメモリモデルなんでしょうか?
デバッガなんかでセグメントディスクリプタの内容見れますか?
0325デフォルトの名無しさん
2006/01/22(日) 07:28:00フォームに貼り付けたりできましたが、VisualC++では
これに相当する機能はないのでしょうか?
ActiveXを使用するとレジストリへの登録など煩雑になるので
Exeに組み込むかあるいはDLL形式だとGOODなのですが・・・
0326デフォルトの名無しさん
2006/01/22(日) 08:41:10ありません。
いいえ。
はい。
0327デフォルトの名無しさん
2006/01/22(日) 08:58:43なんでNXビットが必要なのかなぁ、と思って。
0328デフォルトの名無しさん
2006/01/22(日) 09:05:23Win32アプリケーションははCSもDSもみんな同じセグメント。
0329デフォルトの名無しさん
2006/01/22(日) 09:08:42そんな話しても意味ないですね。
0330デフォルトの名無しさん
2006/01/22(日) 09:48:55環境 WinNT4.0 IE6 VC6
CHTMLViewクラスを使って、簡易ブラウザを作っているのですが、
表示されるWebページのレイアウトが、IEで見るときよりも
広がってレイアウトされる(画面外にはみでて描画される)
場合があります。ウィンドウのサイズをリサイズすると、
IEで見るのと同様の表示になるので、とりあえず、
URLで判断して、表示がおかしくなるページの場合のみ
画面サイズをリサイズして対応しているのですが、
根本的な解決方法はないのでしょうか?
0331デフォルトの名無しさん
2006/01/22(日) 17:53:55CreateDIBSection()で 24ビットのDIBSectionを下のように作成した場合、
lpdwPixelにすでにピクセルデータが入っている配列ものを指定し
元々のビットマップデータの上に描画する、という事は可能でしょうか?
詳しい方宜しくお願いします。
hbmpBMP = CreateDIBSection(NULL, &biBMP, DIB_RGB_COLORS, (void **)(&lpdwPixel), NULL, 0);
0332デフォルトの名無しさん
2006/01/22(日) 19:50:20コンソールアプリにおいて、ファイルから読み込んだ24bitBitmapに
文字列を描画すして別のファイルで保存プログラムを作りたいのですが、
現画像のピクセルデータを格納している配列に文字列をうまく描画できません。
どのように変更すればlpBpに文字列を描画できるでしょうか?
詳しい方何卒宜しくお願いします。
///////////////
(lpBp:ファイルから読み込んだ24ビットビットマップのピクセルデータ)
HANDLE hBMP;
HDC hDC;
BITMAPINFO biinfo;
//BITMAPINFOの設定(24ビットビットマップ)
ZeroMemory(&biinfo, sizeof(BITMAPINFO));
biinfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
biinfo.bmiHeader.biWidth = iWidth;
biinfo.bmiHeader.biHeight = iHeight;
biinfo.bmiHeader.biPlanes = 1;
biinfo.bmiHeader.biBitCount = 24;
biinfo.bmiHeader.biCompression = BI_RGB;
0333デフォルトの名無しさん
2006/01/22(日) 19:51:10hDC = CreateCompatibleDC(NULL);
//DIBSection作成
hBMP = CreateDIBSection(hDC,&biinfo,DIB_RGB_COLORS,(void**)lpBp,NULL,0);
//メモリDCに内部処理用BMPを選択
SelectObject(hDC,hBMP);
SetTextColor(hDC, RGB(255, 0, 0) );
TextOut(hDC, 10, 10, "テスト", 6);
//メモリ解放
DeleteDC(hDC);
DeleteObject(hBMP);
0334デフォルトの名無しさん
2006/01/22(日) 20:11:05僕もみなさんのように知識を持ちたいのですがどのようなところでこういう事は勉強すればよいのでしょうか?みなさんは専門学校や工業学校に行ってるんですか?それとも本などで独学しているのですか?
板違いだったらすみません。でも真剣に進路を考えています。
0335デフォルトの名無しさん
2006/01/22(日) 20:18:55マ板へどうぞ
ttp://pc8.2ch.net/prog/
0336デフォルトの名無しさん
2006/01/22(日) 20:19:25それでもし自分は向いてないと思ったら違う道に進めばいい。
0337デフォルトの名無しさん
2006/01/22(日) 20:49:58Excelファイルのプロパティにある「カスタム」タブを付けたい。
どうやればわからないので誰か教えてください。
0338デフォルトの名無しさん
2006/01/22(日) 21:51:43VC++では配列の初期値が0であると保障されていませんよね?
0339デフォルトの名無しさん
2006/01/22(日) 21:55:23ZeroMemory(&array, capacity);
0340デフォルトの名無しさん
2006/01/22(日) 22:14:59memset
(ただし1次元配列のみ)
0341デフォルトの名無しさん
2006/01/22(日) 22:24:16グローバル変数・静的変数なら0初期化される。
ローカル変数ならされない。
別にVC++に限ったことではなくてANSI/ISO準拠ならどのコンパイラでも同じ。
ちなみに今のところZeroMemoryとmemsetが出てきたけどstd::fillもある。
0342デフォルトの名無しさん
2006/01/22(日) 22:54:54MSのZeroMemoryの中の人はmemmset
0343デフォルトの名無しさん
2006/01/22(日) 23:06:53int hoge[256] = {0};
とかでもいいんじゃね?
0344338
2006/01/22(日) 23:15:10>>343
結局、クラスのメンバ変数をどう初期化するかってことなんですよね。
宣言時にその書き方すれば、初期化できましたっけ?
ZeroMemoryもmemsetってことは、これらは二次元配列には使えないってことですかね?
二次元、三次元の配列を初期化したいです。
0345デフォルトの名無しさん
2006/01/22(日) 23:24:37{
boost::value_initialized<int> values[100][200];
}
0346デフォルトの名無しさん
2006/01/23(月) 00:02:280347デフォルトの名無しさん
2006/01/23(月) 13:55:11教えてください。
左オペランドと右オペランドって何ですか?
0348デフォルトの名無しさん
2006/01/23(月) 14:24:08Aが左オペランド、Bが右オペランド
0349デフォルトの名無しさん
2006/01/23(月) 16:13:17>>347です。有難うございました!
数学で言うところの左辺、右辺みたいな
感じでしょうか・・・?
0350デフォルトの名無しさん
2006/01/23(月) 16:27:010351デフォルトの名無しさん
2006/01/23(月) 16:27:570352デフォルトの名無しさん
2006/01/23(月) 19:39:35(とりあえずCの範疇では駄目なのは知ってる)。
0353デフォルトの名無しさん
2006/01/23(月) 21:57:07VC++6でビルドして使っていたプロジェクトのdswファイルを実行して
プロジェクトを変換して2005でリビルドするときは問題ないのですが
2005でプロジェクトの新規作成をして
そこに今までのソースコードを追加してビルドした場合は、
コンパイラ エラー C2664 * 番目の引数を '***' から '***' に変換できません。(新しい機能 ; ヘルプを参照)
が頻発してビルドできません。
エラーが出た部分の引数をひとつずつキャストすれば解決できるのですが、数が多くて大変です・・・
どこを設定すればVC++6のプロジェクトを変換した場合のように
このエラーを無視してビルドできるのでしょうか?
0354デフォルトの名無しさん
2006/01/23(月) 22:01:33今までのつけが回ってきたと思って諦めろ。
0355デフォルトの名無しさん
2006/01/23(月) 22:10:490356デフォルトの名無しさん
2006/01/24(火) 05:25:07以下のコードのようにデフォルト引数に"(Wクォーテーション)を含んだ物で
intellisenseの引数ヒントやメンバ一覧などが利かなくなります。
class hogehoge{
public:
hogehoge( const TCHAR* text = _T("\"") ){};
~hogehoge(){};
};
の場合は追加情報はありませんとでて一覧が表示されません。
もしくは
void hogehoge( const TCHAR* text = _T("\"") ){};
の場合は引数ヒントがでて来ません。
VCを入れ直したりncbを消したりしたのですが改善されません、うちだけの現象でしょうか?
コンパイルも通るし期待したとおりの結果でプログラムも動きます。
コードがおかしいとintellisenseが利かなくなるとどこかで見たのですが、\"と言う記述はおかしいのでしょうか?
0357デフォルトの名無しさん
2006/01/24(火) 08:04:500358デフォルトの名無しさん
2006/01/24(火) 10:42:570359デフォルトの名無しさん
2006/01/24(火) 10:51:08むしろ IntelliSense で見えるようなコーディングしようと思ってしまったり。
0360デフォルトの名無しさん
2006/01/24(火) 16:43:000361デフォルトの名無しさん
2006/01/24(火) 16:53:26CStdioFile sf;
sf.Open(filename, CFile::modeWrite | CFile::modeCreate);
ss = _T("あいう");
sf.WriteString(ss);
sf.Close();
これを、Unicodeでビルドすると、Test.txtには何も書かれていません。
バイナリエディタで見ても、何も書かれていませんでした。
Test.txtに"あいう"の文字列を書き込むには、どうしたら良いでしょう?
0362デフォルトの名無しさん
2006/01/24(火) 19:25:19プログラムで、最初に一度これを実行させろ。
std::locale::global(std::locale("japanese"));
これには#include <locale>が必要。
0364デフォルトの名無しさん
2006/01/25(水) 21:14:57いい加減PlatFormSDKを更新しようと思い、MSのサイト内を検索したのですが、『Windows 2003 Server SP1』用の奴が見つかりました。
私はサーバー用のソフトを作る事は無いんですが、これを入れればいいんでしょうか?
あと、VC2005 Expressは最適化がちゃんと掛かるという事が書いてあったんですが、VC++6.0Proに比べて優秀でしょうか。
あまり代わり映えしないなら、今のままの環境で開発したいと思っているからです。
ご回答宜しくお願いします。
0365デフォルトの名無しさん
2006/01/25(水) 21:46:38VC6なら、いれてはいけません。
"This SDK does not support working with Microsoft Visual C/C++®, 6.0 as support
for VC 6.0 has ended. The last SDK that will work with VC 6.0 is the February 2003 Edition,
you can order a CD on the fulfillment site. Side by side installations are not supported."
0366デフォルトの名無しさん
2006/01/25(水) 21:53:38PlatformSDK February2003は公式サイトからのリンクは消えてるけど
まだページは残っててダウンロードも可能↓
ttp://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
VC6使うなら今のうちに
0368デフォルトの名無しさん
2006/01/26(木) 01:55:36本を参考に以下のようなコードを書いたのですが
ポインタにポインタを加えようとしました。
というメッセージが出て上手くいきません。
オペランドもダメらしく、どのようにすれば宜しいのでしょうか?
CString cs;
cs = "";
cs = cs + "aiu" + "eo";//エラー
AfxMessageBox(cs);
0369デフォルトの名無しさん
2006/01/26(木) 01:58:530370デフォルトの名無しさん
2006/01/26(木) 02:03:50cs += "aiu" + "eo";//エラー
とかやってない?
0371デフォルトの名無しさん
2006/01/26(木) 02:18:02ちなみにVC++6.0です…
何か原因として考えられそうなもの有りましたらご教示下さい。
ちょっと実験してみます…
0372デフォルトの名無しさん
2006/01/26(木) 03:14:18サンプルOnDraw()内で以下のようなコードを書いて
プロジェクトと同一のディレクトリにあるビットマップ
color_bar.bmp
を画面に貼り付けたいのですが、上手くいきません。
何故でしょうか?
CBitmap hBMP_IN;
CBitmap *oldBMP;
CDC memDC;
memDC.CreateCompatibleDC(pDC);//DCをコピー
bmpIN.LoadBitmap("./color_bar.bmp");//ビットマップをロード
oldBMP = memDC.SelectObject(&bmpIN);//ビットマップを選択
pDC->BitBlt(0,0,100,100, &memDC, 0,0, SRCCOPY);
memDC.SelectObject(oldBMP);
0373デフォルトの名無しさん
2006/01/26(木) 05:51:08CDC memDC;//メモリDC
HANDLE hBMP_IN;//ビットマップのハンドル
LPBYTE lpIN;//入力画像のバッファ
memDC.CreateCompatibleDC(pDC);//DCをコピー
//自前の関数でビットマップのロード
//(ファイルを読み込んでhBMP_INにはハンドルが、
//lpINには画像のイメージが格納される)
BMPio->load_bitmap(&hBMP_IN, "./color_bar.bmp", &lpIN);
memDC.SelectObject(&hBMP_IN);
pDC->BitBlt(0,0,500,300,&memDC,0,0,SRCCOPY);
memDC.DeleteDC();
のようにしますと、画像が真っ白のまま変更されません。
何故でしょうか…?徹夜しても解決できませんでした…
hBMP_INの値も変更されていますし、
lpINには正常に情報が取得されています。
ちなみに以下のようにコーディングすると直線が正しく描画されます。
temp_p[0].x=200;temp_p[0].y=200;
pDC->LineTo(temp_p[0]);
詳しい方、ご教示の程を何卒宜しくお願いします。
0374デフォルトの名無しさん
2006/01/26(木) 07:40:19これはどう?
cs = (cs + "aiu") + "eo";
cs += static_cast<CString>("aiu") + "eo";
0375デフォルトの名無しさん
2006/01/26(木) 09:22:240376デフォルトの名無しさん
2006/01/26(木) 09:48:310377デフォルトの名無しさん
2006/01/26(木) 09:51:470378デフォルトの名無しさん
2006/01/26(木) 10:10:58数学のように変数を使って公式に当てはめるだけじゃダメなんですか?
VisualC++6.0ですが、実行したら、
左のオペランドが左辺値になっていません。と1つだけエラーがでて
実行出来ません。考えられる事は何でしょう?
右のオペランドは通ってるみたいなんですが・・・
くだらない質問かもしれませんが、超初心者なので、
どなたか教えてください。
0379デフォルトの名無しさん
2006/01/26(木) 10:13:18http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsintro7/html/vxorilanguageequivalentskeywords.asp
ここの C++ の欄を見ているんだけど、
_ で始まるキーワードはすべて Visual C++ 固有のものと思っていいの?
0381デフォルトの名無しさん
2006/01/26(木) 11:57:58で動的に確保した配列のサイズを調べる方法はありますか?
どうもsizeofは使えないようなので…
0382デフォルトの名無しさん
2006/01/26(木) 12:12:56std::vector<T> 使うほうがすっきりすると思う。
まぁヒープマネージャは適切に delete[] できるわけだから、
operator delete[] の実装を見ればサイズも分かると思うけど、
そのサイズが count 分の int を格納するのに十分な
事が保証されているだけで、count の値を事後に知る事はできない。
0383デフォルトの名無しさん
2006/01/26(木) 12:16:42std::vectorを使わない理由は?
newを使うなら、単純にサイズを得られなかったり忘れずにdelete[]をしなければいけなかったりといったリスクを背負うのは当然なのだが。
0385デフォルトの名無しさん
2006/01/26(木) 13:25:16scanf();
からgets関数を使ったプログラムに変えるには
どうしたら良いですか?
VC++でやってみたら実引数が多すぎます。って出たのですが、
何が悪いんでしょうか?
0386デフォルトの名無しさん
2006/01/26(木) 14:12:18>memDC.SelectObject(&hBMP_IN);
これ、失敗してない?
>ビットマップのフォーマットは、モノクロかデバイス コンテキストに
>互換性のあるものである必要があります。
パレットの情報とか必要だから、SetDIBits()とかSetDIBitsToDevice()を
使う必要がある場合がある。
0387デフォルトの名無しさん
2006/01/26(木) 14:16:29gets()はつかっちゃいかん関数の代表なんだが。
それに、scanf()の一部機能の代用にはなるがprintf()の代用にはならんぞ。
そもそも何がしたいか判らんから、もっと具体的に書いて味噌。
0388デフォルトの名無しさん
2006/01/26(木) 14:28:11> BMPio->load_bitmap(&hBMP_IN, "./color_bar.bmp", &lpIN);
> memDC.SelectObject(&hBMP_IN);
まずココからして変だ、 hBMP_IN はビットマップハンドルだろ?
CDCのSelectObject()を使うならCBitmapにする
CBitmap:::FromHandle()で一時的にCBitmapとして扱う。
またload_bitmap(.....)っていう自作関数はDIBを作ってるの?
であれば、単純にpDCに出したいなら StretchDibits()を使えば済む。
またビットマップハンドルが欲しいなら、DIBからBitmapオブジェクトをつくる。
CreateDIBitmap
もう一点、自作関数が信用ならない場合は
LoadImage();
上の例なら
HBITMAP hBMPIN =(HBITMAP) LoadImage(NULL,pstr,IMAGE_BITMAP,0,0,
LR_LOADFROMFILE | LR_CREATEDIBSECTION);
とでもして GetObject(hBMPIN,info,...) でinfoバッファに戻ってきた情報を使ったほうが便利
以上
0389:デフォルトの名無しさん
2006/01/26(木) 16:09:15どうしたらいいでしょうか?
0390385
2006/01/26(木) 16:40:56反応有難うございます。
構造体の問題で苗字を入力させて、名前を入力させて
苗字と名前を連結させて表示させるプログラムを作る問題で、
plintf();と
scanf();を使って何とか表示出来たのですが、
その次の問題で、前の問題を入力関数をgetsで表示させるプログラムを
作りなさいって問題だったんです。
gets関数でググっても387サソの言う通り、
使ってはいけませんばかりで具体的な使用例とかを
見つけられなかったので悩んでいたんです。
でも、反応して頂いたのに申し訳ないですが、自己解決しました。
有難うございました。
0391デフォルトの名無しさん
2006/01/26(木) 16:43:47OnCmdHelloって何
0392デフォルトの名無しさん
2006/01/26(木) 19:10:55http://www.google.co.jp/search?hl=ja&q=OnCmdHello&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0393デフォルトの名無しさん
2006/01/26(木) 19:34:230394デフォルトの名無しさん
2006/01/26(木) 19:46:130395デフォルトの名無しさん
2006/01/26(木) 20:02:37マネージドC++でDLLを参照するためのもの。
0396デフォルトの名無しさん
2006/01/26(木) 20:33:50俺には関係なさそう。
0397デフォルトの名無しさん
2006/01/26(木) 20:39:47これは何のエラーですか?
0398sage
2006/01/26(木) 21:59:14main()
{
int x;
printf("x = ");
scanf("%d",&x);
if(x >= 5)
printf("x は、5以上\n");
else
printf("x は、5未満\n");
というプログラムをコンパイラしたいのですが、やり方がわかりません。
学校では、tarapadを使用していて、visualC++は使ったことがありません。
どなたか、アドバイスお願いします。
0399デフォルトの名無しさん
2006/01/26(木) 22:04:27そのくらい先生に聞いたら? 教えてくれないわけが無い。
0400デフォルトの名無しさん
2006/01/26(木) 22:12:18>コンパイラしたいのですが
>コンパイラしたいのですが
>コンパイラしたいのですが
>コンパイラしたいのですが
>コンパイラしたいのですが
0401デフォルトの名無しさん
2006/01/26(木) 22:18:24「コンパイラする」なんて技術、俺には無いからなあ。
0402デフォルトの名無しさん
2006/01/26(木) 22:22:49VC++がインストールされてんだな?
で環境変数もセットされているなら、コマンドプロンプト(DOS窓)でCLコマンド
例:test.cをコンパイルしたければ
CL test.c
0403デフォルトの名無しさん
2006/01/26(木) 22:22:55その言葉が俺の忍耐を断ち切る。
もっとコンパイラする!
0404sage
2006/01/26(木) 22:23:26出直してきます
0405デフォルトの名無しさん
2006/01/26(木) 23:04:56をいをい >>402はスルーかと
0406デフォルトの名無しさん
2006/01/26(木) 23:08:32int型の変数をchar*型の文字列にキャストするのってどうすればいいのでしょうか?
sprintfというのを使ってみたのですが上手くいかず、
一体どうしていいものやら困ってます。
どうか御教授お願いいたします。
0407デフォルトの名無しさん
2006/01/26(木) 23:10:44int n = 123;
char s[32];
sprintf(s, "%d", n);
0408デフォルトの名無しさん
2006/01/26(木) 23:16:13出来ました!感動!
素早い御回答ありがとうございます!
char* s; ではダメで配列のサイズを指定しなきゃいけないんですね。
でもなんで?? まあいっか。
本当にありがとうございました。
0409デフォルトの名無しさん
2006/01/26(木) 23:20:270410デフォルトの名無しさん
2006/01/26(木) 23:20:36セイセイセイ
そこは理解しとけ・・・後々困るぞ
0411デフォルトの名無しさん
2006/01/26(木) 23:23:38lexical_castについてはどうお考えか。
0412デフォルトの名無しさん
2006/01/26(木) 23:26:210413デフォルトの名無しさん
2006/01/26(木) 23:29:44char* sだと領域が確保されてないからsprintfでバッファに書き込めない…ってことでしょうか?
ああ、激しく的外れな悪寒……。
キャストとかも漠然とした意味しか分かってません(´・ω・`)
0414デフォルトの名無しさん
2006/01/26(木) 23:32:00そこは合格
キャストはもうすこし勉強しましょう
0415デフォルトの名無しさん
2006/01/26(木) 23:35:55合ってた(´∀`*) 頑張って修行してきます。
0416デフォルトの名無しさん
2006/01/27(金) 00:03:14(char *)&n;
0417デフォルトの名無しさん
2006/01/27(金) 00:17:21サイズを動的に確保する必要があり、よりC++的だと思われるvectorで格納する事にしました。
そこで疑問なのですが、char*を引数に取るような関数にこのvectorに格納された文字列を渡す時は
結局charの配列を用意して、vectorを走査して一文字ずつコピーしてから渡す、
というようなことをしなくてはいけないのでしょうか?
0418デフォルトの名無しさん
2006/01/27(金) 00:19:33という変数ならば、 &v[0] でOK。
だが文字列なら、なぜ std::string を使わないの?
0419仕様書無しさん
2006/01/27(金) 00:38:080420デフォルトの名無しさん
2006/01/27(金) 00:50:40(char*)&v[0] じゃなくて、それでOKなんですねー。なるほど。
string使わないのはバッファとしてバイナリのデータ格納する事もあるからです(この設計は適切じゃないかも…
\0が入るとstringってそこを終端としちゃいますよね?
あれ、std:wstringなら\0入ってもOKなのかな
バッファとしてバイナリのデータ格納できますか?
ちょっとこの辺よく分かりません。ご指導希望
0421デフォルトの名無しさん
2006/01/27(金) 00:55:12ttp://www.jah.ne.jp/~naoyuki/Writings/ExtIos.html
0422デフォルトの名無しさん
2006/01/27(金) 01:15:36マルチスレッドとかも良くわからない
しかしゴリゴリコンパイルが通る時点で如何なるコードも良しとしてる
そんなおれは業務製造担当件最近Scm担当
0423デフォルトの名無しさん
2006/01/27(金) 01:29:00そういう用途ならstd::vector<char>でもいいと思うけど、std::stringにナル文字は入れられる。
空(v.empty()が真)のときはに& v[0]したらダメ。
0424デフォルトの名無しさん
2006/01/28(土) 02:55:03コンパイルは結局コンパイラをごまかせば通る事もあるからキケンじゃね?
正しいコードでも通らなかった時にごまかして通すやり方もあるけど、それはあくまで正しいコードやしな。
0425デフォルトの名無しさん
2006/01/28(土) 03:08:57std::stringもstd::wstringも、'\0'やL'\0'を格納できるよ。
c_str()でstrlen()とかwcslen()に渡した時に、'\0'までしか
文字列として扱ってもらえないってだけ。
string s = "Nullpo\nGats!\n";
s[6] = '\0';
cout << s.size() << endl;
これは13と表示されるはず。
0426デフォルトの名無しさん
2006/01/28(土) 18:31:12ReadFile()でファイル名で指定されたファイルをバッファで読み込んだ後に
そのファイルをクローズするにはどうすれば宜しいでしょうか?
0427417
2006/01/28(土) 18:35:14精進します
0428デフォルトの名無しさん
2006/01/28(土) 18:44:260429デフォルトの名無しさん
2006/01/28(土) 18:48:01OnDraw()内でReadFileを実行後、バッファのあるパラメータを参照すると
原因不明の強制終了するのです。
おそらくはファイルの構造が正常にコピーされていないのではないかと思います。
一度しか呼び出さないコードを書けばそれまでですが、
毎回読み込んでも強制終了しないコードを書いてみたいのです。
0430デフォルトの名無しさん
2006/01/28(土) 18:54:51フリーので・・・・どうやってコンパールすんだこれ?
0431デフォルトの名無しさん
2006/01/28(土) 19:22:03( ゚∀゚)彡 コンパール!コンパール!
( ⊂彡
| |
し ⌒J
0432デフォルトの名無しさん
2006/01/28(土) 20:24:06OnDrawでファイルを読み込むんですか。
激しいアプリケーションですね。
0433デフォルトの名無しさん
2006/01/28(土) 21:57:420434デフォルトの名無しさん
2006/01/28(土) 22:41:45Winアプリは始めたばかりでよく判らないのですが、SDIアプリにおいて
ドキュメントクラスとアプリケーションクラスはどのように使い分けするのですか?
ドキュメントはウィンドウやダイアログボックス描画に関するデータ類の整備とすれば
アプリケーションクラスは何に使うのでしょうか???
0435デフォルトの名無しさん
2006/01/28(土) 22:45:430436デフォルトの名無しさん
2006/01/28(土) 22:52:29Appクラスではコンストラクタと初期化関数しかないように見えますが、
普通のプログラムではAppクラスの関数を自分で定義して
その中で記述する物なのですか?
コンソールアプリに於けるメイン関数はどこに記述すれば宜しいのでしょうか?
0437デフォルトの名無しさん
2006/01/28(土) 23:09:29mainも書く必要はない
0438デフォルトの名無しさん
2006/01/28(土) 23:20:08成る程。機能については判りましたが構築方法については
これまでと全然違うのでよく判らないです。
例えば何らかの数値計算の処理をして、ウィンドウに処理する場合はどうすればよいのですか?
testApp::test1()を作って、
操作上のメッセージのときに記述すれば呼び出せると言うのは判るのですが
この数値計算をtest1()で行った場合その数値データは
どのようにしてtestViewで呼び出せばよいのですか?
0439デフォルトの名無しさん
2006/01/28(土) 23:26:58CTestAppで結果を入れる変数をpublicなりprivateなりで持たせておいて
CTestApp *pApp = (CTestApp*)AfxGetApp();
pApp->m_nResult ;
みたいな感じかな?
0440デフォルトの名無しさん
2006/01/29(日) 00:40:51丁寧にお答えいただき有難う御座います。
へタレで申し訳ありませんがまた質問させてください。
リソースエディタでダイアログボックスを作成しそのダイアログボックスに例えば
MyDlg と割り当て、それをアプリケーション初期化の際に表示したいのですが
資料やネットでの検索の結果、コード中で
MyDlg myDlg;
myDlg.DoModal();
のようにすれば取り合えず表示できるようなのですが、コンパイルしますと
’MyDlg’定義されていない識別子です。
のように表示されてしまいコンパイルできません。
myDlgの後ろにドットを打つとずらずらずらっとメンバが出てくるのですが、
なぜコンパイルできないのかよく判りません。
resource.h/ Resource.hをインクルードしてもダメでした。
どのようにすれば宜しいでしょうか…詳しい方宜しくお願いします。
0441デフォルトの名無しさん
2006/01/29(日) 01:24:20#include "MyDlg.h"
0442デフォルトの名無しさん
2006/01/29(日) 02:06:07それとも C 標準の物でしょうか?
もし tchar.h が C 標準でないとすれば、
C 標準の枠組みの中ではマルチバイト文字とワイド文字の
両方に対応するようなコードは書けないと言うことでしょうか。
0443デフォルトの名無しさん
2006/01/29(日) 02:38:13tchar.h ってやっぱり Visual C++ 独自の物みたいですね。
0444デフォルトの名無しさん
2006/01/29(日) 04:03:20iconvでも使ってろ
0445デフォルトの名無しさん
2006/01/29(日) 05:41:18なにかが残ってるようで永久ループします。 お願いします。
0446デフォルトの名無しさん
2006/01/29(日) 07:45:26フェラと一緒だ。
0447デフォルトの名無しさん
2006/01/29(日) 15:27:04ただいまVC++2005エクスプレスで遊んでいるのですが、
作ってみたいプログラムがあるので質問させていただきます。
メモ帳みたいなテキストエディタで、表示されている
文字列の一部を選択して反転させて、右クリックしたら、
メニューの中にAとかBとか属性なしとか書いてあって、
属性つけたり取ったりできる。属性ごとに異なる色がつく。
で、色がついた文字列にマウスポインタを持っていくと、
着いている属性が表示される。って言うのを作りたいんですが、
どうしたらいいでしょうか?お願い致します。
0448デフォルトの名無しさん
2006/01/29(日) 16:29:47親ダイアログから子ダイアログを開いて、入力された値を親ダイアログで処理したいのです。
宜しくお願いいたします。
0449デフォルトの名無しさん
2006/01/29(日) 16:33:22簡単に言うと、VS2005のエディタか?
0450デフォルトの名無しさん
2006/01/29(日) 17:04:06そうですね、文字列の一部を選択して属性を与えたり、
属性にアクセスしたりするところが同じですね。
テキストファイルを開いて、属性つけて、
属性付きで保存して、保存したファイルを
開くとまた作業を続けられるようにしたいです。
0451デフォルトの名無しさん
2006/01/29(日) 17:28:05キャレット位置と要素の対応をきちんと見ておかなきゃならんけど。
でもそれはどんな表現方法にしたって必要だし。
ファイルへのI/Oのところについて悩みたくないから。
0452デフォルトの名無しさん
2006/01/29(日) 17:40:16abcdに属性A、cdefに属性Bを与えたいとすると、XMLでは
ちょい面倒な話になるな。
0453デフォルトの名無しさん
2006/01/29(日) 18:06:06それやるなら、内容は wchar_t のベクターと
なんか属性を表す short か何かのベクターの
二本立てでベタに持つしかないな。
入出力フォーマットは独自で。
0454デフォルトの名無しさん
2006/01/29(日) 18:11:01<A>ab</A><A><B>cd</B></A><B>ef</B>
ってなるのかな…
素直に <A>ab<B>de</A>ef</B> って書きたいところだが。。。
A + B を C として定義しとくと少し見通しがよくなるのか…?
0455デフォルトの名無しさん
2006/01/29(日) 18:12:41#ifdef UNICODE // Unicode用のソース
wchar_t c;
...
#else // MBCS用のソース
char c;
...
#endif
とでもしたら?
0456デフォルトの名無しさん
2006/01/29(日) 18:14:49で、その後「d」のみ属性を解除する編集操作をしたら?
0457445
2006/01/29(日) 19:27:28吸い出すにはどの関数使えばいいんですか?
Cでは、fflush(stdin)とかgets()を使ってましたがC++でもこれでOKですか?
0458デフォルトの名無しさん
2006/01/29(日) 21:04:150459デフォルトの名無しさん
2006/01/29(日) 23:00:01ヘルプ見ろよ・・・・・
0460デフォルトの名無しさん
2006/01/29(日) 23:14:44C++にもfflushやらgetsはあるが、
fflush(stdin)もgets()も勧められないのはCでもC++でも変わらない。
C++らしい方法の1つはstd::cin.ignore();
ignoreは入力を読み捨てる関数。
引数を与えれば指定した文字数だけ捨てたり、
特定の文字(たとえば改行文字など)までを捨てたりという指定もできる。
0461デフォルトの名無しさん
2006/01/29(日) 23:48:00ありがとうございます!
0462デフォルトの名無しさん
2006/01/29(日) 23:52:34Docクラスから関連するウィンドウの
CDC型のポインタが欲しいのですが、
どのようにして取得すれば宜しいのでしょうか?
0463デフォルトの名無しさん
2006/01/29(日) 23:58:220464デフォルトの名無しさん
2006/01/30(月) 00:36:36えーと、ドキュメントは複数のビューに関連付けられることもあるから無理だ。
MFCを使ったことのないので間違っていたらすまん。
0465デフォルトの名無しさん
2006/01/30(月) 00:42:31APIならGetDC()、MFCならCWnd::GetDC()とか?
ドキュメントが関連付けられているViewを知っているとは思えないので普通はView側で処理すると思うのだが。
>>463
リストビューは試したことないけど、ラベルなら(比較的)簡単にできる。
0466デフォルトの名無しさん
2006/01/30(月) 00:48:25462です。どうもありがとう御座いました…
諦めて効率の悪くエレガントでないプログラムを組もうと思います。
MFCのWinプログラミングは初めてなのですが、激ムズですね…
上手く出来るようになるのか非常に不安なのですが
皆様も始めはこんな千鳥足状態だったのでしょうかね?
0467デフォルトの名無しさん
2006/01/30(月) 00:49:04CView*ならDocから取得できるけど
CDC*を取得して保持しとくのは拙いんじゃない?
描画のときに使うものでしょ
0468デフォルトの名無しさん
2006/01/30(月) 01:14:41質問は二つありまして、
一つ目はchar*型のファイル名を指定して読み込む関数
read_data(char* filename)
を作ったのですが、これを使う際に例えば
test(CString* input_filename)
{
read_data(*input_filename)
}
のようにするとコンパイラにCString型からchar*型への変換は
できませんとの旨の警告を受けてしまいます。どうすれば良いでしょうか?
もう一つは
char* str;
str = new char[50];
str = input_filename;
のようにしてもまたもやコンパイラに怒られます。何故でしょうか…?
0469デフォルトの名無しさん
2006/01/30(月) 01:36:54一つ目:read_dataを、charではなくCStringを引数にした関数にする。
それが嫌だったら、これ
ttp://www.microsoft.com/japan/developer/library/vcmfc/_mfc_cstring.3a3a.operator_lpctstr.htm
二つ目:当然。input_filenameがCStringクラスのオブジェクトだから。
型(容器)の違うものを無理にいれるようなもの。
C/C++では基本の話なので、勉強するように。Cでの文字列操作が
分かっていない証拠。Cの文字列に関することを復習するべし。
0470デフォルトの名無しさん
2006/01/30(月) 01:44:45そもそもポインタの書式を理解していないと思われる
最後の*は要らない
0471デフォルトの名無しさん
2006/01/30(月) 02:00:32ということは可能でしょうか?
0472デフォルトの名無しさん
2006/01/30(月) 02:41:53ここに書いてあるらしい。
ttp://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/cdt-home/user/faq.html?cvsroot=Tools_Project#compilers_10
のCompilers and other 3rd party toolsの2
0473デフォルトの名無しさん
2006/01/30(月) 07:28:56charではなくTCHARを使えばよい。
char *からconst TCHAR *とかPCTSTRにでも直せばよい。
そしてソースコード全てをTCHARやTEXTを使うように直すと言う泥沼へ誘う。
0474デフォルトの名無しさん
2006/01/30(月) 09:16:39textoutで出てくるフォントの大きさ(高さ,幅)を変える関数って
ありますか??
0475デフォルトの名無しさん
2006/01/30(月) 09:45:13CreateFont()
SelectObject()
0476デフォルトの名無しさん
2006/01/30(月) 10:05:17特定の場所にあるexeファイルを起動するものです
0477デフォルトの名無しさん
2006/01/30(月) 10:16:44つ[system()]
つ[CreateProcess()]
つ[ShellExecute()]
0478デフォルトの名無しさん
2006/01/30(月) 13:45:14展開したときにパス名も付いてきてしまいます。(例:C:\hoge\hoge.c)
これをファイル名だけ(例:hoge.c)にしてくれる
コンパイラオプションなどの設定はないのでしょうか?
0479478
2006/01/30(月) 14:18:04上記のようなサイトを見つけました。
わざわざファイル名取得のために関数を呼ぶのは抵抗がありましたが、
どうせデバッグ処理なのだから、と割り切ることにしました。
0480デフォルトの名無しさん
2006/01/30(月) 15:49:26これでとくに問題ないと思うけど、日本語ファイルの場合ダメ文字でないか?
まぁ、コーディングファイルに日本語を使う方が問題な気もするけど。
strcharって2バイト文字考慮してたっけ?
自分で試せばいいのだけど面倒くさい<ダメ人間な俺orz
UNICODEで作ると2バイト文字考慮しなくて良いから楽で良い^^
でも、ライブラリとの整合性が・・・・・
0481デフォルトの名無しさん
2006/01/30(月) 15:50:45死のうorz
0482デフォルトの名無しさん
2006/01/30(月) 17:12:05strchrは駄目文字問題がある。
_mbschrならその心配は要らない。
さらに_tcschrではstrchr/wcschrだけでなく_mbschrへ切り替えられる。
(_MBCSが定義されていた場合)
0483デフォルトの名無しさん
2006/01/30(月) 19:12:34これはどういう関数に付けられるのでしょうか?
0484デフォルトの名無しさん
2006/01/30(月) 19:20:280485デフォルトの名無しさん
2006/01/30(月) 19:20:36下線で始まる名前は処理系予約となっている。
そのため処理系独自の関数は下線で始めている。
名前が被ることを防ぐためだね。
0486デフォルトの名無しさん
2006/01/30(月) 19:36:070487デフォルトの名無しさん
2006/01/30(月) 22:32:53_printfなんてあるか?
あるとしたらリンク時の話だな。
0488デフォルトの名無しさん
2006/01/31(火) 01:12:460489デフォルトの名無しさん
2006/01/31(火) 12:25:21勝手にスクロールバーが出てきますが、これを抑制するにはどうすれば良いのでしょうか?
0490デフォルトの名無しさん
2006/01/31(火) 13:04:38実行結果が見づらいので
10文字とか20文字毎に改行したいんですけど、
どうしたら良いんですか?
ググってみたけど、いまいちよく判りませんでした;;
0491デフォルトの名無しさん
2006/01/31(火) 13:06:12SetScrollSizes
0492デフォルトの名無しさん
2006/01/31(火) 13:21:39自分でなんとかするしかないかなあ。
こんな感じの1文を表示結果の後ろに置いてみるとか。
if(++cnt>=10){printf("\n");cnt=0;}
0493492
2006/01/31(火) 13:28:10実行結果をいちど文字列に落としてから
10文字づつ表示かな。
0494デフォルトの名無しさん
2006/01/31(火) 13:35:51プリンタの改行、改ページ処理とかを作るつもりならともかく、
単にデバッグ用だったら適当なところに改行を入れるのが普通
0496デフォルトの名無しさん
2006/01/31(火) 17:25:42VBでいうOn Error Gotoみたいのありますか?
0497496
2006/01/31(火) 17:28:14CString filename = "test.txt";
sf.Open(filename, CFile::modeWrite | CFile::modeCreate);
sf.WriteString(filename);
sf.Close();
例えば、test.txtが読み取り専用で既に存在する時、WriteStringでエラーが発生するのですが、
その場合、処理を抜けたいのです
0498デフォルトの名無しさん
2006/01/31(火) 17:34:00普通にtry-catch
MFCに手を出す前にC++ちゃんとやっとけ。
0499496
2006/01/31(火) 17:49:23CStdioFile sf;
CString filename = "test.txt";
sf.Open(filename, CFile::modeWrite | CFile::modeCreate);
try{
sf.Open(filename, CFile::modeWrite | CFile::modeCreate | CFile::typeBinary);
sf.WriteString(filename);
}
catch(...){
AfxMessageBox("エラー", NULL);
}
0500496
2006/01/31(火) 17:52:52CStdioFile sf;
CString filename = "test.txt";
try{
sf.Open(filename, CFile::modeWrite | CFile::modeCreate);
sf.WriteString(filename);
}
catch(...){
AfxMessageBox("エラー", NULL);
}
ちなみにtry{}内で0除算すると、ちゃんとcatchに飛んでくれます
0501デフォルトの名無しさん
NGNGtry{
CFileException e;
sf.Open(filename, CFile::modeWrite | CFile::modeCreate, &e);
sf.WriteString(filename);
}
0502デフォルトの名無しさん
2006/01/31(火) 18:04:09出ないようにできました。ありがとうございます。
0503496
2006/01/31(火) 18:09:15先生ダメでした><;
WriteStringの場合、MFC内部でtry catchの処理をやってしまっているのでしょうか?
0504デフォルトの名無しさん
2006/01/31(火) 18:11:29デバッグビルドだと、そうかも
0505デフォルトの名無しさん
2006/01/31(火) 18:13:31char * だったところを100箇所以上 LPWSTR, LPCWSTR のキャストを入れ
たりして、やっとコンパイルが通ったと思ったら起動しても何も起こらない。
if (!InitApp(...)) などの return FALSE; の前に MessageBox() を入れたら
文字列は英字なのに漢字だわ。しかも意味がない。どうしたら英字になります
か。コンパイル時の環境設定やサンプル見たのですが、行き着けません。
(起動して何も起きないのも文字列の指定がまずいのかなと想像しています)
安直とは思いますが、教えて下さい。
0506デフォルトの名無しさん
2006/01/31(火) 18:16:58VC++2005はデフォルトでUNICODEビルドになってるみたいだから、
その辺りじゃね?
0507デフォルトの名無しさん
2006/01/31(火) 21:38:24506のとおり。
LPWSTRとLPCWSTRはchar *とconst char *とは全く違う。キャストできる型ではない。
0508デフォルトの名無しさん
2006/01/31(火) 22:33:11[質問1]
・このプログラムはCですか?このプログラムを書くのはSDKのエディタですか?
・RADIOBUTTONとか書いてあるけど”ALL”というラジオボタンが画面に現れるのですか?
・また下の方に
STRINGTABLE DISCARDABLE
BEGIN
ID_COMBO_STYLE "Select Style for selected text region or equation\nStyle"
というメッセージがありますが、これはエラーメッセージか何かですか?(実際に画面に表示されるのですか?それともプログラムとしての命令文で別に表示されるものではないでしょうか?)
PRINT DIALOG DISCARDABLE 15, 15, 181, 181
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Print"
FONT 8, "MS Sans Serif"
BEGIN
LTEXT "Printer:",1093,6,4,25,8
GROUPBOX "Range",1072,5,27,106,75,WS_GROUP
RADIOBUTTON "&All",1056,11,40,98,10,WS_GROUP | WS_TABSTOP
RADIOBUTTON "S&election",IDC_PRNTSTUP_SELECTION,11,51,98,10
RADIOBUTTON "C&urrent Page",1057,11,62,98,10
RADIOBUTTON "&Pages",1058,11,73,98,10
1136,50,118,62,41,CBS_DROPDOWNLIST | WS_BORDER |
END
STRINGTABLE DISCARDABLE
BEGIN
ID_COMBO_STYLE "Select Style for selected text region or equation\nStyle"
ID_COMBO_FACE "Select Font for the current selection\nFont"
END
0509デフォルトの名無しさん
2006/01/31(火) 22:34:33[質問2] これはhtmlですか?<GX>っていうタグは見たことが無いのですが。
このプログラムを書くのはテキストエディタで良いですか?
</GX>
<GX ID=Beetle>
<GX TYPE=tile ID=buyer>
Billing Address<BR>
Buyer: <GX TYPE=cell ID=buyer.name></GX><BR>
<GX TYPE=cell ID=buyer.isResPhone> Residence Phone: <GX TYPE=cell ID=buyer.rPhone></GX><BR></GX>
<GX TYPE=cell ID=buyer.isBizPhone> Business Phone: <GX TYPE=cell ID=buyer.bPhone></GX><BR></GX>
<GX TYPE=cell ID=buyer.isFaxPhone> Fax Phone: <GX TYPE=cell ID=buyer.fPhone></GX><BR></GX>
Address: <GX TYPE=cell ID=buyer.addrOne></GX><BR>
<!-- end of buyer tile --> </GX>
[回答期限]できるだけ早く できれば2/1中にお願いします。
0510505
2006/01/31(火) 22:48:57コンパイルを通して見ようとエラーメッセイジの指摘の通りに直してみました。
LPWSTR, LPCWSTR は今回挿入しただけですから、戻すには置換で取り消せると
気楽に考えていました。
UNICODE ビルドでなくするには、どうすればいいかが見つかりません。
API が ...W を参照しているので、.h ファイルを見て ...A に振るよう
#define を入れるんでしょうか。
0511デフォルトの名無しさん
2006/01/31(火) 22:53:29プロジェクトのプロパティ
0512デフォルトの名無しさん
2006/01/31(火) 22:54:54それはリソーススクリプト。
0513デフォルトの名無しさん
2006/01/31(火) 22:55:25xmlではないかと思う。
0514デフォルトの名無しさん
2006/01/31(火) 22:56:40[回答1]
・いいえ。PlatformSDKにエディタは附属していません。
・しかるべく処理をすれば現れます
・しかるべく処理をすれば、ID_COMBO_STYLEから、その文字列が取得できます。
エラーメッセージかどうかは表示されるコンテキストに依存しますがその様な内容には
見えません。
[回答2]
・いいえ。HTMLではありません。
・ほかに処理すべきアプリケーションに心当たりが無ければ、テキストエディタで処理で良いです。
0515デフォルトの名無しさん
2006/01/31(火) 22:57:14<BR>が<BR/>でない以上、XMLとするのは無理がある
0516デフォルトの名無しさん
2006/01/31(火) 23:00:54[1]リソーススクリプト
[2]XML,XHTMLっぽいが、<BR>タグが閉じられてないのでどうか。
ドイツやフランスやスペインの掲示板でもこれと同様の質問がされてるけど
何か流行ってんの?
0517デフォルトの名無しさん
2006/01/31(火) 23:18:300518デフォルトの名無しさん
2006/01/31(火) 23:19:17Windowsプログラミングの鉄則
charではなくTCHARを使おう
char*ではなくLPTSTRを使おう
const char*ではなくLPCTSTRを使おう
strlen()ではなく_tcslen()を使おう
続く
0519デフォルトの名無しさん
2006/01/31(火) 23:25:210520デフォルトの名無しさん
2006/01/31(火) 23:26:02>strlen()ではなく_tcslen()
lstrlen()じゃなかったっけ?
0521デフォルトの名無しさん
2006/01/31(火) 23:26:25以下の3つの文字列があるとする。
char* cstr = "Nullpo";
wchar_t* wstr = L"Nullpo";
LPTSTR tstr = _T( "Nullpo" );
以下の相互変換が可能。
CA2T ca2t( cstr ); tstr = ca2t;
CA2W ca2w( cstr ); wstr = ca2w;
CT2A ct2a( tstr ); cstr = ct2a;
CT2W ct2w( tstr ); wstr = ct2w;
CW2A cw2a( wstr ); cstr = cw2a;
CW2T cw2t( wstr ); tstr = cw2t;
0522デフォルトの名無しさん
2006/01/31(火) 23:31:480523デフォルトの名無しさん
2006/01/31(火) 23:32:15lstrlen()はPlatform API。
_tcslen()はCランタイム関数。
lstrlen()はlstrlenA()かlstrlenW()にマクロ置換される。
_tcslen()はstrlen()かwcslen()にマクロ置換される。
0524デフォルトの名無しさん
2006/01/31(火) 23:39:490525デフォルトの名無しさん
2006/01/31(火) 23:45:18UNIX由来のライブラリとかアプリとか、普通にcharベースばっかで
wchar_tすら使われるのは稀だからなぁ…
しかも、UNIXではUTF-8がスタンダードになってるから
結局ほとんどchar*しか使われない。
さらに、gccのwchar_tは32ビットだから、WindowsとWindows以外で
wchar_tのエンコーディングを統一的に扱うのは至難の業。
UTF-16で内部処理してるメジャーOSって、WindowsとMacくらいだな。
(Macは、UTF-16とUTF-8とSJISのAPIがOS自体の内部で混在するという狂気の沙汰だしw)
0526デフォルトの名無しさん
2006/01/31(火) 23:46:40LPTSTR LPCTSTR TCHAR BSTR CString string OleChar wchar_t
0527デフォルトの名無しさん
2006/01/31(火) 23:49:15Visual Studio 2005 Professional も一緒にインストールできますか。
日経ソフトウェアに付いていたいたのでぜひ入れたいのだが…
0528デフォルトの名無しさん
2006/01/31(火) 23:51:230529デフォルトの名無しさん
2006/01/31(火) 23:52:020530デフォルトの名無しさん
2006/01/31(火) 23:56:58LPTSTRとLPCTSTRとTCHARは基本的に同じものだが。
あとCComBSTRとか_bstr_tとかはいいの?w
0531デフォルトの名無しさん
2006/02/01(水) 00:00:07VC6でプログラミングしてるんですが、ファイルが保存できないと警告が
でるだけでなく、たまに消してもないのにソースが消えてしまうのは
いったい何なんでしょうか。。?
0532デフォルトの名無しさん
2006/02/01(水) 00:01:50http://www.trendmicro.co.jp/hcall/index.asp
0533デフォルトの名無しさん
2006/02/01(水) 00:19:55ありがとうございます。
ウィルスに感染してる様子もないしウィルスチェックしても何にもかからないんですけど
ウイルスなんでしょうか・・
とりあえず仕様ではないんですね。
0534デフォルトの名無しさん
2006/02/01(水) 00:22:510535デフォルトの名無しさん
2006/02/01(水) 00:28:13それ俺も体験したことある。IDEでファイルを保存しようとすると、
「ファイルを保存できません。ファイルが他のアプリケーションで使用されている可能性があります。」
とかメッセージが出て、そのファイルがあるはずのフォルダを見ると消えている。
(すばやくフォルダに切り替えると、いきなりファイルが消える瞬間を目撃できる。}
原因は不明だが一旦OSを再インストールして
怪しいアプリをインストールしないようにしたら発生しなくなった。
0536デフォルトの名無しさん
2006/02/01(水) 00:34:23そう、そんなメッセージでてきてました。
原因不明で不快で不快で仕方ないんですが・・・
最善策は再インストールしかないという事でしょうか。
0537510,505
2006/02/01(水) 00:44:19コンパイルしたら起動できるようになりました。
で、ここへ来たら、>>511 さんのレスがありました。
これからは >>518 さんの言われる通りでしょうが、まずは移植ということで。
ありがとうございました。
ダイアログで落ちるところが出たのでこれからその追求です。fopen(), sprintf()
などでも warning があるし。
0538デフォルトの名無しさん
2006/02/01(水) 02:58:36複数のアプリが絡んだ話だとインストールしなおしだけでは無理じゃ?
0539537,510,505
2006/02/01(水) 08:32:53ご指摘ありがとうございます。「輪郭抽出」でぐぐると出てくる実験プログラムを
これまで win98, VC++6.0 で作って使っていたもの。スタンドアロンです。
ま、あるとしても ShellExecute() から位。しかし unicode に変えないと
いけないでしょう。これから勉強です。
また質問したときは教えて下さい。
0540デフォルトの名無しさん
2006/02/01(水) 08:39:24VCしか開いてないときでも保存しようとすると
警告文が出て保存できない場合があるんです
0541デフォルトの名無しさん
2006/02/01(水) 10:03:471プロジェクトにたくさん main をおく。もしくはプロジェクト抜きでソースを
コンパイルするとかってできますか?
あと、プロジェクト毎にプロパティからコンパイル時にリンクする
ライブラリを追加することになっているっぽいのですが、
せっかくソリューションというまとまりがあるわけだし、全体に追加できないのですかね?
Visual Studio 2005 です。
小さい1ファイル程度の実行プログラムを大量に(具体的には画像フィルタ)
作ろうなんてしているのですが、今のところ一つのためにプロジェクト作って
いちいちリンクさせるライブラリをコピペして、なんてやってます。
UNIX 環境でばかり開発してきたからよくわからんですばい。
どなたかよろしくおね
0542541
2006/02/01(水) 10:06:29プロジェクトの名前を変えても、実際のローカルにあるファイル、フォルダ名が変わってないのですが、
プロジェクトの名前変更をそれらにも反映させるにはどうすればよろしいでしょう?
0543デフォルトの名無しさん
2006/02/01(水) 10:16:41Solutionに複数のProjectを作れ。
0544デフォルトの名無しさん
2006/02/01(水) 10:27:160545デフォルトの名無しさん
2006/02/01(水) 11:05:45その状態です。ソリューションを選んでプロパティを開くとリンカの項目がありません。
>.544
あえて Windows での開発にも慣れておきたいです。
0546デフォルトの名無しさん
2006/02/01(水) 11:27:45ここに自分がよく使うlibを追加しとけばWin32を選ぶと自動的にlibが追加されるようになる。
0547デフォルトの名無しさん
2006/02/01(水) 11:58:03cygwin つかって GNU make & g++ でビルドするプロジェクトも作ってる。
ただ残念なことに、g++ のエラーメッセージやワーニングの
フォーマットが cl のそれと違うので、エラー箇所に即ジャンプ、
というわけにはいかないのが悲しい。
0548デフォルトの名無しさん
2006/02/01(水) 12:15:36トン。GUIからできるようにはなってないわけですか。ふむふむ。
ちょっと状況と質問追加。例えばマスクフィルタの mask.cpp と mask.h を作っておくと、
それを利用して、平均フィルタ、ラプラシアンフィルタ、ソベルフィルタ、
をちょちょちょいと作れるんですが、
やっぱり、3つプロジェクト作らざるを得ないですよね?
その際に mask.cpp, mask.h をその3つにコピーせざるをえない?
0549539,537,510,505
2006/02/01(水) 12:19:23まだ全体がよく分からないのですが、VC++2005からのデバッグ、ShellExecute()
からの起動、単体での起動で、.txt, .jpg, .bmp の保存、読み込みは異常が出て
いません。名前をつけて保存は試していません。ご指摘は何か起きたとき助かり
ます。ありがとうございました。
ところで、link map を取るにはどこで指定するんでしょうか。それともない?
0550デフォルトの名無しさん
2006/02/01(水) 12:35:25いったい何を作ってるの?
ライブラリ?それとも一つ一つが実行ファイルなの?
ぶっちゃけ開発手法そのものをミスってる悪寒。
0551デフォルトの名無しさん
2006/02/01(水) 14:15:40画像フィルタです。それぞれが実行ファイルです。(>>541 参照)
共通で再利用できる部分がある複数個のフィルタも 存在します。(>>548 参照)
どう開発すればいいでしょう?
UNIX環境下でコマンドラインでやっている時は楽にできたのですが、
Visual Studio を試してみようと思ったらこういう状況になりました。
Visual Studio 自体がこういう使い方ではなく、
本当に「プロジェクト」と呼べる規模のものを考えて作られている感は確かに感じます。
今後のために慣れておきたいのでできればこのGUIを使いたいのです。
0552デフォルトの名無しさん
2006/02/01(水) 14:25:53「プロジェクト」って語感からはかなりまとまった
大きなソース群って言う感じを受けるけど、
メイクファイルのターゲットごとに一つって感じだ。
実際、Visual Studio から GNU make 呼び出して
使ってるけど、ターゲットごとにプロジェクトを設定してるよ。
もちろんプロジェクトごとに Makefile をコピーするんじゃなく、
Makefile は一つだけでビルドコマンドを make -F ../Project2/Makefile
みたいな感じにしてる。 VPATH 必須。
0553デフォルトの名無しさん
2006/02/01(水) 14:42:47fopenとかで出ているwarningってもしかして、C4996じゃない?
古い云々言われるやつ。
ヘルプとかを見た感じMS独自拡張な気がするから無視(無効)してるんだけど問題なし?
0554デフォルトの名無しさん
2006/02/01(水) 14:56:54いちいちプロジェクト作るのめんどくさいと思うのは
お前が慣れてないからだ
0555デフォルトの名無しさん
2006/02/01(水) 15:13:38アプリケーションの外見を変える
スキンの実装ってどうやる?
ただ画像はっつけるだけかなー?
0556549,537
2006/02/01(水) 17:31:20そうそれ。うるさいから変えてやろうとしたけどサンプル見てもよくわからないん
でそのまま。この(実験)プログラムは SDI で複数のファイルの内容を同時に
表示できないんで、読み込み記録を取って起動時その記録を見てメニューに積んで
クリックで指定のファイルを読むように急場しのぎでくっつけたものなんで、
煩いから、API に変えようと思います。
余談ながら、ユーザ登録しろと煩いんで、パスワードもあるんで登録したけど
まだ吹き出しが出てくる。
0557556,549,537
2006/02/01(水) 19:11:44なんで fopen_s(), sprintf_s() なのか見たら、fopen_s() は file pointer を
引数に入れて err no. を返すようになった。sprintf_s() は第2引数に書き込み
領域の長さを入れるようになった。_s は security の意。
ま、安全には違いない。書き換えて試した。
link map を取る方法が分かって取ってみたら、"CIL" ってのがある。
.obj name が取れないと困るアプリが他にある。なんとか汁だ。
0558557,556,549
2006/02/01(水) 23:19:39char, char * で書いてあるアプリを UNICODE 対応にしようと思いますが、
1.char -> _TCHAR に換える。
2.暗黙の内に1バイトで文字列の長さを扱っているところを sizeof(_TCHAR)
倍にする。
3.テキストファイルの読み込み、書き出しで UNICODE への変換、UNICODE から
の変換を行う。
4.リソース・ファイルを含め、定数文字列を _T() で囲む。
5.でコンパイルする。
ってところでしょうか。
0559デフォルトの名無しさん
2006/02/02(木) 00:38:25基本的にそれでいいけど、
「文字コードの変換は必要最小限にする」努力も忘れずに。
0560デフォルトの名無しさん
2006/02/02(木) 02:08:38どう使いわければいいんでしょうか?
1.libファイルをプロジェクトに追加
2.プロジェクトの設定(〔リンク〕タブ)でリンクするlibファイルを指定
0561デフォルトの名無しさん
2006/02/02(木) 04:54:27LINK2022 メタデータの操作に失敗しました
というエラーが出てリンクできませんでした。
typedef struct _MAP
{
char MAPEXT[3];
(以下略)
とう構造体を変更した場合にエラーが出るようなのですが、
配列を2以下にした場合はエラーが出ず、3以上にすると出るようです。
原因はなんなのでしょうか?
どなたか教えてください。
0562558,557,556
2006/02/02(木) 05:59:12お教え頂きありがとうございます。そのように致します。
またよろしくお願い致します。
0563デフォルトの名無しさん
2006/02/02(木) 15:53:44思ったよりC++って具合良いのね
0564デフォルトの名無しさん
2006/02/03(金) 18:32:500565デフォルトの名無しさん
2006/02/04(土) 07:54:05C言語とかの関数ってwindow.hとかd3dx9.hとかを読み込んで
どの関数を使うか決めるんですよね?
で、そのヘッダーファイル?を読み込んだときに使える関数のリファレンスって
日本語でどこかにまとめて書いてないでしょうか?
どのヘッダーファイルを読み込んだらこの関数が使える
というふうに載ってるとありがたいんですが。
PHPとかActionscriptとかはリファレンス本があるんですが
CとかC++のリファレンス本は無いようなので。
0566デフォルトの名無しさん
2006/02/04(土) 08:43:18MSDN Library
ただし関数名などからそれに必要なヘッダが書いてあるという具合。
ちなみにCやC++の標準関数なら本もいろいろとある。
0567デフォルトの名無しさん
2006/02/04(土) 08:46:05grep 最強、という噂もある。
Google Desktop Search とかって
ソースファイルも食ってくれる?
0568デフォルトの名無しさん
2006/02/04(土) 09:07:25もちろんソースファイルやヘッダーも検索の対象だけど、
大抵のものは自分で書いたソースやサンプルばかりひっかかって、
肝心のPratform SDKのヘッダーが出てこないと言う罠。
それにWinAPIの関数ならwin***.hで宣言されているけど、
windows.hをインクルードしてねと言うものが殆どだから
WinAPIに関してはどのヘッダーが必要なのかを知る必要性をあまり感じない。
0569565
2006/02/04(土) 09:41:39MSDN Library 情報がいっぱいあってどこに何が書いてあるか解らない orz
さすがC言語一筋縄ではいかない。
近場の本屋にはなかったのでアキバ(ザコン)でも行ってこようかと思います。
はやくエディタとかさくっと作れるぐらいになりたい。
0570デフォルトの名無しさん
2006/02/04(土) 19:24:18今のVC++は仕様が不安定すぎるから。
本格的な本職プログラマを目指しているのならば、JavaとC言語がある。
まずはそっちをやってみて状況を見据えた上でC++を始めたらいいでしょう。
0571デフォルトの名無しさん
2006/02/04(土) 20:56:37今さら「C++じゃなくてC」とか言われたってなぁ。
C++が難しいってんなら、Javaがあるし。
C++じゃないCなんて覚えても、もう役に立たん。
0572デフォルトの名無しさん
2006/02/04(土) 21:05:080573デフォルトの名無しさん
2006/02/04(土) 21:06:26VC++のどこが「仕様が不安定」なんだ
ひょっとしてC++/CLIの事を言ってるのか
0574デフォルトの名無しさん
2006/02/04(土) 21:49:18何に比べて不安定なの?
0575デフォルトの名無しさん
2006/02/04(土) 21:59:03COBOL
0576デフォルトの名無しさん
2006/02/04(土) 22:15:42C#じゃないの?
0577デフォルトの名無しさん
2006/02/04(土) 22:18:48不安定だわ
0578デフォルトの名無しさん
2006/02/04(土) 22:21:01それと「Visual C++の仕様の安定性」とどう関係あるの?
/clrを使わなきゃいいだけじゃん。
C++/CLIとC++を混同してる人ですか?
0579デフォルトの名無しさん
2006/02/04(土) 22:32:050580デフォルトの名無しさん
2006/02/04(土) 22:34:56ぼくに与えられた
ぼくの一日を
ぼくが生きるのを
ぼくは拒む
・・・・・違うな。反省。
0581デフォルトの名無しさん
2006/02/05(日) 00:29:50機能は提供されていますか?
提供されているとすれば、どのバージョン、グレード(スタンダードやExpressではないなど)
を教えてもらえると助かります。
0582デフォルトの名無しさん
2006/02/05(日) 01:40:372005だとProでも付いてなかったキガス
0583デフォルトの名無しさん
2006/02/05(日) 01:59:26http://msdn2.microsoft.com/ja-jp/z9z62c29.aspx
0584デフォルトの名無しさん
2006/02/05(日) 02:06:572005には未対応だがまだICC買ったほうがマシかな。
自分の書いたコードのプロファイリングならRDTSCとかグローバル変数で永続性のあるカウンタを表現するとか
いろいろ手はあるよな。
突き詰めた最適化やるならICCのほうがいい。I
最終的な生成物はAMDのCPUでも十分高速に動く。
0585582
2006/02/05(日) 02:14:25ありがとう。
>>581
という事らしい。
ttp://www.amazon.co.jp/exec/obidos/ASIN/B000CSRIXW/qid=1139073093/sr=1-20/ref=sr_1_0_20/250-6395105-0533044
これを買うんだ。
…現実的じゃないな。
0586デフォルトの名無しさん
2006/02/05(日) 02:23:49俺は去年のキャンペーンで16万で入手したw
0588デフォルトの名無しさん
2006/02/05(日) 02:38:46これは?
http://www.intel.com/cd/software/products/ijkk/jpn/vtune/vpa/buy/index.htm
0589562
2006/02/05(日) 18:57:02UNICODE 対応を試しています。
winXP, VC++2005 で通っているのでいいといえばいいのですが、マシンの使い勝手から
win98機, VC++6.0 でも通しておけば、いいなと試しましたら下記のルーチンで失敗します。
UNICODE 適用でなければ、通って起動できます。
メイン関数名は、_tWinMain() で、リンク・マップを見ると _wWinMain() になっています。
設定のリンクのアウトプットは、"wWinMainCRTStartup" を入れています。
関連定義では、_TCHAR szClassName[]=_T("template");
です。ダメな理由がお分かりでしたらお教え下さい。
ATOM InitApp(HINSTANCE hInst)
{
WNDCLASSEX wc;
memset(&wc, 0, sizeof(WNDCLASSEX));
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
// 下記の2つに40バイト以上を指定すると失敗する
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInst;
wc.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON1));
// ここでカーソルを指定すると任意のカーソルに変えても反映されない。
wc.hCursor = NULL;//LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
// 05.11.25 menu resource 追加
wc.lpszMenuName = MAKEINTRESOURCE(IDR_MENUMAIN);//NULL;
wc.lpszClassName = szClassName;
wc.hIconSm = LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON1));
return RegisterClassEx(&wc);
}
0590デフォルトの名無しさん
2006/02/05(日) 19:29:19UNICODEでコンパイルするのを諦めるか、MSLUでも使っとけ。
0591デフォルトの名無しさん
2006/02/05(日) 23:26:21そのリスト内だけ別のフォント(固定ピッチ?)にしたいんですが
この場合CreateFontで論理フォントつくってSETFONTで送ってやるんでしょうか?
普通はどうしてるのかな…
0592589,562
2006/02/05(日) 23:43:15持っていって起動したら動きました。
LastError = 131 が返って来て、FormatMessage() もダンマリで、MSDN に
bug report がないかと探したのですが、何もない。
win95 での UNICODE サンプルがあるので、win98 ではできるかと期待しま
した。
0593デフォルトの名無しさん
2006/02/06(月) 10:55:39で、実際に自分で手を動かして何かやってみたのかい?
0594デフォルトの名無しさん
2006/02/06(月) 18:31:440595デフォルトの名無しさん
2006/02/06(月) 19:04:130596デフォルトの名無しさん
2006/02/06(月) 21:16:12POINT構造体の、原点からの距離の絶対値を簡単に求める関数って無いでしょうか…?
√(A.x^2 + A.y^2) としても良いのですが、プログラムコードが長くなってしまいますので…
0597デフォルトの名無しさん
2006/02/06(月) 21:18:21√(A.x^2 + A.y^2)を行うインライン関数を自分で作ればいいだけだろ。
0598デフォルトの名無しさん
2006/02/06(月) 21:48:21あと、MSDNC++の標準ライブラリのリファレンスが英語しかないんですけど
日本語のリファレンスってないですか?
0599デフォルトの名無しさん
2006/02/06(月) 21:53:480600デフォルトの名無しさん
2006/02/06(月) 22:03:26よく使うAPI方面を充実させて欲しいね
0601デフォルトの名無しさん
2006/02/06(月) 22:06:20キーバインディング設定見てみたけどそれらしいものがありません。
てかコマンドのリストが大きくできなくて見づらい・・
0602デフォルトの名無しさん
2006/02/06(月) 22:09:52俺は英語でも気にしない。そこにあるプロトタイプ宣言は結局C++言語なんだから。
0603デフォルトの名無しさん
2006/02/06(月) 22:15:13いま探したら簡単に見つかったから教えてやんない
0604デフォルトの名無しさん
2006/02/06(月) 22:43:00つ[hypot()]
0605デフォルトの名無しさん
2006/02/06(月) 22:48:18Visual C++ 2005 Express Editionの設定情報は
どこにあるのでしょうか?
インストール時にマイドキュメント内に
自動的にできるフォルダを削除して
アンインストール→再インストールしましたが
間違えて設定した状態で起動してしまいます。
具体的には下部ウィンドウにデフォルトであったものを間違えて消してしまったり
「出力」ウィンドウをソースプログラムのある箇所に移動させたまま
下部ウィンドウに戻すことができなくなっており、
メニューからの戻し方が不明な状態です。
厨な質問であることは重々承知しております。
どなたかご教授いただけたら幸いです。
0606デフォルトの名無しさん
2006/02/06(月) 22:48:41グローバル変数に使うと正常に動作しますが、メンバ変数に
使うとどうもエラーになってしまいます。
0607デフォルトの名無しさん
2006/02/06(月) 23:05:24MSDNにはメンバ変数に__declspec(alignを使っている例もあるのだから使えるはずだ。
http://msdn.microsoft.com/library/ja/vclang/html/vcrefAlign.asp?frame=true
0608デフォルトの名無しさん
2006/02/06(月) 23:11:13どんなエラーが出るのかを書くことをオススメする。
俺も昔エラーが出て困ったことがあったが君と同じ状況かわからないから書けん。
0609デフォルトの名無しさん
2006/02/06(月) 23:18:58ありがとうございます。
SSEを使おうとしているんですが、グローバル変数に
__descspec(align(16)) char buffer[256];と書くとOKで、
メンバ変数に同じ書き方をすると、不正なメモリアクセスエラーに
なってしまいます。
0610デフォルトの名無しさん
2006/02/06(月) 23:31:35普通に出来るなぁ。
再現する最小コードキボン。
0611デフォルトの名無しさん
2006/02/06(月) 23:35:04どうもありがとうございました。
0612デフォルトの名無しさん
2006/02/07(火) 00:31:45MFCで書かれたサンプルプログラムがいまいちよく理解できないのでAPIに書き直すという作業をしています。
そこで、関数を置きなおすときに、MFCにおけるダイアログボックスを初期化するUpdateData()関数をAPIで書き換えたいのですがAPIにおいてどのような関数を使ったらよいのでしょうか?
どなたか分かる方がいらっしゃいましたら教えてください。
よろしくお願いします。
0613・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/02/07(火) 00:42:58俺も普通にできるけど
__m128iをクラスメンバに設定できる?そこ重要。
余談だけどclassだとデータの並びが解りにくいんで、おいらは構造体と操作関数で実装してあとでC++でラップしてる。
0614・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/02/07(火) 00:46:03ダイアログの初期化でしょ?
WM_INITDIALOGで処理かな。
0615デフォルトの名無しさん
2006/02/07(火) 00:54:46いつからクラスと構造体は違うものになったんだ?
0616・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/02/07(火) 00:57:300617デフォルトの名無しさん
2006/02/07(火) 02:07:28delete p; とやるとどんなことになってしまうのでしょうか?
hoge が int みたいな単純なやつの場合と、コンストラクタやデストラクタを持ったクラスとかの場合とで何か違ったりしますか?
0618デフォルトの名無しさん
2006/02/07(火) 02:15:010619デフォルトの名無しさん
2006/02/07(火) 02:27:450620デフォルトの名無しさん
2006/02/07(火) 02:45:28Visual Studio .NET 2003 でも
Visual Studio 2005 でも
普通にネイティブアプリが作れるけど。
そういうこと言ってるんじゃないの?
0621デフォルトの名無しさん
2006/02/07(火) 02:56:14いま高校生なんですがC言語を本気で勉強したいと思っています
みなさんは最初C言語をどのようにして勉強したんですか?
やはり専門学校や独学でしょうか?
自分は身近にC言語が分かる人もいないし
高校生の身なので専門学校にも行けないし(お金も無い)
なので本を買い独学で勉強をしようと思って本屋に行ったのですが
どれも分厚い本ばかりでどれを買ってよいのか分かりませんでした
どなたか入門にはお勧めの本など教えていただけないでしょうか?
どうかよろしくお願いいたします
0622デフォルトの名無しさん
2006/02/07(火) 02:57:55delete p;では、hoge[0]のデストラクタしか呼ばれない。
0624デフォルトの名無しさん
2006/02/07(火) 09:11:110625デフォルトの名無しさん
2006/02/07(火) 10:55:48ヒント:ここはくだすれ
0626デフォルトの名無しさん
2006/02/07(火) 17:31:16現在のdelete[]はnew[]を行ったときに内部で要素数をどこかに記憶しておいて、
delete[]を行うときにそれを参照してデストラクタを呼ぶ回数を決めている。
delete1つで単一のオブジェクトも配列のオブジェクトも削除できるようにすると、
現状のdelete[]に必要な要素数の記憶を単独のオブジェクトのときも行わなければならず、
それは非効率だと言うことでdeleteとdelete[]は分かれることとなった。
0627デフォルトの名無しさん
2006/02/08(水) 04:00:49以前のVC++6.0で動いていたものを、ビルドすると、
ファイル 'libcp.lib' を開くことができません
とでます。
libcp.libとはなんでしょうか?
自分で調べてもバージョンが違うとどうのこうのしかわからなくて、
結局のところの対策がわかりません。
お願いします。
0628デフォルトの名無しさん
2006/02/08(水) 06:12:29どういうふうにビルドしたんだ?
0629デフォルトの名無しさん
2006/02/08(水) 07:14:37入門書なら何でも良いと思うが、本屋で最初のほうを立ち読みして
理解できると思ったものを選ぶと良いんじゃないかと。
0630デフォルトの名無しさん
2006/02/08(水) 08:05:05なるほどそんな経緯があるのですか。
他にもいろいろあるけど、>>624 の言うとおり Visual C++ な話でもないので、C++スレ行ってきます。
ありがとう。
0631デフォルトの名無しさん
2006/02/08(水) 10:54:11>>629 のやり方がいいと思うが、自分の場合「用語」で苦労した。
コンピュータ用語辞典、C言語辞典、アルゴリズム事典とかは手許にあると
いいと思う。
0632デフォルトの名無しさん
2006/02/08(水) 19:10:46[tab]キーの設定は「タブを挿入」にしてるんですが以下のような場合にタブが挿入されません
int(ここで[tab]を打つ) num;
こういう時に[tab]を打っただけタブを挿入させるにはどうすればいいでしょうか?
0633デフォルトの名無しさん
2006/02/08(水) 20:08:01>>631
ありがとうございます
今週末にでも大型書店へ行って探してきます
0634デフォルトの名無しさん
2006/02/09(木) 00:35:45Visual Studio 2005 C++ではコンパイル出来ないんですか?
教えてください(人∀・)タノンマス
0635デフォルトの名無しさん
2006/02/09(木) 00:43:440636デフォルトの名無しさん
2006/02/09(木) 01:31:530637デフォルトの名無しさん
2006/02/09(木) 01:58:41本当に調べた?ググッて一番最初に出てくる、Microsoftの
FAQにlibcp.libがなんだか書いてあるけど。
0638592
2006/02/09(木) 08:25:19当然だが、API ベースで移植?できた。リソースの IDC_STATIC など自分で
定義しないといけないものがある。afxres.h がないため。
fopen(), strcpy() などで、fopen_s(), strcpy_s() など動作を安全にする
ための API が追加されており、warning が一杯出る。
__w64 int など、64 bits 化の準備がされており、一部の変数で warning が
出て煩い。例えば、DialogBox() の返し値が INT_PTR とか。
自分は環境変数 _UNICODE, _VC2005(私設)を設定して書き分けた。
0639仕様書無しさん
2006/02/09(木) 11:08:16最新のPlatform SDKを入れたVC6環境やVC7で既に、MFCのクラスの一部や、
CArrayのインデックス値等テンプレート内で、INT_PTR は使われているよ。
0640デフォルトの名無しさん
2006/02/09(木) 12:27:300641638
2006/02/09(木) 15:33:10そうなの。
新しい?コンパイラを触るのは8年ぶりだわ。もう買う気はなかったが、
タダだったもんで落として置こう、落としたら試して見ようとなった。
いろいろ教えてくれた人に感謝。
0642デフォルトの名無しさん
2006/02/09(木) 18:06:10経過をそのダイアログに表示しようとしています。
しかし、
BOOL CTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
KeisanFunc(this); // 計算関数を呼ぶ
return TRUE;
}
void KeisanFunc( CTestDlg *pDlg )
{
pDlg->テキスト表示("処理1開始");
計算処理1();
pDlg->テキスト表示("処理2開始");
計算処理2();
pDlg->テキスト表示("終了");
}
のようにしても、OnInitDialogではまだダイアログが開く前に計算が開始してしまい、
最後の"終了"の部分が終わってからやっとダイアログが開きます。。。
どうしたら良いんでしょうか。
0643デフォルトの名無しさん
2006/02/09(木) 18:09:38モードレスでやれば?
0644デフォルトの名無しさん
2006/02/09(木) 18:25:13マルチスレッドにして同期に苦しめられるか。
0645デフォルトの名無しさん
2006/02/09(木) 18:31:58やっている計算や、ダイアログ自体は、本当にものすごくシンプルなので、
できるだけ単純に書きたかったんですが…
やはりモーダレスあるいはマルチスレッドにしないと無理なんでしょうか?
なんか馬鹿馬鹿しくて。。。
0646デフォルトの名無しさん
2006/02/09(木) 18:41:56関数を抜けるときにDestroyしてやるのが一番楽だとは思う。
0647初心者
2006/02/09(木) 18:47:13以前、VisualC++6.0 と DirectX9.0SDKでゲームを作っていたのですが、
このたびPCを買い換え、各ソフトをインストールし直して、コンパイル
しようとしたところ、以下のメッセージがでて、コンパイルできません。
どうすればいいのでしょか?
--------------------構成: DR - Win32 Debug--------------------
コンパイル中...
Global.cpp
リンク中...
Global.obj : error LNK2001: 外部シンボル "_DirectDrawCreateEx@16" は未解決です
Debug/DR.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー
ブラウザ データベースを作成中...
DR.exe - エラー 2、警告 0
0648デフォルトの名無しさん
2006/02/09(木) 21:09:05ライブラリのパスを通していないなど単純な手違いだと予想。
0649デフォルトの名無しさん
2006/02/09(木) 21:11:28教えて頂けませんでしょうか。
会社でVC6使用していて、この度VS2005EEを自宅のPCにインストールしたのですが、
設定がわからずデバッグ等がうまくいかずに困ってます。
よろしくお願い致します。
0650デフォルトの名無しさん
2006/02/09(木) 21:14:59VC++6とVC++8(VS2005)の一番の違いはUnicodeを使用する設定になっているかどうか。
いろいろとコンパイルエラーになるのだったらまずはそこを見直してみろ。
0651デフォルトの名無しさん
2006/02/09(木) 22:38:04http://pc8.2ch.net/test/read.cgi/tech/1113305966/150
によると、2005では以下のような変更があるらしいので、
この辺の設定を重点的に見直してみては。
・wchar_tが組み込み型に→過去のライブラリがリンク不可
・for int i のスコープの変更→過去のソースが一部コンパイル不可
・time_tの64ビット化→過去にファイルセーブしたものと不整合(β1で確認)
上記はβ2ではスイッチとdefineで過去の仕様に戻せました。
0652641,638
2006/02/09(木) 23:53:11一度もコンパイルできていない?
VC++6.0では殆どそのまま使ってきた。ときに追加の .lib をプロジェクトに
含めたことと、表示フォントを変えた程度。
VC++2005EE 設定では、
ttp://lets-go.hp.infoseek.co.jp/c_setting09.html
を参考にした。
default では UNICODE ベースでコンパイルするようになっているが、
プロジェクト→プロパティの中の「構成プロパティ」→「全般」に
「文字セット」の指定が可能になっている。
0653デフォルトの名無しさん
2006/02/10(金) 04:54:17CStringなりchar*なりを用いて、変化する文字列を作りたいのですが
どのようにすればよいでしょうか?
具体的には、カウンタの番号を文字列化して予め定めた特定の文字列
の後ろにつけた物を生成したいのです。
例えば、count = 0〜300として、
output000.txt
output001.txt
〜
...
output299.txt
output300.txt
としたいのです。
どのようにすれば宜しいでしょうか?困り果てております...
0654質問はよく読んでないよ
2006/02/10(金) 05:11:33str.Format("output%03d.txt", count) ;
0655デフォルトの名無しさん
2006/02/10(金) 05:39:28有難う御座いました!!!
0656デフォルトの名無しさん
2006/02/10(金) 07:46:030657デフォルトの名無しさん
2006/02/10(金) 08:21:09だからこそ、CStringなんじゃないの?
0658デフォルトの名無しさん
2006/02/10(金) 11:07:01マルチスレッドにすることにしました。
一応処理自体は動いてはいるのですが、UpdateData(FALSE)を行うと、
CDataExchange::CDataExchange→CWnd::AssertValid で止まってしまうのです。
プログラムとしては、>>642 を変更して以下のような感じです。アドバイスお願いします。
BOOL CTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
AfxBeginThread(KeisanFunc, this);
return TRUE;
}
UINT KeisanFunc( LPVOID pParam )
{
CTestDlg *pDlg = (CTestDlg*)pParam;
pDlg->テキスト表示("処理1開始");
pDlg->UpdateData(FALSE);
計算処理1();
pDlg->テキスト表示("処理2開始");
pDlg->UpdateData(FALSE);
計算処理2();
pDlg->テキスト表示("終了");
pDlg->UpdateData(FALSE);
}
0659デフォルトの名無しさん
2006/02/10(金) 12:30:24生のhWndでトライ。あと、SendMessageはデッドロックの危険もあるので、
せめて、SendMessageTimeoutなど使うように。
0660デフォルトの名無しさん
2006/02/10(金) 13:34:17そこでCのみのプログラムを書いてコンパイルしたら実行結果が出る黒いウィンドウと描画結果の白いウィンドウが出ますよね。
そこで質問なのですが、そうやって描画された図形を切り取ってファイルに保存することはできますか?
教えてください!
0661デフォルトの名無しさん
2006/02/10(金) 13:41:480662デフォルトの名無しさん
2006/02/10(金) 13:41:500663デフォルトの名無しさん
2006/02/10(金) 13:41:53[Alt]+[PrintScreen]で、そのアクティブなウインドウが
[Ctrl]+[Alt]+[PrintScreen]で全画面がクリップボードにコピーされる。
あとはペイントでも好きなように。
ダメ?
0664デフォルトの名無しさん
2006/02/10(金) 13:46:140665デフォルトの名無しさん
2006/02/10(金) 13:59:570666デフォルトの名無しさん
2006/02/10(金) 14:18:200667デフォルトの名無しさん
2006/02/10(金) 14:38:18色々調べてみたのですが、生のhWndでトライというのが分かりません。
DDXを使用してメンバ変数をダイアログに反映させているのですが
それではダメなんでしょうか。
0668デフォルトの名無しさん
2006/02/10(金) 14:58:18自分で WM_APP + n のメッセージ投げるようにするのがいいんじゃないの?
#define WM_PROC1_START (WM_APP+1)
void CTestDlg::OnWmProc1Start(略){
テキスト表示("処理1開始");
UpdateData(FALSE);
}
UINT KeisanFunc( LPVOID pParam )
{
CTestDlg *pDlg = (CTestDlg*)pParam;
pDlg->PostMessage(WM_PROC1_START, 略) ;
略
BEGIN_MESSAGE_MAPとかも自分で書いて
てきとーだけどこんな感じ
0669デフォルトの名無しさん
2006/02/10(金) 15:17:57ありがとうございました!!無事に思い通りの結果になりました!
初めてスレッドというものを使ってみて、色々躓いていたのですが、ようやく先へ進めます。
このスレに来て良かったです。本当にありがとうございました。
0670デフォルトの名無しさん
2006/02/10(金) 16:13:13TRACE(_T"012あいう");
とやると、出力ウインドウには、「012」とだけ表示されます・・・
0671デフォルトの名無しさん
2006/02/10(金) 16:19:52TRACE("012あいう");
でいいんじゃないの?
2005は知らない、変数がunicodeの場合の出力も知らない。
0672デフォルトの名無しさん
2006/02/10(金) 17:35:47ファイルの入出力がしたくて、NETで見つけたソースをコンパイルしたら
error C2679: 二項演算子 '+' : 型 'char [80]' の右オペランドを扱う演算子が見つかりません (または変換できません)。
どこが悪いのか教えてください
エロイヒト
void CDataDlg::OnBnClickedButton1()
{
// ファイルダイアログを作る
ifstream fin;
CFileDialog f(TRUE);
if(f.DoModal()==IDOK){
// ファイルを開く
fin.open(f.GetFileName());
if(fin.fail()){
AfxMessageBox("初めてのメッセージ?");
fin.close();
}
// ファイルを読んでエディットコントロールへ出力
char buf[80];
m_sEdit = "";
while(fin.getline(buf,80)){
m_sEdit = m_sEdit + buf + "\r\n";
}
fin.close();
UpdateData(FALSE);
}
}
0673デフォルトの名無しさん
2006/02/10(金) 17:49:39ですが、ちなみにincludeしたファイルは
#include "stdafx.h"
#include "Data.h"
#include "DataDlg.h"
#include <fstream>
#include <sstream>
#include <afxdlgs.h>
using namespace std;
です
0674デフォルトの名無しさん
2006/02/10(金) 17:50:30while(fin.getline(buf,80)){
CString str = buf ;
m_sEdit = m_sEdit + str + "\r\n";
}
0675デフォルトの名無しさん
2006/02/10(金) 17:50:49char型であるbufは、こんな事出来ない
0676672
2006/02/10(金) 18:04:24>>m_sEditは何? CString ?
はいCStringです
>>char型であるbufは、こんな事出来ない
そうなんですかとしか、言えないのですが
どうしたらいいのでしょうか?
0677デフォルトの名無しさん
2006/02/10(金) 18:14:28>>674 に書いてる
解説するとCStringはcharから代入できる。
CString(CStringT)のヘルプをみると
コンストラクタで
CStringT(
LPCSTR pszSrc
);
とかあるし、operator =で
CThisString& operator=(
char ch
);
とかある。
0678672
2006/02/10(金) 18:25:07おぼろげながら、理由がわかって来た気がします
要するに、
m_sEditとstrの変数の型が違うということなんでしょうか^^);
因みにソースは
横田壽というエロイお方の書いた
VISUAL C++入門という、ファイルをコピッて試したのですが
http://next1.cc.it-hiroshima.ac.jp/vc++/introvcdia.pdf
ここのP43のプログラムです
0679デフォルトの名無しさん
2006/02/10(金) 18:30:450680672
2006/02/10(金) 18:33:50第6章ファイル処理とデータ表示のP50でした
0681デフォルトの名無しさん
2006/02/10(金) 22:35:22まず、C言語を勉強した方がいい
0682デフォルトの名無しさん
2006/02/10(金) 22:45:000683デフォルトの名無しさん
2006/02/10(金) 22:53:19と思ったんだが、
AfxMessageBox("初めてのメッセージ?");
はエラーにならないのか?
0684デフォルトの名無しさん
2006/02/10(金) 23:03:52openメンバはそれでも仕方が無いけど。
0685672
2006/02/10(金) 23:27:09>>UNICODEの問題だったら
UNICODEの問題の意味が分かりませんスマソ
>>AfxMessageBox("初めてのメッセージ?");
AfxMessageBoxは自力でafx_msgを発見して置き換えたら成功しました
0686デフォルトの名無しさん
2006/02/11(土) 00:09:42関連関数で
main.obj : error LNK2019: 未解決の外部シンボル _socket@12 が関数 _main で参照されました。
といったエラーが出てしまいます(socket関数でソケットを作成するだけのソースです)
ソケットを使うには何を設定すればいいんでしょうか
Visual C++ 2005 Express Edition と Microsoft Platform SDK を一緒に使う
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
この設定だけしてます
0687デフォルトの名無しさん
2006/02/11(土) 02:28:45wsock32.libとか、ws2_32.libとかそんなライブラリを。
0688デフォルトの名無しさん
2006/02/11(土) 03:34:31double 型をTextOutする時に
2.5222e-002とかになって困ってしまいます。
0.0***のように表記させるにはどうすれば宜しいでしょうか?
0689デフォルトの名無しさん
2006/02/11(土) 05:47:17こう書けば?
( m_sEdit += buf ) += "\r\n";
0690デフォルトの名無しさん
2006/02/11(土) 06:12:35CStringがUnicodeの場合、char*やconst char*からのコンストラクタは
explicit宣言されてる。
これとか
m_sEdit = m_sEdit + CString(buf);
これとか
CString str(buf);
m_sEdit = m_sEdit + str;
はコンパイル通るけど、
m_sEdit = m_sEdit + buf;
これとか
CString str = buf;
m_sEdit = m_sEdit + str;
これは、少なくともVC2005ではコンパイルが通らない。
0691デフォルトの名無しさん
2006/02/11(土) 06:15:54const char*とかを引数にとるオーバーライドがあるので、
CString str;
str = buf;
m_sEdit = m_sEdit + str;
これとか
m_sEdit += buf;
これとかは普通にコンパイル通る。
0692672
2006/02/11(土) 08:17:12どうもです、コンパイル通らなくて小20時間
遂に、コンパイル成功、Unicode問題も理解できました
ありがとうございました
ε-(´∀`*)ホッ
0693672
2006/02/11(土) 10:56:372箇所でエラーが出ていましたが、教えて頂いた様に
str = str + "\r\n" + str1;↓
str = (str += "\r\n") += str1;
こんな感じで直したら成功しましたが
str1.Format("%s", &Statement[i][0]);error C2664
CString(Statement);
を追加したりするのですが巧くいきません、どうかもう一回だけ教えて下さいませ。
オナガイシマス
void CfileDlg::Display(void)
{
CString str, str1;
int i;
str="";
i = 0;
while(Statement[i][0]!=0){
str1.Format("%s", &Statement[i][0]); //←ここでError
if(i==0){
str = str1;
} else {
str = str + "\r\n" + str1; //←ここもEroor(ここは修正済み)
i++;
}
m_sEdit = str;
UpdateData(FALSE);
}
0694デフォルトの名無しさん
2006/02/11(土) 11:12:43>str = (str += "\r\n") += str1;
工エエェェ(´д`)、そこは、
str += "\r\n"
str += str1;
と処理すべきだろー。つか、副作用完了点が……
0695デフォルトの名無しさん
2006/02/11(土) 11:32:18演算子多重定義されているから副作用完了点は今回関係ない。
0696デフォルトの名無しさん
2006/02/11(土) 11:33:25Statementの型は?
0697672
2006/02/11(土) 11:45:47>>Statementの型は?
char Statement[100][80];です
今調べまくっていて、皆さんから教えて頂いた知識と感で
"%s"をexplicit宣言といいますか、明白にしてやらないのではと思い
"%s"→_T("%s")
としてやった所、コンパイルは成功したのですが、私間違っていますか?
と愚かな質問させて下さい
× str1.Format("%s", &Statement[i][0]);
○ str1.Format(_T("%s"), &Statement[i][0]);
0698デフォルトの名無しさん
2006/02/11(土) 11:56:420699デフォルトの名無しさん
2006/02/11(土) 12:16:06回答待ちの方に申し訳ないので入れませんが672です(_ _)(礼)
Visualu Studio 2005 C++ではとにかく変数を明確に扱かわないと、コンパイルが
通らないものと考えた方が好いという事がよく分かりました
私のような中途半端なC言語の知識だと痛い目を見ますね
会社で簡単なWIN32APIの実装を頼まれてC++に挑んでいるのですが
簡単な様で、結構難しいものです、これから本屋に行って、良書を探してきます
皆さん本当に<(_ _)>ございました
0700デフォルトの名無しさん
2006/02/11(土) 12:18:17ウンコいじりはやめよう
0701デフォルトの名無しさん
2006/02/11(土) 12:25:380702デフォルトの名無しさん
2006/02/11(土) 12:48:54また教えて下さい。
EM_STREAMIN で SF_TEXT で読み込んでいる部分を UNICODE 対応にしようと
しています。edit control には、SF_UNICODE も指定すれば内部的に大丈夫
のようですが、さて S-JIS テキストを読んで、どこで変換するかでです。
cookie を使った readProc() だろうと思っていますが、他にいい手がある
のでしょうか。
つたない経験から考えている方法は、
1.readProc() の中で変換してバイト数をなんとか調整する。
getc() みたいなことも出るかもしれない。
2.別途全部読み込み変換して readProc() ではちぎって渡す。
3.edit control はウインドウ毎に扱いを変えて、WINDOW LONG に識別を
持たせて、中の text を参照するときに必要な変換する。
尚、API ベースのアプリケーションです。
0703デフォルトの名無しさん
2006/02/11(土) 13:10:46マイクロソフトの方ですか???
0704デフォルトの名無しさん
2006/02/11(土) 13:36:41new で確保したクラスを delete して解放しているのですが、
タスクマネージャーを見る限り、解放されていないようなのです。
デストラクタにMessageBoxを仕掛けて、
デストラクタが呼び出されているのは、確認したのですが、
どうしてでしょうか・・・?
0705デフォルトの名無しさん
2006/02/11(土) 13:40:590706デフォルトの名無しさん
2006/02/11(土) 14:14:55せっかくゲームが動いたのに…途中で落ちちゃって…。
0707デフォルトの名無しさん
2006/02/11(土) 14:25:33メモリは次のnewなどに備えて
内部で確保された状態のままになっていることが多い。
0708デフォルトの名無しさん
2006/02/11(土) 14:38:42回答ありがとうございますm(_ _)m
その場合だとやはり、たくさんnewしてたらいつかは落ちますよね?
どうすれば内部で確保されたままのメモリを解放できますか?
0709デフォルトの名無しさん
2006/02/11(土) 14:40:43必要になったらOSが回収してくれる。
0710704
2006/02/11(土) 15:57:34if(Object){
delete Object;
Object = NULL;
}
としていたのですが、ifを取り除くことで改善できました。
0711デフォルトの名無しさん
2006/02/11(土) 16:00:300712デフォルトの名無しさん
2006/02/11(土) 16:16:07newのメモリ確保はVC環境内で高速化のためプールしているので
OSからみるとdeleteのタイミングでは解放されない。
自前のnew/deleteを定義し、その内部で直接APIを呼べば改善される。
…が、激遅になる。
0713デフォルトの名無しさん
2006/02/11(土) 16:34:31NULLをdeleteすること自体がおかしいと指摘している訳ではないと思う。
0714デフォルトの名無しさん
2006/02/11(土) 16:37:39,.,.,.,.,.,.,.,.,__
,,;f::::::::::::::::::::::ヽ
i::::::::/'" ̄ ̄ヾi
|:::::::| ,,,,,_ ,,,,,,|
|r-==( 。);( 。)
( ヽ :::__)..:: }
,____/ヽ ー== ; ほほう それでそれで?
r'"ヽ t、 \___ !
/ 、、i ヽ__,,/
/ ヽノ j , j |ヽ
|⌒`'、__ / / /r |
{  ̄''ー-、,,_,ヘ^ |
ゝ-,,,_____)--、j
/ \__ /
| "'ー‐‐---''
0715デフォルトの名無しさん
2006/02/11(土) 16:56:160716660
2006/02/11(土) 19:04:07回答ありがとうございます(^^)
でもダメでした。
VC++の本を読むとプログラムを実行した時左上にMFCのマークがついたウィンドウが出ているのですが、私の場合はコマンドプロンプトが出るんです。それがおかしいのでしょうか?
0717デフォルトの名無しさん
2006/02/11(土) 20:01:06コンソールアプリのプロジェクトでMFCサポートを有効にしてるんじゃないだろうな?
0718デフォルトの名無しさん
2006/02/11(土) 20:22:34>でもダメでした。
画面に表示されるものはスクリーンショットで必ず取れるはずだが。
(マウスカーソルとDicectX以外)
0719デフォルトの名無しさん
2006/02/11(土) 22:07:40文字列str1[]のn文字目以降に文字列str2[]を挿入する関数instr(str1,str2,n)を作成せよ
#include <stdio.h>
void instr(int n,char str1[], char str2[]);
int main(void)
{
int n;
char str1[100];
char str2[100];
scanf("%d",&n);
scanf("%s",str1);
scanf("%s",str2);
instr(n,str1,str2);
return 0;
}
void instr(int n,char str1[100],char str2[100])
{
int i,k,z;
char str3[200];
for(i=0;i<n-1;i++)
{
str3[i]=str1[i];
}
k=i;
0720デフォルトの名無しさん
2006/02/11(土) 22:08:41while(str2[z]!= '\0')
{
str3[i]=str2[z];
i++;
z++;
}
while(str1[k]!='\0')
{
str3[i]=str1[k];
i++;
k++;
}
printf("%s",str3);
}
作って見たのですが、コンパイル時、実行時にはエラーが出ませんでした。
ですがDOS窓に文字を打ち込みプログラムそのものを実行させ、出力を確かめようとしたところ
『問題が発生したため、〜〜〜.exe を終了します。 ご不便をおかけして申し訳ありません。』
となり落ちてしまいます。どなたかご教授お願いします。2レスに渡っての質問すいません
OS:xp
soft:Visual C++
0721デフォルトの名無しさん
2006/02/11(土) 22:12:590722デフォルトの名無しさん
2006/02/11(土) 22:22:32実行出来ました。ありがとうございます
0723647です
2006/02/11(土) 22:42:07すみません。どうしようもなく困ってるので、誰か助けてください。
以前、VisualC++6.0 と DirectX9.0SDKでゲームを作っていたのですが、
このたびPCを買い換え、各ソフトをインストールし直して、コンパイル
しようとしたところ、以下のメッセージがでて、コンパイルできません。
どうすればいいのでしょか?
--------------------構成: DR - Win32 Debug--------------------
コンパイル中...
Global.cpp
リンク中...
Global.obj : error LNK2001: 外部シンボル "_DirectDrawCreateEx@16" は未解決です
Debug/DR.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー
ブラウザ データベースを作成中...
DR.exe - エラー 2、警告 0
648 :デフォルトの名無しさん :2006/02/09(木) 21:09:05
>>647
ライブラリのパスを通していないなど単純な手違いだと予想。
>ライブラリのパスは通してます。
0724デフォルトの名無しさん
2006/02/11(土) 23:02:550725647です
2006/02/11(土) 23:34:300726647です
2006/02/11(土) 23:51:420727デフォルトの名無しさん
2006/02/11(土) 23:53:31コマンドラインから/clrオプション付けてコンパイルしたいのですが
多分DOS窓でやるのだと思うのですが、どうやったらいいのデツカ
具体的に教えてもらえたらうれしいのですが
0728デフォルトの名無しさん
2006/02/12(日) 00:54:27コンパイル時に切替えるにはどうすればいいんでしょうか
日本語 -> "こんにちは"
英語 -> "Hello"
0729デフォルトの名無しさん
2006/02/12(日) 01:01:45コンパイル時にロケールもなにもなかろうに。
自分でプリプロセッサシンボル決めて#ifdefで切り替えるしかなくね?
実行時ならやりようがあるが。
0730デフォルトの名無しさん
2006/02/12(日) 01:05:25#define ENGLISH 2
#define ・・・
#define LANGUAGE JAPANESE
#if LANGUAGE==JAPANESE
LPTSTR hello="こんにちは";
#elif LANGUAGE==ENGLISH
LPTSTR hello="Hello";
#elif ・・・
#endif
0731デフォルトの名無しさん
2006/02/12(日) 01:09:03ありがとうございます。マクロで解決することにしました。
0732デフォルトの名無しさん
2006/02/12(日) 02:14:30・文字列のコピーを自前のループで書くのはナンセンス。
・whileよりもforを使おう。
・sprintf()をもっと知ろう。
void instr(int n, char * str1, const char * str2)
{
#if 1
char * tmp = malloc(strlen(str1) - n + 1);
strcpy(tmp, str1 + n);
sprintf(str1 + n, "%s%s", str2, tmp);
free(tmp);
#elif 0
char * tmp = malloc(strlen(str1) + 1);
strcpy(tmp, str1);
sprintf(str1, "%.*s%s%s", n, tmp, str2, tmp + n);
free(tmp);
#else
char * tmp = malloc(strlen(str1) + strlen(str2) + 1);
sprintf(tmp, "%*s%s%s", n, str1, str2, str1 + n);
strcpy(str1, tmp);
free(tmp);
#endif
}
0733デフォルトの名無しさん
2006/02/12(日) 06:11:340734デフォルトの名無しさん
2006/02/12(日) 06:18:27おまえ素質ないよ
0735デフォルトの名無しさん
2006/02/12(日) 08:51:59C/C++の宿題を片付ケます 60代目
http://pc8.2ch.net/test/read.cgi/tech/1139053955/
0736デフォルトの名無しさん
2006/02/12(日) 10:13:20DirectX SDKを使用してプログラムを作ろうとしましたが、ライブラリファイルを読み込む所でエラーを
起こしています。
------------------
main.obj : error LNK2001: 外部シンボル "_Direct3DCreate9@4" は未解決です
Debug/D3DX.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー
------------------
それで、現象としては>>647と同じであろうと考え、プロジェクトの設定でd3d9.libと、d3d9x.libを読み込む
ように設定すると発生しなくなりました。
しかし、この方法だと毎回プロジェクトを作成する度に設定しなければなりません。
解説書を見るとIncludeとlibの設定は一度で大丈夫だと書いてあったので、何か設定を間違えてるのだと思います。
こちらとしては>>724の仰っている事が気になるのですが、こうすればよいと言う方法がありましたら
よろしくお願いいたします。
0737デフォルトの名無しさん
2006/02/12(日) 10:39:55ハァ?
そんなレベルの話だったの?
そんでもってマルチ?舐めるなよ。
0738デフォルトの名無しさん
2006/02/12(日) 10:41:10思ったけれど、家のVisualC 6.0ではソリューションファイルってのが
開けない・・・
ってか、毎回この手んおファイル形式が変わりますな・・・
このソリューションファイルをワークスペースファイルに変換って
出来ないんでしょうか?
構成がでか過ぎるので自分で作るのも面倒だし、
ちなみにVisualC++.netでもソリューションファイルに変更されたんですか?
素直にVisualC++.net買うか・・・
0739デフォルトの名無しさん
2006/02/12(日) 10:54:40ソリューションエクスプローラの中で
プロジェクト名変更したら、
ファイルシステム嬢でのプロジェクトフォルダの名前も
変更してくれれば便利なのにな。
0740デフォルトの名無しさん
2006/02/12(日) 13:58:04つttp://codeproject.com/tools/prjconverter.asp
0741デフォルトの名無しさん
2006/02/12(日) 14:31:36二つの自作関数Draw()とRead()を用意し、Read()でビットマップを読み込み、
Draw()でDIBで描画するというプログラムを作っているのですが、詰まってしまいました……
ファイル名・バッファ・BITMAPINFOHEADER・BITMAPFILEHEADERのポインタをRead()側に渡し、
Read側でGlobalAllocしてメモリ確保、ReadFileでバッファにデータを読み込みます。
Draw側ではそのバッファをSetDIBitsToDeviceで描画するという形を取っているのですが、
バッファにデータが読み込まれてないのか、空のデータが描画されてしまいます。
ただ、試しにRead側で描画してみるとちゃんと描画されました。
引数をポインタ型で渡せば、そのアドレスに戻り値が入るものだと思ってたのですが、
どうもここら辺でなにか勘違いをしてるような気がします。
解決策などございましたら、ご教示下されば幸いです。
0742デフォルトの名無しさん
2006/02/12(日) 14:32:21Draw()
{
Char *fn;
LYBYTE lpBuf;
LPBITMAPINFOHEADER lpInfo;
LPBITMAPFILEHEADER lpFile;
fn = "hoge.bmp";
ZeroMemory (&lpPixel, sizeof(lpBuf));
Read(fn, lpBuf, lpInfo, lpFile);
SetDIBitsToDevice (mhDC, 0, 0, 640, 480, 0, 0, 0, 480, lpBuf, (LPBITMAPINFO)lpInfo, DIB_RGB_COLORS);
GlobalFree (lpBuf);
}
Read(char *FileName, LPBYTE lpBuf, LPBITMAPINFOHEADER lpInfo, LPBITMAPFILEHEADER lpFile)
{
HANDLE fh;
DWORD result;
fh = CreateFile (FileName, GENERIC_READ, 0, NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
lpBuf = (LPBYTE)GlobalAlloc (GPTR, GetFileSize(fh, NULL));
//ここでReadFileやエラーチェックなど
CloseHandle (fh);
//ここで描画すると正しく描画される
//SetDIBitsToDevice (mhDC, 0, 0, 640, 480, 0, 0, 0, 480, lpBuf, (LPBITMAPINFO)lpBmpInfoHeader, DIB_RGB_COLORS);
}
0743デフォルトの名無しさん
2006/02/12(日) 15:04:26Read() に渡す値が参照渡しでなく値渡しになってないか?
Draw()
{
Char *fn;
LYBYTE lpBuf;
LPBITMAPINFOHEADER lpInfo;
LPBITMAPFILEHEADER lpFile;
fn = "hoge.bmp";
ZeroMemory (&lpPixel, sizeof(lpBuf));
Read(fn, lpBuf, &lpInfo, &lpFile);
//SetDIBitsToDevice (mhDC, 0, 0, 640, 480, 0, 0, 0, 480, lpBuf, (LPBITMAPINFO)lpInfo, DIB_RGB_COLORS);
GlobalFree (lpBuf);
}
Read(char *FileName, LPBYTE lpBuf, LPBITMAPINFOHEADER *lpInfo, LPBITMAPFILEHEADER *lpFile)
{
HANDLE fh;
DWORD result;
fh = CreateFile (FileName, GENERIC_READ, 0, NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
lpBuf = (LPBYTE)GlobalAlloc (GPTR, GetFileSize(fh, NULL));
//ここでReadFileやエラーチェックなど
CloseHandle (fh);
//ここで描画すると正しく描画される
//SetDIBitsToDevice (mhDC, 0, 0, 640, 480, 0, 0, 0, 480, lpBuf, (LPBITMAPINFO)lpBmpInfoHeader, DIB_RGB_COLORS);
}
0744デフォルトの名無しさん
2006/02/12(日) 15:08:03BITMAPINFOHEADER lpInfo;
とすべき。あるいは
LPBITMAPINFOHEADER * ppInfo;
としてRead()でアロケートする。もっともRead()なんかやめて
LoadImage(,,,LR_CREATEDIBSECTION);
するのが最適とおもうが。
0745デフォルトの名無しさん
2006/02/12(日) 15:13:06小三日、いつかはMFCとVC++のコラボレーションで
スーパープロジェクト、コードネームUkraineが完成するものと
信じていたのに。
゚(*゚´∀`゚)゚ノ彡☆ギャハハ八八ノヽノヽノヽノ \ / \/ \
DIALOGにEdit ContorolやBottunを貼り付けて、ちょこちょこっとC++で
コードを書いて、ぽちっとコンパイルすればプログラムが完成すると思った香具師は
漏れだけデツカーッ(゚Д゚≡゚д゚)
Ukraineが完成するのはいつに日やら┐(´д`)┌ヤレヤレ
0746デフォルトの名無しさん
2006/02/12(日) 16:12:12WTL使え
0747デフォルトの名無しさん
2006/02/12(日) 17:50:28コンボボックスの文字列を、エディットで変更できないようにできないでしょうか。
つまり、▼で選択は可能、エディット上で変更は不可能、という状態にしたいです。
0748デフォルトの名無しさん
2006/02/12(日) 17:51:18出来ます。
0750デフォルトの名無しさん
2006/02/12(日) 18:19:05Typeプロパティをドロップダウンリストにします。
0751デフォルトの名無しさん
2006/02/12(日) 18:19:11サンクス。
早速試して無事プロジェクトファイルは出来たんだけど、
他の問題でエラーでまくり・・・
あまりに多いんで、潰していく前に力尽きました。
ExpressEditionってのも試したけど、
windows.hすらないんですけど・・・
0752デフォルトの名無しさん
2006/02/12(日) 18:20:29Expressは別途PlatformSDKを入手する必要があります
0753sage
2006/02/12(日) 18:36:35C++で関数テーブルジャンプってどうすればいいのでしょう?
Cの場合は
void (* func[])(void) = {
aaa,
bbb,
};
func[ 0 ]();
で問題ないのですが、
C++のクラス関数ジャンプの場合
void (* func[])(void) = {
zzz.aaa,
zzz.bbb,
};
func[ 0 ]();
こう書くとテーブルの定義でエラーになってしまいます。
0754デフォルトの名無しさん
2006/02/12(日) 18:45:29static
0755デフォルトの名無しさん
2006/02/12(日) 19:08:53うーーん。よくわかりません。
詳しく教えていただきたいのですが・・・・
0756デフォルトの名無しさん
2006/02/12(日) 19:21:34実際やりたい事は
void (* func[])(void) = {
xxx.aaa,
yyy.ccc,
zzz.bbb,
};
のように別のクラスの関数にジャンプさせたいんです。
0757デフォルトの名無しさん
2006/02/12(日) 19:32:36動いた。 ありがとん。
いやーなんで最初から入れないんすかね。
なんにせよincludeやlibの設定と偉く面倒かった。
0758デフォルトの名無しさん
2006/02/12(日) 19:43:340759デフォルトの名無しさん
2006/02/12(日) 19:47:00そこにPSDKをインストールすれば、includeやlibの設定は要らなかったはず。
0760デフォルトの名無しさん
2006/02/12(日) 20:05:01MSDNか何かで静的メンバ関数をしらべよう。
そもそもなにか無理なことをしようとしてる希ガス。
MFCのメッセージハンドラのようなことをするなら別の方法に考よう。
0761デフォルトの名無しさん
2006/02/12(日) 20:05:48class xxx {
static void aaa() ;
} ;
void (* func[])(void) = {
xxx::aaa,
・・・
} ;
じゃないか?
staticのメンバー関数は機能が制限されるけど。
C++的にはこのような関数テーブル使わずに仮想関数で
どうにかしろ、という意見が多いと思うが。
0763デフォルトの名無しさん
2006/02/12(日) 21:47:11staticでない関数以外は、複数のクラスの関数を
1つの関数ポインタ配列に格納するのは無理。
void*の配列でも使わない限りね。
0764デフォルトの名無しさん
2006/02/12(日) 21:51:020765デフォルトの名無しさん
2006/02/12(日) 22:07:290766デフォルトの名無しさん
2006/02/12(日) 22:30:050767デフォルトの名無しさん
2006/02/13(月) 01:34:34自前で画像付きボタンのコントロールを作ろうと思い、(MFCの)CWndクラスを継承して作ることにしました。
このボタンは100〜1000個程並べる予定です。
エクスプローラの「縮小」時のようなサムネイル表示ビューを作りたいのです。(CListViewは使わないつもりです。)
CWndを継承するのはマウスのヒットテストやボタンの移動等が楽になる事を主に期待してのことです。
しかし、コントロールがある数を超えると急に重たくなってくるという記事を、どこかで読んで気になりました。
このように子ウィンドウを沢山使うやり方は何か問題があるでしょうか?
0768741
2006/02/13(月) 04:17:03遅れましたがレスありがとうございました。しかも素早いレスで非常に感謝してます。
ただ、Draw()側でlpInfoの中身(biBitCountなど)を表示して確認してみたところ、
lpInfoの中にはちゃんとデータが入っているようでした。
となるとlpBufが戻り値として帰ってきていない(Allocしたアドレスを
参照できていない?)ようで、色々と試してみたのですが、
結局上手く取得することが出来ませんでした。
(あげくに不正なアドレスを参照したり、メモリーリークが多発と…orz)
教わったLoadImageを利用して、DIBセクションを利用する方法も考えてみようと思います。
0769デフォルトの名無しさん
2006/02/13(月) 06:21:39要するに子ウインドウたくさん作ってそれぞれ別の画像を貼り付けるんだよね
ブラクラみたいなもんだな
最近のOSはOSごと落ちることはないと思うけど
0770デフォルトの名無しさん
2006/02/13(月) 20:25:44str.Replace(”0”,"0");
str.Replace(”1”,"1");
str.Replace(”2”,"2");
って一個ずつ置換していくのはなんだかスマートじゃないな〜と
思いつつ、ドウスレバいいのか判らん超初心者です。
0771デフォルトの名無しさん
2006/02/13(月) 21:00:190772デフォルトの名無しさん
2006/02/13(月) 21:18:47テーブルを使えば少しはまし。
static struct {
const char * c2;
const char * c1;
} st[] = {
{"0", "0"},
{"1", "1"},
// ...
};
for (unsigned ic = 0; ic < sizeof(st) / sizeof(*st); ++ic) {
str.Replace(st[ic].c2, st[ic].c1);
}
って、実際にはReplace()ではなくC流にやるほうが効率いいけど。
0773デフォルトの名無しさん
2006/02/13(月) 22:52:47WinAPIならFoldStringがある。
0774デフォルトの名無しさん
2006/02/14(火) 07:38:32VS2005で、とりあえずwin32アプリケーションでWinMain関数にreturn(0)だけつけてビルドしたんですが、
意味不明のエラーがでます。
プログラム
#include <windows.h>
INT APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nShowCmd)
{
return (0);
}
エラー
c:\program files\microsoft visual studio 8\vc\platformsdk\include\winnt.h(222) : error C2059: 構文エラー : ';'
エラー場所
typedef void *PVOID;
typedef void *POINTER_64;
typedef void *PVOID64;
上記の真中ですが、何処が構文エラーなのかわかりません。
修正方法もわからず適当にスペース削ったりしても駄目でした。
申し訳ありませんが修正方法を教えてください……
0775デフォルトの名無しさん
2006/02/14(火) 08:35:40別に間違いじゃないけど気持ち悪いね。
0776デフォルトの名無しさん
2006/02/14(火) 08:38:13俺の環境ではそんなエラーでないよ。
それより、どのプロジェクトで生成したのさ、そのスケルトン。
0777デフォルトの名無しさん
2006/02/14(火) 08:46:26ソニー、3LCDリアプロ「Eシリーズ」に不具合
視聴時間の累積が一定時間(約1,200時間)を経過すると、「テレビ視聴中に
電源オフできない、または電源スタンバイ状態から電源オンできない」、「入
力切り換えができない」という不具合が確認されている。
(p)http://www.watch.impress.co.jp/av/docs/20060209/sony.htm
123: 2006/02/10 09:50:35
159 名前:名無しさん必死だな[sage] 投稿日:2006/02/10(金) 08:27:54
ここで問題です
0xFFFFFFFFミリ秒は何時間でしょう
・・・本気で何か仕込んでやがったな
171 名前:名無しさん必死だな[sage] 投稿日:2006/02/10(金) 09:34:53
>>159
1193時間か…。
どうみても最初からそのつもりで仕込んでいます
ほんとうにありがとうございました
16: 2006/02/10 01:06:25 i+RIL/DN0
>一日あたりのテレビ視聴時間は視聴者全体平均で2時間54分。
(p)http://www.ipse-m.com/company/release/release_07.htm
1日3時間×365日=1095時間
365日以上経過で保障期間外。
こいつはくっせーー
ゲロ以下の臭いがプンプンするぜーーっ!
0778デフォルトの名無しさん
2006/02/14(火) 11:54:23SDIでOnDrow(CDC *pDC)にmyDL.DoModal();でダイアログを呼び出して
そのダイアログのokボタンを押すとSDIのウインドウに「okが押されました」と表示させたいのですが
ボタンを押したと認識するためにはどこの関数に書き込めばいいですか?
一応ダイアログは表示します。
書き込むソースは
int ret;
if(ret==IDOK){ //retはダイアログからの戻り値
mydc.TextOut(0,0,"okがクリックされました");
}
こんなかんじです
0779デフォルトの名無しさん
2006/02/14(火) 12:28:340780デフォルトの名無しさん
2006/02/14(火) 13:04:51お前古いDirectXSDK入れてVS2003から乗換えてるんじゃないか?
もしくはそれに似た状況だと予想されるんだが。
includeフォルダの検索順でDXSDKの順番をPlatformSDKより下げてみ?
0781デフォルトの名無しさん
2006/02/14(火) 14:44:07RGBQUADから下の画像データの構造体が見つかりません・・・。
こっから先、どうやって描画すればいいのでしょうか?
どなたかご教授をお願い致します。
■vc++6.0 XP
public:
RGBQUAD BMP_P;
BITMAPINFOHEADER BMP_I;
BITMAPFILEHEADER BMP_F;
void CBmpView::OnFileOpen(){
CFile file;
CString path;
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,"BITMAP(*.BMP)|*.BMP||");
if(dlg.DoModal()!=IDOK)
return;
path=dlg.GetPathName();
if(!file.Open(path,CFile::modeRead | CFile::typeBinary))
return;
file.Read(&BMP_F,sizeof(BITMAPFILEHEADER));
file.Read(&BMP_I,sizeof(BITMAPINFOHEADER));
file.Read(&BMP_P,sizeof(RGBQUAD));
file.Close();
}
0782781
2006/02/14(火) 14:45:080783デフォルトの名無しさん
2006/02/14(火) 14:53:53Windowsプログラミングは初めてで、かなり戸惑いつつも、
なんとか頑張って.NETでツールを作りました。
main()がないのはかなり驚きでした。
が、ここで困ったことがあります。
ビルドしてできた hogehoge.exe の戻り値を、他のツールで使用したいのですが、
どうやって渡せば良いのでしょうか?
int main()
{
...
if (success()) {
return 0;
} else {
return 1;
}
}
みたいな感じで、0か1かを返したいのです。
main()もないし、WinMain()もないのですが、どうすれば良いんでしょうか。
0784デフォルトの名無しさん
2006/02/14(火) 15:12:06ビットマップ(DIB)ファイルの読み込みはそんなに簡単じゃないよ。
file.Read(&BMP_F,sizeof(BITMAPFILEHEADER));
の後、BMP_F.bfSizeの値から残りのデータを読み込むようにして、
BITMAPFILEHEADERやBITMAPINFOHEADERの情報から
パレットのアドレスやビット情報のアドレスを求める必要がある。
BITMAPINFOHEADERのbiBitCountとかでパレットのサイズが変わったりするから。
この辺の情報はぐぐれば見つかるはず。
0785デフォルトの名無しさん
2006/02/14(火) 15:14:50開発環境がよくわからない。
言語は? C++, C# ?
プロジェクトの作成のときにWindowsアプリケーションにしたの?
0786デフォルトの名無しさん
NGNGCWinApp::ExitInstanceをオーバーライドして値を返す
0787デフォルトの名無しさん
2006/02/14(火) 15:22:400788デフォルトの名無しさん
2006/02/14(火) 15:32:19わかりやすいご返答、ありがとうございました。
0790デフォルトの名無しさん
2006/02/14(火) 16:23:43ダイアログのOKボタン、ダブルクリックするとイベントハンドラ(関数)が作成されるから、
そこにゴニョゴニョ書け
多分、やりたいのは、こっち↓だろうけど
int ret = myDL.DoModal();
if(ret==IDOK){ //retはダイアログからの戻り値
mydc.TextOut(0,0,"okがクリックされました");
}
0791デフォルトの名無しさん
2006/02/14(火) 18:17:07他のツールとは?
WinAPIが使えるのならGetExitCodeProcess。
0792781
2006/02/14(火) 19:13:37例えば
0000005A〜00000102のデータを
ある場所に配列として代入したい時、
どのようにしてこのバイナリのアドレスを指定及び操作できますか?
それとも出来ないのでしょうか・・・夢見すぎかも。
0793デフォルトの名無しさん
2006/02/14(火) 19:52:01先ずは、「0000005A〜00000102のデータ」とは何のことか聞こうか。
0794デフォルトの名無しさん
2006/02/14(火) 19:54:250795789
2006/02/14(火) 19:59:19ありがとうございます、再び質問しつれいですが
追加の課題でそのダイアログから式を選択して「OK」を押すと計算した数値をわたして
グラフを描けというふうなのが出てしまったんですがOKをいじるだけでもできますか?
0796デフォルトの名無しさん
2006/02/14(火) 20:31:33C級エスパーの私では、ESPが足りない。
>>795
エスパーして答えるに、できない。
0797デフォルトの名無しさん
2006/02/14(火) 21:07:37メインのウィンドウからダイアログを開く。
開いたダイアログは、計算式の選択などを行う操作ダイアログ。
ダイアログのOKを押すことでメインウィンドウに結果を反映させる。
これをやりたいのだろう。
0798デフォルトの名無しさん
2006/02/14(火) 21:45:560799デフォルトの名無しさん
2006/02/14(火) 23:06:18そうです、文法へたですみませんでしたw。
0800デフォルトの名無しさん
2006/02/14(火) 23:49:46OKをいじるだけではできないんじゃないか?
グラフを描画する必要があるなら、それも書かないとね。
(どこに描画ルーチンを入れるかによるかもしれないけど)
0801デフォルトの名無しさん
2006/02/15(水) 00:38:44うーん、まぁなんとかがんばってみます。
無理と悟ったらまたききにきますので、よろしくお願いします<(_ _)>
0802デフォルトの名無しさん
2006/02/15(水) 00:41:52お腹が空いたら、開けるのですよ
http://techtips.belution.com/ja/vc/0055/
0803デフォルトの名無しさん
2006/02/15(水) 01:25:50ワラタ
あんた、いい人やなぁ
0804デフォルトの名無しさん
2006/02/15(水) 04:46:08>file.Read(&BMP_F,sizeof(BITMAPFILEHEADER));
>の後、BMP_F.bfSizeの値から残りのデータを読み込むようにして、
残りのデータのバイト数 = BMP_F.bfSize - sizeof(BITMAPFILEHEADER) ;
BYTE *p = new BYTE[残りのデータのバイト数] ;
p に残りのデータ読み込み
BITMAPINFO *pbi = (BITMAPINFO*)p ;
相対位置 = BMP_F.bfOffBits - sizeof(BITMAPFILEHEADER) ; // ここではBMP_F分ずれている
BYTE *pbit = &p[相対位置] ; // ビットマップのビットイメージ
こんな感じかな、細かいとこまであってるかはみてないよ。
>バイナリのアドレスを指定
BYTE *pbit ;
pbit = &p[相対位置] ;
とか、
pbit = p + 相対位置 ;
のことか? C言語スレあたりでポインタとかで質問するよろし。
0805デフォルトの名無しさん
2006/02/15(水) 08:58:23おなかすいたので空けてみました、これでなんとかできそうですよw
いやーありがとうござあいます。
0806デフォルトの名無しさん
2006/02/15(水) 14:17:40シーン引継ぎの際、PopScene()にて
delete m_pSceneStack[m_iCurrentScene]
としているのですが、シーンのデストラクタが呼ばれず、
メモリリークしてしまいます。deleteなのにどうして呼ばれてないのでしょうか?
0807デフォルトの名無しさん
2006/02/15(水) 14:28:440808デフォルトの名無しさん
NGNG0809806
2006/02/15(水) 14:33:21迅速な返答ありがとうございました。
自己解決しました。基底クラスのデストラクタ virtual してませんでした。吊ってきます。
0810デフォルトの名無しさん
2006/02/15(水) 18:27:33こんなエラーが出てて困ってます。
たしか参照設定で何かやらなきゃいけなかった気がするのですが、
いろいろ試してみてもどうもうまくいきません。。
---------------------
WaveletNetwork error LNK2019: 未解決の外部シンボル
"public: void __thiscall CWaveletNeuron::Fire(enum ActivationType)"
(?Fire@CWaveletNeuron@@QAEXW4ActivationType@@@Z) が
関数 "public: void __thiscall CWaveletNetwork::FeedForward(void)"
(?FeedForward@CWaveletNetwork@@QAEXXZ) で参照されました。
---------------------
書いているプログラムは、
WaveletNetwork\WaveletNetwor.h
WaveletNetwork\WaveletNetwor.cpp
WaveletNetwork\WaveletNeuron\WaveletNeuron.h
WaveletNetwork\WaveletNeuron\WaveletNeuron.cpp
の4つで、
WaveletNetwork.h内で#include "WaveletNeuron\WaveletNeuron.h"を宣言しています。
参照設定は空です。
WaveletNeuron::Fire()以外の関数はinlineでヘッダファイル内に書いていて、
Fire()と他のいくつかがcppファイルに書いてます。
WaveletNetwork内に必要なファイル全てを入れてしまえばできるのは分かっているんですが、
参照設定を使って解決する方法があった気がします。
どなたか知っていたら教えてください。
0811デフォルトの名無しさん
2006/02/15(水) 18:36:22WaveletNetwork\WaveletNeuron\WaveletNeuron.cpp
はちゃんと追加してるの?
0812デフォルトの名無しさん
2006/02/15(水) 20:24:07一般人の漏れには訳が分からんスレだ……
0813デフォルトの名無しさん
2006/02/15(水) 20:31:12で解決したのは自己解決というのか?
0814デフォルトの名無しさん
2006/02/15(水) 23:27:55旧来のキャストの記述を使用しているときに
警告を出すようにするオプションはありませんか?
0815デフォルトの名無しさん
2006/02/15(水) 23:52:16通信相手のMACアドレスを指定して、Ether接続させたいのですができるのでしょうか。
もしあるのなら、どのような方法でしょうか。
WinSocket(?)とかだと、IPアドレスとポートが必要ですよね。
RARPとかは全然違うっぽいし…。
参考になるサイトとかでもいいので、知っていたら教えてください。
0816デフォルトの名無しさん
2006/02/16(木) 00:05:30ドライバかかなきゃ、イー差フレームのハンドリングはできんぞなっと。
0817デフォルトの名無しさん
2006/02/16(木) 00:17:490818デフォルトの名無しさん
2006/02/16(木) 00:19:51NDISでググれ
0819815
2006/02/16(木) 00:29:28ちょっと言葉が足りなかったのですが、Ether接続用のドライバに機能追加することになったんです。
>>817さん、>>818さんのレスの内容を明日調べてみます。
0820デフォルトの名無しさん
2006/02/16(木) 00:34:19アドレスを整数値として読み込むとき、今まで DWORD にキャストしていました。
が、2005 のデフォルトのオプションでは 64bit 対策を考慮し、警告を出すようになっています。
64bit 対策としては、どんな型で受け取るべきでしょうか。
BYTE-WORD-DWORD のさらに上のようなものが標準で定義されているのでしょうか?
0821・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/02/16(木) 00:41:560822デフォルトの名無しさん
2006/02/16(木) 01:10:55ssize_t
ptrdiff_t
0823デフォルトの名無しさん
2006/02/16(木) 01:35:19intptr_t
uintptr_t
ptrdiff_t
size_t
0824デフォルトの名無しさん
2006/02/16(木) 02:29:34http://msdn2.microsoft.com/ja-jp/library/323b6b3k.aspx
0825デフォルトの名無しさん
2006/02/16(木) 04:48:30AfxBeginThread()で
スレッドA,Bを作成しました。
今までは3スレッド共に単独で動作させていたのですが
スレッドAがデータを受信した際に
スレッドBに連絡したいケースが出てきました。
この場合のスレッドAからBへの連絡手段を教えていただきたいです。
自分にはグローバル変数をBがずっと監視するくらいしか思いつきません。。
0826デフォルトの名無しさん
2006/02/16(木) 04:55:320827デフォルトの名無しさん
2006/02/16(木) 09:46:370828デフォルトの名無しさん
NGNGWM_LBUTTONDOWN/WM_LBUTTONUPをひっかけて、それぞれWM_NCLBUTTONDOWN/WM_NCLBUTTONUPを発行。
0829デフォルトの名無しさん
2006/02/16(木) 11:49:24{
ReleaseCapture();
SendMessage(Form1->hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0);
}
};
0830デフォルトの名無しさん
2006/02/16(木) 18:27:21何かヒントをお持ちの方がいらっしゃいましたらご教示願います。また、スレ違いの場合は誘導願えませんでしょうか。
EditBoxを自前でつくり、それをJavaScriptで使用する為に以下のようなHTMLに埋め込みました。ocxではなく、普通のdllです。
<HTML>
<HEAD>
<TITLE>テスト ページ</TITLE>
<SCRIPT LANGUAGE="JAVASCRIPT1.2">
<!--
FUNCTION INIT() {
VAR TEST = DOCUMENT.ALL.TEST;
DOCUMENT.ONKEYDOWN = ONKEYDOWN;
}
FUNCTION ONKEYDOWN() {
ALERT("ONKEYDOWN KEYCODE=[" + EVENT.KEYCODE + "]");
}
//-->
</SCRIPT>
</HEAD>
<BODY ONLOAD="INIT()">
<FORM>
自作のEditBox:<OBJECT ID="TEST" CLASSID="CLSID:99999999-9999-9999-9999-999999999999" WIDTH="200" HEIGHT="25"></OBJECT><BR/>
通常のEditBox:<INPUT TYPE="TEXT" SIZE="50" VALUE="TEXT"/>
</FORM>
</BODY>
</HTML>
通常のEditBoxでキー入力を行うとそのコートがALERTで表示されます。
しかし自前のEditBoxでキー入力をしてもコードが表示されません。
Spy++で調べたところ、どちらの場合も同じようにWM_KEYDOWNが飛んできました。
何故、自前のほうではALERTが上がらないのでしょうか?
環境はWindows2000で開発環境はVC6++です。
0831デフォルトの名無しさん
2006/02/16(木) 18:32:270832デフォルトの名無しさん
2006/02/16(木) 18:42:360833デフォルトの名無しさん
2006/02/16(木) 18:49:540834830
2006/02/16(木) 19:04:47タグに大文字と小文字が混じっていたので一括で大文字に変更してしまいました。
>>832
CLSIDは実際の値を記さないように9並びにしてしまいました。
>>833
何故このような事をしたいかと言いますと、現時点での自前のEditBox上で例えばF7キーを押しても親に伝わりません。
それをどうにかしようと、押されたキーをそのまま親に返すようなソースを書いたのですが、思い通りに親にメッセージが飛ばなかったのが始まりです。
0835830
2006/02/16(木) 21:46:48IE5 -> NG
IE6 -> OK
でした。
お騒がせしました。
0836デフォルトの名無しさん
2006/02/17(金) 15:42:210837デフォルトの名無しさん
2006/02/17(金) 15:42:580838デフォルトの名無しさん
2006/02/17(金) 19:25:39imm32.libをリンクしてimm.hをインクルードしているにも関わらず
定義されていない識別子ですとエラーが出ます
関数名を入力した後に bool ImmDisableIME(DWORD) のように
補助表示が出るのにエラーになるのは何故なのでしょうか?
0839デフォルトの名無しさん
2006/02/17(金) 19:32:14あれだな
0840デフォルトの名無しさん
2006/02/17(金) 20:56:160841838
2006/02/17(金) 22:55:30DestroyWindow(hImeWnd);
の荒業で非表示にできたのですが、今度は入力文字列が取得できなくなりましたorz
デフォルトの文字入力を消しつつ日本語入力の文字列を取得するにはどうすれば良いのでしょうか?
0842デフォルトの名無しさん
2006/02/17(金) 22:59:590843838
2006/02/17(金) 23:07:38imm.hの中覗いてもちゃんとあるし
なぜだーーーOTL
0844デフォルトの名無しさん
2006/02/18(土) 00:16:01#if (WINVER >= 0x040A)
BOOL WINAPI ImmDisableIME(IN DWORD);
0845デフォルトの名無しさん
2006/02/18(土) 00:18:56MSDNによればImmDisableIMEはWin98/2k以上となっている。
http://msdn.microsoft.com/library/ja/jpintl/html/_win32_ImmDisableIME.asp
<windows.h>のインクルードより前に#define WINVER 0x410なんかを指定したらどうだ。
0846デフォルトの名無しさん
2006/02/18(土) 12:44:29× String str = "Hello";
○ String ^str = "Hello";
いちち^付けないといけないみたいですね、
^ってどういう意味よ?
0847デフォルトの名無しさん
2006/02/18(土) 12:51:580848デフォルトの名無しさん
2006/02/18(土) 12:57:380849847
2006/02/18(土) 13:00:30DWORD timeGetTime()
だった。
>>848
ちょっと心が和んだw
0850846
2006/02/18(土) 13:16:37○ VS2005 C++ (Visual Studio 2005 C++)
0851デフォルトの名無しさん
2006/02/18(土) 14:10:42それ、(純粋な)C++じゃないから。C++/CLIかManagedC++か知らんけど、該当スレで聞いてみたら?
0852デフォルトの名無しさん
2006/02/18(土) 18:34:360853デフォルトの名無しさん
2006/02/18(土) 20:07:28'`ィ (゚д゚)/
散々な目に会いました
0854デフォルトの名無しさん
2006/02/18(土) 20:52:072番目、3番目以降の「最近使ったファイル」が表示されてしまうのですが
どうしたら良いでしょうか?
0855デフォルトの名無しさん
2006/02/18(土) 21:28:25えっ、散々な目にあうとは、どうなってしまうのですか?
0856854
2006/02/18(土) 22:12:39最近使ったファイルはメニューに1個だけ追加すれば良いんですね
くだらない質問失礼いたしました。
0857デフォルトの名無しさん
2006/02/18(土) 22:37:04>815のやつ、相手のMACアドレスからIPアドレスを取得すればいいんでないの?
自分でフレーム作らなくてもよさそうだけど。
最初の1回だけ相手のMACアドレスから相手のIPアドレスを取得する方法があれば解決だよね。
そんな方法があるのかどうか知らんが。
あったっけ?
0858デフォルトの名無しさん
2006/02/18(土) 22:50:500859838
2006/02/18(土) 23:09:31>>845
使えるようになりました。ありがとうございます。
使えるようにはなったのですが、文字列の取得もできなくなりましたorz
ウーン
ImmDisableIME(-1);//引数( 0 )も試しました
hImc = ImmCreateContext( );
ImmSetOpenStatus(hImc, true);
0860838
2006/02/18(土) 23:48:580861デフォルトの名無しさん
2006/02/18(土) 23:56:40どっちにしろルータは超えられない。
0862デフォルトの名無しさん
2006/02/19(日) 00:07:03そりゃそうだ。IMEを無効(Disable)にしたんだから使えるわけが無い。
0863デフォルトの名無しさん
2006/02/19(日) 00:10:12ってのがいまいち不明。
0864デフォルトの名無しさん
2006/02/19(日) 00:33:28ウィンドウの左上に勝手に変換中の文字が表示されるやつです
0865デフォルトの名無しさん
2006/02/19(日) 00:35:58表示させたくないだけだったりして。
ゲームでたまにある名前入力とか。
0866デフォルトの名無しさん
2006/02/19(日) 00:36:440867デフォルトの名無しさん
2006/02/19(日) 00:38:19なんとかなりました
0868デフォルトの名無しさん
2006/02/19(日) 12:22:31質問自体は既出(>>178)なのですが、自分も同じ疑問があるので再出させていただきます。
フックの勉強の一環として、コードをインジェクトする方法を色々学んでいます。
すでにDLLインジェクトはやりました。
現在、単一ファイル(exe)で同様のことに挑戦できないかな、と思っています。
(勉強が目的なので必要性などは度外視です)
自exe内の小さな関数(C++)をターゲットプロセスに書き込んでCreateRemoteThread() あるいは
SetThreadContext() による EIP 変更で走らせようとしています。
IATを読んでAPIを即値呼び出しに変える、EVAを読んでオフセットを修正する、
.data/.rdataの情報は全て別個にコピーする、など、そのへんは行っているつもりです。
問題はやはり、>>178さんの質問された、関数そのもののサイズの取得です
VirtualAllocEx() でどれだけ確保すればよいのか。
現在は自分の関数をシーケンシャルサーチしてretをマッチすることで把握していますが、
美しくないなーと思うのと、条件分岐次第でコンパイラの最適化とかでretが複数入ることは
ないのかしら、というあたりで不安です。
先生方、クールな解決法教えてくださいませ(;´Д`)人
0869868
2006/02/19(日) 12:23:34もちろん、「動的に」知りたい、という意味です。
0870デフォルトの名無しさん
2006/02/19(日) 12:55:41当然サイズはわかるわな)、コンパイルしたコードはそこで決定されるわけだから、
やっぱりmapファイルとか、pdbファイルとかを食わせた方が早いとおもう。
0871デフォルトの名無しさん
2006/02/19(日) 18:12:19「ビルド後のイベント」でmapファイルを(perlとかで適当に)処理して関数のサイズを
即値で記述したヘッダファイルを生成させて、もういっかいビルド、とかそんな感じでしょうか
やっぱりそうしたほうが手っ取り早いですよね(´・ω・`)
0872デフォルトの名無しさん
2006/02/22(水) 13:25:450873デフォルトの名無しさん
2006/02/22(水) 16:26:29ただのDLLでも平気。
VBAからはDeclareで宣言すればよい。
ワークシート上でも読み込む方法があった気がしなくも無い。
0874デフォルトの名無しさん
2006/02/22(水) 18:33:19そうなんですか。ありがとう。
c#で作ったやつはcomする必要があったので
c++もそうなのかと思いますた。
0875デフォルトの名無しさん
2006/02/22(水) 18:40:28クラスの形で使わせたければ、やっぱりCOMしかないからな。
0876デフォルトの名無しさん
2006/02/22(水) 19:53:44わかりました。
早速VC2005EEをdlして朝鮮してみます。
0877デフォルトの名無しさん
2006/02/22(水) 22:00:170878デフォルトの名無しさん
2006/02/23(木) 15:24:00[環境]
OS: Windows XP SP2
言語: MS eMbedded Visual C++ 4.0
クラス Hoge のコンストラクタを以下のように記述しました。
class Hoge {
explicit Hoge( const string p1, const bool p2 = true, const int p3 = 0 );
・・・(省略)
};
第2,第3引数を省略可能にしたつもりです。
このクラスのインスタンスを生成するとき、以下のように記述しています。
pHoge = new Hoge( "fuga" );
すると、この行で、コンパイルエラー C2664 が発生してしまいます。
通常のメンバ関数であれば、問題なく引数の省略はできていました。
何か、コンストラクタ特有の制約があるのでしょうか?
0879878
2006/02/23(木) 15:32:53Hogeクラス宣言のコードは以下の通りです。
(Hoge.h 内)
class Hoge {
explicit Hoge( const string p1, const bool p2, const int p3 );
・・・(省略)・・・
};
(Hoge.cpp 内)
Hoge::Hoge( const string p1, const bool p2 = true, const int p3 = 0 )
{
・・・(省略)・・・
}
宜しくお願いします。
0880デフォルトの名無しさん
2006/02/23(木) 15:47:04そのHogeを使うソースがHoge.cpp内でなければそのデフォルト引き数を知り得ない。
0881878
2006/02/23(木) 15:58:51早速の御回答ありがとうございます。
そうでした、デフォルト値はプロトタイプの方に書くんでしたね。
class Hoge {
explicit Hoge( const string p1, const bool p2 = true, const int p3 = 0 );
・・・(省略)・・・
};
(Hoge.cpp 内)
Hoge::Hoge( const string p1, const bool p2 /* = true */, const int p3 /* = 0 */ )
{
・・・(省略)・・・
}
とすれば、よさそうです。
0882デフォルトの名無しさん
2006/02/23(木) 16:48:590883デフォルトの名無しさん
2006/02/24(金) 23:28:47a=b*2
って書くと
a = b * 2
ってスペースが自動で挿入されてましたが、
C++.netでは、こういうのは自動でできませんか?
もしくは、自動じゃないほうが便利な場合があるのでしょうか?
ホントに超初心者な質問ですみません。
0884デフォルトの名無しさん
2006/02/24(金) 23:46:26スペース入れる入れないもコーディング規約に含む企業もあるくらいだし。
0885デフォルトの名無しさん
2006/02/25(土) 04:33:16とりあえずウインドウを作らないと始まらないなぁと思って、ぐぐったら見つかった
http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_SDKApp.html
のその2をそのままコピペしてみてダメだったから、文字セットをUnicodeからマルチバイト文字に変えるまでは調べたら分かった。
だがそれでデバッグを開始すると
LNK2019: 未解決の外部シンボル __imp__DispatchMessageA@4 が関数 _WinMain@16 で参照されました。
等のエラーがWinmain.objで大量に発生して詰まりました。
これを解決するにはどうすればいいんでしょうか?
0886デフォルトの名無しさん
2006/02/25(土) 06:26:55少なくとも Visual Studio 2005 Professional では
そんなエラーでなかった。つーか、DispatchMessage
がリンクできないって言うなら、SDKじゃねぇの?
0887デフォルトの名無しさん
2006/02/25(土) 08:50:13user32.libなどはリンクしたか?
0888デフォルトの名無しさん
2006/02/25(土) 11:48:13サポートされなくなっていくんでしょうか?
実験データの可視化ツールを作れといわれて、
さて、今から作るなら
0) Win32 API 直打ち
1) C++/CLI & .NET Framework
2) C++ & MFC
3) C# & .NET Framework
どれで行くか迷ってます。出来るだけ持続的に
メンテナンス可能なものがよいのですが・・・
ちなみに今までは 0 と 3 を少しやった程度です。
ほとんどが UNIX/大型 で計算→ UNIX の可視化ツール
だったもので。
0889デフォルトの名無しさん
2006/02/25(土) 12:28:35Visual C++ 2005 Express Edition と Microsoft Platform SDK を一緒に使う
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
0890885
2006/02/25(土) 14:00:15それをしたらコンパイルできるようになりました。
解答ありがとうございました。
0891デフォルトの名無しさん
2006/02/25(土) 14:42:26その中から選ばないといけないならAPI直打ち。
.NETが流行ることがあっても、APIは使えるだろう。
wxWidgetやGTKを使うってのも一つの方法。
ラッパークラスを作って、APIの変更はそこで吸収ってのもあり。
っていうか、VSで作らないといけないの?UNIXベースなら
colinuxやCygwinがあるからそっちの方がいいように思うが。
0892891
2006/02/25(土) 14:53:570893デフォルトの名無しさん
2006/02/25(土) 14:54:07でも偉い先生とかはそうはいかない。
ワンクリック、自動インストール、じゃないと
お前プログラム作るの下手だね、の一言で終わりさ。
0894デフォルトの名無しさん
2006/02/25(土) 14:57:52MSのAA(っていうのか?アカデミックな契約)、
あれのおかげでこんなにもすごいことが出来てますよ、
ってのをどっかにアピールするのが目的らしい。
まぁ漏れとしてもWindowsで組むのはいいんですが、
Windows業界(?)の最近のトレンドを知らないもので、
これからならどれ?と思った。
0895891
2006/02/25(土) 15:16:43おまいさんも大変だね〜
でもそれだったら、windowsだけで完結してないとまずいよな。
腐れ仕事っぽいから、.NETで楽した方がいいかもね。
.NETがポシャったら、MSのせいだから契約のPRになるしw
MSは.NET普及に力いれてるみたいだから、ちょうどいいよ。
.NETはC#との相性が一番いいんじゃないかな。
0896デフォルトの名無しさん
2006/02/25(土) 15:31:06若干クロスプラットフォームっぽくもあるしな。
VS でビルドした CLR で動く exe を
Linux に持って行ったことあるけど、そのまま mono で動いた。
といってもコンソールアプリ + libcurses だけど。
0897デフォルトの名無しさん
2006/02/25(土) 18:02:08private: System::Void button1_Click(System::Object * sender, System::EventArgs * e)
{
int g;
g=H(h,1);
label1->Text=g.ToString();
}
int H(int h[], int index)
{
h[index]=h[index]-9;
return h[index];
}
これを実行すると__gcを明示的に宣言しなければいけないというエラーが
出るんですが、どうすれば明示的に宣言できるのでしょうか?
0898デフォルトの名無しさん
2006/02/25(土) 18:03:41それが問題だ。って、そういうメッセージが出るのは前者か。
0899デフォルトの名無しさん
2006/02/25(土) 18:13:00.net2003を使っています。
今までc/c++のコンソールアプリを勉強してきましたが、
最近奮起してGUIの勉強を始めたばかりです。
0900デフォルトの名無しさん
2006/02/25(土) 18:23:300901897
2006/02/25(土) 18:29:540902デフォルトの名無しさん
2006/02/25(土) 18:38:12だって、もう C++/CLI の時代だから・・・
http://ja.wikipedia.org/wiki/Microsoft_Visual_C++#.E3.83.9E.E3.83.8D.E3.83.BC.E3.82.B8.E3.83.89C.2B.2B
0903デフォルトの名無しさん
2006/02/25(土) 18:39:49になるのか分からん。MFC とかでいいじゃん。
0904897
2006/02/25(土) 18:49:07最近.net2003を買ったばかりなのですが...
0905デフォルトの名無しさん
2006/02/25(土) 18:51:22Visual C++ 2005では前項のマネージドC++が整理され、C++/CLIという名が与えられた。
マネージドC++は従来のC++に独自拡張としてCLR用のキーワードと構文を導入していたが、
C++/CLIではその枠を超えC++ではなくC++/CLI言語という位置付けなのである。
ただしVisual C++ 2005では互換性のため
従来のマネージドC++のソースコードもコンパイルできる。
0906デフォルトの名無しさん
2006/02/25(土) 18:53:280907デフォルトの名無しさん
2006/02/25(土) 18:54:46もしついてたら、それでおkだな。
0908デフォルトの名無しさん
2006/02/25(土) 18:56:26とりあえずダウンロードに時間かかるし、タダだから、
VC++ 2005 Express Edition ダウンロードしとけ。
で、インスコするかどうか決めるまでの間、
http://members.at.infoseek.co.jp/elku/memo/vc2005.html
ここでも読んどけ。
0909デフォルトの名無しさん
2006/02/25(土) 19:06:49って、そりゃ C++ で GUI っていう >>901 の目的と外れてるか。
そもそも C++/CLI ですら C++ ではないわけだしなぁ。
0910デフォルトの名無しさん
2006/02/25(土) 19:34:20VC8です、新しいプロジェクトで
CLRからWindowsフォームアプリケーションを選択してプログラムの
学習をしています
外観はFormに、buttonとtextboxを一個ずつ貼り付けた形です
やりたいことは、テキストボックスに文字を入力して、ボタンを押したら
input.txtというファイルに入力した文字を書き込みたいのですが
どの様に書いたらいいでしょうか、よろしくお願いします
メッセージボックスなら出来るのですが・・・・
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
Windows::Forms::Button ^ b
=dynamic_cast<Windows::Forms::Button^>(sender);
MessageBox::Show(b->Text);
}
0911デフォルトの名無しさん
2006/02/25(土) 19:41:50どうすれば、って、std::ofstream を使うのか
fopen() をつかうのか System::File を使うのかで違うだろ・・・
0912910
2006/02/25(土) 19:48:48( `・ω・´)ノヨロシクー
0913デフォルトの名無しさん
2006/02/25(土) 20:50:50ようするにb->Textを書き出せればよいのだな。
こんな感じでどうか。
#include <vcclr.h>
#include <fstream>
pin_ptr<const wchar_t> text = PtrToStringChars(b->Text);
std::wofstream ofs("hoge.txt");
ofs << text << std::endl;
日本語を扱いたければstd::locale::global(std::locale("japanese"));して、
<locale>のインクルードが必要と言うのは当然C++そのまま。
Loadあたりで呼べばいいと思う。
0914デフォルトの名無しさん
2006/02/25(土) 20:55:28(System::Object^ sender, System::EventArgs^ e) {
std::wofstream wofs("hoge.txt");
if(!wofs.is_open() || wofs.fail())
throw std::ios_base::failure("Can't open output file.");
array<wchar_t>^ wchar_array = textBox1->Text->ToCharArray();
pin_ptr<wchar_t> wchar_array_ptr = &wchar_array[0];
std::wstring ws(wchar_array_ptr);
wofs << ws.c_str() << std::endl;
}
う〜ん、 マネージドなオブジェクトからアンマネージドな
オブジェクトへの値のコピーって面倒だね。
マネージドな配列として参照しておいて、
ガベージコレクタがいじらないようにピンニング。
そこからアンマネージドなオブジェクト (std::wstring)
をコンストラクト。
あらかじめ用意されているマーシャリングを使う方法もありそうだけど・・・
むしろオレの方が教えて欲しいさ。
System::Runtime::InteropServices::Marshal
以下にある奴らってなんなんだい?
奴らについて教えてくれよ。誰か。
あ〜んで、とりあえず hoge.txt に std::ofstream で
書き込むコードは上の通りで動くよ。
0915914
2006/02/25(土) 20:56:220917910
2006/02/25(土) 21:38:05>>913先生の
コードですが
pin_ptr<const wchar_t> text = PtrToStringChars(b->Text);
の所で、
d:\visual studio 2005\projects\ukraine\ukraine\Form1.h(99) : error C2872: 'Text' : あいまいなシンボルです。
'System::Drawing::Text' である可能性があります。
または 'System::Text'
d:\visual studio 2005\projects\ukraine\ukraine\Form1.h(99) : error C2882: 'Text' : 式の中で名前空間の識別子が正しく使用されていません。
となったので、エディータのお導きに従い
↓
pin_ptr<const wchar_t> text = PtrToStringChars(b->ToString());
こうしたら、ビルドできたのですが、
123と入力してボタンを押すと00A85F34がhoge.txtに書き込まれていました( ゚д゚)ポカーン
>>914先生のコードは完璧でした。
0918914
2006/02/25(土) 22:01:17上で書いたのはちょっとゴチャゴチャしてたので、再度書き込みチャレンジ。
>>913 とは違うやり方を2つ。まずは >>914 で書いたやつの書き直し。
private: System::Void button1_Click
(System::Object^ sender, System::EventArgs^ e) {
std::wofstream wofs("hoge.txt");
if(!wofs.is_open() || wofs.fail())
throw std::ios_base::failure("Can't open output file.");
// 配列として参照
array<wchar_t>^ wchar_array = textBox1->Text->ToCharArray();
// ピンニング
pin_ptr<wchar_t> wchar_array_ptr = &wchar_array[0];
// 出力
wofs << wchar_array_ptr << std::endl;
}
0919914
2006/02/25(土) 22:03:12これって、 .NET Framework 2.0 から?
private: System::Void button2_Click
(System::Object^ sender, System::EventArgs^ e) {
std::wofstream wofs("hoge.txt");
if(!wofs.is_open() || wofs.fail())
throw std::ios_base::failure("Can't open output file.");
// アンマネージドなヒープにコピーし、ポインタを返す
IntPtr int_ptr = System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(textBox1->Text->ToString());
// 出力
wofs << static_cast<wchar_t*>(int_ptr.ToPointer()) << std::endl;
// アンマネージドなヒープにコピーしたブツを解放
System::Runtime::InteropServices::Marshal::FreeCoTaskMem(int_ptr);
}
こっちはアンマネージドなヒープに一度コピーを作る方法なので、
ピンニングは必要なし。
0920910
2006/02/25(土) 22:10:33>>914先生ノ
テキストボックスに123と入れてボタン押すと00AA07F8となったり00AA0384
になったり、hoge.txtの内容がランダムになります( ゚д゚)ポカーン
0921デフォルトの名無しさん
2006/02/25(土) 22:12:54Ansiだからwofstreamを使う必要はないと思う。
0923914
2006/02/25(土) 22:25:49>>922 >>919 実験するときに、オレ、ボタンもう一個追加して
そっちでやってたんだよ。なので button2 になっちゃってる。
button2 を button1 にするか、も一個ボタン作るかしてみて。
private: System::Void button2_Click
(System::Object^ sender, System::EventArgs^ e) {
std::ofstream ofs("hoge.txt");
if(!ofs.is_open() || ofs.fail())
throw std::ios_base::failure("Can't open output file.");
// アンマネージドなヒープにコピーし、ポインタを返す
IntPtr int_ptr = System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(textBox1->Text->ToString());
// 出力
ofs << static_cast<char*>(int_ptr.ToPointer()) << std::endl;
// アンマネージドなヒープにコピーしたブツを解放
System::Runtime::InteropServices::Marshal::FreeCoTaskMem(int_ptr);
}
0925910
2006/02/25(土) 22:47:15IntPtr int_ptr = System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(textBox1->Text->ToString());
この部分ですが、textBox1から受け取った変数の型を
int型からString型に変換していると理解していいですか?
0926914
2006/02/25(土) 22:56:58textBox1->Text->ToString() が返すのは
String 型のオブジェクトへの参照
それを受け取って StringToGHlobalAnsi が返すのは
アンマネージドヒープにコピーしたブツへの「ポインタ」。
この「ポインタ」はアンマネージドヒープ内を指すための
特別な「ポインタ」で、IntPtr 型。
IntPtr 型のオブジェクト int_ptr から void* を
取り出すのが int_ptr.ToPointer()
これ、実際には void* じゃなくて char* だから、
static_cast でキャストしてる。
0927914
2006/02/25(土) 22:57:57C++ でいうところのいわゆる参照じゃなくて、
なんつーか、リファレンス?
訳すとやっぱり参照か。ややこしいな。
0928910
2006/02/25(土) 23:02:55あ(・∀・)り(・∀・)が(・∀・)と(・∀・)う!ございました
このスレッドPCに保存しました^^
0929デフォルトの名無しさん
2006/02/25(土) 23:57:10mainで、hogehoge関数を呼び出して使っているのですが上手くいかず困っています。
配列を返したいのですが、returnでは配列を返せないらしいのでポインタに代入して,
それを返すという手段をとろうと思っています。
しかし、配列の中身をポインタに覚えさせる所「 a[g] = b[g] ; 」でプログラムが止まってしまいます。
どなたか、解決策をお願いします。
〜〜〜〜main.cpp〜〜〜〜〜
a = (int*)malloc(sizeof(int) * 5);
*a = hogehoge(hogee);
〜〜〜〜hogehoge.cpp〜〜〜〜〜〜〜〜
int hogehoge(double *hogee){
int *a , b[5], g ;
a = (int*)malloc(sizeof(int) * 5);
ややこしい計算=b[g];
for(g=0; g<5; g++){
a[g] = b[g] ;
}
return *a;
0930デフォルトの名無しさん
2006/02/26(日) 00:06:20エラー出てんの?
for文だけ見ると、問題ないんだけど
VCは確か初期化されてない変数から代入すると止まる(デバッグ版)から
b[0]〜b[4]のどれかが、初期化されてないままなんじゃね?
b[5] = {0};でどうよ?
0931デフォルトの名無しさん
2006/02/26(日) 00:06:26ぶっちゃけ動く動かない以前にむちゃくちゃ。
mainでaに動的確保してんのにhogehogeの中でも動的確保してどーすんの。
void hogehoge(double g, int *a);
int main(void)
{
int a[5];
double hogee;
hogehoge(hogee, a);
return 0;
}
void hogehoge(double hogee, int *a)
{
/* ここでそのままa[i]を使ってやればおk */
}
0932929
2006/02/26(日) 00:17:41bに全部0入れてもエラーでるんですよね
>>931
ありがとうございます。やってみます。
あと、さっきので、、変数名かえ間違えてました。
すみませんでした。
mainと関数でほんとは変数名違うのでやってました。
〜〜〜〜訂正main.cpp〜〜〜〜〜
c= (int*)malloc(sizeof(int) * 5);
*c = hogehoge(hogee);
0933デフォルトの名無しさん
2006/02/26(日) 01:09:26誰も突っ込まないので突っ込んでおくが、
return *a;
これじゃポインタaの内容が返るから、 ポインタは返らないよ。a にしなきゃ。
んで、
int *c = (int *)malloc(sizeof(int) * 5);// cをint型のポインタで宣言。ついでに先頭アドレスで初期化。
c = hogehoge(hogee);// *を取る
ってやって、c[3]とかやれば使えるんじゃない?
0934デフォルトの名無しさん
2006/02/26(日) 01:37:39ここ逆でしょ。
0935929
2006/02/26(日) 03:33:39ん〜、仕様上別の.cppに関数用意しないといけないんですが、上手くいかないです。
>>933
return *a;をreturn a;にするとコンパイルエラーが出るんですよね。
>>934
そうでした、すみませんでした。
>>all
c[0]にしか値が代入されていません。自分の知識不足で解決できないので、
ひきつつぎご教授お願いします
main.cpp
int *c = (int *)malloc(sizeof(int) * 5);
*c = hogehoge(hogee);
hogehoge.cpp
int *a = (int *)malloc(sizeof(int) * 5);//
int *b[5], g ;
a = (int*)malloc(sizeof(int) * 5);
ややこしい計算=b[g];
int hogehoge(double *hogee){
for(g=0; g<5; g++){
a[g] = b[g] ;
}
return *a;
}
0936デフォルトの名無しさん
2006/02/26(日) 03:45:27典型的なメモリリークパターンです。0から勉強しなおしては如何でしょう。
0937デフォルトの名無しさん
2006/02/26(日) 03:49:55だとすると恐ろしい世の中だ。
0939デフォルトの名無しさん
2006/02/26(日) 03:56:15君、面白いなぁ。
0941914
2006/02/26(日) 04:02:35hogehoge() でも malloc している。
何をしたいんでしょうか?
main() で malloc したメモリ領域に
結果を書き込みたいんじゃないんですか?
0942デフォルトの名無しさん
2006/02/26(日) 04:02:38にすればいいけど、>>931 の方がいいだろう。
0943935
2006/02/26(日) 06:53:13配列で返せればいいけど、ダメなので、わからないなりにポインタとか使ったんですが、本当にわかりません。
もうちょっと勉強してみます。
0944デフォルトの名無しさん
2006/02/26(日) 07:43:29public:
void hoge1():
void hoge2():
void hoge3():
};
上のようなクラスを継承するときに
hoge1以外を隠す方法は無いでしょうか?
0945デフォルトの名無しさん
2006/02/26(日) 07:54:30関数への値渡し、アドレス渡し辺りを勉強すればすぐわかると思う
0947デフォルトの名無しさん
2006/02/26(日) 09:14:28逆にhoge1だけを見せるということなら、できる。
class Bar : private A
{
public:
using A::hoge1;
};
0948910
2006/02/26(日) 09:31:52応用しようと一晩中もがいたが、答えが見つけられなく朝を迎えてしまった
>>914先生の書いてくれた>>923のソースに手を加えて
入力チェックを加えたいのだが、ポインターの理解力の無さで止まってしまっています
やりたいことは、入力された文字が16桁且つ16進数あり、もしそれ以外の文字が
入力だれたら、MessageBoxでエラーを知らせるというものです、
IntPtr int_ptr = System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(textBox1->Text->ToString());
に着目して、取りあえず文字数のチェックだけでもしようと、してみましたが
巧くいきません、どうかオナガイシマス
private: System::Void button1_Click
(System::Object^ sender, System::EventArgs^ e) {
std::ofstream ofs("hoge.txt");
if(!ofs.is_open() || ofs.fail())
throw std::ios_base::failure("Can't open output file.");
// アンマネージドなヒープにコピーし、ポインタを返す
IntPtr int_ptr = System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(textBox1->Text->ToString());
//文字数チェック
for(int i=0; i<Text->Length; i++)
if(i<16)
MessageBox::Show("文字数が少ない");
else if(i>16)
MessageBox::Show("文字数が多い");
// 出力
ofs << static_cast<char*>(int_ptr.ToPointer()) << std::endl;
// アンマネージドなヒープにコピーしたブツを解放
System::Runtime::InteropServices::Marshal::FreeCoTaskMem(int_ptr);
}
0949946
2006/02/26(日) 09:33:33「error C2660: 'hogehoge' : 関数が不正な 2 個の実引数をともなって呼び出されました。」
というエラーをはいてしまいました。
また、main() で malloc したメモリ領域に結果を書き込むというのはこんな感じでしょうか。
//メイン
int *a = ( int * ) malloc ( sizeof ( int ) * 5 );
hogehoge ( hoge , a ); //ここでエラーが出てしまう
a[ i ]を使う;
//関数
int hogehoge ( double *hoge , int *a ){
*a = &hairetsu[ 0 ]
return 0;
}
0950デフォルトの名無しさん
2006/02/26(日) 09:41:45int hogehoge ( double hoge , int *a ); だろ。
0951デフォルトの名無しさん
2006/02/26(日) 09:44:08インターフェイスが変わるなら継承では無いんじゃない?
class B
{
public:
void hoge1(){
a.hoge1();
}
private:
A a;
}
0952910
2006/02/26(日) 09:44:39それから
× 入力だれたら
○ 入力されたらです
for(int i=0; i<Text->Length; i++){
//MessageBox::Show(e->ToString());
if(i<3)
MessageBox::Show("文字数が少ない");
else if(i>5)
MessageBox::Show("文字数が多い");
}
0953デフォルトの名無しさん
2006/02/26(日) 09:45:26for(int i=0; i<Text->Length; i++)
if(i<16)
MessageBox::Show("文字数が少ない");
else if(i>16)
MessageBox::Show("文字数が多い");
じゃなくて、
if(Text->Length < 16)
MessageBox::Show("文字数が少ない");
else if(i>16)
MessageBox::Show("文字数が多い");
じゃないの?
あと、>>923 ベースでもわるくはないと思うけど、
>>918 ベースの方が安全かもしれない。というのは
例外で抜けたときに FreeCoTaskMem が呼ばれないかもしれないから。
0954949
2006/02/26(日) 09:47:46現在過去のプログラムを改変する作業なのですが、過去のプログラムはメインで
double hoge[5]; こんな感じでして、*hogeじゃないと動作しませんでした。
説明不足ですみませんでした
0955910
2006/02/26(日) 09:59:11Text->Lengthに着目したのは間違いでは無かったようなので
少しは嬉しかったです、しかし
>>953さんのコードに入れ替えてコンパイルしてみたのですが
16桁以上入力して、実行しても
MessageBox::Show("文字数が少ない");
が実行されてしまいます。
0956デフォルトの名無しさん
2006/02/26(日) 10:16:09if(textBox1->Text->Length > 16)
だった。
0957デフォルトの名無しさん
2006/02/26(日) 10:22:190959デフォルトの名無しさん
2006/02/26(日) 10:25:54横レス。
プロトタイプ宣言のところはちゃんと書き換えた?
おそらくヘッダーのほうに書いてるんだろうけど。
0961910
2006/02/26(日) 10:36:34ありがとうございます
巧くいきました、
textBox1->Text->Lengthに気づかなかった自分が情けないです
(;´д`)トホホ…
>>918 ベースの方が安全かもしれない。というのは
>>例外で抜けたときに FreeCoTaskMem が呼ばれないかもしれないから。
自分も>>918のコードの方がとっつき易く思えたのですが、
実行するとhoge.txtに入力した文字ではなく桁数が異なる、
ランダムな数字が入ってしまって、原因が分からないので
(´・ω・`)ガッカリ…なとこなんです。
0962デフォルトの名無しさん
2006/02/26(日) 10:40:49wchar_t がらみだとは思うけど、
ちゃんと wofstream とか、ワイド文字版にしてる?
0963949
2006/02/26(日) 10:41:22スレ汚しすみませんでした
また 付き合ってくれた皆様ありがとうございました
0964910
2006/02/26(日) 11:07:24どうもです
ワイド文字版で具具ってみましたが
意味は分かったものの具体的にどうしたらよいのかわかんないので
コンパイルオプションを
プロジェクトのプロパティーの全般タグで
文字セットを「Uniucode 文字セットを使う」から
「マルチバイト文字セットを仕様する」に変更してコンパイルし直しましたが
変わりません・・・
wofstreamは多分ここの部分だと思いますが同じようにしています
↓
std::wofstream wofs("hoge.txt");
0965デフォルトの名無しさん
2006/02/26(日) 12:20:57GUIの勉強もしてみようと思って
http://www.kumei.ne.jp/c_lang/
で勉強してるんだけど、
「当ホーム・ページの一部または全部を無断で
複写、複製、転載あるいはコンピュータ等の
ファイルに保存することを禁じます」
って・・・・ファイルに保存できないなんて、
サンプルプログラムどうやって試せばいいんだろう。
って、悩んでます。
0966デフォルトの名無しさん
2006/02/26(日) 12:46:00メールでも出して許可もらえばいいんじゃね?
0967デフォルトの名無しさん
2006/02/26(日) 12:46:260968デフォルトの名無しさん
2006/02/26(日) 12:55:06そうします。
閲覧時にキャッシュしてるのはどうしたらいいんだろう・・・
0969913
2006/02/26(日) 13:33:25あのコードはコンパイルして確かめずに書いた、すまん。たしかになんか数値が書き込まれているな。
こうしたらちゃんと書き出せた。
pin_ptr<const wchar_t> text = PtrToStringChars(textBox1->Text);
std::wofstream ofs("h:\\hoge.txt");
ofs << static_cast<const wchar_t*>(text) << std::flush;
0970デフォルトの名無しさん
2006/02/26(日) 14:19:040971910
2006/02/26(日) 14:31:05どうもです
ここで
pin_ptr<const wchar_t> text = PtrToStringChars(textBox1->Text);
↓
Error C3861: 'PtrToStringChars': 識別子が見つかりませんでした
が出るんで、wchar_t PtrToStringCharsとかしたら、wchar_tは宣言するなとか
困憊羅が言ってきます
0972デフォルトの名無しさん
2006/02/26(日) 16:14:34Visual Studio 2005 では見つからないんだけど、
もしかして .NET Framework 1.1 限定なのかな。
ってそんな下位互換性無いことはさすがにないかな。
0973デフォルトの名無しさん
2006/02/26(日) 16:52:090974デフォルトの名無しさん
2006/02/26(日) 17:10:52<vcclr.h>
0975910
2006/02/26(日) 18:58:45>>974さん
うっかりしていました<vcclr.h>を途中から外していました、入れ直したら出来ましたが
hoge.txtの場所が変わっていたので
ここを std::wofstream ofs("h:\\hoge.txt");
std::wofstream ofs("hoge.txt");
if(!ofs.is_open() || ofs.fail())
最初のように元に戻したらばっちりでした
後、一箇所16進数の入力チェックなのですが
if(textBox1->Text->ToCharArray != ('1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | 'A' | 'B' |'C' |'D' |'E' |'F'))
MessageBox::Show("HEXコードを入力してね");
普通に書いたつもりなんですけど、ABC入れてもabc入れても弾かれて
「HEXコードを入力してね」が出てしまうのですが、正規表現の書き方間違ってますか?
0976デフォルトの名無しさん
2006/02/26(日) 19:12:410978デフォルトの名無しさん
2006/02/26(日) 19:50:43チェックするということはどうせ16進法として数値へ変換するんだろ。
俺ならstd::strtoulで変換すると同時に変換できたかどうかチェックする。
0979デフォルトの名無しさん
2006/02/26(日) 21:07:020980デフォルトの名無しさん
2006/02/26(日) 21:24:19関数つうかapiだけどSendMessage
0981デフォルトの名無しさん
2006/02/26(日) 21:37:420982910
2006/02/26(日) 23:53:34std::strtoul(PtrToSrtringChars(textBox1->Text), *PtrToSrtringChars(textBox1->Text), 16);
取りあえず、エラーチェックは後に置いといて、これで変換出来ると思ったのですが
error C2664: 'strtoul' : 1 番目の引数を 'cli::interior_ptr<Type>' から 'const char *' に変換できません。(新しい機能 ; ヘルプを参照)
となり、
strtoul→wcstoulにうしても
error C2664: 'wcstoul' : 1 番目の引数を 'cli::interior_ptr<Type>' から 'const wchar_t *' に変換できません。(新しい機能 ; ヘルプを参照)
になっちゃうんだよね( ゚д゚)ポカーン
0983デフォルトの名無しさん
2006/02/27(月) 00:31:41pin_ptrで固定させないと。
0984910
2006/02/27(月) 01:16:46どうもです
前段で、教えて貰ったように
pin_ptr<const wchar_t> text = PtrToStringChars(textBox1->Text);
を入れて入るんですが・・・
0985デフォルトの名無しさん
2006/02/27(月) 10:21:28(C++/CLI使うやつは上級者だろ?という先入観あり)
の話題がごっちゃになってるな(笑
0986デフォルトの名無しさん
2006/02/27(月) 13:05:21って話から、コンパイラ通りませんまで。気楽に聞きやすいせいかな?
0987デフォルトの名無しさん
2006/02/27(月) 13:52:05みんな初心者スレに来るのでは?
初心者スレ2つもあってもしょうがないと思うけど
0988デフォルトの名無しさん
2006/02/27(月) 17:37:48こうだろ。
pin_ptr<const wchar_t> text = PtrToStringChars(textBox1->Text);
wchar_t* pEnd;
unsigned long ul = std::wcstoul(text, &pEnd, 16);
0989デフォルトの名無しさん
2006/02/27(月) 18:03:11事情があって拡張子をcppなどに変更することができません。
0990デフォルトの名無しさん
2006/02/27(月) 18:09:270991デフォルトの名無しさん
2006/02/27(月) 18:11:48・IDEから
プロジェクトのプロパティ → C++ → 詳細 → コンパイル言語の選択
・プロンプトから
/TP すべてのファイルを .cpp としてコンパイルする
/Tp<source file> ファイルを .cpp としてコンパイルする
0992デフォルトの名無しさん
2006/02/27(月) 18:16:04ありがとうございます
0993デフォルトの名無しさん
2006/02/27(月) 18:36:450994デフォルトの名無しさん
2006/02/27(月) 23:31:13もう3日悩んでます。
0995デフォルトの名無しさん
2006/02/27(月) 23:35:060996デフォルトの名無しさん
2006/02/27(月) 23:41:57メニュー「ツール」→「オプション」で最後のタブに「書式」ってあるんじゃね。
0997デフォルトの名無しさん
2006/02/27(月) 23:43:38そのうちの「ソースウインドウ」のフォントを変える
0998993
2006/02/27(月) 23:44:42ガーン…スクロールできるなんて知りませんでした。。。
なぜか最近になって6.0を使うハメになり、ここで死んでました。。。
ありがとうございました!!!
0999デフォルトの名無しさん
2006/02/27(月) 23:50:36フォントはHGゴシックE サイズ12だ忘れるなよ
1000デフォルトの名無しさん
2006/02/27(月) 23:54:1110011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。