★初心者にVisual C++を教えるスレ★ Part21
MS-DOSプロンプトからビルド出来るならVC++でもビルド出来る 儲けたいならLinuxを学んだほうがいい
おいおいマジで言ってんのかよ
VC2005はC99に対応するの?
しない
12 :
デフォルトの名無しさん :2005/08/24(水) 00:16:24
『Win32コンソールプロジェクト』をプロジェクトで選ぶのと 『Win32プロジェクト』を選んでコンソールアプリケーションにチェックを入れるのとではどう違うのですか。 また、『コンソールアプリケーション(NET)』との違いもあわせて教えて下さい。
C99未対応でも、C++でコンパイルしたら通るってわけではないってことなのか。
>>12 前者は同じ。後者はマネージドコードを生成する。
15 :
デフォルトの名無しさん :2005/08/24(水) 00:53:41
はじめまして。
http://www.mech.t.u-tokyo.ac.jp/~t40263/04mecha/skincolor.c のサンプルプログラムを動かしてみたのですが、
C:\kenkyu\MSDev98\MyProjects\yoshimi\yoshimi.cpp(69) : warning C4508: 'process' : 関数に戻り値の型が指定されていません。戻り値を void 型と見なします。
リンク中...
LIBCD.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です
Debug/yoshimi.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー
yoshimi.exe - エラー 2、警告 1
とエラーが出てしまいます。
本当に初心者ですみません。
解決方法を教えてください。
それにしても、Visual C++の本は、いろんなことを一通り解説しようとするから、 それだけでは何の役にも立たないプログラムに留まってしまわざるを得なくなる のかも知れんな。 Visual C++でひとくくりで、一通りの解説で、後は読者がこれらの知識を応用して くれってものでは厳しいな。分野別に一冊の本でしっかり解説して、何巻もの分野 の本を出版してるほうがいいのではないか。
>>15 mainがない。
warningの方はメッセージの通り。
>>14 どうもありがとうございました。
NET=マネージドコードと解釈していいみたいですね。
もしよければ、VC++.NET2003の使い方を解説しているおすすめのサイトがあったら教えて下さい。
MFCは未経験で、MFCを取り扱っていてもいなくても構いません。
>>18 NETじゃなくて.NET(ドットネット)な
>>18 /* skincolor.c*/
void process(unsigned char *tmpbuf, int xsize, int ysize);
int main(void)
{
unsigned char str1[1024];
process(str1, 6, 8);
return 0;
}
void process(unsigned char *tmpbuf, int xsize, int ysize)
{
int x, y;
int rin, gin, bin;
.....(略)
>>18 ------------------------------------------------------------
[スタート] -> [プログラム(P)] -> [Microsoft Visual Studio .NET 2003]
-> [Visual Studio .NET ツール] -> [Visual Studio .NET 2003 コマンド プロンプト]
------------------------------------------------------------
C:\>cd kenkyu\MSDev98\MyProjects\yoshimi
C:\kenkyu\MSDev98\MyProjects\yoshimi>cl yoshimi.cpp
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
yoshimi.cpp
Microsoft (R) Incremental Linker Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.
/out:yoshimi.exe
yoshimi.obj
>>18 まずはC言語に専念したほうがいいんじゃないか。
>>22 今までC/C++に専念してきて、APIを使ったWinプログラミングを勉強し、
まだまだですがそろそろVC++(とWinプログラミングとMFC?)を扱ってみようかなと思いました。
ずっとググっているのですがVC++.NETの解説しているサイトはあまり無いようですね。
明日本屋に行ってみます。
>>19 あーそうですよね。
プロジェクトに書いてあるのは、(NET)と書いてあるのでNETと書いてしまいました。
>>18 MFCも、VisualStudioもどういうわけか、入門サイトはありません。マジで。
中級者むけのTipsはあるんだけどね。
まぁ、入門サイトが充実しているのはC/C++とJava、CGI くらいのものなんだけどね。
27 :
デフォルトの名無しさん :2005/08/24(水) 04:37:15
>>20 void process(unsigned char *tmpbuf, int xsize, int ysize);
int main(void)
{
unsigned char str1[1024];
process(str1, 6, 8);
return 0;
}
をつけたしてみたところ
C:\kenkyu\MSDev98\MyProjects\yoshimi\yoshimi.cpp(13) : error C2556: 'int __cdecl process(unsigned char *,int,int)' : オーバーロード関数の戻り値は異なっていますが、引数リストは同一です。
C:\kenkyu\MSDev98\MyProjects\yoshimi\yoshimi.cpp(13) : error C2371: 'process' : 再定義されています。異なる基本型です。
C:\kenkyu\MSDev98\MyProjects\yoshimi\yoshimi.cpp(3) : 'process' の宣言を確認してください。
とエラーが出てしまいました。
28 :
デフォルトの名無しさん :2005/08/24(水) 04:40:03
>>21 本当に初心者ですみません。
その意味はどういう意味ですか?
VC++じゃなくてC言語の問題だと思う。
ついでに、なんでも無料で見れるWebで揃うと思うなかれ。 本屋で普通に売られている本に書いてあることを、 いちいち無償のWebで趣味でやろうなんていう個人は滅多にいないよ。
>>23 本当にそれでも専念してたの?
>>27 の質問をしてるとは、CもC++も全然理解できてないよ。
そして、C++でコンパイルするとそのエラーメッセージだが、Cでコンパイル
すると、また別のエラーメッセージになる。
おまいらレスがごっちゃになってないか?
エディットボックスの文字に色をつけたいのですが、 どうすればできますか?
>>28 あえて日本語の文章は書いてないが、初心者のために書いた内容だぞ。
本当にやばいな。
>>28 コマンドラインでコンパイルするという意味です。
36 :
23 :2005/08/24(水) 08:14:04
>>31 たぶん
>>20-21 はレス番を間違えているのでレスしていません。(私は
>>28 でもありません)
15さんと12(私)は違う人です。
ややこしいですが、そういうことです。
>>33 OnCtlColorハンドラを作り、その内部でコントロールの識別をして、
該当コントロールの場合のみ、pDC->SetTextColor()で文字色設定
ってとこかな?
38 :
33 :2005/08/24(水) 14:01:13
MFCでなくAPIの組み合わせでは不可能なのですか?
>>38 たぶん無理。
少なくとも、エディットボックスの文字色を直接変更するAPIは存在しない。
WM_CTLCOLORのハンドラで文字色を設定するのが定石。
>>38 1.サブクラス化
2.Windowプロシージャ自分で書く
42 :
デフォルトの名無しさん :2005/08/24(水) 22:17:12
1と2はどう違うのだろう
サブクラス化して、Windowプロシージャ自分で書く ってことだろ。
チェックボックスに背景色を付けるのは案外面倒だた
45 :
デフォルトの名無しさん :2005/08/24(水) 23:22:51
恐れながら質問をさせていただきます。 開発環境はVC.NET。 MFC ダイアログのアプリケーションを作っています。 リストコントロールを配置してカラムとアイテムを追加しテーブルを作成しました。 問題はアイテムの書き換えです。同じようにやると書き換えではなく 新規のアイテムが追加されてしまいます。アイテムを更新するには どうすればよいでしょうか?
>>45 MSDNでCListCtrlのメンバを良く調べるんだ。
47 :
デフォルトの名無しさん :2005/08/25(木) 00:05:57
標準ライブラリとかってデバッグで関数内に入れるけど、 これって書き換えちゃったりしたらどうなるの?てか戻せるの? 書込み禁止にはなってるけど心配。 だれかがいたずらで書き換えちゃったらと思うと・・・・
>>47 動作が変わることはない。デバッグ時に表示される行の表示位置がずれたりするけど。
書き換えたら書き換えたで、またインストールし直せばいいじゃない。
50 :
45 :2005/08/25(木) 00:11:27
>46 即レスありがとうございます。 以下のコードでアイテムを追加しました。 int nItem; CString str; nItem = List.InsertItem(0,"合計"); List.SetItem(nItem,1,LVIF_TEXT,str,0,0,0,0); メンバを調べてみたのですがSetItemTextが使えそうです。 SetItemText(nItem,1,str); この場合nItemはどのような値を使えばいいのでしょうか? 初心者過ぎる質問でスミマセン_| ̄|○
>>50 MSDNでSetItemTextの引数の説明をよく読むんだ。
すばらしい返答だな!
>>53 自分で書いたプログラムだってソースをどういじくろうが
コンパイルしなきゃ動作は変わらないだろーうがぁ。
インタプリタは除くが。
>>54 え?どういう意味?屁理屈??
ソースいじってビルドして実行したらさすがに変わるよねえ?
それとも、ライブラリを書き換えても実行時には元に戻るって事なの?
Class Propertyってどこにあるのですか?
57 :
デフォルトの名無しさん :2005/08/25(木) 04:08:14
>>55 よくもまぁ検証もせずに屁理屈呼ばわりできるものだな
>>55 おまいは、いつもライブラリもビルドしているのかと小一時間問いつめたい。
>>47 たしか読み取り専用になっていた気がする。
60 :
デフォルトの名無しさん :2005/08/25(木) 11:30:30
ddespyを手に入れる方法教えてください。 ddespyが欲しいんですがVB6のためついていません。 ddespyのためにvisual studio買うのももったいないので、 何かの付録CD-ROMについているとか情報ないでしょうか?
62 :
デフォルトの名無しさん :2005/08/25(木) 19:10:51
>>31 はい・・本当に何もわからない状態なのですが、これをやらないといけない状態でして(;_;)
どうにか助けていただきたい状態なのです。
本当にすみません。
>>35 コマンドラインでコンパイルするとはどういう意味ですか?
環境はVC6.0なんですが error LNK2001: 外部シンボル ""void __cdecl CreateEditLine(struct HWND__ *,unsigned int,long)" (?CreateEditLine@@YAXPAUHWND__@@IJ@Z)" は未解決です というエラーが読めなくて困っています。 LNK系のエラーメッセージの詳細がのっているページとかありませんか?
すみません、自己解決しました アホ過ぎたorz
>>62 コマンドプロンプト上で、コンパイラのコマンドを使って
プログラム(ソースファイル)をコンパイルすること。
>>21 の中で使っているclというのは、VCが使っているコンパイラ。
つまり、やってることはVC上でコンパイルするのとほとんど同じ。
(今回の場合はね)
さすがにコンパイラとコンパイルの区別はできるよね?
まさかC言語すら知らないわけじゃないよね・・・?
今度のC++/CLI はどんな感じ? (Managed C++ はとりあえずCLI環境C++作ってみましたってだけだったらしいけど?)
>>62 困ったもんだ。
>コマンドラインでコンパイルするとはどういう意味ですか?
VCの統合開発環境を使わずにコマンドプロンプトの画面からコンパイル
するという意味です。
VCの[ビルド] -> [ビルド]および[実行]と同様のことができます。
Visual C++ 6.0ですか。それなら
>>21 に示したスタートメニューはないので、
普通のコマンドプロンプト(MS-DOS プロンプト)を起動します。
起動すると、その画面には、
C:\>
または
C:\WINDOWS>
が表示されて、その右側にカーソルが点滅して文字を入力できるでしょう。
まずは、カレントディレクトリを、ソースファイルの
あるディレクトリに移動しましょう。
cd \kenkyu\MSDev98\MyProjects\yoshimi
を入力して Enterを押しましょう。すると、
C:\kenkyu\MSDev98\MyProjects\yoshimi>
と表示して、カレントディレクトリを移動しますね。
次にコンパイルするための準備が必要です。
vsvars32.bat というバッチファイルを実行します。そのファイルは Visual Studio
のディレクトリにあるはずです。Windowsのファイル検索プログラムで検索するといい
でしょう。
>>62 [スタート] -> [検索(C)] -> [ファイルやフォルダ(E)...] を選択して、「ファイルま
たはフォルダの名前(M)」(Windows 95や98では「名前(N)」)に vsvars32.bat を入力
して、「探す場所(L)」を正しく指定して、[検索開始(S)]をクリックして検索しましょう。
しばらくすると、検索結果が一覧に表示するはずです。一覧に表示した vsvars32.bat
をマウスでコマンドプロンプトの画面までドラッグアンドドロップしましょう。初心者
だからといって、誤ってデスクトップ上でマウスを放して、デスクトップ上にそのファ
イルを移動してしまわないように注意しましょう。
正しくドラッグアンドドロップをすると、コマンドラインに、そのバッチファイルの
フルパス名が自動的に入力できた状態になっているはずです。これで、Enterキーを押して、
そのバッチファイルを実行しましょう。
これで、コマンドラインでコンパイルする準備ができました。
それでは、コマンドラインからコンパイルするには、clコマンドを使います。
>>62 cl コンパイルするソースファイル名
と入力するとコンパイルできます。
あんたの例では、
cl yoshimi.cpp
と入力するんやで。
VCからビルドするのもいいけど、いちいちプロジェクト作ったりするのが面倒だったりする
からな。このようにコマンドラインからコンパイルするだけで済ませたほうが早いときは
こうしたほうがいいから言ったんやで。
70 :
デフォルトの名無しさん :2005/08/25(木) 21:51:39
>>25 ,26
マジでないですね。
やっと一つそれなりのサイトを見つけたんですがやっぱり本買った方がいいですね。
説明書すら付いていないし、豊富と思ってた資料もweb上では全然無いし・・・
>>62 process() 関数は、内部でどういう処理をしてるのかは不明で、また、コンパイル
して実行しても何も出力しません。この process() 関数にこだわる理由は何かあり
ますか。
とりあえず、関数の仮引数はそのままで、呼び出し元と関数の内部を次のように書き
換えてみてはどうですか。
------------------------------------------------------------
#include <stdio.h>
void process(unsigned char *tmpbuf, int xsize, int ysize);
int main(void)
{
/* unsigned char str1[1024]; */
/* process(str1, 6, 8); */
process("拡張子 .c でいいんじゃないか。", 6, 8);
return 0;
}
/* process(unsigned char *tmpbuf, int xsize, int ysize) */
/* だめです、先頭に void を付けましょう */
void process(unsigned char *tmpbuf, int xsize, int ysize)
{
printf("tmpbuf == \"%s\"\nxsize == %d\nysize == %d\n", tmpbuf, xsize, ysize);
}
>>73 15 == 27 == 28 == 62 != 23
12 == 18 == 23 == 36
だと思う。
MessageBox()はあっても、VB の InputBox() に当たるものが、Win32API(またはMFC) にはないと思うんですが、もしかしてありますか。 (スレ違いだが VCL にもあるのかも気になる。)
>>62 >>72 は、Cでならエラーは出ないが、C++ならエラーが出るので、(unsigned char *)でキャストしましょう。
修正前: process("拡張子 .c でいいんじゃないか。", 6, 8);
修正後: process((unsigned char *)"拡張子 .c でいいんじゃないか。", 6, 8);
それと、一つ言い忘れた。
これも初心者でなければ当たり前でわかりきったことだけど。
コンパイルしたプログラムを実行するには、そのプログラム名をコマンドラインで入力するんだよ。
------------------------------------------------------------
C:\kenkyu\MSDev98\MyProjects\yoshimi>cl yoshimi.cpp ←── コンパイルするコマンドを入力
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
yoshimi.cpp
Microsoft (R) Incremental Linker Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.
/out:yoshimi.exe
yoshimi.obj ←── エラーで出ずにコンパイル・リンクが成功した
C:\kenkyu\MSDev98\MyProjects\yoshimi>yoshimi ←── コンパイルしたプログラム名を入力すると実行する
tmpbuf == "拡張子 .c でいいんじゃないか。"
xsize == 6
ysize == 8 ←── 実行結果が標準出力される
C:\kenkyu\MSDev98\MyProjects\yoshimi>
78 :
デフォルトの名無しさん :2005/08/26(金) 00:46:53
昔のVC++の廉価エディションは作ったアプリを配布することはできなかったけど 今のVC++.net standardはアプリ配布okなの?
VC++Expressのβ2をインストールし、dumpbinを使おうとするとlink.exeがアプリケーションエラーを吐いて 起動出来ません。表示→アプリケーションを正しく初期化できませんでした(0xc0150002) 一応環境変数等はきっちり通してあるつもりですが、対処方法ありましたら ご指導下さい。
2003もvcvars32.batじゃないの? と、思ったが、vcvars32.batはvsvars32.bat実行してるだけだなorz
>>76 普通にダイアログ作って、GetDlgItemTextとかで取得するしかないんじゃね?
>>72 ソースがあるサイトには「肌色抽出プログラム」って書いてるから
画像のデータ抽出用の関数な気がする。
だとすると、tmpbufには画像データ(ビットマップ)が入るわけで、
さらにそれを何らかの手段で取得できるようにしないといけない。
まあ、つまりは
>>62 の理解度だと
process()関数だけじゃ何もできないってことだ。
とか、
>>62 はコレ使って何をしたいの?
>15の所為ですっかりぐだぐだなスレになったな。
.NET のようなタブ式ウィンドウを作りたいのですが、どのように掏ればいいですか? タブコントロールならサンプルを見つけたんですが
漠然としすぎだな
88 :
デフォルトの名無しさん :2005/08/26(金) 13:12:48
昔のVC++の廉価エディションは作ったアプリを配布することはできなかったけど 今のVC++.net standardはアプリ配布okなの?
89 :
86 :2005/08/26(金) 15:45:50
xyzzy のような、数ファイルD&Dして一つのウィンドウに1つのファイルを 開いてくれるようなやつでもいいんですが
タブコントロール使って作ればええやん。 何がわからないんだ?
91 :
デフォルトの名無しさん :2005/08/26(金) 16:24:08
Visual C++ 2005 βが無料で使えるみたいなので、落としてる最中なんですが、 このソフトは何か問題がありますか? プログラミング経験無しの素人の俺が覚えるために使おうとしているので、 初心者向きでは無いなら、他のソフトにしようと思っていますので、よろしくお願いします。
92 :
デフォルトの名無しさん :2005/08/26(金) 16:39:51
前のvsと比べ、使いかって等が良くなっている。 プログラミング経験無しでも問題ない。 だが、30日しか使えないので、2005が正式に出たら買うべきだ。
93 :
デフォルトの名無しさん :2005/08/26(金) 17:44:41
昔のVC++の廉価エディションは作ったアプリを配布することはできなかったけど 今のVC++.net standardはアプリ配布okなの?
βはあくまでβだからな オンラインゲームのβとはわけが違う
>>97 βだからってのはそれだけの意味じゃないだろ
100 :
デフォルトの名無しさん :2005/08/26(金) 20:03:51
>>92 ありがとうございます。これからこちらのスレでお世話になるかもしれないですけど、
よろしくお願いします。
製品の期限は、登録をすると来年の5月ほどまで使えるそうですが、
本格的にやろうと思いますので、製品版がでたら購入しようと思っています。
101 :
デフォルトの名無しさん :2005/08/26(金) 20:06:53
>>101 別にタブーではないと思うが、
入門書、参考書の類はたくさん種類がある上に、
ほとんどがロクな内容じゃないから読む気がしないんだろう。
もうお腹いっぱいというか、胃もたれ起こしたというか、そんな感じ。
検索にかかりにくいスレタイだな
105 :
デフォルトの名無しさん :2005/08/26(金) 21:30:48
>>102 なるほど。それは初心者スレにはありがちな事だな。
>>103 ありがと。書籍、本、で検索してかからないわけだよw
C言語の勉強をしたくてVisual C++ .netを買ったんですが 調べてみるとものすごく不評っぽいんですが どうなんでしょうか? 教えてエロイ人
BCBよかましだろ。
質問です。XP、Visual C++ .NET です。 CFile::Open() でエラーが生じた場合、 CFileException 構造体でエラー情報を受け取り、 エラーの種類の取得は、CFileException のメンバ m_cause で行っています。 ところが m_cause は整数値です。 ユーザに分かるようにエラー名をメッセージボックスに表示させようと思うのですが、 あらかじめエラー用の文章は用意されていないのでしょうか。 自分で switch 文などで、作成するしかないでしょうか。 よろしくお願いします。
>>108 つ[CException::ReportError()]
自社製のOS上の開発ツールなのに不評ってどういうことなんだ。 自社製だからBorlandより有利なはずなのに。
VC++.NETが不評だなんて聞いたこと無いが
同じく聞いたこと無いが とはいえ、OSが自社製だからってのと開発ツールのできのよさはまったくもって無関係 特に外逸一族の作るものは得てして、重いうえに使いづらい。
>>112 「外逸」を漢和辞典と国語辞典で調べてみたが、載ってないんだけど。
114 :
108 :2005/08/27(土) 17:07:57
>>109 基底クラスのメンバを調べるのを失念していました。お恥ずかしい・・・
ありがとうございます。
毎黒祖父戸野微瑠外逸
ああ、そういうことか
そのまま音読みすりゃわかろうものを・・・
>>106 どこらへんが不評なの?
俺も勉強の為に買ったけど、今までのフリーの環境でも快適だったのに、
VCにしてみてさらにエディタの機能ごときで感動してるくらいなんだけど。
さらにリソースエディタなんて、
「うおーこんな機能まであるのか!!」
ってレベルだよ。
119 :
デフォルトの名無しさん :2005/08/27(土) 19:04:14
>119 外と書いて「げ」とも読むよね。
ネタにマジレス(ry 本気で言ってるなら、がいつじゃなくてがいいつだろ
「ゲイツ」で変換すると 「ミ田」になる俺の辞書
みた?
ひろこ
ハイハイワロスワロス
>>123 窓アイコンは逆向きだろ?
ああWindowsのマークだったのか
田彡
いやまじだって 「ウィンドウズ」でも出る ミ田
誰もネタだろとか嘘だろとか言っておらん ただ、向きが逆だろと言ってるだけだ
>>130 お、こんな時間に奇遇だね。
じゃあ寝るか。
生憎だが俺は起きたとこだ。 まぁ、ゆっくりと寝たまえ
ウィンドウズで出るわけじゃないけど向きはあってるなぁ。
>>130 再起動してみ。
135 :
デフォルトの名無しさん :2005/08/28(日) 17:52:18
流れがよく分からないけど質問させてもらいますね(´・ω・`) 画像を透過させ、マスク処理した画像の後ろに画像が見えるというのを表現したいのですが上手くいきません。 赤赤赤 青青青 黒白黒 赤赤赤 後ろの画像 青青青 前面の画像 白白白 前面用マスク画像 赤赤赤 青青青 黒白黒 ずれてたらすみません、3x3の画像3種類と考えてください。 理想としては 赤青赤 ←こういう感じになって欲しいのですが、 緑青緑 青青青 マスク処理した部分が 青青青 赤青赤 ブラシの色(緑)になってしまいます→ 緑青緑 続く
hdc = BeginPaint(hWnd, &ps); hBrush = CreateSolidBrush(RGB(0, 255, 0)); SelectObject(hdc, hBrush); hbmp_Red = (HBITMAP)LoadImage(hInst, "RedTex",IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR); 続き hdc_Red = CreateCompatibleDC(hdc); SelectObject(hdc_Red, hbmp_Red); BitBlt(hdc, 0, 0, 3, 3, hdc_Red, 0, 0, SRCCOPY); hbmp_Cross = (HBITMAP)LoadImage(hInst, "Cross",IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR); hMask = (HBITMAP)LoadImage(hInst, "Cross_Mask", IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR); hdc_mem = CreateCompatibleDC(hdc); SelectObject(hdc_mem, hbmp_Cross); MaskBlt(hdc, 0, 0, 3, 3, hdc_mem, 0, 0, hMask, 0, 0, MAKEROP4(SRCCOPY, PATCOPY)); DeleteObject(hbmp_Red); DeleteObject(hbmp_Cross); DeleteObject(hMask); DeleteDC(hdc_mem); DeleteDC(hdc_Red); DeleteObject(hBrush); EndPaint(hWnd, &ps); これでやっていますがやり方を間違えているのでしょうか・・。 WinXP/VC++.netです。
136の文中に続きの文字が入ったとです、申し訳ありません
>>134 悪いが2kなんで窓マークは出ん
が、確認した、悪かった_| ̄|○i|i
CreateCompatibleDCって普通NULLで呼び出さないか?
140 :
デフォルトの名無しさん :2005/08/28(日) 19:04:25
なんていうか秀丸エディッタみたいなのが欲しいんですけど C++で作れるんですか? とりあえず興味あるんで、具体的に何からはじめていけばいいですか? コンパイラはボーランド使ってます。 エディッタはTeraPat使ってます。
俺は秀丸エディッタなる存在を聞いたことも見たこともないな。
C++で作れるよ オマエさんが作れるかは別問題だがな
>>142 そりゃそうだねーw
今は友達がカレンダー作れるようになれって言われたからカレンダーがんばってるw
144 :
デフォルトの名無しさん :2005/08/28(日) 20:29:01
秀丸エディタは古いコンピュータでも動くようにとのことから Visual C++ 5.0で作っているそうです。 ちなみに実際に作成しているのは秀丸さんじゃなくて もう一人のプログラマの人に任せていると なんかで読みました。
>>138 なんか起きてみたら形勢逆転かよ。
とりあえず俺に謝ってくれないか?
うそ、いいよ、許す。
>>135 前面画像の透過部分を黒か白にして、MAKEROP4()の第2引数を
黒ならSRCPAINT、白ならSRCANDにする。
>>146 ありがとうございます。
お陰で解決できました。
>>149 5.0で開発できる+VC++高杉→5.0でいいや、じゃねーの?
6.0って、今思うと物凄いロングセラーだよな 5.0買った人達カワイソス
6年前には既に有ったからな、6.0
VisualC++Express2005をダウンロードして、使い方が良く分からないので 「ひと目でわかる VisualC++.NET Version2003アプリケーション開発入門」 を買ったのですが、CDに収録されているソースを読ませてコンパイルしてもエラーが出ますorz 初めは打ち間違えたのかなと思ったのですが、どうもそうではないみたいです。 2005と2003では何か大きく変更になったところでもあるのでしょうか?
154 :
デフォルトの名無しさん :2005/09/01(木) 04:25:48
ESP! ESP!
>>153 わたしは通りすがりで、且つサイコキネシス系の人間だが、
ソースをさらしたほうがいい。でなければ、詳しく。
__gc managed から C++/CLI になった。
.net Frameworkを使ってなければ大佐はいないだろうけど。
>>155 どうもありがとうございました。
この本を読み始めた時から、なんだか普通のC++コードと
違う気がしていたのですが、_gc managedとかCLIとかいう
C++の拡張系があるんですね。
ソースは本に付属していたもので、うpするのはまずそうなので
ググって調べてみます。
157 :
デフォルトの名無しさん :2005/09/01(木) 09:17:24
画像を使ったスクロールバーは、どうやってつくるのでしょうか? サイトを駆け巡ってみたのですが、参考HP見つからず...orz
>>157 MSDNをななめ読みしたが、オーナードローとかの仕組みは無いみたい。
自前で作るしかないんじゃね?
159 :
デフォルトの名無しさん :2005/09/01(木) 18:50:16
関数から抜けるとき Run-Time Check Failure #2 - Stack around the variable 'ローカル変数名' was corrupted のダイアログがでるんですが このメッセージの意味と対処法をおしえてください.
>>159 「ローカル変数」のスタック蛾物故割れた
161 :
デフォルトの名無しさん :2005/09/01(木) 19:27:52
>>159 配列の境界超えて書き込んだとか、してんじゃないの?
エラーログが文字化けします。 aRaoapaCaie?e─eoe?e?... stdafx.cpp aRaoapaCaie?e─eoe?e?... sankaku.cpp print.cpp c:\Documents and Settings\tarou\My Documents\Visual Studio Projects\print\print.cpp(24) : warning C4267: '=' : 'size_t' ?? 'int' ?????????????????????????? ???????... c:\documents and settings\tarou\my documents\visual studio projects\print\print.cpp(19) : warning C4700: Ale¬eaeΦoue─eτeΩe─eoe?eoaiu[aJaie?o?Eo 'buffer' e?a?e?e─AQA?e¬iseφeΩe?e?e?uB リンクしています... 解決方法を教えてください。宜しくお願いします。
環境書けよ
タロー
165 :
162 :2005/09/01(木) 21:22:21
すみません、忘れてました。 Win XP Home Edition SP2で Microsoft Visual C++ .NET です。 Microsoft Visual C++ .NET はSpokeからインストールしました。
C++とOpenGLは、一応プログラムでメシが食えるくらい理解していると思うのですが、 Windowsについては全くの初心者です。 このたび、趣味でゲームでも作ろうと思い、.NET を購入し、Visual C++をいじってみたのですが、 あまりにも今までやってきたものと環境が違いすぎて困惑しています。 (キーボードを打っていないのに、勝手にコードが書かれていくなんてありえない…) 目標は、Win用自作ゲームをwebで公開することです。 MFCもWin32APIもDirecrXも、ほとんど理解していないのですが、まずどこから手をつければよいのでしょうか。 やはり、DirectXを覚えて、Visual C++で作るべきですか? また、まったくのゼロから、main() から自分で書いて作るのは大変なんでしょうか?
>>166 WindowsでもOpenGLは使えないわけではないよ。
>>166 ゼロから手打ちでも不可能じゃないと思う
まぁmainじゃなくてWinMainに変わるけど
猫でもわかるプログラミング でぐぐれ。
入門書もろくに読まずにいきなり作り始める馬鹿
172 :
166 :2005/09/02(金) 03:50:02
色々と調べたり、本を読んだりはしてみたのですが、 あくまでも遊びレベルなので、それほど真剣には調べてませんでした。 私のような「C++とOpenGLは知ってる」というような者や、 Unix等で昔からガンガン組んでた人がとっつき安い方法を知りたかったので 少しスレ違いとは思いつつも質問させていただきました。 OpenGLが使えることも、「猫でも〜」も知っています。 ただ、ゲームを作るにはイリーガルなやり方みたいですね、やはり。 個人的な理想としては、 ・C++言語レベルにおいては、「猫でも〜」のように、main() から自分で書く。 ・ライブラリはDirectXを使う。これは、頑張って勉強する。 のような感じが良いかなーと思ったのですが、 プロジェクトテンプレートは何を選んで、どうやってDirectXをリンクすれば良いんでしょうか。 参考サイト等もありましたら教えていただけると嬉しいです。
DirectXスレ向けかな。 別にVSに限らず、GUI構築ツールは大抵コードを勝手に吐いてくれるわけだが。
>>166 1. Win32 アプリケーションを選ぶ。
2. WinMain 以外をばっさり削除
3. がんばって CreateWindow を成功させる
4. DirectX なり OpenGL なり
という流れで良いと思う。
OpenGL に慣れてるのであれば、
ムリして DirectX 使う必要も無いと思うけど。
>2. WinMain 以外をばっさり削除 そんなことしなくても、空のプロジェクトを作成、って項目があるジャマイカ…
Windowsゲームを作るならそれがいいんだよな 俺も勝手にコード書かれるの嫌
>私のような「C++とOpenGLは知ってる」というような者や、 C++は知ってて当然 OpenGLはVCとは直接関係ない だから他の初心者と同じように勉強すればいい
GLUTならWindowsだからといって特に変更はいらないと思うけど
>あくまでも遊びレベルなので、それほど真剣には調べてませんでした。 ということはVCは向いてないね まったくのプログラミング初心者 趣味程度にプログラムを作りたい 手っ取り早く作りたい こういう場合はVBかC#
趣味でやるならBasic4GLがいいよ OpenGLのAPIが使えるBasic Basicといってもポインタとか普通に使えるし
181 :
デフォルトの名無しさん :2005/09/02(金) 10:32:16
エディットボックスに入力された文字数を取得したいのですが、 GetWindowTextLengthを試みましたところ、バイト数が返ってきました・・・ バイト数では無く、文字数を得る為にはどうしたら良いでしょうか?
>>181 IsDBCSLeadByte使って自分で数えるか_mbstrlen
NT系ならGetWindowTextLengthWとか
184 :
デフォルトの名無しさん :2005/09/02(金) 11:43:03
質問スレで回答無かったので移動しました。 MFC(コンパイラはVC.NET)+Win32APIのアプリケーション用にHTML Help(.chm)形式のヘルプを作っているのですが、 アプリケーションの動作中に動的にページを切り替えるようにするにはどういうアプローチがあるでしょうか。
質問が意味不明だからエスパーを呼んでくれ
じゃあこれからカバンに入りま〜す、はい〜。
>>184 アプリの処理と連動して表示してるヘルプのページを切り替えるってこと?
それなら自分でヘルプID指定してメッセージ投げるとか、ヘルプ表示関数呼ぶとか。
できるかどうか知らないけど。
>>181 GetWindowTextLength のヘルプを100万回嫁。
50万回まで読みました
190 :
デフォルトの名無しさん :2005/09/02(金) 18:47:59
msvcr71.dllやmsvcp71.dllが再頒布可能であることを直接明示した ドキュメントを探しているのですが,見つかりません. どこに明示されているんでしょうか?
>>191 ありがとうございます.製品CDのRedist.txtを確認してみます.
ttp://pc8.2ch.net/test/read.cgi/tech/1120222322/899 ですが関数_beginthreadex()のstack_sizeについてもう一度質問させてください。
//スレッド内の処理をすべてこっちに移した。
void func(void *arg)
{
int i;
char ss[128];
}
//スレッド内では目的の関数を呼び出すだけ
unsigned __stdcall ThreadFunc(void *arg)
{
func(arg);
//スレッド終了時の色々な処理
〜〜〜
_endthreadex( 0 );
return 0;
}
こんな風にしておけばstack_sizeに与える値は関数呼び出しに
必要となるバイト分(sizeof(int)だけだと思いました。
または、スレッドで呼ばれた関数func()も関数を呼び出すので
その分、余分に用意しないといけないとも思いましたがどうでしょうか?
やはり stack_size = (sizeof(int)+sizeof(char)*128)+関数呼び出しにかかるバイト数
となるのでしょうか?
>>193 で、質問するのはいいのだが、前スレのレスを吟味した上で聞いているのかね?
>>193 _endthreadexがどれくらいスタック消費してるかわからんし
スレッドプロシージャが呼ばれる前にもスタックを消費してるかもしれない。
人に訊かないとわからんようならデフォルト値指定しとけ。
はい、stack_sizeには0を指定すればいいとききましたが、 main()では関数を呼び出すだけで終わりです。 func1()にはコマンドラインから与えられた引数 (入出力ファイル名やデータ解析オプション)を渡すのですが、 main()内で宣言している変数はint argc, char *argv[]; しかありませんので、func()内でchar ss[128];を確保したい以上、 stack_sizeに0を指定するのはまずいという結論に達しました。 そこでもう一度質問させてもらいたかったのですが、駄目でしょうか?
>>196 mainで宣言してる量でスタックサイズが決まるわけじゃないぞ?
えっ、そうなんですか? 私はmain()内ではsizeof(int)+sizeof(char **)分しか 確保されない思っていましたが、違うのですね。 それで皆さん0を指定したらいいよと教えてくださっていたのですか。 すいません杞憂だったようです。 0を指定していきたいと思います。 ありがとうございました。
>>198 スタックサイズはコンパイラオプションで決まる。
もしかして、stack_sizeに0を指定するのは実際に0バイトし確保しないと思ったんだろうか。
機能単位にコンテナ上にコントロールをまとめておいて、 コンテナを表示/非表示することによって可視できるコントロールを 制御したいと考えています。 VBだとデザイン画面で簡単にコントロールの親子関係を関連付け できるんですけど、VCだとどうやればいいんですか? もう少し補足しますと VBのデザイン画面ではピクチャーやフレームコントロールがコンテナの 働きをしてくれて、その上にコントロールを貼り付けておけば 土台となるピクチャーを移動した時に上に乗ってるコントロールは 一緒に移動してくれました。 VC++6.0のダイアログエディタで同じことをやろうとして ピクチャーやグループの上にボタンコントロールを載せようと したのですが乗っかってくれません。コンテナとして使えない? コードで書く方法だとコントロールの数が多いとき大変ですよね。
>>201 手元にVC無いんだけど、コントロールのプロパティで「グループ」ってのなかった?
あれはラジオボタンの関連付けとかに使うだけだっけ?
ネーヨ
もしかして:タブグループ
peekmessageでのメッセージループ内で描画のために毎回 createpenしたらプログラム実行時ページファイル使用量が際限なく上昇してしまいます。 deleteobjectでメッセージループの終わりにペンをdeleteするようにしてもだめです。 どうしたらいいでしょうか。
>>202 そうなんです。プロパティの「グループ」はラジオボタンのグループ化用でした。
+--グループボックス--+
| ◎ラジオボタン1 |
| ◎ラジオボタン2 |
+-------------------+
この場合グループボックスを無効化すれば、ラジオボタン1と2も無効化
されて欲しいんですけど。
VBだとラジオボタンを切り取って、グループボックスにフォーカスを合わせた
あとに貼り付ければ親子関係が成立するんですけど...
>>204 タブストップ?
コードの量が増えてもVBより速いから心配いらんよ
関数名等を大文字小文字を区別しないで書く奴に ハァ?となるような質問が多い件について。
>>205 ループの外でペン作っておけばいいじゃん
例えば、
InitInstannceに相当する処理でCreatePen
ExitInstanceに相当する処理でDeleteObjec
ペン(&ブラシ)って作成時以外に色変えられましたっけ?
>>210 必要な分だけ、あらかじめ作っておくってこと。
どうしてもPeekMessageの中でペンを作らないとダメなら、
条件分岐させて再描画処理(ペン作成)の回数を下げる。
どーせ、SelectObjectする前のペンを復帰させてないとかいうオチ。
デバッグ中に、ある変数の値をリアルタイムに出力できるようにするには、どうすればいいのでしょうか? ブレークポイントで止めて、Stepしながら確かめるのではなくて。
>213 TRACEマクロ
ダイアログベースの新規プロジェクトを作成して、ダイアログにダイアログと同じサイズのピクチャーを貼り付けて その上にボタンコントロールを載せて、あとはコードを書かずに実行すると ボタンが表示されたりされなかったりします。 ボタンは見えなくてもマウスでクリックするとボタンが現れます。 試しにピクチャーのウィンドウハンドルを取得してSetWindowPos()で最下面の属性を与えたのですが 結果は変わりませんでした。 この現象はピクチャーコントロールがボタンよりあとに表示されていて ボタンのエリアをクリッピングしてくれていないということですか? これの対策はどうすればよろしいですか?
216 :
215 :2005/09/03(土) 19:07:23
>>215 ピクチャーにはデザイン画面でビットマップを指定しています。
ビットマップのサイズはダイアログと同じ大きさです。
>>216 OnPaintでダイアログに直接BitBlt、とか。
今からやるなら、「MFCアプリケーション」と「.NETのWinフォームアプリケーション」のどっちをやった方がいいですか?
ケースバイケース
C#
221 :
デフォルトの名無しさん :2005/09/04(日) 05:21:47
中間ファイルの出力ディレクトリを変更して、プリコンパイル済みヘッダーを使用すると 次のようなエラーが出て困ってます。 error C2859: d:\test\debug\src\vc60.pdb は、このプリコンパイル済みヘッダーが 作成されたときに使用されたpdb ファイルではありません。 プリコンパイル済みヘッダーを再作成してください。 cl.exe の実行エラー 中間ファイルの出力ディレクトリを変更しても、 エラーが出ないようにするにはどうすればいいですか?
リビルドしてもだめなん?
223 :
221 :2005/09/04(日) 06:16:32
>>222 クリーン→リビルドしても同じエラーが出ます。
中間ファイルの出力ディレクトリを変更しない場合(全て同じディレクトリ)は
エラー無く、うまくいくんですけどね…。
初心者がわざわざ変更する必要ないから やりたければ勝手にどうぞ アブノーマルな使い方は初心者スレの範囲外
どっかの設定のパスを変え忘れてるに一票。
227 :
デフォルトの名無しさん :2005/09/04(日) 14:19:09
SDLのライブラリを使ってプログラミングをしているのですが、インテリセンスがうまく働かない関数があります。 SDL_InitやSDL_Quitなどです。 SDL_LoadBMPという関数やSDLで定義されている構造体などには、引数やメンバが表示されます。 これはどこか設定がうまくいっていないのでしょうか。それともVCの仕様ですか?
GLUTの関数も一部出ないよね。 IntelliSense意外とバカ?
一回そのプロジェクトの.ncbファイルを削除する事をお勧めする。 .vcprojを起動したらちゃんとしたの新しく作ってくれるよ。
230 :
デフォルトの名無しさん :2005/09/04(日) 17:38:59
VC7 のインテリセンスって文字列リテラルに全角が混ざるだけでバグるほど馬鹿なんだけど。 VC6 じゃ、こんなことなかった。 printf("こんにちは"); ↑ここまで打ってもprintfのヒントが消えない
"が全角になってるとか、''になってるとかの落ちじゃねーの?
printf("あ"); ↑ここまで打って消える。 printf("あいうえお"); ↑ここまで打っても消えない。
233 :
デフォルトの名無しさん :2005/09/04(日) 20:35:20
自作デスクトップマスコットをWME(ウインドウズ メディア エンコーダー)で撮ろうとしていますがなぜか映りません。 マウスカーソルの影も同様です。 WMEの仕様上不可能なのか設定でどうにかできるならいいのですが、 プログラム側で対応できないのでしょうか? タイトルバーと枠なし、背景透明をやめれば映るのですが、 見栄えが非常に悪くなるのでそれだけは残しておきたいです。 環境はXP、.NETです。
>>233 マウスは仕様
DTMが映らないのはおまえの作り方が悪い
LayeredWindowが映らないだけでは? あれはたしかにBitBltでは持ってこれない。
236 :
233 :2005/09/04(日) 21:23:21
>>234-235 レスありがとうございます。
>BitBltでは持ってこれない
と言うことはそれ以外の方法があるのでしょうか?
(ビットマップ)画像を描画する方法はBitBltやStretchBltぐらいしか知らないので、猫(時計作成の項)にも書かれていたようにそのまま使っていました。
LayerdWindowじゃなくて普通のWindowでリージョン使ってやってみれ
238 :
233 :2005/09/04(日) 21:52:36
ありがとうございます。 まだデバッグまでは行ってませんがなんとかできそうです。
質問です。 項目は DirectInput 関係ですが、質問自体は DirectX に関係ないと思い、ここで質問させていただきました。 IDirectInput8::EnumDevicesBySemantics に関して、MSDN で以下のような記述を見つけたのですが・・・。 DIERR_INVALIDPARAM 無効なパラメータが、戻ってくる関数に渡されたか、オブジェクトがその関数を呼び出せる状態になかった。この値は、標準のコンポーネント オブジェクト モデル (COM) 戻り値である E_INVALIDARG に等しい。 戻ってくる関数って・・・コールバック関数のことでしょうか。
>>240 そうです。
日本語MSDNは誤訳が多いので困る
242 :
240 :2005/09/05(月) 03:41:56
243 :
デフォルトの名無しさん :2005/09/05(月) 10:29:36
VC++.NET2003でソリューソンエクスプローラーにフォーカスを当てる ショートカットをご存知の方がいたら教えて下さい。 お願いします。 この場合のフォーカスを当てるというのは、マウスを使わずにソリューソン エクスプローラーにあるファイルを選択できるようにするということです。
>>212 今更だがペンを復帰させるってどういう意味?
標準関数みたいにdirectxの関数でもコーディング支援機能を使いたいんですが どう設定したらいいんでしょうか?
DirectXの支援機能が無いから無理
ActiveBasicなら入力補完とDirectXに対応
自分でラッパクラスかラッパ関数でも作れば? そうすりゃそのクラスもしくは関数を使う限りは支援が受けれるぜ?
まぁ、普通はそんなことしなくても支援されるんだけどな
そりゃ支援するためのデータが有るからだろ
支援するためのデータってヘッダだろ?DirectXで開発するならヘッダあるに決まってるじゃん。
VCもDelphiみたいに型情報まで判断して支援してくれりゃ言うことないんだけどな
254 :
デフォルトの名無しさん :2005/09/05(月) 23:54:31
開発環境 OS:XP 言語 visual C++6.0 VBからの移行プログラムで、C言語でのプログラムの修正を解析されたのですが、 msghook が出てきました。msghook ってなんですか。わかる方教えてください。
買う前にMSのサイトで各エディションの比較表を見てVisualC++.net Version2003 を買ったんだけど、コンパイラが違うのは使うまで分からなかった。 Toolkit2003のおかげで助かったけど、このものすごく重大な違いが ものすごく分かりやすくかかれていないのは問題じゃないか?
>>243 マクロ作ればいけると思うぞ。
CTRL + SHIFT + R で記録すればコードを各必要も無いし。
>>支援
インテリセンスのコトだったら
IDirect3DDevice9 とかの型もヒントが出てくるケド…?
…釣られてる?
普通は入力支援されるんだがDirectXのインストール順とかでダメなことがあるらしい NCBやいらないファイルを削除してリビルドするだけでうまくいくこともあるみたいだけどね 鬱氏で昔話題になった記憶がある
258 :
デフォルトの名無しさん :2005/09/06(火) 05:10:18
>>255 俺も同じなんだが、そんな俺にVisualC++.net Version2003でToolkit2003でコンパイルする方法を教えてくれないか?
Visual C++ と C++Builderってどうちがうの? おなじC++言語で開発するんだから余り変わりないの?
>>259 使い勝手やライブラリ、コンパイラなどが違います。
VCは主軸を.NETに移しており新機能はそちらが中心となっております。
BCBはしばらくリリースがありませんでしたが数ヶ月後にDelphi2006に
統合されてリリースされる予定です。
ソース比べてみればわかるけど 全然別物
大丈夫、C++の標準関数などを使っている分には大差ないから。
そこで#pragma comment(linker, "/nodefaultlib:\"libc.lib\"")ですよ
>>260-262 どもw
どちらの方がオススメなんでしょうか?
自分はDelphiからの移行を考えているのですが・・・・
>>265 なにをやりたいかにも拠るが、GUIやりたいなら当然BCBの方が移行は楽。
>>265 成るほど。
企業などではどちらがよく使われるの?
>>265 BCBだと結局Delphiと変わらない
C++覚えたいだけならそのほうが都合がいいかもしれんが
>>268 なるほど・・・・・Delphiと変わらんか・・・
Delphiは趣味で使うにはいいんだけど、企業で使われることは少ないらしいし。
一応SE目指してC勉強してるんで・・・それだとちょっとなあ・・・
>>267 どっちもあまり使ってないと思うが雑誌のアンケートを信じるなら
Java > VB > Delphi >>> VC >>>(超えられない壁)>>> BCB
分野で完全にひっくり返ったりするから参考程度で
私の勤める会社でも部署によっては業務系でDelphiもJAVAも使っているし、 私と同じのプロジェクトに参加しているソフト屋は制御系でBCBを使っているらしい。 どちらもVBは使っているがVB.netではない。寧ろC#の案件が一部あるそうだ。
C++覚えたいだけならそっちのスレへ
了解しますた
275 :
デフォルトの名無しさん :2005/09/06(火) 13:39:18
CString を charへ変換したいのですがどうすればいいでしょうか? 例えばcharからintならatof(a); というやり方でできますが CStringからcharはどのようにしたいいですか? Cで作ったプログラムをVisual C++を使って作りたいのですが ここがどうしてもうまくいきません。 Cで作ったものはVisual C++でもうまくいくのでしょうか?
276 :
デフォルトの名無しさん :2005/09/06(火) 13:41:17
テストは Windows XP(SP2), Pentium 4, Visual C++2003で。 以下のコードで、最適化をかけずにビルドすると 何故か 結果がおかしいです。 float swappp(const float f) { unsigned int r = *(unsigned int*)&f; r = ((r >> 24) & 0xff) | ((r << 24) & 0xff000000) | ((r >> 8) & 0xff00) | ((r << 8) & 0xff0000); return *(float *)(&r); }
277 :
デフォルトの名無しさん :2005/09/06(火) 13:41:55
276の 続きです。 union IntFloat { unsigned int i; float f; }; int main() { IntFloat t; t.f = -1002.249939f; // A : t.i = 0xC47A8FFF t.f = swappp(t.f); // B : t.i = 0xff8f7ac4のはず printf("0x%08x\n", t.i); // C : でも t.i = 0xffcf7ac4 } スワップしているだけなので、8bit単位で同じ値になるはずなのに、 何故か 8F->CFになります。 原因は単精度浮動小数点ではない値を浮動小数点として扱っている為、 CPUの浮動小数点レジスタのフォーマットに変換した際に値が変化してしまったと 考えられるのですが、これはバグなのでしょうか。 それとも C++の規約的には不定となるようなコードで、 こうなっても仕方がない類のものなのでしょうか。
ただCStringの持ってる文字列をchar配列に取り出したいだけなら、 CString str = "Hoge"; char szBuf[5]; lstrcpy( szBuf, (LPCTSTR)str); これでいい
279 :
デフォルトの名無しさん :2005/09/06(火) 13:44:10
CString を charへ変換したいのですがどうすればいいでしょうか? 例えばcharからintならatof(a); というやり方でできますが CStringからcharはどのようにしたいいですか? Cで作ったプログラムをVisual C++を使って作りたいのですが ここがどうしてもうまくいきません。 Cで作ったものはVisual C++でもうまくいくのでしょうか?
280 :
278 :2005/09/06(火) 13:44:50
281 :
デフォルトの名無しさん :2005/09/06(火) 13:49:21
>>275 ,279
何がしたいのか日本語で言ってみろよ
それから氏ね
282 :
デフォルトの名無しさん :2005/09/06(火) 14:04:04
textBox->Text += "1";の演算ができないです。 Form1.h(624): error C2845: '+' : __gc ポインタ 'System::String __gc *' に対してポインタ演算ができません。 というエラーがでます。 VC++.NET 2003使用
(マネージドだと、こんなVBライクな事が出来るのか・・・)
>>276 反転すると指数部が0xffかつ仮数部が非0になるので非数(NaN: Not a Number)となるな。
8F->CFとなっても非数には変わりないから、IEEE754的には正しい動作と言えると思う。
あとC/C++的には、floatの内容をいじくった時点で未定義なコードだと思う。
>>276 swapp()がfloatを返す仕様だからしかたないね。
ポインタのままかバイト列か整数で受け渡しをすれば巧くいくと思うけど。
287 :
276 :2005/09/06(火) 14:41:15
>> 284-286 なるほど。そうでしたか。 ありがとうございました。
289 :
デフォルトの名無しさん :2005/09/06(火) 21:20:03
ぐぐれ
291 :
デフォルトの名無しさん :2005/09/06(火) 22:38:02
コマンドプロンプトで始めにcd c って打つんですけど指定されたパスが見つかりません って出ます。何でですか? ファイル名c です。」
スレ違い。
293 :
デフォルトの名無しさん :2005/09/06(火) 23:11:11
CAsyncSocket Class にて、関数を作成する際(例:TestFunc(構造体名& testType); )に、 CWinApp Class にて宣言した構造体を引数にしたいのですが、コンパイルすると、 「構造体名がシンタックスエラーを起こしました。」のメッセージが出てしまいます。 ワークスペース表示欄にて、Socket classの名称の方が、Win classの名称より上位にあるために、 構造体名が参照されず、このようなことが起きているのでしょうか?どうやったら、 コンパイルが通るかわかりません。誰か知ってる人いたら、教えて下さい。
>>258 VisualC++.net Version2003でToolkit2003のコンパイラを使う方法のこと?
だったら自分も確実な方法は知らない。サポート対象外で自己責任。
オプションの実行ファイルディレクトリにToolkit2003のbinフォルダを優先させて
登録する人が多いみたいだけど、自分はさらにToolkit2003のlink.exeと
link.exe.configを退避させてる。(元のlink.exeを使いたいから)
ちなみに dbghelp.dll msobj71.dll mspdb71.dll msvcp71.dll msvcr71.dll
cl.exe.config link.exe.config は元のファイルとバイナリ一致
link.exeはサイズが一緒なんでメッセージの言語が違うだけかなと。
296 :
295 :2005/09/07(水) 01:53:42
最適化のオプションは コマンドライン→追加のオプション のところに書く。
297 :
デフォルトの名無しさん :2005/09/07(水) 04:45:40
>>294 その手がありましたね。ありがとーございました!
なんとかできそうです!
で、Toolkit2003のコンパイラだとどんなメリットが?
エラーメッセージが英語になる
そりゃ便利だ さっそく使ってみよう
301 :
デフォルトの名無しさん :2005/09/07(水) 12:42:20
VC7 から VC7.1にしたら、ダイアログ上に配置する Buttonのデザインが古くなってるんですが、 我慢するしかないですか?
302 :
デフォルトの名無しさん :2005/09/07(水) 13:01:38
LPCTSTR型はMFCではないと使えないんですか? コンソールアプリケーションでは使えませんか? よろしくお願いします。 環境 VC++6.0 win2000です
302 #include <windows.h>でどう?
304 :
デフォルトの名無しさん :2005/09/07(水) 13:22:38
>>303 サンクス!ありがとーっす!動いたっす!
まぁ、LPCTSTRが使いたいだけならwindows.hインクルードせんでも、 自分で、typedefしてもいいんだけどな
306 :
デフォルトの名無しさん :2005/09/07(水) 17:43:55
なるほどtypdefもいいんですね!ありがとうございます
>>305
typedef const char *LPCTSTR;と書く予感。
309 :
デフォルトの名無しさん :2005/09/07(水) 23:18:57
CString を vector<string> col;に入れたい。 だして表示したい。 のですがどうすればいいでしょうか? 1 SQLを実行後にCstrig strResult;//hage がはいってます。 vector<string> col; vector<vector<string> > recordset; col.resize(10); col[i] = strResult;//ぐるぐるまわす 入りますか。? recordset.push_back(col); /////////// CDC::TEXTOUT(10,10,(recrordset[1][1]).c_str()); CDC::TEXTOUT(10,20,(recrordset[1][2]).c_str()); ・・・ ************ * hage * * * * * * * ************
>>309 なんで普通にcol.push_back(static_cast<const char *>(strResult));しないの?
>>309 言いたい事わわかるような気がするんですが
コードの部分だけでしか分かり得ません
私は韓の国からやってきましたが日本語をべんきょしても
あなたの日本語は理解し得ません
313 :
デフォルトの名無しさん :2005/09/08(木) 01:36:24
>なんで普通にcol.push_back(static_cast<const char *>(strResult));しないの? 神出現 W、わかりました。ということは col.push_back((LPCTSTR)strResult);もOK牧場ですよね。 おきててよかった。ありがとう311 何度もあつかましいようですけど CDC::TextOut(10,10,(recrordset[1][1]).c_str()); は、OKでしょうか。これでグローバルのベクター(SQL結果の1時記憶)が完成しました。 それから、vector<Cstring> COL; vector<vector<Cstring> > RS;はやめておいた方がよいですよね。 ↓ダイアログ画面のつもりでした。↓ ************ * hage * * * * * * * ************
>>313 質問の要点は的確に。
>それから、vector<Cstring> COL; vector<vector<Cstring> > RS;はやめておいた方がよいですよね。
CStringをvectorに入れることの是非を問うているのなら、それはそれで構わないと答えるけど。
>>313 col.push_back(static_cast<LPCTSTR>(strResult));
317 :
205 :2005/09/08(木) 11:14:34
アドバイスありがとうございます。 どうやら色々やってみたところGetDC(hWnd)、ReleaseDC(hWnd)をメッセージループで 使用するとページファイルが際限なく上がるみたいです(DirectX使ってるので サーフェスにGetDC、ReleaseDCを使うだけでいいのに間違えて書いてた)。 よってこれに関してはペンやブラシの作成は関係なかったみたいです。 ただ、メッセージループ内でCreatePen、CreateBrushするとなぜかしばらくプログラムを 起動しているとペンやブラシが消える(ペンやブラシで描いた図形が画面から消える)みたいですが ループ外であらかじめ作っておけば大丈夫、ということがわかりました。
質問者は日本語で質問してくれ
VC++6.0 WinXPsp2 質問です。 タイプライブラリを #import するとプライマリヘッダ(.tlh)とセカンダリヘッダ(.tli)が自動生成され、 それらを #include しようとするのですが、そこで警告が出てしまいます。 たとえば #import "hoge.tlb" としてコンパイルすると、hoge.tlh と hoge.tli が生成され、 warning #990: #include of "Release/hoge.tlh" may be non-portable warning #990: #include of "c:\aaa\bbb\ccc\hoge.tli" may be non-portable のような警告が出ます。 この警告が出ないようにする方法はありませんでしょうか。 よろしくお願いします。
XPでVC++6.0を使うのを止めて.NET2002/2003を使うか、 Win2kあたりでVC++6.0を使う。
>>320 ありがとうございます。
.NETに乗り換えることにします。
よく自分で調べろっていうやついるけどさぁ 要するに自分じゃ説明できないから調べろってことなのか? だとしたらただ無駄にプライドが高いだけの馬鹿だなwww
あくまで「だとしたら」、の話だよな。
324 :
デフォルトの名無しさん :2005/09/08(木) 17:56:39
>>230 ほんとだ。
なんか不便。
当然、一度変数に入れれば問題ないが面倒だよな。
引数に直接""でリテラルを書くのはダメプログラマ
func(STRING_DEF1)
>>325 そうなのか。
次からはこんな感じで行こう!!
String a,b,c,d,e,f,g,h,i,j,k;
>>327 ダメプログラマどころかカスプログラマだな
329 :
デフォルトの名無しさん :2005/09/08(木) 18:43:11
>>325 んなアホなこというお前こそダメプログラマ
catch(const char*){ とかやってしまうのはだめなんか・・・。だめだよなそりゃ。
>>331 変更が有った時に全部直すのがめんどくさいからじゃね?
国際化に対応するのが大変だな
335 :
デフォルトの名無しさん :2005/09/08(木) 22:40:50
VC7 から VC7.1にしたら、ダイアログ上に配置する ボタンのデザインが古くなってるんですが、 我慢するしかないですか? 皆さんはボタンも自作しますか?
まったく同じ質問をどこかで見たぞ
>>301 =
>>335 VC7を使い続ければいいんじゃね?
VC7.1じゃないと困ることでもあるのか?
338 :
335 :2005/09/08(木) 23:07:58
VC7.1で作り始めちゃったので・・・ UIの見た目が、何故か劣化してるのが どうしても気になっちゃったもので、 見た目をどうこういう程、大したもの作ってる分けでは無いのですが、 よくよく、出回っているフリーソフト等のボタンと見比べると、 見劣っちゃうな・・・と
>>338 manifestファイルがないとかでは?
340 :
335 :2005/09/08(木) 23:26:25
>>339 ありがとうございます。
ぐぐったらそれっぽい感じです!
助かりました!
特定のフォルダの中のファイルを調べるにはどうすればいいんでしょうか? MSDNライブラリで、フォルダやディレクトリで検索してみましたが色々出すぎてわかりませんでした
system("dir targetFolder");
コマンドプロンプトでforma(ry
VisualC++2003スタンダード(日本語版)でMFCプロジェクトを作成したのですが メニュー等の文字は日本語になのですが、DDVに引っかかったときのメッセージは英語です。 プロジェクト→プロパティ→リソース→全般→追加のインクルードディレクトリに $(VCInstallDir)\atlmfc\include\l.jpn を追加すれば日本語になってくれるのですが、毎回この操作をしなければならないのでしょうか?
346 :
デフォルトの名無しさん :2005/09/09(金) 16:05:11
院生の先輩にVC6++とあるひとつのワークスペース(?)を 渡された初心者です。 CPU使用率を上げてしまう個所を探せ、という課題なのですが ソースの中からそういうループみたいな部分を抜き出すことができる ツールとかご存知の方、教えてくださいm(__)m WinXpです
自分でソース見て探せや怠け学生
そのワークスペースをupしろ。 見付けてやるぞ。
↓本当にワークスペースだけうpする奴
351 :
346 :2005/09/09(金) 17:00:57
自力で何とかすることにします。 板汚し、失礼しました。
Vtuneでもいれれば。
>>346 マジれすすると、そう言う時にはVC++を使うと良い。
ちょいとプロファイルを取ってみれば、大体見当つくだろ。
て言うか変な課題だな
課題ではなくて単にその先輩が無能なんで
丸投げしただけだろ。その先輩の尻拭いを
させられているわけだな。
>>346 は解決したら先輩に言ってやれ。
こんなものも出来ないならさっさと院なんか
辞めて下さいって。
356 :
346 :2005/09/09(金) 19:55:09
そんなことする人じゃありません。 悪質な決め付けしかできない人は来ないでください。
>>356 んな事言ってもなぁ
こんな課題して何の力がつくんだっていう
先輩の尻拭いじゃなくて、要は使われてるんじゃね? 教授の実験の手伝いをさせられてる理系大学四年生みたいな感じ
どちらにせよ、きんも〜☆
初心者に最適なC++、C言語の本を教えていただけないでしょうか?
363 :
名無しさん@そうだ選挙に行こう :2005/09/10(土) 19:22:29
VC.NETのMFCのダイアログで、keyDownメッセージを使いたいのですが どうしたことかカーソルキーの部分だけ応答してくれません。KeyUpを使うと問題なく 反応するのですが、KeyDownではカーソルキーを使う際に何か問題があるのでしょうか?
使えたはず
作り方が悪いんじゃね?
366 :
名無しさん@そうだ選挙に行こう :2005/09/10(土) 20:47:56
float test[500][500]; これをするとWinMainで頭で 'System.StackOverflowException'のハンドルされていない例外が xxx.exe で発生しました。 とエラーを吐きます。 float test[250][250]; なら問題ないです。 1MB程度の配列は使えないのでしょうか?
リンカのオプションいじってスタックサイズ大きくすれば取れるかもね。 面倒なら自分で動的に確保or STL
「WM_KEYDOWN ダイアログ」でぐぐってみなかったんだろうか?
>>367 ありがとうございます。多分出来ました。
ローカルではなく構造体に書いていたんですが、それがまずかったんですかね。
ようするに367
VC以前の問題
金出せば買えるんだね
VC++ってC++とどこが違うんですか?
>>375 日本語って日本語ワープロとどう違うんですか?
って言ってるのと同じ。
逆だった。 日本語ワープロって日本語とどこが違うんですか? だな。
IMAPIを使ったライティングソフトを作るとしたら 開発側とクライアントでどういった環境が必須になるんでしょうか? 例えば 開 発 :WinXPSP1以降 VS.NET2003以降 クライアント:WinXPSP1以降 .NET Framework1.1必須 みたいな
>>375 VC++ → 製品名
C++ → 言語名
>>375 まずプログラミング言語C++がある。
MSが作ったC++のコンパイラとMFC/ATLなんかのライブラリをつけた製品がVC++。
しむらー!IDE!IDE!
dllについてなんですが、 関数呼び出しをdll形式にするとメモリの節約になるのは分かるのですが、 関数の実行速度についてはどうなんでしょうか? ダイナミックリンクと、スタティックリンクではどちらのほうが実行速度が速くなりますか?
VCTKがあるからパッケージ内容にIDEやATL・MFCが含まれるとは限らない
>>382 呼び出しオーバーヘッドがほんのちょっと増えるだけでたいして変わらんと思うけど。
>>382 メモリの節約じゃなくて、EXEが占める容量の節約だろ
>>385 複数のプログラムで同じDLLを使うとメモリの節約になる。
気になるんなら自分で試してみるだけだ 自分で試して違いがわからんのなら聞いても無駄
388 :
382 :2005/09/12(月) 00:22:54
実験してみました。 実行時間比 ダイナミック:スタティック = 1000:700 でした、予想では9割くらいしか違わないと思っていたのですが、 ダイナミックとスタティックでは7割も違っていたので驚きました。
>>388 そんな馬鹿な。どんな実験したの?
ほとんど何もしないようなDllエクスポート関数を
何回も呼び出したんじゃないの?現実にはそんなことはないわけだからね。
390 :
382 :2005/09/12(月) 20:27:42
全ての関数をDLLにして実行しました。 関数の中の関数もDLLにしたんですが、普通はしないもんなんでしょうか?
全ての関数・・・(´Д`i|)
>関数の中の関数もDLLにしたんですが 詳しく
393 :
382 :2005/09/12(月) 22:49:44
funcall(void) { func1(); func2(); func1(); ....... } func1() { i++; ........ func3(); } こんな感じで関数が作成されているとき、 func1(), func()2, func3()全てをDLL化しました。 なんか皆さんの反応を見ると funcall()だけをDLL化したらよかったような気もします・・・ 現在は funcall_dss() { funcall(); } こんな風に主要な関数だけDLL化するようにしました。
何でもDLLにすれば良いと思っているんじゃないか?
>>393 DLLにする意味わかってやってるのか?
わかってやってたらこんなことにはならんわな
>>393 一般的に、DLL化する目的として以下の項目が挙げられる
・複数のプロセスorアプリで共通のデータおよび関数を使う
→ディスク容量/メモリサイズの節約
・DLLとして関数群を独立させることで、作業の効率を高める
→個別にメンテ/拡張できる
→DLLを修正しても、インタフェースに変更が無ければ、呼び出し側の再コンパイルは不要
・独立した機能(サブセット)として分割することで、生産性/利便性を向上させる
→インタフェースさえ一致していれば、他言語で書いたDLLも使用可能
→他人が作った同機能のDLLも使用可能
つまりは、複数のモジュールで共通で使用するような関数やデータの集まりを
DLL(or スタティックリンクライブラリ)としてまとめるわけた。
マウスカーソルの置く位置を変えるAPIはなんですか
聞く前に自分で調べろ
SetCursorPos
自宅でVisual C++ 6.0 Standard Editionを使用しています。 次の機能を使いたいのですが、Standard Editionでは使えません。 ・プロファイル ・最適化 ・実行時ライブラリの静的リンク Visual C++ .NET Standard Version 2003ではこれらの機能は使えるのでしょうか?
もうすぐ2005でるけど
>>402 何寝言言ってんだあんた・・・
あんた本当に6.0SE使ってんのか・・・
>>402 >次の機能を使いたいのですが、Standard Editionでは使えません。
>Visual C++ .NET Standard Version 2003ではこれらの機能は使えるのでしょうか?
あんたに使えるか、という質問なら仮令2003でも使えないだろうね。
プロファイラがどういう状況で必要になるかといえば、 例えば1つのシステムを大勢で開発している場合だろう。 システムの統括者が、どの部分に問題があるか調べたいと思った場合 自分の書いたソースならともかく、人が書いた膨大な量のコードを調べるのは大変 こいう場合にプロファイラなどのツールが役に立つ。 あと会社の場合、監査結果などのドキュメントを残す必要もある。
なんだ突然
>>404 本当に6.0 SEでは使えませんよ。ちゃんとヘルプに書いてあります。
画面ではグレイ表示されて選択できません。
Visual C++ の各 Edition Microsoft Visual C++ 6.0 は、Standard、Professional、Enterprise の 3 つの Edition があります。 Standard Edition 上級者向け Visual C++ ツール セットを使いながら、C++ 言語を学習します。 Standard Edition には、Professional Edition の機能がほとんど揃っています。 コードの最適化、プロファイラ、MFC ライブラリの静的リンクの 3 機能だけがありません。 Professional Edition Windows 95 や Windows NT など、Win32 プラットフォーム向けのアプリケーション、サービス、およびコントロールを開発します。 オペレーティング システムのグラフィカル ユーザー インターフェイスまたはコンソール API を使用できます。 Enterprise Edition インターネットまたはイントラネット向けのクライアント/サーバー アプリケーションを開発し、デバッグします。 Enterprise Edition には、Professional Edition の全機能のほか、SQL データベースの操作用ツール、SQL ストアド プロシージャのデバッグ用ツールが揃っています。 Visual SourceSafe のソース コード管理システムを使用すると、チームでの開発が容易になります。
静的リンクできないのはMFCだけやん。
そんなにやりたければMFCのソースからビルドすればいいだけ
>>408 =
>>409 確かに自分で選択はできない
自分で選択できないだけで、Releaseビルド時には最適化されとる
プロジェクト→設定→C/C++タブで確認してみれ
Debug時は無効、Release時は速度になっとるわ
>>412 IDE上ではそうなってるけど、コンパイラが最適化オプションを無視してるという可能性はないの?
コンソールからコンパイラ起動すれば 最適化コンパイラならOptimizing Compilerと表示されるはず C:\tmp>cl Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3052 for 80x86 Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
スタンダードとその他ではcl自体同じ物なのかな?
>>412 VC++.NET2003Standardだけど確認してみたらそうなってた。
もしかしてReleaseビルドすれば最適化されるのか!?
いや、、そんな事はないとは思うが…。
最適化はコムパイラの重要なおすぃごとでつ
結局最適化を気にしてるのは 最適化されるかどうか自分で確認すらできない馬鹿ばっかりだということだ
professional持ってるから最適化なんか気にしたことないし
>>420 そんなに自虐しなくてもいいんだお?(^ω^)
o
425 :
デフォルトの名無しさん :2005/09/18(日) 04:25:43
>>420 >>423 (`m´#)ムカッ
W(=0=)W ガオォー!!
(ノ ゚Д゚)ノ ==== 彡┻━┻
\(`O´θ/エ~イ キックじゃ!バキッ! ☆/(x_x)顔文字
(((((((三 三 三 ( ▼_▼) ダッシュ!
逃がさん ( ▼_▼)―C<―_-)
( ▼▼)//(ノ××)ノ バシバシ!
ウラァ ( ▼_▼)=○ ☆()゜O゜)
エイッ! (ノ`ヘ´)ノミ...●
プハー ○o。.(-。-)y-~~
link.exeからc*.dllを使うらしいので、standardのlink.exeが使いたければ、 退避させたあとstandardのlink.exeとlink.exe.configを同じフォルダに コピーする必要があるかもしれない。
427 :
デフォルトの名無しさん :2005/09/19(月) 19:54:54
猫でもわかるWindowsプログラミングを始めたのですが、いきなりサンプルファイルでコンパイルエラーがでてしまいました。 キャストがおかしいみたいなエラーなのですが、VC++は初心者なのでいきなりつまずいて困っています。 \projects\sample\sample\sample01.cpp(58) : error C2440: '=' : 'LPCSTR' から 'LPCWSTR' に変換できません。 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 \projects\sample\sample\sample01.cpp(85) : error C2664: 'CreateWindowExW' : 2 番目の引数を 'char [9]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照) 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 エラーメッセージは上記です。よろしくお願いします。
428 :
427 :2005/09/19(月) 19:56:17
VC++2005EXPRESS beta2とPlatform SDKでコンパイルしてます。
プロジェクトのプロパティの [全般] -> [文字セット] を "マルチ バイト文字セットを使用する" か "設定なし" にすれば通ると思う が、窓プログラミングになれてきたら LPCSTR を LPCTSTR、char を _TCHAR にして _T( ) を利用したコーディングすることをお勧めする。
430 :
デフォルトの名無しさん :2005/09/19(月) 20:16:56
>>429 ありがとうございました。
設定なしにしたところ、コンパイル通りました。
WindowsSDKは知らないことだらけなのでこれから少しずつやっていきたいです。
>猫でもわかる やめとけ まともな本買って勉強するのが結局は近道
猫の内容はずいぶん古い
433 :
デフォルトの名無しさん :2005/09/19(月) 21:03:45
猫の糞サイトの尻拭いさせられるのも納得いかんな 自前でトイレットペーパーぐらい用意しろよ
つか猫スレがあるから検索汁
あのサイトなぜ修正しないの? みつけにくい所に注意書きはあるのに
猫だから
修正したら本が売れなくなるからだろ。
438 :
スタティックライブラリを自作したい :2005/09/19(月) 23:37:12
VC++6.0 で自作のスタティックライブラリを作成しそれを他のプロジェクト から利用としていますがよく分かりません。 現状行っているのは 1. プロジェクト作成時にWin32 Static ライブラリを選択 2. 「プロジェクト->プロジェクトへ追加」を選択し、hoge.cpp hoge.hを追加 3. コンパイル 以上でライブラリの作成は完成のつもりでいます。 そして 1. 別のプロジェクトをMFC AppWizard[exe]で作成 2. 自作ライブラリを使いたいので #include "hoge.h" と書いています。あと include やリンク?のパスを通せばいい という感覚でいるのですがいまいち設定法が分かりません。 (色々やってみましたがうまくいきません)。 ライブラリの作成の仕方やその使い方を教えていただけないでしょうか。 よろしくお願いします。
440 :
名無しさん@お腹いっぱい。 :2005/09/20(火) 03:31:55
windows XP でシリアル通信をしようとしました。 HANDLE iComm; iComm = CreateFile("COM1",GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if(iComm == INVALID_HANDLE_VALUE){ // エラー処理 } デバイスマネージャには、COM1しかないのに、いつもエラー処理になります。 どーしてもCOM1ポートのハンドルがとれなくて、先に進めません。RS232Cを使用するために、他に何か設定がありますか?
うちの Win2000 と WinXP で、そのコードでハンドル取れたぞ?
442 :
名無しさん@お腹いっぱい。 :2005/09/20(火) 04:38:42
440です CMSCommを利用して、 SetPortOpen(true)を使用したところ、 一度だけ開いたのですが、その後、何度やっても 「ポートは既に開いています」が表示されてしまいます。 閉じ忘れかと思い、パソコンを再起動したのに、 それでも表示されて開きません。 CreateFileでも、やっぱりだめなままです。。。。 再起動しても、ポートは閉じられませんか? 何かポートを故意に閉じる方法ってありますか?
443 :
デフォルトの名無しさん :2005/09/20(火) 05:47:27
VC++6.0でやってます scanfで数値を一文で横に入力するようにするにはどのようにプログラムすればいいでしょうか? 100 200 300 と入力する感じにしたいのです よくわからなかったので scanf("%d %d %d",&a,&b,&c)みたいにやってみたのですが これだと縦に 100 200 300 と入力するようになってしまいます やりかた教えてください あと小数点つき123.45とか入力した場合 途中で終わってしまいます 小数点入り数値を入力しても大丈夫なやり方も教えてほしいです
scanfはCの標準関数だから Cスレで聞いた方がいい
446 :
デフォルトの名無しさん :2005/09/20(火) 06:15:00
初歩の質問ですみません リソースを編集するときに コントロールボックスがなくて困っています。 どうしたらでてくるのでしょうか お願いします。
ツールバーを右クリック
448 :
デフォルトの名無しさん :2005/09/20(火) 06:20:06
すばやい回答ありがとうございます 助かりました^^;
VCとか関係なく、Winアプリの基本だな?
450 :
346 :2005/09/20(火) 09:33:26
、、、。
>>442 GetLastError して、エラールックアップしてみれ。
>>450 Visualくわんてぃふぁい
ぴゅーりふぁいがメモリリーク検出
453 :
デフォルトの名無しさん :2005/09/21(水) 00:38:57
CMSComm *pMSComm = new CMSComm(); pMSComm->Create(NULL,WS_VISIBLE,CRect(0,0,0,0),this,2000,NULL); >>>ポート設定のパラメータ・・・ pMSComm->SetPortOpen(true); >>>送信処理 pMSComm->SetPortOpen( false); delete pMSComm; CMSComm を newして、Create して、delete すると、delete直後に warning: calling DestroyWindow in CWnd::のメッセージが表示されます。 どーしてわからないんですが、誰か教えてくれませんか。
そのまま。ウインドウを持つクラスは、始末するまえに DestroyWindow呼んででウインドウを破棄しとけ、と言う話。
インリン関数
456 :
デフォルトの名無しさん :2005/09/21(水) 01:05:10
>>454 ありがとうございます!!!できましたー!!!
458 :
デフォルトの名無しさん :2005/09/21(水) 02:18:20
質問です。 とあるクラスの関数内で外部から取り込んだポインタの コピーを行いたいのですがうまくいきません。 具体的には以下のような呼び出しを行ってもまったくコピーされません。 何故でしょうか? ------------- class test *tst; tst = new test(); int figure=5; int *figure_a; int*figure_b; figure_a = &figure; tst->reference(figure_a,figure_b); cout<<"figure_aの値:"<<*figure_a<<"\n"<<flush; cout<<"figure_bの値:"<<*figure_b<<"\n"<<flush; delete tst; ------------- void test::reference(int *a, int *b) { b=a; }
呼び元のポインタを格納する変数が更新されていないからだな
460 :
デフォルトの名無しさん :2005/09/21(水) 04:01:15
COleVariant を利用したいのですが、昔のPGの修正で、COleVariantの 宣言とコンパイルは通るものの、なぜかうまく使えません。 afxole.h が見たらなかったので、StdAfx.h の中に、#include <afxole.h>を入れ、 initinstance にて、AfxoleInit を実行したのですが、COleVariantこの変数を 利用するところで、プログラムが落ちます。どうしたら、OLEが使えるようになりますか?
461 :
デフォルトの名無しさん :2005/09/21(水) 04:23:43
http://www.geocities.jp/chiakifujimon/index.html ここを見ながらやっています。
HTMLエディタの3のクリップボードを操ろう で
そこに書かれてあるように関数(SetClipBoard GetClipBoard)
を追加したのですが、このようなエラーがでてしまいました。
Notepad2View.cpp
C:省略\Notepad2\Notepad2View.cpp(160) : error C2556: 'class CString __thiscall CNotepad2View::GetClipBoard(void)' : オーバーロード関数の戻り値は異なっていますが、引数リストは同一です。
C:省略\Notepad2\Notepad2View.cpp(160) : error C2371: 'GetClipBoard' : 再定義されています。異なる基本型です。
c:省略\notepad2view.h(42) : 'GetClipBoard' の宣言を確認してください。
C:省略Notepad2\Notepad2View.cpp(173) : error C2511: 'SetClipBoard' : オーバーロードされたメンバ関数が '<Unknown>' にありません。
どこがダメだったんでしょうか。
分かる方お願いします。
>>461 > オーバーロード関数の戻り値は異なっていますが
だからよ どっかのサイトを見ながらやってんならそこで訊けよ
464 :
デフォルトの名無しさん :2005/09/21(水) 06:35:50
訊いたんですがそのBBSが出会い系の宣伝でいっぱいだったもので ここに来たんですがいけなかったですか?
465 :
デフォルトの名無しさん :2005/09/21(水) 06:38:00
何に対しての「だから」ですか?
('A`)=3
467 :
デフォルトの名無しさん :2005/09/21(水) 07:28:40
質問です。 DLL内から、そのDLLを呼び出した実行ファイルのファイル名を取得する方法はないでしょうか? ファイル名が無理であれば、何でもいいのでその呼び出し元の実行ファイルを特定できるような 情報をDLL側で取得したいのですが・・・。
>>467 GetModuleFilename()の最初の引数を0にすればできると思う。
469 :
467 :2005/09/21(水) 07:44:01
>>468 ありがとうございました。
早速ためしてみます。
>>461 インクルードファイルでSetClipBoardをGetClipBoardで宣言してたりしない?
#そうでなかったとしてもいずれその辺だ。
自分のレベルにあったサンプルじゃないと時間を無駄にするだけ 動かすだけが目的だったらプロジェクトごとついてるやつにした方がいい。
472 :
デフォルトの名無しさん :2005/09/21(水) 08:10:56
>>470 ごめんなさいよく分からないのですが
インクルードファイルはいじってないです。
ただ、メンバ関数の追加から関数を作って、そのまま関数をコピペしただけです。
そこの最後に完成品おいてあるじゃん それ落としてビルドするだけだ 作成したHTMLEditorのソースファイル:src.lzh(227kByte)
474 :
デフォルトの名無しさん :2005/09/21(水) 09:03:28
>>459 有難う御座います、
呼び元を変数内で更新するにはどうすれば宜しいでしょうか?
475 :
デフォルトの名無しさん :2005/09/21(水) 09:03:44
>>473 ビルドしてみましたがHPに書いてあるような機能が実現されてないみたいでした;
それに、何がいけなかったかが分からないと成長したきがしませんでした;
どうも分からないみたいなので、このことは諦めることにします;
こんど新しい本を買うのでそれでがんばってみます
>>474 int**
>>475 > HPに書いてあるような機能が実現されてないみたいでした
いや、書いてあるし…
いろいろ調べが甘いと思うぞ。
C2556 とかも調べりゃいろいろ出てくるし。
>>476 オォォォォォ〜、動きました。
なんで更新されないのかがよく判りませんが
ご教授有難う御座いました。
478 :
デフォルトの名無しさん :2005/09/22(木) 14:58:13
すいません、ダイアログベースでタブコントロールを使ったプログラムを作ってるんですけど、 タブの中のダイアログのデータ交換をするときに親ダイアログのソースファイルに CTab1.Dlg dlg; dlg.UpdateData(FALSE); と書き込んだらビルドできるんですけど実行できないんです。 (Debug Assertion Failedというのが出てきて強制終了させられます) どうすればいいですか?教えてください。
CTab1.Dlg dlg; dlg.UpdateData(FALSE); この2行の間で何もしてないなら まだウインドウが生成されてないように見えるが
つーかタブの中のダイアログってなんだ・・・
481 :
478 :2005/09/22(木) 16:20:09
>>479 すいません、その2行の間は省いて書き込んでました。
実際は
dlg.m_edit = "あああ";
みたいな感じでやってます。
>>480 親ダイアログにタブコントロール貼り付けて、
その中に表示させるものが新しく追加したダイアログってことです。
デフォルトの親ダイアログにはUpdateData関数使えるんですけど…。
タブコントロールの中にダイアログを表示????
>>483 タブコントロールでモードレスダイアログの表示をON/OFFで切り替える。
コストはかかるけどアイテム一個一個の管理を丸投げできるからコーディングが楽になるぞ。
MFC雑技団とかに載ってる。
>>484 ×表示をON/OFFで切り替える。
○表示/非表示を切り替える。
ナゾ日本語スマソ
そんな雑技いらねぇ
Windowsプログラミングでカードゲーム的なものを作りたいんですが、 「画像をクリックして切り替える」ってのをどうやって 再現すればいいのか分かりません。 ヒント的なものをください。 カードの部分を領域指定して・・・って感じですかね? どーもうまくいかなくて・・
全部描きなおし
C++.net Standard版を買いました。 インストールしようとおもったのですが、認証がひつようなようですが、 アンインストールすれば、同一PCで再インストールできるのでしょうか? 可能な場合、アンインストールした別のPCでインストールできるでしょうか?
アンインストール後、 インストールして認証しようとした時に「ダメ」と表示されたら、 電話認証に電話して事実を伝えれば問題ないとか聞いたぞ。
Windowsのカードゲームはcards.dll使ってるんだよな 検索するとサンプルが見つかる
やりたいことが分かってるんなら、 それをキーワードにぐぐる先生なりで調べろや 最初から他人を頼みにするんじゃねぇよ
超初心者的な質問なんですが VC++6.0standardで、フリーウェアを公開することはできるなでしょうか?
>>495 Release版のEXEにReadme.txtをつけてアーカイブするだけ。
お答えいただきありがとうございます。 Readme.txtにはなにをかいたらいいのでしょうか? あとアーカイブするとはなんですか? 初心者ですいません
ReadmeはVectorでいろいろ落としてみるなり、 書き方をググってみるなりして自分で調べろ。 一般的には、インストール方法や動作環境等を書いた簡易説明書。 アーカイブする=ファイルをまとめて圧縮する 少しは自分で調べる癖をつけましょう。 初心者でも、適当なキーワードでググるくらいはできるでしょうに・・・。
変な方向へ話が進んでるな
プログラミングに関係ない話になると初心者が得意になって出てくる
>>498 詳しい解説ありがとうございます。
今度からなるべく自分で調べるようにします。
>>501 なんどかつかったことはあります。
>503 初歩的なこともわからないコピペプログラマのソフトなんて誰も使おうとしないよ
シェアウエア。4000円です。 void main(){}
え?4000円くれるの?
コードを最適化するんじゃなくて、CPUを最適化するんだww
今思えばVBランタイムが起動するだけでいくらかメモリがフラッシュされるんだから 本人の意図はともかく効果はあったんだよな
511 :
デフォルトの名無しさん :2005/09/30(金) 13:07:41
プログラム起動中に熱さフリーズして 立ち上げてみたら バイナリに勝手に変わっちゃったんですが これってもう、どうにもならんもんなのでしょうか。 前バイナリに変わった時は思い出しながら また作って1日つぶれてしもた・・・。
>>512 VC++だったものでここに質問しました。
どこのスレに行けばいいでしょうか
エスパー召集
プログラム起動中に熱暴走でフリーズ その後再起動してみたら ここまで翻訳できた。 あとはタノム。
516 :
511 :2005/09/30(金) 13:32:52
あ、すいません 日本語が壊れてたみたいですね float position; が ノ: ) ( ] = ) mLメ; ) ] ) ( こんな風になってしまいました。 もう、どうにもならんのですね。
いい加減主語を書けってことに気づいてくれないかなぁ。 開発環境も書いてないし。 具体的に言おうか? ・「何が」壊れたのか ・OSは ・開発環境は
そもそもプログラム起動中て何だ ビルドしてできあがった実行ファイルのことを指してるなら、ソースが壊れることはないよな デバッグ中か?
単にHDDか何かが逝っただけだろ
開発中のソースがフリーズにて壊れてしまい テキストとして読めなくなったんだろう。 俺ならすっぱりあきらめる。 ファイルシステムをFAT32とかにしてたんじゃないの?
NTFSなら、普通はフリーズ程度でデータ化けは起きないわな なんだかんだいってもあれのジャーナル処理は強力だから 今時FAT32なんて前世紀の遺物上で開発してた奴が悪い
つーかスレ違いじゃなくて板違い。
ファイルのリンク情報が壊れたっぽいから下手すれば被害甚大だね。
別に叩けば直るんちゃうん?、んなもん
じゃあまずは525を叩いて直すか
TCHARと_TCHARは何が違うのですか?
>>527 は「TCHAR _TCHAR 違い」でググる、ということさえ思いつかないバカなんです。
元宣言見て見ればいいだろうが
530 :
デフォルトの名無しさん :2005/10/01(土) 19:59:35
リソースでコンボボックスコントロールをつけると、実行してプルダウンした時に2ドットぐらいしかメニューが出ないんです。 CreateWindowの方で作ると、何故かフォントサイズが24ぐらいになってしまってわけが分かりません。 プルダウンした時のサイズを変える方法は、どうしたらいいんでしょうか?
超FAQな質問が来たぞ
コンボボックスを貼り付けるときの縦幅がプルダウン時の大きさ 貼り付けたあとのサイズ変更のやり方は忘れた
533 :
デフォルトの名無しさん :2005/10/01(土) 21:12:32
SendMessageという命令は、ハンドルが不正だった等おかしな値があった場合、ポインタでおかしなとこを参照したような意味不明な動きをするんでしょうか? 何故かSendMessageから関数の頭にワープして無限ループに入るバグに悩まされています。
ループしているんじゃなくて、再帰しているんじゃないか? つまり、メッセージ処理ルーチンで自分が受け取ったメッセージを自分宛てに送り直しているとか。
デバッガでコールスタックを見れば一目瞭然
>>534 ところでSendMessageは命令ではなく関数だ。
関数でなくAPIと言いたまえ
539 :
デフォルトの名無しさん :2005/10/03(月) 22:27:42
質問です。 拡張子.c のファイルを 『右クリック→プログラムから開く→Visual Studio.net2003』 で開いてもビルドできません。 プロジェクトを作らずに、
コマンドラインからclつかえ。
541 :
デフォルトの名無しさん :2005/10/03(月) 22:35:32
ビルドしたいのですが。 どなたか、知恵を貸して下さい。
プロジェクト作れ
543 :
539 :2005/10/03(月) 22:58:12
539です。 何度もすみません。 cl.exe をPATHに設定して、コマンドラインからclを打ったらエラーダイアログが出てしまいます。 cl.exe - コンポーネントが見つかりません × mspd71.dllが見つからなかったため、このアプリケーションを開始できませんでした。アプリケーションをインストールし直すとこの問題は解決される場合があります。
スタートメニューの「Visual Studio .NET 2003 コマンド プロンプト」から開始すべし。
>>543 VS .Net 2003だろ。
スタート→プログラム→Visual Studio .Net 2003→Visual Studio .Net ツール→Visual Studio .Net 2003 コマンドプロンプト
これでclが使える状態のコマンドプロンプトが出るはず。
546 :
539 :2005/10/03(月) 23:02:05
Visual Studio.net2003を再インスコ OTL したくないんスけど
547 :
539 :2005/10/03(月) 23:04:59
ダイアログボックスの中にウィンドウを作ろうとしています。 ダイアログボックスの中にウィンドウを作ることには成功しまし たが、ウィンドウのサイズあわせがうまくいかず困っております。 リソースエディタの画面右下を見ながらダイアログボックスのサイズを調整しているのですが、 CreateWindow()で作ったウィンドウとサイズが合わず困っています。 リソースエディタの画面右下で変わっている数字はピクセル単位ではないのでしょうか。 CreateWindow()で横幅を640に設定する。 ダイアログボックスの横幅の数字を560位にする。 コンパイルしてダイアログを呼び出すと、ダイアログボックスのほうが大きいです。 どうやったら解決できるのでしょうか・・・
>>548 コードの中でGetClientRectとAdjustWindowRectを使えばいいんじゃないか?
ありゃ、DLUだから。ダイアログのフォントを MSゴシック(PとかUIではない。固定フォントの方)の 12ptを使うようにすれば、1DLU=2pxになる。
スクリーンの解像度が96dpiの時限定だけどね。
>>548 ドラッグエリアのありなしでもサイズは変わってくるんじゃない?
ダイアログって、クライアント領域のサイズで作るんじゃない?
553 :
548 :2005/10/04(火) 01:00:51
なんか、縦横比も一対一ではないようで八対九くらいっちゅう中途半端な感じでした。 ダイアログは作らずにウィンドウ上にボタンとか配置していくことにしました。 失礼しました。
何がしたかったんかようわからんの
555 :
デフォルトの名無しさん :2005/10/04(火) 10:40:16
質問させてください。 Visual C++ .NET を使っています。 CTreeCtrlの描画を変更したくて、新しいクラスをCNewTreeCtrl作ることにしました。 「クラスの追加」でCTreeCtrlから派生クラスを作成するところまでは分かりました。 ここで、protected なOnPaintをオーバライドしてWM_PAINTをハンドルしたいのですが、 メッセージマップだとかその辺が良くわからなくて、どう書けばいいかわからないのです。 Class Wizardとかその辺の便利なツールから簡単にできるのでしょうか。 識者の方々、どうか方法をご教授ください。 よろしくお願いいたします。
その辺の便利なツールから簡単にできます 頑張ってやってみましょう
プロパティがソリューションエクスプローラの下とかに表示されてるだろ? それの右から2番目のタブのようなものの所にメッセージってのがあるから、 WM_PAINTを選んで右側の空欄からドロップダウンリスト出して、 "<追加> OnPaint()"をクリック。 削除もそこからできるがコメントアウトされるだけなので注意。
蝶初心者ですがよろしくおねがいします <環境> Win2000 VC++.NET2003 なんですが、 Windowsフォームアプリケーションで Form1,Form2を作成。 Form1にボタンを作って作成したForm2をただ開きたいだけなのですが error C2061:構文エラー:識別子 'Form2' などとでて、なかなかうまくいきません。 インテリセンスでForm1も2もでてくるのに… 何か足りないことがあるのでしょうか? ご教授お願い致します
どうせincludeしていないとかそういうことだろ? IntelliSenseは結構その部分ゆるい所がある。
どうせインスタンス作ってないとかそういうことも、だろ?
C++ で新規プロジェクトを作る時に言語「日本語」を選択したんですが、 後から「英語」に変更する事はできないんでしょうか? メニューの表示等を全部英語にしたいんですが。
プロジェクトの設定が英語だろうと、 表示する文字は全部自分で英語にして入力しないといけないのだから、 わざわざプロジェクトの設定を英語にする必要はない
英語でプロジェクト作ってそこへソースを追加が無難 日本語でプロジェクト作って英語のリソースを追加でもいいけど
>>564 > 英語でプロジェクト作ってそこへソースを追加が無難
これでできました。
563様、564様ありがとう。
つーかおめぇ、英語OSで動かすのか? 日本語OSで動かすのに英語で作るのか?
567 :
559 :2005/10/04(火) 16:40:14
>>560 その通り。
インクルードって入れたらできたよ
ありがとう。
で、開くのは出来たんだけど
Form2を閉じだときに
HideしていたForm1をCloseイベントかなんかで
Showしたいんだけど…
parent.show()
>>566 どの言語で動かしても見た目が同じになるようににしろ、て言われました。
ユーザー比率は米国が7割なんで英語が採用されたという訳です。
570 :
559 :2005/10/04(火) 17:46:29
>>568 マジでありがとうorz
あと、年月日を表示したいんだが
和暦(平成とかね)ってだせるのかな?
System.Globalization.JapaneseCalender.GetYear(DateTime) で年号での年数 System.Globalization.JapaneseCalender.GetEra(DateTime) で、明治を1とする数値で、指定したDateTimeの年号を取得できるぞ
使用環境はWinXP ProfessionalでVisualC++.NETを使用しています。 アプリケーションを作ったのですが、そのexeを今使っているXP以外のWin98やMeなどの OSでも使用できるかどうかは実際に試してみる他ないのでしょうか? それともコンパイルやビルド時にどこかで設定できるのでしょうか? 教えてください。
>>572 .NETなら.NETさえ入ってりゃ動く
Win32API使ってるならMSDNのドキュメントに対応してるOSのバージョンとか書いてある
575 :
572 :2005/10/05(水) 02:26:03
>>573 ,572
遅くなりましたが、どうもありがとうございました。
プログラミングとかはじめて何ですけど、 VisualC++を勉強する前にC言語とかを勉強してからのほうがいいですか?
>>576 VisualC++とC言語を同列に持ってくること自体おかしい
VCって言語だと思ってる人(営業とか)多いからOK。
579 :
デフォルトの名無しさん :2005/10/05(水) 17:43:27
>>576 おかしいか?
小学校卒業してから中学に入学する
とかと同じだろ
VCの入門書にこんなこと書いてある 読者はCを知らなければならない。 Cを知らないプログラマにとって、 Windowsプログラミングはスタート地点としてふさわしくないだろう。
>>576 日本語ワープロを勉強する前に日本語とかを勉強してからのほうがいいですか?
と言ってるのと同じだな。
VC++はC/C++言語での開発をサポートする統合開発環境の製品名で
それを勉強することはC言語を勉強することと直接の関係は無い。
C C++ VeryC++。略してVC++
>>581 VisualC++の入門書なのにCやC++も教えている本がかなりあるけど
本当に関係ないと思ってる?
ここってプログラミングとは直接関係ないから板違いだろ 統合開発環境ソフトの操作方法を教えるスレだよな ↓ ↓ ↓ ★初心者にVisual C++を教えるスレ★ Part21
教えないと先に進めないからな
587 :
デフォルトの名無しさん :2005/10/06(木) 16:09:39
Win32 Console Application でプロジェクトを作成しています。 処理の最後で AfxMessageBox を使用してメッセージを出すと、 どうしてもコマンドプロンプトの下にメッセージが出てしまいます。 コマンドプロンプトの上にメッセージを出す方法はありますでしょうか。
1 コマンドプロンプトを出す 2 そのコマンドプロンプトからプログラムを実行
>>587 合ってるかどうか知らんけど、メッセージボックスのハンドルがおかしい時に、下に行ったよ。
なんかの本のサンプルをコピって来たんだろうけど、わしの場合はNULLが指定してあってバグってた。
590 :
デフォルトの名無しさん :2005/10/06(木) 20:59:38
__declspec( restrict ) __declspec( noalias ) __restrict /Oa /Ow マルチスレッドのWin32アプリケーション開発時に、上記キーワードを使ってソースを書いた場合、 クリティカルセクション、ミューテックス、セマフォ、イベント、メータードセクション、 その他諸々の同期機構を使っても、それらを無効化してしまう様なコードをclが吐き出す事は有り得るのでしょうか?
591 :
590 :2005/10/06(木) 21:04:01
Windowsでは暗黙的にebp,edi,esiのレジスタの内容を 呼び出し元に復帰(ret)する前に復元するという話を聞き、 そういった事が絡んで、同期機構が無効化云々するのかどうかも気になります。
592 :
デフォルトの名無しさん :2005/10/06(木) 21:11:02
どなたか、IMEの制御についてご教授ください。 ImmSetConversionStatus()にてIMEモードを切り替えているのですが、 入力モード; 直接 変換モード; 一般等(無変換ではない) という状態はどのようにすればいいのでしょうか? fdwConversionの引数をIME_CMODE_ROMANにセットすれば半角英数にはなるのですが、 直接入力モードの設定方法がわかりません。 これってImmSetConversionStatus() では設定不可能なんでしょうか? Getしても値が変わっておらず・・・。
>>592 ImmSetOpenStatusはどうだろう?
594 :
デフォルトの名無しさん :2005/10/07(金) 09:30:52
VC++.NETのMFC ActiveXコントロールのテンプレートで作成したダイアログを 表示するocxをIEに埋め込んでIEの中でダイアログを埋め込み表示したいです。 (ウイルスバスターオンラインみたいなことを実現したい。) 「もしかして、IEのhWndを取得してocxに渡すのでは?」と思ったのですが、 他に良い方法があるのではないかと思って探しています。 方法をご存知の方、教えていただけないでしょうか?
595 :
559 :2005/10/07(金) 09:38:02
>>571 ありがとう。
しかし、使い方がいまいち判らん…
参照設定とか関係ある??
596 :
559 :2005/10/07(金) 16:06:53
ゴメソやっぱわかった GetEraで4、 GetYearで17 が返ってくるようになった。 平成 って出したい場合if文とか書かなきゃやっぱり無理か。 そして、今度はフォームを(最大化ボタン使わず) 画面全体表示して、 それにあわせてオブジェクトらも真ん中に持っていきたいのだけれど… どうしたらいいかな????
>>596 .Netはよう知らんが、GetEraメソッドの隣にGetEraNameメソッドがあるわけだが。
>>596 仮にメソッドで直接年号取得できないとしても
わざわざifなんて書かなくても配列を使えば済む話なわけだが
>>594 htmlのオブジェクトタグに書けばよいよ。
>>596 最大化使わずに画面全体のサイズにするなら、デスクトップの領域サイズを取ってくればいいだろう
601 :
559 :2005/10/07(金) 18:55:24
>>597 .NET'03でみてみたがないみたいだ、残念
>>598 case文とか?(わかっていない)
まぁ、結局は書かなきゃいけないのね
>>600 デスクトップの領域サイズね。
VBのSCREENみたいなものだろぅ?
それがわかんね…orz
エクスプローラー → ツール → ファイルタイプ で表示されるフォルダオプションダイアログの ファイルタイプタグに 拡張子.tng open"D:\Program Files\tonjiru.exe" /prefetch:7 /Open "%L" close"D:\Program Files\tonjiru.exe" /prefetch:7 /Close "%L" という情報を登録したいのですが、登録の仕方がわかりません。 .regファイルを使えば登録できそうなのですが .regファイルは手書きするのが大変です。 何か簡単な方法を知っている方、ご教授お願いいたします。
>>601 >DateTimeFormatInfo.GetEraName メソッド
>指定した時代 (年号) の名前を格納している文字列を返します。
>Screen クラス
>1 つのシステム上の 1 つ以上のディスプレイ デバイスを表します。
>この型のすべてのメンバの一覧については、Screen メンバ を参照してください。
>System.Object
> System.Windows.Forms.Screen
探すってことができないのかな?
>>602 .regファイルを出力するプログラムを作る。
>>601 >.NET'03でみてみたがないみたいだ、残念
そうか、今度は.NET 2003で調べてごらん。きっと見つかるよ。
>case文とか?(わかっていない)
>まぁ、結局は書かなきゃいけないのね
それもひとつの方法だ。
今時改暦なんて風習を引きずっているのは、世界でも日本くらい。
元々改暦なんて考慮して作られていない可能性もあるし、パッチの提供が遅れる可能性もある。
改暦時に速やかに対応できるように自前で実装するのも、ひとつの考え方としてあっても良い。
>VBのSCREENみたいなものだろぅ?
どうしてもAPIが理解できず、Screenを使いたいなら、
VBでScreenの値を返すActiveX DLLを作るなんてどうだ?
ああそうですか日本くらいですか
>602 自分の環境で関連付けを設定しておいて、REGEDITでその部分だけを.regに出力。 ターゲット環境ではその.regを結合する。
VC++ 7.1を使用しています。 ファイルを読み書きするプログラムを作成していて、デバッグ作業を行っているのですが、 デバッグで実行するとどうやらカレントディレクトリがソリューションのあるフォルダになっているようです。 それを実行ファイルのあるパスに変更する方法ってありますか? この時にちゃんと実行ファイルのあるディレクトリになっていないとデバッグ時だけファイルが読み込めずデバッグになりません・・・。 プロジェクトの設定を一通り見てもそれらしきものはなさそうなのですが、どこかにあるのでしょうか? 初歩的な質問ですが、よろしくお願いします。
>>609 プログラム側で対処した方がいい。
起動時のカレントディレクトリは実行ファイルがあるところとは限らない。
>>609 GetModuleFileNameに自分のインスタンスハンドルを渡してやればフルパスがもらえる(実行ファイル名込み)
612 :
デフォルトの名無しさん :2005/10/09(日) 12:48:49
Visual C++6.0を使用しています。 私はSDLやOpenGLをよくいじるんですが、APIの関数のようにSHIFT + Ctrl + Spaceで引数を表示できるようにできませんか? 物忘れが激しいんでいちいち見に行かなくてはいけないので効率が落ちて困っています。 どこかに設定ファイルのようなものがあるのでしょうか?それともヘルプいじればいいのでしょうか? 教えていただけるとうれしいです。
614 :
デフォルトの名無しさん :2005/10/09(日) 12:57:53
>>613 自作の関数(main.hで宣言)の引数は表示されましたが、gl.hやらglu.hの関数は表示されませんでした。
hの読み込み方が悪いのでしょうか?
ちなみに
-main.h-
#pragma once
#pragma comment(lib, "Opengl32.lib")
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "SDL.lib")
#pragma comment(lib, "SDLmain.lib")
#include <windows.h>
#include <SDL.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <stdio.h>
#include <vector>
using namespace std ;
void QuitGame(int code);
以下略
-main.cpp-
#include "main.h"
以下略
という風に使っています。
改善点があれば教えていただきたいと思います。
>>614 VC6 ならツール→オプション→<ディレクトリ>タブ
インクルードファイルの項目でSDL.hやOpenGL関連のインクルードファイルのディレクトリを指定してやる。
多分これで見に行くようになる気がする。
616 :
デフォルトの名無しさん :2005/10/09(日) 14:03:47
>>615 設定してみましたが、表示されません。
SDLは・・・\IncludeのなかGLは・・・\Include\GLのなかにあります。
GLのほうは設定して一番上に上げましたが、見に行ってくれません。
617 :
デフォルトの名無しさん :2005/10/09(日) 15:11:02
618 :
617 :2005/10/09(日) 15:16:16
あ、すいません。
>>612 さんと全く同じ質問でした。
よろしくお願いします。
>>616 本当だ見てくれないなorz
プロジェクトにヘッダーを追加するしかないみたいですね。
>>619 そうですか・・・
いちいち追加するのも面倒なんでHELP見て覚えるだけ覚えます・・
ご迷惑おかけしました
622 :
デフォルトの名無しさん :2005/10/09(日) 16:43:26
Visual C++.NETをつかっています。初歩的な質問で恐縮ですが, Form1にrichTextBox1があり,Form2でそこのTextの値を使いたいのですが Form2のヘッダに何をincludeすれば良いのでしょうか? "Form1.h"をincludeしてもうまくいきません。
Form1とForm2は他人?兄弟?親子?
妹です。
625 :
デフォルトの名無しさん :2005/10/09(日) 18:26:28
>>623 Form1が親でForm2が子だと思います。
ビルドすると先に出るFormが1で12は1から呼び出す形です。
boolとBOOLはどう違いますか?
BOOL → WinAPI、C99 bool → C++
>>627 C99は_Boolと<stdbool.h>でtypedefされているboolだ。
630 :
617 :2005/10/10(月) 04:12:20
>>619 プロジェクトにヘッダーを追加してもだめなんですが・・・。
632 :
617 :2005/10/10(月) 06:08:35
>>631 はい、しました。
それでもインテリジェンスが機能してくれません。
自分でソースファイル->クラスの追加 等でクラスを追加したり、関数などを追加した場合はビルドに関わらず機能してくれます。
どうしてでしょうか・・・?
>>632 リビルドじゃね?
あとインテリジェンスってなんでぃすか
>>633 知性ってことじゃないの?で617には反応してくれないという。
そりゃぁ、ないもんは反応しないだろ。
1度ブラウザファイルを作る設定でビルドしたらだめ?
たぶんこの辺の情報がないとダメ Common\MSDev98\Bin\win32.ncb
638 :
デフォルトの名無しさん :2005/10/10(月) 15:34:59
質問です。XP、.NET です。 やや大きめの矩形ビットマップ領域(800,600)をある色でクリアしたくて、 CDC::FillRect を用いて塗りつぶそうとしたのですが、 ある入門書で、ExtTextOut を用い、テキストの背景色を利用して矩形を塗りつぶしているものがありました。 (ExtTextOut に渡す表示テキストは NULL です。) かなり驚かされたのですが、これは常套手段なのでしょうか? 矩形を塗りつぶすには、シンプルな方法としてはこれが最良(手軽、高速)な方法なのでしょうか? くだらない質問ですがよろしくお願いします。
激しくトリッキーな塗り方だと思うが?
640 :
638 :2005/10/10(月) 16:15:39
>>639 ありがとうございます。
とくに高速にする必要もない部分なので、素直に FillRect を使うことにします。
>>632 .NETは持ってないので確認できないんで参考になるかどうかワカリマセンが
プロジェクトのフォルダーにソースと同じ名前の .ncb って在りません?
インテリセンスが機能しなくなったら、一度それを削除しちゃってからIDEを立ち上げなおすと
ちゃんと認識してくれたりします。
VisualStudio6ではそれで行けるんですが…
すみません、Visual C++.NETで製作したダイアログをWindows98で実行すると 文字化けしてしまうので、日本語リソースの文字セットをUNICODEからShift_JISに したいので方法はありますか?
WINVERでなんとかなるんじゃね?
自分のソースその他にUNICODEって書いてる部分調べりゃわかるだろうが
#undef UNICODE すれば?
>>638-640 CDC::FillSolidRect() のソース見ろ。ExtTextOut()で塗ってるぞ。
単に純色のブラシ作ってCDC::FillRect()するなら、CDC::FillSolidRect()使ったほうが高速。
647 :
559 :2005/10/11(火) 11:37:50
>>603 >>606 (゜Д゜;)
ありがとう、マジ、ありがとう(涙
今度からは、もっとよく探してみますorz
648 :
デフォルトの名無しさん :2005/10/11(火) 12:08:01
VC++6.0使ってます エクセルファイルにリソースIDと変数名を格納してある状態で VC側からエクセルファイルオープンしてリソースIDと変数名を文字列で取得 この文字列をリソースID、変数名として代替利用できる方法ないでしょうか? defineできって対応させるしかないですか? もうぼけぼけでわけわからんちん
649 :
602 :2005/10/11(火) 13:03:59
>>604 ,
>>608 有難うございます。
エクスプローラー → ツール → ファイルタイプの下位の
「ファイルタイプの編集」にたどり着くことが出来ました。
REGEDITにて2箇所のディレクトリを.regに出力。
2つの.regを結合して1ファイルに編集しても上手くいきました。
よくDvorakとかの配列にするために変換するソフトありますよね。 ちょっと自分のキーボードの配列を変えたいんであれみたいなのを作りたいですが、あれはどのようにして変えているんでしょうか? GetKeyStateとkeybd_eventを組み合わせてやってもうまく動いてくれないんですが・・・ どなたかスムースにうまく動くやり方ご存じないでしょうか。
>>650 コントロールパネル→キーボード→入力ロケール→追加...→キーボードレイアウト→Dvorak
>>651 氏
すいません。CTRLとかEND,HOMEとかの位置を別のキーに置き換えたいとおもったのですが・・
誤解されてしまいました。
Dvorakを例に出したのがまずかったです。
レジストリ書き換えてみます・・ ありがとうございました
メッセージループの中で仮想キーを文字コードに変換してる所があるだろ
VC++.NET2003のWindowsフォームアプリケーション(.NET)のテンプレートで 可変長文字列型を扱いたいと思っています。 <afx.h>をincludeしてCString型を使おうとしてもうまく行きません。 Windowsフォームアプリケーション(.NET)で可変長文字列型を扱うのは 何型が適しているのでしょうか? よろしくお願いいたします。
>>656 でも.NetならSystem::String。
ちなみに非MFCでCStringを使うには<atlstr.h>だってMSDNに書いてあるだろ。
>>656 .NET使ってんだから.NETの検索くらいしろよ
659 :
デフォルトの名無しさん :2005/10/11(火) 22:47:27
VC.NET 2003 でMFCプロジェクト を作っています。 で、初めてActiveXのDLLを使おうとしているのですが、 ぐぐってみても、MSDNで調べてみてもサパーリTT 調べてみて、先ず、 #import "wakaranX.dll" using namespace のようにやってみたら d:\MyProject\MFCProj\Debug\wakaranX.tlh(4966) : error C2366: 'wakaranX;::_doshite::GetAmount' : 再定義; 異なる implementation_key 指定子です。 d:\MyProject\MFCProj\Debug\pscharge.tlh(2286) : ''wakaranX::_doshite::GetAmount' の宣言を確認してください。 上記の様なエラーがどっさり出てきてしまいました。 なにか足りない宣言があるのでしょうか? DLLは市販のもので、商品のマニュアルとサンプルはVBのものしかついていません。 多言語については「なんでもおっけさー!」と書きながら、「それぞれの言語のActiveXの 使い方を見てね」なのです。 <つづく>
<つづき> プロジェクトの参照設定で、system32下にあるDLLを選んで、 ビルドは通りましたが、その後の使い方が???? DLLには各クラス(上の例だとdoshite)があり、 配下に関数(上の例ではGetAmount)が数多あります。 プロジェクト内のクラスでの呼び出し方すらわかりません。 こうして書いていて、我ながら猿以下だとは思うのですが、 こうやるんだよ!ってのをよろしくお願いします。
661 :
659 :2005/10/11(火) 23:32:04
追加 660での参照設定は stdafx.hの記述は削除した上でやっています。
662 :
デフォルトの名無しさん :2005/10/12(水) 00:32:32
どのスレかよくわからなかったのでこちらで失礼します。
xmlの作成で質問です。
検索をかけると、
ttp://www.sutosoft.com/oldroom/devdiary/20040307.html ↑のようなやり方が数多く発見されるわけなんですが、
同じように書いても「引数の数が合わねーぞエラー(C2660)」でどうにもなりません。
同じ環境で上記のようなコードを書いていたりするサンプルがあったりするので、脳がはちきれそうです。
現在は下記のようにやらざるを得ない状態ですが、
↑のような書き方にできる方法があったら是非ともお教え下さい。
---------------------------------------------------------------------------------
#import "msxml4.dll" named_guids raw_interfaces_only
using namespace MSXML2;
・
・
VARIANT_BOOl vBool;
MSXML2::IXMLDOMDocument2Ptr pDoc;
MSXML2::IXMLDOMElementPtr pRoot, pElement;
pDoc.CreateInstance(MSXML2::CLSID_DOMDocument40);
pDoc->loadXML(L"<?xml version=\"1.0\" encoding=\"EUC-JP\" ?>\n<hoge />", &vBool);
pDoc->get_documentElement(&pRoot);
pDoc->createElement(_bstr_t("hage"), &pElement);
pRoot->appendChild(pElement, NULL);
---------------------------------------------------------------------------------
環境:
win2000sp4
VC++.NET2003
MSXML4.0sp2
現在MFCを利用してプログラムを作成しています。 できるだけ正確に60fpsの処理をさせるために以下のようなコードを作りました。 DWORD Now = timeGetTime(); DWORD Last = Now; DWORD PastTime= 0; while(1){ Now = timeGetTime(); if(Now == Last) continue; PastTime += 60 * (Now - Last); Last = Now; if(PastTime > 1000){ PastTime -= 1000; //ここにやりたい処理 } } この状態でも動作は問題なく行うのですが、 どうやらwhileの無限ループを行っているせいか、CPU使用率が跳ね上がってしまいます。 精度を維持しつつ、これを回避する方法はないでしょうか? MFCとはたぶん関係なさそうなので、ここで質問させていただきます。
タイマーかスリープ
665 :
662 :2005/10/12(水) 00:49:32
>662 申し訳ありません、raw_interfaces_only外したらできてしまいました。 何でさっきあんだけ試してできなかったのよ…orz
>>641 その通りやってみましたが機能してくれませんでした。
ありがとうございました。
>>663 ゲームプログラミングか何か?(・∀・)イイナー
Sleepを使うことをお勧め。1ミリ秒程度の誤差がでるかも。
でも、ファミリーコンピューターみたいな滑らかさを実現するには、
ディスプレイの垂直同期のタイミングで描画しないとむりぽ。
タイマーは時間が不正確なのでやめといた方がいいです。
DWORD Now = timeGetTime();
DWORD Last = Now;
DWORD PastTime= 0;
while(1){
Now = timeGetTime();
if(Now == Last) continue;
PastTime += 60 * (Now - Last);
Last = Now;
if(PastTime > 1000){
PastTime -= 1000;
//ここにやりたい処理
}
else{
Sleep(1); //ここでスリープぅ
}
}
670 :
デフォルトの名無しさん :2005/10/12(水) 15:02:07
ダイアログで設定した情報を得るにはどうしたら? ※ダイアログクラスが在るとして 1.グローバル変数 2.INIファイルやレジストリを介す 3.単純にアクセサを使う 4.Observerパターン 5.Win32APIに良くある様に、データを纏めた構造体のアドレスを渡す 自分が思いつくのはこれ位なのですが、「2.」が一般的なんですかね?
671 :
デフォルトの名無しさん :2005/10/12(水) 15:12:09
★シュワルツネッガー知事の拒否で、カリフォルニア州の「反日教科書」法成立せず
・いわゆる「南京大虐殺」など、旧日本軍の残虐行為をカリフォルニア州の教科書に
書き込むことを目的とした法案に、シュワルツェネッガー知事が署名を拒否しました。
この法案は、州の中学高校で使用される教科書について、第二次大戦中にアジアで
起きた出来事に、もっと分量を割くことを求めるもので、先月、州議会を賛成多数で
通過していました。提案者の議員は教えるべき具体例として、いわゆる「南京大虐殺」を
挙げていました。法案を後押ししたのは、日本の常任理事国入り反対の署名活動を
展開した在米の中国人団体らで、「南京大虐殺」などの旧日本軍の残虐行為をアメリカ
で歴史的事実として定着させることが、推進派の最大の目的でした。しかし、拒否権を
持つシュワルツェネッガー知事は7日、「アジア諸国の役割について学習することは、
すでに認められている」として署名を拒否し、法案は成立しませんでした。
http://www.tv-asahi.co.jp/ann/news/web/inte_news8.html?now=20051009245834 ※ニュースは既に削除されています。
エスパー!仕事、仕事!
673 :
デフォルトの名無しさん :2005/10/12(水) 19:02:32
質問です。 動的に変化する2次元配列の配列を作りたいのですが、 どうすればよいのでしょうか? 普通にnew演算子を使って作るのはできるのですが vectorを使った方が都合が良いです。 例えば std::vector< std::vector<int> > matrix; matrix.push_back(std::vector<int>(4)); matrix.push_back(std::vector<int>(4)); … でmatrix[*][4]は作れますよね。 こんな感じで matrix[*][9][4]のような物を作りたいのですが、 上手くいかなくて困り果てています…
674 :
デフォルトの名無しさん :2005/10/12(水) 19:09:51
C++を学ぶ上で、分かりやすい本があったら、教えてもらえますか?
分かりやすいなんて人それぞれだし、スレ違い。
=="MailTest.h"ファイル== #using <mscorlib.dll> #using <System.dll> #using <System.Web.dll> using namespace System::Web::Mail; class MailTest : public CObject { public: MailMessage *tMailTest; -後略- } 上記の様にすると*tMailTestの定義で下記のエラーが3件もでてしまいます。 「error C3265:アンマネージ'<不明>'で、マネージ'<不明>'を宣言できません。」 cppファイル内で内部定義した時にはエラーはでないのですが、 ヘッダーに定義して全ての関数から使用できるようにしたいので、なんとか 解決をと試行錯誤してるのですが解りません。 要素が足りないのかと思って、以下のように定義しても同様でした。 System::Web::Mail::MailMessage *tMailTest; はっきりいってハマってしまいました。 有識者の方々、是非ご教授くださいませ。。。 ちなみに Windows 2000 Visual C++ .NETです。
>>667 Sleepで1ms程度の誤差しか出ないとは運の良い奴だな。
Sleepやタイマーが指定した経過時間で処理を完了することを期待したコードを書いては駄目。
timeGetTimeなりパフォーマンスカウンタなりを使って経過時間を算出し、
経過時間に基づいて算出を行うべし。
>>648 どういう状態を想定してるか分からんが、変数名は無理。
ハッシュのキーなどにすれば文字列で指定可能だけど。
679 :
673 :2005/10/12(水) 20:41:26
すいません、質問するスレを間違えました、 お詫びします…
突然ですみません。
DirectX以外の方法で、ほぼ正確に1/60毎にコールバック関数を呼ぶAPIはありますか?
いろいろ試してみたのですが、マルチメディアタイマーを使用すると、1/60秒から少しずれてしまい(整数msの分解能のため)
1/60秒での処理ができません。
これだとfpsに直すと62fps(16msの場合)になりますよね?
これをほぼ正確に60fpsにしたい場合、何か方法はないでしょうか
http://pc8.2ch.net/test/read.cgi/tech/1128951330/10 これと質問内容は一緒だお。
巧妙なマルチだお。
>※ダイアログクラスが在るとして >5.Win32APIに良くある様に もしかしてMFCのやり方を知りたいんだろうか?
>>681 確かに内容は似てるが質問が全く違うぞ。よく見ろw
686 :
670 :2005/10/13(木) 06:27:44
>>683 ダイアログ等で設定した情報を、親ウィンドウや他のクラスに送信する、
もしくは、その内容を反映させる方法論みたいなのが知りたいんです。
今までは
>>670 の「3」と「5」を組み合わせてやってたんですが、設定したい内容
が増えてゴチャゴチャしてきたもので…。
>>686 その状況で、1を採用してもごちゃごちゃは改善されないと思うが。
688 :
648 :2005/10/13(木) 12:04:04
>>678 返信どもです
変数は_ですか・・・
想定している状態はというと・・・
DBも構造体も他社設計で決まっていない状態で
リソースIDと変数名だけ変更すればその他処理を修正しなくても
いいような感じに持っていきたいと考えてます
で内容は
1.DB→構造体→画面
2.構造体→エクセル
で( ゚Д゚)マンドクセーなので定義ファイルをひとつ作成して
そこにリソースIDとエクセルのアドレス?(A12とか)と変数名を入れておいて
定義ファイルを読んでリソースIDのデータを変数とエクセルに設定できるような
共通関数を作成しようかと想定しています
なので変数を除けばなんとかできそうな感じですよね・・・
いい案あったら教えてくだはい
689 :
667 :2005/10/13(木) 13:40:55
>>681 やっぱりゲームを作りたいのかな?
DirectXでディスプレイ制御を乗っ取らない限り、凄い精度で時間計測できたとしても
グラフィック描画中の状態が見えてしまいます。μ秒単位で時間を取得する方法があるけど、
やっても無駄だと思われ。大きめのゲームセンターに行って「ギガウイング ジェネレーション」
というゲームの画面を観察すると参考になるかも。このゲームは時間計測の方法で描画してます。
一定周期ごとに描画中の状態が見えます。パソコンのDirectXの垂直同期待ち描画は、
処理落ちすると像がブレて画面汚いから、時間計測の方法を使ったと思われる。
(゚д゚;)
691 :
デフォルトの名無しさん :2005/10/13(木) 15:05:48
winXPにしたらVisualStudio6.0がインストールできなくなった! 2005買うしか無いんすか?ポマイラおしえて〜!!
んなこた〜ない。
695 :
デフォルトの名無しさん :2005/10/13(木) 16:22:05
Visual Studio .NET 2002を使ってるのですが DirectX9.0日本語ドキュメントをVS.NETの「検索」範囲(?)に入れられますか? 「ヘルプ」→「検索」で検索して9.0JPN Docの中からも探せるようにしたいです ヘルプらしきものがいっぱい入ってるトコロにインストールしたのですが 無理なようで特別に操作が必要なのでしょうか
VC++.NETのWindowsフォームアプリケーション(.NET)で WindowsフォームContextMenuコントロールを FormなどのプロパティのContextMenu欄を 使わずに表示したいです。 ご存知の方いらっしゃれば教えていただけないでしょうか?
697 :
デフォルトの名無しさん :2005/10/14(金) 13:34:49
>>689 フレーム切り替えって通知されないの?
ていうか、こっちでフレームの切り替え指定できないの?
もちろんタイマーで同期は取らないといけないと思うけど、
タイマー待ちのためにタスクの処理を捨てるのはもったいない。
VS2003で、ウィンドウの中の色を黒背景ベースにできないんでしょうか? テキストエディタだけは、オプション→フォントおよび色変更で変えられますが、 他のウィンドウは白いまま・・・。
簡単に変えれるけど、馬鹿には変えれない
>>699 プログラム板で聞くような内容じゃないな。
コントロールパネルから設定できるだろ。
702 :
デフォルトの名無しさん :2005/10/17(月) 18:51:59
VC++.NETのWindowsフォームアプリケーション(.NET)でMFCのクラスを使いたいと思っています。 StdAfx.hにMFCの定数やヘッダをincludeすれば、MFCを使えることがわかりました。 しかし、ある特定のコンポーネント(WindowsMediaPlayer)と同時に使用すると コンパイルが通りません。 【Form1.h】 01:// 02:// axWindowsMediaPlayer1 03:// 04:this->axWindowsMediaPlayer1->Enabled = true; 05:this->axWindowsMediaPlayer1->Location = System::Drawing::Point(8, 56); 06:this->axWindowsMediaPlayer1->Name = S"axWindowsMediaPlayer1"; 07:this->axWindowsMediaPlayer1->OcxState = (__try_cast<System::Windows::Forms::AxHost::State * >(resources->GetObject(S"axWindowsMediaPlayer1.OcxState"))); 08:this->axWindowsMediaPlayer1->Size = System::Drawing::Size(208, 184); 09:this->axWindowsMediaPlayer1->TabIndex = 4; 10:this->axWindowsMediaPlayer1->MouseUpEvent += new AxInterop::WMPLib::_WMPOCXEvents_MouseUpEventHandler(this, axWindowsMediaPlayer1_MouseUpEvent); 07:で 『d:\tonjiru\WmpCtrlFrm\Form1.h(116) : error C2039: 'GetObjectA' : 'System::Resources::ResourceManager' のメンバではありません。 stdafx.cpp(0) : 'System::Resources::ResourceManager' の宣言を確認してください。』 というエラーが出ます。(エラーが出るのは、この行だけ。) 07:のGetObjectのところを上手く書けば通るような気がするのですが、よくわかりません。 ご存知の方教えていただけないでしょうか?よろしくお願いいたします。
703 :
デフォルトの名無しさん :2005/10/17(月) 19:48:18
VS2005 TeamSuite Beta2 の C++ について、 埋め込みマニフェストが、毎回「はい」になっていてエラーとなる。 これをデフォールト「いいえ」に設定する方法を、誰か教えて。 メニューバーの「プロジェクト」から、 「XXX(プロジェクト名)のプロパティ」 --> 「構成プロパティ」--> 「マニフェストツール」 --> 「入力と出力」--> 「埋め込みマニフェスト」 です。
704 :
デフォルトの名無しさん :2005/10/17(月) 19:58:58
703です。 失礼しました。 VS2005の板があったので、そこへ転載します。
706 :
デフォルトの名無しさん :2005/10/17(月) 23:05:43
CPropertyPageのメソッドでAfxBeginThreadをRuntimeClassの方を引数にして CWinThreadポインタを得ようとすると「メモリが不足しています」って出るね。 AFX_THREADPROCを引数にした方は、余裕で起動できるのに。 メモリを不正参照しているのは分かるんだけど、よく分からない・・・。 だれか原因知っている方いませんか?
707 :
702 :2005/10/18(火) 20:19:07
>>705 適切な方法を教えて頂き、ありがとうございました。
何あのVS2003の使えないIntelliSence ちゃんとクラス作ってファイル追加してんのに、:: も . も反応しやがらねぇ・・・ さすがMSだな
2003に限らないがな。 インテリセンスのバグはいいけがん何とかして欲しい。
それだけ素人が書いた糞コードの解析が難しいって話。
VC++6.0、MFCです class CHoge { CHoge(); enum EHoge { A_BEGIN, A_NUM1, A_END, B_BEGIN, B_NUM1, B_END }; static CString A_Numbers[]; static BYTE B_Numbers[]; }; CString CHoge::A_Numbers[] = {"0"}; BYTE CHoge::B_Numbers[] = {0}; CHoge::CHoge() { ASSERT( sizeof(A_Numbers)/sizeof(CString) == CHoge::EHoge::A_END - CHoge::EHoge::A_BEGIN - 1); ASSERT( sizeof(B_Numbers)/sizeof(BYTE) == CHoge::EHoge::B_END - CHoge::EHoge::B_BEGIN - 1); } 列挙してある中の、各BEGINとENDの間の値の個数と各Numbers配列は同じ個数になるようにします コンストラクタでその個数の正規性チェックをしてるのですが、 2行目のASSERTのところで、「error C2070: sizeof 式のオペランドが、識別子または型名になっていません。」とエラーが出てしまいます 識別子も型名も間違えず書いてあるのに、何故こんなエラーが出るのでしょうか
712 :
711 :2005/10/19(水) 09:15:49
すみません 自己解決しましたorz
>>711 それはsizeof(B_Numbers)だけでもエラーが出ると言うことで宜しいか?
>>712 ここは ROM の人も多いから、皆の後学のために
解決したらだめだった理由を書いてくれるとありがたい
>>709 >いいけがん
こんな事書くヤツのコードなんか解析できっかよ
716 :
711 :2005/10/19(水) 16:42:18
すみません、出かけてて遅れました BYTE CHoge::B_Numbers[] = {0};と書くところを、実際にはBYTE B_Numbers[] = {0};と書いてまして CHoge::を付けてちゃんと書いたらエラーが消えました
717 :
デフォルトの名無しさん :2005/10/19(水) 21:24:02
VC++.NETでWindowsMediaPlayerActiveXコントロールを使って 動画の再生中にWindowsMediaPlayerを右クリックして コンテキストメニューを出した後に、 コンテキストメニューから項目を選択すると WindowsMediaPlayerのClickEventが発生しますが、 コンテキストメニューの何の項目が選択されたのかを 取得する方法がわかりません。 (WindowsMediaPlayerActiveXに該当するイベントが見当たらなかったです。) 何方かご存知の方、教えていただけないでしょうか?
718 :
デフォルトの名無しさん :2005/10/19(水) 23:18:45
リッチエディットボックスを使ってるんですが、 文字のサイズ変更と色変更はできるようになりました。 fgets()で読み込んだあとに先頭に特定の文字列があれば その行だけ色を変えたいのですが、リッチエディットボックスでの 実装方法を教えていただけないでしょうか。 if(strncmp(ss, "for", 3)==0){ //ここにいろいろと処理を追加したい。 }
719 :
デフォルトの名無しさん :2005/10/20(木) 09:24:45
お世話になります。よろしくお願いします。win2000、VC++6.0MFCで 作ってるのですが、メンバ変数のポインタからメンバ関数を使いたいのですが。 メンバ変数に追加するだけでメンバ関数って使えないのですか? メンバ変数の設定は値、CStirngです。
使える ドットでやってるとか言うなよ?
721 :
デフォルトの名無しさん :2005/10/20(木) 09:54:19
ドットでした。どうすればいいのですか? -> ←これですか?
そうだよ
723 :
デフォルトの名無しさん :2005/10/20(木) 11:40:39
いやいやあの〜〜〜 メンバ変数.メンバ関数()でやるにはどうすればよろしいでしょうか? 値ではなくコントロールにすればいいですか?
ポインタ->メソッドの何が気に入らんのやら・・・
どうでもいいが
>>720 のエスパーっぷりに感動した
(*メンバ変数).メソッドでやれば
729 :
デフォルトの名無しさん :2005/10/20(木) 12:44:13
m_ProcCnb.GetCurSel();みたいに使いたいんですけど。。。。
>>729 使えばいいじゃん。
だから、なにをしたいんだってばさ。
731 :
デフォルトの名無しさん :2005/10/20(木) 12:57:22
->でも使えないんです。
小出しじゃなくてもっと要点をまとめて、 いっぺんにしっかりと説明しる
733 :
デフォルトの名無しさん :2005/10/20(木) 13:06:34
コンボボックスで選択された項目の格納されてるデータを エディットボックスに出力したいんですけど、
ひとりごと?
1.何をしたら 2.どうなったか せめてこれだけでも書いてくれ いくら使えない使えないって言われても、使えるよとしか答えれるわけないじゃん
736 :
デフォルトの名無しさん :2005/10/20(木) 13:17:46
どういう手順で行えばいいのかわかりません。 自分で考えた↓ 選択されているデータのインデックスを取得 ↓ 選択されているデータ取得 ↓ 取得した文字列をエディット・ボックスへ出力 だと思うんですけど、インデックスを取得する時に メンバ変数を使ったほうがいいのかと思いました。
御前様は箸の上げ下ろしも教わらないとできませんか。そうですか。
コンボボックスならGetWindowTextでいいんじゃないか? リストじゃなくてわざわざコンボなわけだし
「メンバ変数」とはDDX変数のことで、たぶんUpdateData()をしていないのだろう。 じっちゃんの名にかけて。
740 :
デフォルトの名無しさん :2005/10/20(木) 15:13:32
UpdateDataはしたんですけど、だめでした。
初めまして。この度は一つ質問させて頂きたく参りました。 現在、手元に、「main.cpp」「StdAfx.h」「Ed.sln」「Ed.vcproj」があるのですが、Ed.exeファイルにコンパイルする方法が分からなくて困っています。 仕様しているソフトは、「Microsoft Visual C++ 6.0」です。 初歩的な質問になってしまいますが、よろしくお願い致します。m(_ _)m
文字列の最後から、指定した文字列が存在するまでのバイト数を返すような 標準関数ってありませんか? "文字列取得"とかで調べたんですが、見つかりませんでした。 ご存知でしたら教えてください。
strlen()で全体の長さ調べて、strstr()で先頭からバイト数調べて引いちゃだめなの?
744 :
デフォルトの名無しさん :2005/10/20(木) 18:06:47
2年近く使っていてまだこのレベルかと自分が情けなく思うのだが 質問したい。 VC++6.0をwin2k環境下で使っているのだが、上司に 「デバッグするのにspy++つかわんのか?」といわれて 「あれ、どうも馴れてなくて」とその場は流したのだが、たしかに基本機能に 近い位置にあるものだし、あと10年はキーボード叩いてメシ食べたいし、 知識がほしいのです。 spy++の基本的な使い方から解説してくれてるような書籍/サイトが あったら教えてください。 よろしくおねがいします。
>>741 どっから持ってきたんだよそのファイル群
そら.NET対応になって以後のVisualStudioのファイルだVC++6じゃない
>>742 最後だから strrchrがいいんでない?
>現在、手元に、「main.cpp」「StdAfx.h」「Ed.sln」「Ed.vcproj」があるのですが main.cpp ひとつコンパイルするだけじゃないか
749 :
742 :2005/10/20(木) 19:15:27
>>743 さん , 747さん
strrchrで無事解決しました、ありがとうございました。。
750 :
デフォルトの名無しさん :2005/10/20(木) 21:07:41
DiskMirroringToolっていうミラーリングツールの公開されているソースを参考にし、 ミラーリングツールを自作してみたのですが、なんか、変な現象に悩まされているです。 自作のツールのみを起動させて実行させるとコピー速度が遅いのですが、 DiskMirroringToolと一緒に起動させて、走らせると、DiskMirroringToolが コピーしている間だけ、自作ツールの方のコピー速度もつられて(?)早くなるのです・・・。 こんなことって、何が原因で起こってるか分かりますか?VC6です。
キャッシュ
>>745 ,746,748
お返事ありがとうございます。
745さんのおっしゃるもので、sln,vcprojファイルを変換したのですが、ビルド時にエラーをはいてしまいました。
後、勘違いしていたのですが、コンパイルではなくビルド(?)したいという事でした。
説明不足ですみませんでした。
このファイル群は友達に貰ったものなのですが、VisualStudioが必要という事なのでしょうかね・・・。
ご親切にアドバイスありがとうございましたm(_ _)m
学生時代にc++5.0を買ってそのまま眠ってたのですが、 最近仕事を辞めて時間できました。 もう一度勉強してみようと思うのですが、楽しくC++勉強できる本などありますか?
755 :
デフォルトの名無しさん :2005/10/20(木) 21:53:12
>>キャッシュなんですか・・・ キャッシュを使ってコピーするっていう方法は VCで、どうやるのでしょうか? DiskMirroringToolは単体でも早いのに、自作ツールの方は 上のツールと一緒に動かさないと早くならないなんて・・・ DiskMirroringToolのソースみてもどこが該当するのか分からんTT
学生だったら4000円もあればVisualStudioを買えるんだけどな
VC++とC++は別物だから
>>752 sln、vcprojはVC7のソリューションファイルとプロジェクトファイルで、
VC6ではそれぞれdswとdspに対応する。
それ自体はテキストファイルだから必要ならテキストエディタで見るとして、
VC6で空のプロジェクトを作ってそれにmain.cppを追加してビルドすればいいだろう。
VC7のファイルだけじゃねぇよ
761 :
717 :2005/10/21(金) 13:52:29
別のConTextコントロールを作成して 任意のHWND上にConTextコントロールを表示する方法で 解決いたしました。
762 :
デフォルトの名無しさん :2005/10/21(金) 13:53:34
Windowsの画面の右下の時刻の所にマウスカーソルを持っていくと、 黄色の背景に年月日がポップアップ表示されます。 VC++のTextBoxコントロールで、上記と同じ様にポップアップを 表示させる機能を付けたいのですが方法がわかりません。 どなたか知っている方、教えていただけないでしょうか? よろしくお願いします。
タイトルバーを持たない、2Dボーダーのポップアップウィンドウ作って表示すれば?
CToolTipCtrl?
765 :
762 :2005/10/21(金) 14:26:01
>>763-764 ToolTipの存在を初めて知りました。
ToolTipコントロールを使って
即行解決しました。
ありがとうございます。
766 :
デフォルトの名無しさん :2005/10/21(金) 21:24:18
課題レポート1 VC6sp6XPhomeでSDIでCstudentを作成しました。 プロジェクト内の*.hと*.cppをセットで全てソースコードを 印刷せよ。2段組8pとすること。 いままでは、寺パットでtmp.txtに貼りつけてましたが いい加減疲れました。世の中にそんなeditorが存在したら教えてください。 秒殺で仕上げられるのなら、方法をご教授ください。
貼り付けで我慢しる
そういうプログラムを作る。これ最強。
769 :
デフォルトの名無しさん :2005/10/21(金) 21:39:56
766です >貼り付けで我慢しる >そういうプログラムを作る。これ最強。 そんなこと言わないで教えてください。 とりあえず、こんな漢字で始めようと思います。 最後尾にキャットしていけば、できようですが、*.cppで 改ページしたいです。 #include <iostream> #include <fstream> #include <algorithm> #include <string> #include <vector> using namespace std; int main() { ifstream in_file( "C:\\My Documents\\*.txt" ); if ( ! in_file ) { cerr << "ぼけ\n"; return -1; } ofstream out_file("C:\\My Documents\\PjAll.txt" ); if ( ! out_file ) { cerr << "はげ\n"; return -2; } ifstream in_file2( "C:\\My Documents\\*.txt" ); if ( ! in_file ) { cerr << "ぼけ\n"; return -1; ・ string word; vector< string > text; while ( in_file >> word ) text.push_back( word );
>>766 Perlでも使ってtmp.txtを作ってエディタに開かせて,
そこからゴニョゴニョ
772 :
デフォルトの名無しさん :2005/10/22(土) 00:26:41
766です。 >つ[cygwin] ウニわかりません。かんべんしてください。 >そういうプログラムを作る。これ最強。 大分完成に近づいてきました。力を御菓子ください。 ■WS内の*.hto or *.cppをワイルドカードで検索し、fname_fileに出力 ■fname_file内のファイルを順番に読み取りPjAll.txtの後部に連結 ■PjAll.txtを直印刷。 ■オプション //改ページ の文字を見つけたら次ページ 予約語 青、コメント 緑 ■週末に疲れた死似そう、横にならしてください。 /次のコードで現在のディレクトリにあるすべてのファイルを列挙できます。 //各ファイルの名前が出力されます。 #include <afx.h> CFileFind finder; //ここ↓がワカリマセン BOOL bWorking = finder.FindFile("*.*"); while (bWorking) { bWorking = finder.FindNextFile(); fname_file << (LPCTSTR) finder.GetFileName() << endl; }
VisualStudioとMSWORDですぐ出来るけどな。
774 :
デフォルトの名無しさん :2005/10/22(土) 00:32:22
>VisualStudioとMSWORDですぐ出来るけどな。 スイマセン教えてください。お願いします。 もしかしてマクロで秒殺ですか?
>>774 やりたいことが今ひとつよくわからないんだけど、Ctrl+Aでソースの全範囲選択して
コピペするだけで予約語は青いしもそのまま出るしコメントアウトは緑。
やや横が足りないから適宜改行してやる必要があるけどね。
×青いしもそのまま ○青いしインデントもそのまま
777 :
デフォルトの名無しさん :2005/10/22(土) 00:57:47
766です 説明が下手ですいません。以下を全自動で印刷処理したいです。 だだし、DO(2段組(1段は97行)、 MSゴシック8p); 任意のプロジェクトでやりたい。 最終的には、VisualStudioのツールメニューのボタンから実行したいです。 StdAfx.h+StdAfx.cpp印刷 Student.h+Student.cpp印刷 StuDoc.h+StuDoc.cpp印刷 StuView.h+StuView.cpp印刷 ・ ・ ・ クラスの数だけ
2段組ってのがよくわからないんだけど? 俺が無知なだけな気がするが
紙1枚に2ページ印刷するやつかと なんていえばいいんかな、2分割とか4分割とかして印刷ってオプションあるじゃん、プリンタに コマンドラインから印刷する方法調べて、バッチファイルでも作ったらだめ?
780 :
デフォルトの名無しさん :2005/10/22(土) 01:14:02
>2段組ってのがよくわからないんだけど? A4縦の紙を縦に2つに折ります。左が1段、右が2段です。 有名なテキストエディターの寺Padの印刷の中に段組と言う設定があります。 有名なテキストエディターのxyzzyの印刷の中に段組と言う設定があります。 こだわるか理由はA4の紙で190行のコードが印刷でき、約3枚位で電車の中、 トイレの中でコード解析ができます。 わたしに言わせれば、Cmagaのコード印刷は超人的に微細です。
MSWORDの印刷オプションに一枚当りのページ数って言うのがあるけど これじゃまずいの?
782 :
デフォルトの名無しさん :2005/10/22(土) 01:24:32
766 あなたの小規模のプロジェクト内のファイルを全て 有名なテキストエディターのxyzzyで2段組で印刷してみてください。 それを全自動でやりたいです。LISPもわからないですし、秀丸マクロもなしでお願いします。
783 :
デフォルトの名無しさん :2005/10/22(土) 01:30:54
>MSWORDの印刷オプションに一枚当りのページ数って言うのがあるけど >これじゃまずいの? まずいです。やってみてください。 書式>段組>2段です。 それよりも全ファイルをWORDに書き込むやり方を教えてください。
つ[cmd.exe]
785 :
デフォルトの名無しさん :2005/10/22(土) 02:25:10
>784 名前:デフォルトの名無しさん :2005/10/22(土) 02:08:52 >つ[cmd.exe] いろいろお世話になりますが、引数は全て手打ちするのでしょうか? サンプルコードをご教示していただきたく深く強く激しくお願いします。 ファイルを結合するには、以下のように入力します。 a.txtとb.txtの内容を結合して、c.txtにします。 //hage.bat copy a.txt+b.txt c.txt/append copy c.txt+d.txt f.txt/append copy h.txt+i.txt j.txt/append
787 :
デフォルトの名無しさん :2005/10/22(土) 03:59:32
教えてください。 フリーで使えるカスタムコントロールって 無いでしょうか? 出来ればソースが公開 されているものが良いのですが・・・
そういうの、2段組って言うんじゃなくて、2カラムって言うんですよ
789 :
デフォルトの名無しさん :2005/10/22(土) 09:49:20
(´,_ゝ`)<専門用語は分かりませんか?
791 :
:2005/10/22(土) 10:34:48
>>>(´,_ゝ`)<<<専門用語は分かりませんか? 大衆用語を使えよ。ボケ
792 :
デフォルトの名無しさん :2005/10/22(土) 10:54:37
おしえてください。 class A { func1()... }; class B { func1()... }; class C : public A { func1()...{ func(); } }; この場合に、Cと実装が同じでBを継承したDを作りたい場合、 どのようにすればいいでしょうか? class C : public Aと書いた時点でAを継承するのですが、 C自体の実装は全く同じで、Aの替わりにBを継承したDを 作りたいのですが。。。 class D : public C , public B だとCはBを継承していないのでダメだと思うので。。。
は?
794 :
792 :2005/10/22(土) 11:03:52
ごめんなさい。 よく理解していないので、説明が悪いのだと思います。 やりたい事は下記のようなことです。 いぬ、ねこ、たぬき 調教師 ここで、 いぬ の調教師 ねこ の調教師 たぬきの調教師 を作りたいのですが、いぬ・ねこ・たぬきが調教師 を継承するのではなく、調教師がいぬ、ねこ、たぬき を継承するようにしたいです。
設計を見直す。
エスパーを呼ぶ。
調教師 is a たぬき
798 :
792 :2005/10/22(土) 11:30:21
すいません。 例えば、ファイルシステムにFATというのが有りますが、 FATは主にデータ構造としての実装になるかと思いますが、 具体的な実装では、HDDやSDやFlashというような感じで 媒体が異なる場合などに、FATというクラスを作って、 このクラスFATから、HDDやSDやFlashへの読み書きを 行うためのクラスを使いたいという場合が多々あると思うの ですが、この場合、実装上はHDDやSDやFlashへの 読み書きを基底クラスとして、FATを派生クラスとできる 方が理想的だと思うのですが、このような実装を行いたい 場合、どうすればいいのでしょうか?
>>792 よくわからんが
template<class Base> class C : public Base
{ /* ・・・ */ };
ということ?
>>798 よくわからんが、主語はどれで述語はどれ?
801 :
デフォルトの名無しさん :2005/10/22(土) 11:37:58
>>799 ありがとうございます。
こういう場合には template を用いるのが最適な
方法でしょうか?
仮想基底クラスというのが関係あるのかなーと、
勉強しているのですが、templateそのものは
オブジェクト指向とは別物だと思っていましたので、
出来ればクラス構造だけで実装できればスッキリ
するかな・・・と思ったのですが・・・
根本的に勘違いしてますでしょうか?
>>798 そういう場合は、デバイスを操作する抽象基本クラス(Device)とFATクラスに分ける。
FATクラスはDeviceクラスを操作する方法さえ知っていればいい。
実際の物理デバイスへの操作は、Deviceを継承・実装した
HddDevice、SdDevice、FlashDeviceクラスに任せればいい。
>798 FAT is HDD? 理想的も何も、is-a関係の成り立たない、そいつらを 継承関係にもっていくのは無理だろ。
804 :
798 :2005/10/22(土) 15:01:18
>>802 >>803 ありがとうございます。
構成手法として、
FATclassとHDDclass を多重継承した、HDDFATclassを
作って、このHDDFATclassでFATclassとHDDclassを操作
するという構成にするのが正規の手法という考え方で良い
でしょうか?
805 :
798 :2005/10/22(土) 15:02:39
すいません。 抽象基本クラスに実際の動作を反映させる 手法の具体例を教えて頂けないでしょうか?
初心者スレ荒らすなよ よそへ行ってやってくれ
807 :
798 :2005/10/22(土) 15:15:34
すいません。 class Device { public: virtual char Read(int)=0; virtual void Write(char)=0; virtual void Seek(int)=0; } class FAT : public Device { ... } class HDDFAT : public FAT { public: char Read(int){...} void Write(char){...} void Seek(int){...} } という感じで、Deviceにある純粋仮想関数 の実体をHDDFATで定義するという形で良い のでしょうか?
C++の話はよそでやれ
>>807 // デバイスに対する抽象的な操作を定義する(インターフェース)
struct Device { virtual void read() = 0; };
// 実際の動作を実装
class HddDevice : public Device { void read() { /* HDDを操作するコード */ } };
class SdDevice : public Device { void read() { /* SDを操作するコード */ } };
class FlashDevice : public Device { void read() { /* Flashを操作するコード */ } };
// 外から与えられたデバイスに対して操作する。
// 実際のデバイスの種類は知る必要は無い。
class FAT {
public:
FAT(Device* dev) : dev_(dev) {}
void hage() { dev_->read(); }
private:
Device* dev_;
};
HddDevice dev;
FAT fat(&dev);
fat.hage();
810 :
デフォルトの名無しさん :2005/10/22(土) 15:27:16
横レスするが、テンプレートつかうとこうなる template<typename T> class FAT{ public: FAT(T& dev) : dev_(dev){} ... ... private: T& dev_; }; 継承(’A`)マンドクセ、
813 :
798 :2005/10/22(土) 15:37:38
>>809 >>811 的確なアドバイスありがとうございました。
実際にVC++でコンパイルしましたら、
うまく動きました。 ありがとうございます。
お騒がせ致しました・・・
814 :
初心者の僕 :2005/10/22(土) 15:39:42
行列の積を求めるプログラムをC言語で書きのように作ってみたのですが、 どうしても「c3: エラーE2040 宣言が正しくありません」って出てきます。 どこがおかしいのでしょうか。教えていただけませんか? #include <stdio.h> int main(); { int a[3][3]; int b[3][3]; int c[3][3]={{0,0,0}{0,0,0}{0,0,0}}; int i; int i; int k; for(i=0;i<3;i++){ for(j=0;j<3;j++){ printf("A:%d 行 %d 列",i+1,j+1); scanf("%d",&a[i][j]);}} for(i=0;i<3;i++){ for(j=0;j<3;j++){ printf("B:%d 行 %d 列",i+1,j+1); scanf("%d",&b[i][j]);}} for(i=0;i<3;i++){ for(j=0;i<3;j++){ for(k=0;k<3;k++){ c[i][j]=c[i][j]+a[i][k]*b[k][j];}}} return 0; }
iが二つねーか
int c[3][3]={{0,0,0},{0,0,0},{0,0,0}};
818 :
初心者の僕 :2005/10/22(土) 15:54:58
単純なミスで申し訳ないです! jがiになっている箇所がありました! 修正したところコンパイルすることができました! ありがとうございました!
自ら初心者を名乗る奴はどうしようもないな。
>>818 いやぁ、嘘だろ。
エラーメッセージは3行目で宣言エラーといっているが、実際2行目のmain()の後にセミコロンがあるから
そこで3行目でエラーが起きているんだから。
ネタに決まってるだろ
822 :
デフォルトの名無しさん :2005/10/22(土) 16:38:40
計算結果は使わないのか
>>814 の脳みそをコンパイルしようとしたのですが
数え切れないほどのエラーがでました
どうすればよろしいでしょうか
>>823 の脳みそを修正して、スルーすることができるようにする。
/* コメントアウトされた脳みそ */
826 :
デフォルトの名無しさん :2005/10/23(日) 11:05:21
static textの背景を白くするか ダイアログウィンドウの背景を白くするには どうすればよいのでしょうか。
827 :
デフォルトの名無しさん :2005/10/23(日) 14:43:13
質問なんですけど main.cppをVisual C++ 2005 Express Edition Beta 2でコンパイルしようとすると ------ ビルド開始: プロジェクト: Otamesi, 構成: Debug Win32 ------ コンパイルしています... main.cpp c:\documents and settings\1234\my documents\visual studio 2005\projects\Otamesi\stdafx.h(6) : fatal error C1083: include ファイルを開けません。'windows.h': No such file or directory ビルドログは "file://c:\Documents and Settings\1234\My Documents\Visual Studio 2005\Projects\Otamesi\Debug\BuildLog.htm" に保存されました。 Otamesi - エラー 1、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ========== とでるんですけど、windows.hファイルがなくどうすればいいかわからなくて困っています どうすればいいでしょうか
インストールしたらならwindows.hあるはず でもwindows.hがあってもどこにあるか教えてやらないと見つけられない。
829 :
デフォルトの名無しさん :2005/10/23(日) 15:31:36
830 :
デフォルトの名無しさん :2005/10/23(日) 15:35:22
>>828 レスありがとうございます。
どこでそれを教えてあげればいいんでしょうか度々すみません。
831 :
デフォルトの名無しさん :2005/10/23(日) 15:35:39
教えて下さい。 マウス操作で、右クリックしたまま、マウスをムーブした時に、 プログラム内で処理を行いたいんですが、どうやれば良いのでしょうか? 下の書き方ですと、右クリックしないでマウスを動かすと、対象処理を 行います。(当然だと思います) 皆様、ご教授御願いします。m(_ _)m // ウィンドウプロシージャ関数 LRESULT CALLBACK WndProc(HWND hWnd,UINT iMsg,WPARAM wParam,LPARAM lParam) { switch(iMsg) { case WM_LBUTTONDOWN: やりたい処理; break; case WM_MOUSEMOVE: やりたい処理; break;
WM_MOUSEMOVEの中でマウスボタンが押されてるか見る
>>827 Express Edition Beta だと、
プラットフォームSDK まではインストールされなかったような。
VCではなくCの範囲かもしれませんが、 文字列を返す関数ってどうやって作るのでしょうか? char moji(){ return "にちようび"; } とやると、char[10]はchar*と間接操作のレベルが異なります、とエラーになってしまいます。 switch(youbi){ case 0: return ("にちようび") bresk; case 1: return ("げつようび") bresk; case 2: return ("かようび") bresk; } のように返り値(文字列)の長さが一定でなくてもOKにしたいです。
returnで返そうと思うな その考えは捨てろ
"にちようび" って何型だ?
bresk;で吹いた
839 :
デフォルトの名無しさん :2005/10/23(日) 23:57:11
char *moji(){ return "にちようび"; } これでいける絶対いける やってみ、*(アスタリスク)がポイント。
バイナリファイルを読み込みたいのですがわからないことが多く困っています。 ファイルの先頭から64バイト移動してint型の変数measParamsOffsetにデータをひとつ 読み込むとき、コンソールプログラムの場合はmain関数の中に下記のように記述すると うまく動いてくれました。 CString InputFileName = "test" int measParamsOffset; FILE *pfi; pfi = fopen((LPCTSTR)InputFileName, "rb"); fseek(pfi, 64, SEEK_SET); fread(&measParamsOffset, sizeof(measParamsOffset), 1, pfi); つづく
つづき これと同様の内容ををWindowsプログラミングでMFCのシリアライズ関数に 下記のように書くとコンパイルは出来るのですが、プログラムを起動してファイルを 開こうとするとエラーが発生してしまいます。どこをどう直せばいいのでしょうか? void CTest8Doc::Serialize(CArchive& ar) { void *buf = NULL; CFile *fp = ar.GetFile(); if (ar.IsStoring()) { // TODO: この位置に保存用のコードを追加してください。 ar << measParamsOffset; } else { // TODO: この位置に読み込み用のコードを追加してください。 fp->Seek(64, CFile::begin); ar.Read(buf, 4); measParamsOffset = *(int*)buf; } } Windows XP、Visual C++ 6.0です。
> 開こうとするとエラーが発生してしまいます。 それで、そのエラーの内容は国家機密なのかい?
843 :
デフォルトの名無しさん :2005/10/24(月) 00:11:37
void CTest8Doc::Serialize(CArchive& ar) void CTest8Doc::Serialize(CArchive* ar) とか?
>>839 問題の本質を間違えてるって。
staticの配列ならともかくただのリテラルじゃ偶然に頼るほかない。
意味不明。
846 :
841 :2005/10/24(月) 00:16:21
>>842 英語のわけのわからんメッセージが出ます。
Debug Assertion Failed!
Program: D\My Documents\C C++ Language\test8\Debug\test8.exe
File: arccore.cpp
Line: 491
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
(Press Retry to debug the aplication)
847 :
質問です。 :2005/10/24(月) 00:17:02
libjpeg調べてもさっぱりです。 プログラムを載せてるページとか教えてください。
>>841 void *buf = NULL;
で
ar.Read(buf, 4);
とかやってるから、
ar.Read(NULL, 4);
と同じ意味になっててメモリアクセスエラー(というか内部のアサーション)とかいうオチ?
>>846 そのメッセージが出たところでデバッガに落ちて、
コールスタック調べればどこが問題かわかるよ
849 :
846 :2005/10/24(月) 00:32:19
>>848 void *buf = NULL;をvoid *buf;
と書き換えても同じメッセージが出ました・・・。
デバッガでみるとbufがずっと0xccccccccとなってましたが
どうすればいいかわかりませんです。
>>843 ドキュメントビューアーキテクチャが用意してくれたシリアライズ関数に
付け足してるだけですのでそこではないかと思います。
>>849 あのな・・・
メモリー確保しないでbufに読み込めるわけないでしょ
851 :
デフォルトの名無しさん :2005/10/24(月) 00:49:23
852 :
849 :2005/10/24(月) 00:55:17
>>850 たしかに!
void *buf = new int;
って書いてみたら動いてくれました。
まだ微妙に問題残ってますが考えてみます。
ありがとうございました。
>>851 894+765=1659
563+572+237+125=1497
なので数字4つまたは3つの組み合わせを考えれば良い
とするとこうなる
第1のループ:先頭の数字を選択する
第2のループ:2つ目の数字を選択する
第3のループ:3つ目の数字を洗濯する
ここで3つ足すと1692になるか判定する
第4のループ:4つ目の数字を選択する
4つ足すと1692になるか判定する
>>841 >>849 >>852 でもなんであなたはarをそのまま使わずに中のfpを取り出してるんですか・・・
arが使ってるfpを外からシークして、arの状態がおかしくなってないかどうかなんて、
怪しい領域(CArchiveの実装によりけり)に思いっきり突入してしまうような・・・。
fpを直接使いたいならMFCシリアライズ関連クラスとまぜて使うのは
放棄したほうが良いと思うですよ。
自分のやってることを完璧に理解してそういったことをするなら止めませんが、
そうとも思えません。
>>854 >arが使ってるfpを外からシークして、arの状態がおかしくなってないかどうかなんて、
>怪しい領域(CArchiveの実装によりけり)に思いっきり突入してしまうような・・・。
GetFileは公開されてるメンバだから大丈夫だろ。(Flushする必要はあるけど)
856 :
デフォルトの名無しさん :2005/10/24(月) 15:50:32
VC++.NETのWindowsフォームアプリケーション(.NET)で、 他アプリケーションからSendMessageされたメッセージを 受け取りたいのですが、受け取る方法がわかりません。 VC6の様にWindowProc関数を追加できれば何とかなりそうな 気がしますが、WindowProc関数を追加する方法がわかりません。 ご存知の方、教えていただけないでしょうか?
どういうメッセージよ システムで既に定義されてるメッセージか? ユーザー定義のメッセージか? 前者なら単純にその分のイベントハンドラを追加しる 後者なら、FormクラスのWndProcメソッドをオーバーライドして、 目的のメッセージの処理を加え、それ以外のメッセージを元のWndProcに渡すようにすればいいかと
858 :
857 :2005/10/24(月) 16:29:43
DefWndProcだの、WndProcだの、 MSDNでFormクラスのメンバ一覧見たら普通に載ってる項目ぞ?
初めまして、初歩的な質問ですが、よろしくお願い致します。 先日、ソースファイルに、main.cpp , ヘッダファイルにStdAx.hを追加し、ビルドしたところ、 c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(828): error C2059: 構文エラー : 'サフィックスが無効です。' c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(828): fatal error C1012: カッコが一致していません。')' がありません。 とエラーを二つはきました。 828行目を見ても、構文エラーであったり、「)」が足りていない訳でも無いように思え、頭を捻っています。 よろしければ、対処法などアドバイスを頂けないでしょうかm(_ _)m
>>859 そのWinNT.hをインクルードするに至る、あんたのソースに問題があるはずだ。
861 :
856 :2005/10/25(火) 11:23:06
>>857 ユーザー定義のメッセージです。
>後者なら、FormクラスのWndProcメソッドをオーバーライドして、
>目的のメッセージの処理を加え、それ以外のメッセージを元のWndProcに渡すようにすればいいかと
VC++.NET2003のWindowsフォームアプリケーション(.NET)では、[プロパティ]ウインドウのオーバーライドにWndProcが出てきません。
>MSDNでFormクラスのメンバ一覧見たら普通に載ってる項目ぞ?
見様見真似でMSDNのサンプルコードの追加を試みましたが上手く行きませんでした。
VC6なら即行WndProcを追加できたのですが・・・手動でオーバーライドするにしても方法がわからず。
>FormクラスのWndProcメソッドをオーバーライド
web上にサンプルコードも発見できず・・・
非常にわがままですが、実装方法を順番に説明していただけないでしょうか?
Formクラス WndProc でぐぐったらいっぱいみつかるじゃん
手動でオーバーライドするにしても方法がわからずって、 おまいさん、そもそもオーバーライドって何かわかってるか?
そこに人が集まってしまった以上自然とそうなる。 最近ではSTLスレだってなんだかんだ言って次スレ作られているし。人は来ないけど。
Part21にしては、まとめとかFAQとかテンプレのようなものが何もないな
?
869 :
834 :2005/10/26(水) 10:19:37
>>839 それでいけました。ありがとうございます。
にしてもVC(っていうかC)の文字列の扱いってまだ難解でよくわからん・・・
とりあえずそういうやり方もできるというだけで あんまり見ないやりかただな
あんまり見ないと言うか、
や る な
>>869 の考えの方が難解でよくわからん
リッチエディットコントロール2.0のあるダイアログボックスを作ると、何故かダイアログボックスの作成に失敗するのですが、どうやったらよいのでしょうか? 1.リソースからリッチエディット2.0を張る 2.DialogBoxでダイアログを呼ぶ コールバックなどはreturn等最小限の処理しか書いていません
重 要 ダイアログ ボックスでリッチ エディット コントロールを使用する場合は (アプリケーションが SDI、MDI、ダイアログ ベースかにかかわらず)、 ダイアログ ボックスの表示前に、 (中略) CRichEditCtrl の使い方の詳細については、『Visual C++ プログラマーズ ガイド』の 「Control Topics」および「CRichEditCtrl」を参照してください。
874 :
872 :2005/10/26(水) 15:03:00
自己レス LoadLibrary("riched20.dll"); をしたら解決しました。どもでした
今デスクトップ画面を取り込んでプリンタへ印刷するアプリケーションを 作っているのですが、暫く使っていると印刷が出来なくなります。 「スタート」→「設定」→「プリンタ」の中の対象のプリンタの状態を見てみると 印刷ジョブ自体は溜まっている状態になっていて、PCを再起動すると それまでに溜まっていた印刷ジョブが実際印刷されます。 印刷ジョブに溜まっているのに印刷出来ない状態になるというのは どういう状況が考えられるでしょうか?プリンタの状態は「準備完了」になっています。 環境はWindows2000、VC++6.0です。宜しくお願いします。
用紙切れ、インク切れ
とりあえずVC++とはなんの関係も無いな
>>876 PCを再起動すると溜まっていたジョブがそのまま印刷されるので・・・。
>>877 アプリケーションとは全く関係ないのでしょうか・・・?
オマエの組んだプログラムのせいだ
ビットマップを出して回転させる、一番簡単な方法ってどんな方法がありますか? GDIでやろうと思ったら、PlgBlt使って平方四辺形の3点みたいなのを計算しないと駄目っぽくて。 もっと簡単に出来る方法があったら知りたいです。宜しくお願いします。
881 :
880 :2005/10/27(木) 18:32:09
CreateFontを使い、絵はAAを使うことにしましたw 一応解決しましたが、さすがにAAはマズそうなので、良い方法があったら知りたいです。
882 :
デフォルトの名無しさん :2005/10/27(木) 18:54:39
>>875 Windowsでのネットワークプリンタなら連続n回印刷コマンド発行すると一定時間受け付けなくなる仕様になってる
その期間にもうn回印刷コマンドを発行すると印刷出来ないまま受付禁止になるので印刷できなくなる
ようするにPC初心者板で聞けばよかったと
初歩的な質問で申し訳ありません。 VC++でAPI関数のみを用いてプログラムを作成しているのですが、 コンボボックスをクリックしたときに下に展開される行数が一行分の高さしか持ちません。 表示させる行数を複数行にする場合はどこを設定すれば宜しいのでしょうか。 ┌────┐ ├────┤ └────┘ ↓ ┌────┐ ├────┤ │ │ │ │ └────┘ こんな感じにしたい 補足:プロパティボックスにはTRUE/FALSEの設定が大半でそれを弄る場所が見当たりませんでした
>>884 それ超FAQだから100%回答でるよ
待てなきゃ過去ログさがせば見つかるかも
886 :
デフォルトの名無しさん :2005/10/27(木) 20:26:31
>880 回転させるのが90度, 180度, 270度なら簡単に出来る。 この方法は自分で考えてみてね。 37度とか任意の角度なら回転行列という数学の力を借りなきゃ駄目。 具具ってみなせぇ
887 :
デフォルトの名無しさん :2005/10/27(木) 21:05:09
>>884 それ確かに分かりにくいよな。
リソースのとこで▼を押すのだよ。
押せば分かる。
って言っても、▼が分からんのよな。
同じとこで詰まったよ。説明ページ見ても、▼って書いてあるけど分からんの。
リソース使ってないなら知らん。
>>887 それって、そんなに気付きにくいかな?
普段使うときと同じように操作してみると分かるのに・・・。
890 :
884 :2005/10/27(木) 21:26:51
>>887 ありがとうございます!
最初どこの▼かと思いましたが
※コンボボックス
┌─────┬─┐
│ │▼│←ココ
├─────┴─┤
│ │
└───────┘
まさかこの▼とは思いませんでした。ずっとプロパティの▼を見てましたw
確かに普通にコンボボックスの真ん中でサイズ変更やってたら気づきませんね。
マウスカーソル当てるとカーソルが変化したので気づきました。
ここを一回クリックするとコントロールのサイズがドロップダウン前からドロップダウン後のサイズに切り替わるので
そこを変えればOKなワケですね。
子ウィンドウ(ダイアログ)のコントロールを親ウィンドウから操作したいのですが どのようにしてポインタを取得すればいいでしょうか? 親ウィンドウのソースファイルを ・・・ CWnd* a = (CWnd*)GetDescendantWindow(IDD_DLG_CHILD); CEdit* b = (CEdit*)a->GetDlgItem(IDC_EDIT); ・・・ とやってみたのですが、ビルド&実行すると、 2行目の処理の部分でエラーが起きて強制終了してしまうのです。
親が作った子ウィンドウならハンドルぐらい持ってるだろう
893 :
デフォルトの名無しさん :2005/10/29(土) 13:15:03
メニューの左側にアイコンを表示する方法を教えてください。
894 :
デフォルトの名無しさん :2005/10/29(土) 14:40:21
質問です。XP、.NET です。 関数ポインタについてです。 CHoge hoge { public: bool (*pFunc)(); bool Func(); void test(); } CHoge::test() { pFunc = Func; } 上記のコードをコンパイルした結果、関数へのポインタへの代入に失敗しました。 Func() の型は bool (*)(CHoge*) のため(CHoge* は暗黙の引数 this を受け取る)、 bool (*)() 型の pFunc には代入できなかった、という理解でよろしいのでしょうか? また、上記問題を解決するため、 bool (*pFunc)(CHoge* pHoge); static bool Func(CHoge* pHoge); というように、Func を静的にし、メンバを呼ぶためオブジェクトのアドレスを渡すようにしたのですが、 これでは、Func() の記述内に pHoge-> が散乱してしまい、格好悪くなってしまいます。 何かいい解決法はないでしょうか。 よろしくお願いします。
895 :
894 :2005/10/29(土) 14:42:01
くだすれの方で反応がないのでこちらでもよろしくお願いします CTreeCtrlのアイテムそれぞれに対して CWnd::EnableWindow(...) 関数のような、使用許可・不許可の設定を行うことは可能ですか? 環境 * WindowsXP * Visual C++ 6.0
またか
>メニューの左側にアイコン MDIで子ウインドウを最大化するとそうなるな
899 :
デフォルトの名無しさん :2005/10/29(土) 18:02:08
指定されたフォルダパスが正しいか(指定されたフォルダが存在するか)チェックする方法はどんなのがいいですか? 今は #include "io.h" if (_access(szPath, 00) != 0){ return FALSE; } else { //処理 } って感じで書いてあるんですけど。
>>896 できなきゃ何のためにCWndを継承しているのか
>>900 思いっきり勘違いしていない?
TreeCtrlそのものではなく、その中の各itemの制御をしたいらしいよ。
903 :
896 :2005/10/29(土) 20:22:30
904 :
デフォルトの名無しさん :2005/10/31(月) 20:03:12
3Dビュワーもどきを作っているのですが、ドラッグで詰まっています。 ドラッグしつつカーソルがウィンドウ外に出ると、メッセージが来なくなってドラッグが中途半端に終わってしまいます。 ドラッグ中はウィンドウ外に出ても利いていて欲しいのですが、メッセージだけでは不可能なのでしょうか? 現在WM_MOUSEMOVEを使っています。
ヒント: SetCapture
プログラム実行中、whileか何かループで 詰まってるようで、breakポイントを仕掛けて止めるのではなく、 実行中の箇所で止めてデバッグすることは不可能なんでしょうか? どこでループしてるか知りたいのですが
実行中にctrl+breakで中断すればいい。
908 :
デフォルトの名無しさん :2005/10/31(月) 23:34:43
>907は天才 いままで知らんかった 907まじおすすめ
909 :
デフォルトの名無しさん :2005/11/01(火) 11:09:32
Cのソースを拡張子CPPにしてコンパイルしたあと拡張子Cに戻したら、 なんかのヘッダーファイルで大量にエラーが出るようになってしまった んだけどどうすればいいですかね?
910 :
デフォルトの名無しさん :2005/11/01(火) 11:09:40
いい!
913 :
デフォルトの名無しさん :2005/11/01(火) 13:28:06
>>905 猫にもありました。ありがとうございます!
オマエんちの猫はWin32APIを装備してるのか。すげぇ。
>>908 て言うか、メニューからも中断できたと思うが…。
>>909 拡張子を cpp に戻せばいいんじゃねーの?
916 :
デフォルトの名無しさん :2005/11/02(水) 01:51:21
メニューバーのリソースを作ったのですが、表示が左端からではなく、右に表示されてしまいます。 これは何ででしょうか?
917 :
デフォルトの名無しさん :2005/11/02(水) 01:53:52
右端といいますか、×(閉じる)ボタンの下あたりに表示されてしまう感じです。。
918 :
デフォルトの名無しさん :2005/11/02(水) 02:05:49
猫でものソースを使って、はじめてのリソースを体験^^
919 :
デフォルトの名無しさん :2005/11/02(水) 04:03:07
環境:W2K、VC6.0 教えてくださいです GIVEIO.SYSっていうライブラリの関数(例えば、int giveio_start(void))を使うために、 下のへッダファイルは既に追加してビルド(MFC APP、DLL用)かけるんですが、リンクエラー (LNK1136)になるんです。教えてください。どうすれば通るか・・・。 GIVEIO.H #ifndef __GIVEIO_H__ #define __GIVEIO_H__ /* result of giveio_start() */ #define GIVEIO_ERROR 0 #define GIVEIO_WIN95 1 /* windows 95/98/Me, unnecessary */ #define GIVEIO_OPEN 2 /* giveio opened */ #define GIVEIO_START 3 /* giveio service start & opened */ #define GIVEIO_INSTALL 4 /* giveio install,start & opened */ int giveio_start(void); /* parameter of giveio_stop() */ #define GIVEIO_STOP 3 /* giveio stop service */ #define GIVEIO_REMOVE 4 /* giveio stop & remove driver */ int giveio_stop(int param); #endif
>>916 「ヘルプ」が有効になってないか?
>>919 GIVEIO.c もプロジェクトに加えたの?
あと link1136のヘルプ自体に色々ヒントが書いてあるけど…?
921 :
デフォルトの名無しさん :2005/11/02(水) 06:02:32
デバイスドライバを作ろうとしているのか?
そんなんで詰まるLVじゃ無謀ってもんだな
923 :
916 :2005/11/02(水) 16:00:20
924 :
916 :2005/11/02(水) 16:07:33
助かりました。 有難うございます
925 :
デフォルトの名無しさん :2005/11/02(水) 16:52:23
Win32で別プロセスにシグナル(SIGTERM)を送るには どうしたらよいのでしょうか? CreateProcessを使ってプロセスIDの取得するところまでは できています。ご指摘よろしくお願いいたします。
926 :
デフォルトの名無しさん :2005/11/02(水) 16:52:42
すみません。ビットマップエディタに画像ファイルをコピーして貼り付ける方法がわかりません。 ドラッグアンドドロップでは無理だったのですが。
ワークスペースの右クリックのインポート 256色超えるとムリだったけど
928 :
デフォルトの名無しさん :2005/11/02(水) 19:08:52
>>927 さん
ありがとう。後ほど試してみたいと思います。
929 :
919 :2005/11/02(水) 19:51:32
>>920 >>921 レス、どうもありがとうございます。亀レスですみません。
GIVEIO.C(GIVEIO.SYS)は、プロジェクトには、入ってません。
このエラーが出るまでは、
error LNK2001: 外部シンボル ""int __stdcall giveio_start(void)" (?giveio_start@@YGHXZ)" は未解決です
が出てきて、それを解決しようとしていたら相談してた妻がいつのまにかプロジェクトの「設定」の
「リンク」でGEIVEIO.SYSを、オブジェクト/ライブラリモジュールに登録して、更に、「ツール」、「オプション」
の「ディレクトリ」に、GIVEIO.SYSがあるフォルダを設定したので、かのようなエラー(SYSはインクルードできない
からLNK1136「ファイルが壊れています。」)が出てたようです。で結局、元に戻って考えると、エラーは、上記の
LNK2001が実態でした。
尚、GIVEIO.SYSは、「その道」では有名なドライバらしく、WIN NTや2KでIOポートを叩くときの一種の必需品みたいな
ものらしいことが、あちこちのサイトに書いてありましたが、DLLにせよEXEにせよ、プロジェクトに入れてビルドしてる
ということはないみたいです。
私のGIVEIO.SYS(C)との関わりは、簡単なマザーボードモニターを自作で作って、
CPUの温度制御に利用したいということなんですが・・・
(続き
930 :
919 :2005/11/02(水) 19:52:08
931 :
919 :2005/11/02(水) 20:05:17
尚、エラーが出る個所は↓の⇒のところです #include "stdafx.h" #include "giveio.h" #include "CMBM.h" ・・・・・・ ・・・・・・ int giveio_result; /* GIVEIO open */ ⇒ giveio_result = giveio_start(); /* result */ /* switch(giveio_result) { case GIVEIO_INSTALL: AfxMessageBox("giveio.sys installed"); case GIVEIO_START: AfxMessageBox("giveio.sys started"); case GIVEIO_OPEN: AfxMessageBox("giveio.sys opened"); break; case GIVEIO_WIN95: AfxMessageBox("giveio.sys win95"); break; case GIVEIO_ERROR: AfxMessageBox("giveio.sys unable"); return 0; }*/
>>929 GIVEIO.Hの中にある宣言をリンゲージ指定してCリンゲージに入れればうまく動くと思う。
VCと関係ないし作ったやつに聞けよ
934 :
919 :2005/11/02(水) 21:28:21
935 :
919 :2005/11/02(水) 22:16:39
>>920 やっぱ、GIVEIO.Cを加えないと駄目みたいです。GIVEIO.SYS
とGIVEIO.Cは全く別もののようです。GIVEIO.CをGIVEIO.CPPに
名前を変えて一緒にビルドしたらうまくいきました。
どうもありがとうございました。
936 :
928 :2005/11/02(水) 22:38:12
リソースの追加→ Bitmap → インポート(M) というのは見つかったのですが、 上手くいかなかったので、エクスプローラーから画像を差し替えました^^;こんなんでいいんかな
937 :
デフォルトの名無しさん :2005/11/02(水) 22:43:03
不安だなァ・・
>936 256色以内ならドラッグ&ドロップでもいけたよ。 >上手くいかなかった というのは、256色以上含んでるからムリと出たんじゃないでしょか? それなら、GDI使ってメモリデバイスコンテキスト>デバイスコンテキストの手順で、 コードでフレーム上に取り込むのが手でしょう
>>935 確かにそれで動くようにはなるのだろうが・・・。
extern "C" について調べてみることを薦めておこう。
VS2003のVC++で、Win32アプリプロジェクト作ってやってます STLのstring使ってるんですが ちゃんと#include <string>してるのに、ReleaseビルドするとLNK2001の外部参照エラーが出るんです 同じコードなのに、Debugビルドではこのエラーは出ません ウィザードが作成したプロジェクトの設定から変えたことといえば、 プリプロセッサの定義で_UNICODEを追加しただけですが、これはReleaseもDebugも両方追加してます どうしたらエラーを取り除けるのでしょう
エラーメッセージはコピペで
942 :
940 :2005/11/03(木) 18:30:29
エラーメッセージは↓のようになってます error LNK2001: 外部シンボル ""public: void __thiscall std::_String_base::_Xran(void)const " (?_Xran@_String_base@std@@QBEXXZ)" は未解決です。
944 :
デフォルトの名無しさん :2005/11/03(木) 20:16:00
>>938 さん
レス有難うございます。それは、参考にさせていただきます。^^
>>942 俺も同じ現象に遭遇したが、
マルチスレッド用のライブラリをリンクするように指定したら解決した。
(C/C++ -> コード生成 -> ランタイムライブラリ)
946 :
デフォルトの名無しさん :2005/11/05(土) 09:17:07
VC++6 SP5をWinXP SP2で使っています。 DAOを使ったプログラムを作ろうとして、困っています。 ClassWizardで新規クラスの追加をしようとしても、 基本クラスのコンボボックスで、CDaoRecordsetを選べません。 CRecordsetは選べるのですが、データベースのオプションで、 データソースラジオボタンでDAOを選ぶこともできません。 ClassWizard(などVC++6的な操作)で CDaoRecordsetから派生したクラスを追加するには、 どうすれば良いのでしょう? 何かインストール忘れなどがあるのでしょうか?
>>946 まず、DAOのインストールが必要なんじゃ?
948 :
デフォルトの名無しさん :2005/11/05(土) 14:43:22
>>947 ありがとうございました。
DAO3.5が登録されていないのが原因だったようです。
regsvr32 dao350.dll
したらClassWizardにも出るようになりました。
何で登録されていなかったのかは分かりません。
WinXPの標準はDAO3.6だと思うので、余計な副作用が発生していないといいのですが。
とりあえず、現状でコードを書いて、
AfxGetModuleState()->m_dwVersion = 0x0601;
で、DAO3.6で動くようにするという感じにしようと思っています。
949 :
デフォルトの名無しさん :2005/11/05(土) 18:25:46
マイク入力から音階、音量読み取って画像をそれに連動させろって言われても… そんなプログラムを1からつくってほしいのでが。。。。。
>>949 何この微妙なマルチ
まさか同じ研究室の人?w
951 :
デフォルトの名無しさん :2005/11/05(土) 19:41:41
952 :
デフォルトの名無しさん :2005/11/05(土) 19:53:56
あ〜 VC++だべよ
953 :
デフォルトの名無しさん :2005/11/05(土) 20:24:28
g++とVC++の差分はどれくらいですか?
エスパーさん、いらっしゃ〜い
955 :
デフォルトの名無しさん :2005/11/05(土) 20:57:50
g++とはなんぞ??
GCCのC++標準コンパイラ
957 :
デフォルトの名無しさん :2005/11/05(土) 21:02:50
すまぬがわからむ。。。。。。。。
>>953 C++の規格への対応に関しては(両者最新版では)ほぼ同じ。
基本的にはMFCとかATLが付属するかどうかが両者の違い。(VCTKなどは考えないものとする)
尤もMFCやATLはおそらくg++でも使えなくはないと思われる。
ttp://www.kab-studio.biz/Programing/PragmaTwice/ >#pragma twice は Visual C++ を使用したプログラミングを1から教える初心者向け講座です。
>プログラミングの経験がまったくない方を対象に書いていますから、どなたでもすんなり入っていけるでしょう。
>それに、内容は水希と火美ちゃんの会話形式なので、とても分かりやすくなっています。
こんなサイトみつけた。VC入門には良いかもしれん。
先に言っとくけど俺はこのサイトの作者じゃないぞ! 本当だぞ!
>>959 よくぐぐるさんで引っかかるサイトだね。
ただ・・・非常に読みにくい気が・・・・
961 :
デフォルトの名無しさん :2005/11/06(日) 00:34:57
>>958 >尤もMFCやATLはおそらくg++でも使えなくはないと思われる。
いくらなんでもg++にMFC,ATLは無理でしょう。Windows版だけ有効になるわけ?そんなバナナ。
962 :
デフォルトの名無しさん :2005/11/06(日) 01:02:55
>>959 >「2年実戦的なことを学んで、ここで3年勉強すれば、もうエリートじゃな
>い、すごいよね」
>>959 コレ全部読めたらもう怖いものなしだね。
もうプログラミングで挫折することはなさそう
小説部分は確かにヒクなw
> TRACE > ( "%d, %d, %d, %d\n" > , 0 && 0, 0 && 1, 1 && 0, 1 && 1 ); ひくとかむかつくとか以前に、「コードを〈絵〉として見られるから」という割りには審美眼を持たないようで。
966 :
C++とMFC :2005/11/06(日) 07:16:11
ご教授宜しくお願い致しますm(_ _)m スキルとしては、サーバーサイドスクリプト(WEB)を4年程やっています。 Winアプリ開発はまったくの初心者です…(泣 今回、「.NET Frameworkなどの一般ユーザー環境には インストールされていないランタイムを使わずに」 以下を1年程度で実現しなければならなくなりました。 1.WEB上で動くActiveXを作る -- ドラッグ&ドロップ・DBGridの配置 など 2.データベースを管理するMDIアプリを作る 勉強として、Visual C++ .NET (2003) の「MFC アプリケーション」で 簡単なMDIメモ帳を作ってみました。 C++で問題の2点を1年程度で実現するに当たり、 MFCで作る(を勉強する)のは正解でしょうか? 例えば「Win32 プロジェクト」の方がいいよ!とか…。 皆様のお知恵をお借りしたいです。宜しくお願いします。
ActiveXやデータベースだったらMFCの方が良さそうな気はするね。
968 :
966 :2005/11/06(日) 10:28:56
970 :
デフォルトの名無しさん :2005/11/06(日) 12:12:18
MFCでActiveX使うのはなんだこんなもんかって感じだが、 VCでDBMS作るとなるとそれこそ、ミドルウェア作るようなもんなんじゃないか、 DAOもといOLEDB使ったとしても、トランザクション組まなくちゃいけないんだろう。 MS-SQL鯖使ったりするならやりやすいだろうけど。 DBMSはサーバサイドJavaに任せてってとこで、C++とJAVAを同じフレームワークでできるDelphiってどうなのかな、ActiveX使えたりするの?Delphi自体使ったことないけど。
971 :
966 :2005/11/06(日) 12:13:49
>967様 そうですね…(´-ω-`)。 968の件については、昨日から7時間程ずっとググッていたのですが、 行き詰ったのでキーワードの問題かと思った次第でした。 浅はかな考えでお尋ねしてすみませんでした。 教授と教示も間違っていたのですね(汗 MFCで行けると確信できて、大変助かりました。 ありがとうございました。
コマンドライン引数 255 200 255 #include <stdio.h> #include <windows.h> void main(int argc,int *argv[]){ int R = (int)argv[1]; int G = (int)argv[2]; int B = (int)argv[3]; COLORREF color = RGB(R,G,B); int R2 = GetRValue(color); printf("%d",R2); } などで正しく値が合成されなくて困っています、どうすれば良いでしょうか? 開発環境はVC.net 2003です よろしくお願いします。
>void main(int argc,int *argv[])
うはwwwwうぇうぇwwww そんな書き方する奴初めてみた。
始めまして、僭越ながら質問させて頂きます。
先日、某所よりDLをしてきた、
http://www.uploda.net/cgi/uploader2/index.php?dlpas_id=0000005863 (PASS=1111です)
上記のツールを、折角ソースファイルも付け加えて下さっているのでという事で、試しにソースからビルドしようとした所、(.vcproj
ファイルを開き、そのままビルド致しました。)Debugというフォルダが出来、その中に出来たexeが入っていたのですがいざその
exeファイルを実行した所、機能ははたしているのですが、104kbという元のexe(これは、たった3kbなのです)と比べ物にならない
程、ファイルサイズの大きなものとなってしまった上に、CPU負荷が30〜40%と非常に大きなものとなりました。
元の3kbのexeファイルを実行した所、CPU負荷はわずか1〜2%という結果でした。
何がいけないのか、何故そのままソース変更もなくビルドをした結果このような事態になってしまった事が不思議です。
お恥ずかしい質問をしているのは承知の上ですが、原因・改善の方法がわかる方、またアドバイスをして頂ける方
よろしくお願い致しますm(_ _)m
>>977 それはDebugビルドだから。
Releaseビルドに換えれば最適化が施されるので高速(≒低負荷)になり、
デバッグ情報が埋め込まれないので小さくなる。
>>978 素早いレスありがとうございます。
帰宅後、ご報告を添えると共に、早速Releaseビルドを行ってみようと思います。(まだ未熟な知識の為、手順など不安ですが)
Debugビルドをしていた為、デバッグ情報が埋め込まれていたのですね。
目から鱗な気分です。一つ、勉強になりました。
本当にありがとうございましたm(_ _)m
おいおい、DebugビルドもReleaseビルドも知らずにVC使ってんのかよ
>>979 VC6ならビルドメニューのアクティブな構成の設定...、VC7.1ならコンボボックスで変更可能。
プログラム作れないやつって全然どうでもいいこと気にするんだよな
983 :
977 :2005/11/07(月) 18:37:28
ただいま帰宅し、早速試してみた所、無事Releaseフォルダが出来、その中にexeファイルが生成されておりました。 ずっと悩んでいた事だったのですごくすっきりました。 こんな小さな事で悩まなくていいように勉強していきたいと思います。 ありがとうございました。
984 :
モードレスダイアログが作れません :2005/11/07(月) 21:27:04
親ダイアログからあるボタンを押した場合にモードレスな子ダイアログを 呼び出したいのですが、ボタンを押しても子ダイアログが表示されず(一瞬 表示される?)うまく動きません。可能性としては 1、子ダイアログが作成できていない 2、作成できているが見えていない 3、作成できているがすぐに消えている 当たりが考えられそうですが、原因がつかめません。 プログラムですが、子ダイアログ(IDD_DIALOG1)のクラスにCmyDialogをつくり 親ダイアログのOnBnClickedButton関数内で CClientDC myDC(this); CmyDialog myDL; myDL.Create(IDD_DIALOG1, this); myDL.ShowWindow(SW_SHOW); としています。myDialog.cppの方は特になにもしていません。 個人的には、子ダイアログがすぐ消えているような気がして、myDialog.cpp内で 何かしらのループ処理が必要なのかなとも思うのですが、よく分かりません。 原因や解決策が分かる方がいらっしゃいましたらよろしくお願いします。 環境はWindowsXP,VisualStdio.NET2003、ダイアログベースのMFCを使っています。
関数内でスタック上に作ったオブジェクトは、関数を抜けると消えるがそういう問題では?
そのコードだと、ダイアログをスタックに作成しているから そこを抜けたらすぐに閉じてしまう。ヒープに作成セマウル号。 CmyDialoig* myDlg=new CmyDialog(); myDlg->Create(IDD_DIALOG1,this); myDlg->ShowWindow(SW_SHOW);
つーかむしろメンバとして作っとけ
>>988 あれじゃリークするが、
CmyDialog::CmyDialog()
{
m_pChildDlg=(CDialog *)NULL;
}
CmyDialog::~CmyDialog()
{
if(m_pChildDilg)
delete m_pChildDlg;
}
とかすればいい。 モーダレスが1個なら、直接メンバ変数にする方が簡単だが、
複数のモーダレスを作成/破棄するなら、メンバ変数にテンプレート(CPtrArray)
を使った変数でダイアログのポインタを管理した方がいい。
親→子のアクションが無ければ、delete this で自殺させても可
つ[モードレス]
delete NULL; は合法なので、if( foo ) delete foo;は冗長
高々四行のコードに対する部分を示してあるだけなのに メモリリークとかケチ付けてる奴は馬鹿だな。
そんなに悔しがるなよ^^
二時まで眠れなかったのかw
次スレは?
998
999
1000ならVisual C++ 2005 日本語版が年内に販売。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。