★初心者にVisual C++を教えるスレ★ Part30
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/05/07(水) 23:33:53お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。
■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう。
・できるだけ具体的に。
質問の仕方については次のページが大変参考になります。
http://www.hyuki.com/writing/techask.html
http://myu.daa.jp/osiete/
■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
(MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。
過去スレ、関連スレなどは>>2-5辺り。
0002デフォルトの名無しさん
2008/05/07(水) 23:34:50Part28 ttp://pc11.2ch.net/test/read.cgi/tech/1196430042/
Part27 ttp://pc11.2ch.net/test/read.cgi/tech/1189394427/
Part26 ttp://pc11.2ch.net/test/read.cgi/tech/1176387917/
Part25 ttp://pc11.2ch.net/test/read.cgi/tech/1168354839/
Part24 ttp://pc10.2ch.net/test/read.cgi/tech/1158296664/
Part23 ttp://pc8.2ch.net/test/read.cgi/tech/1140711893/
Part22 ttp://pc8.2ch.net/test/read.cgi/tech/1131443284/
Part21 ttp://pc8.2ch.net/test/read.cgi/tech/1124806288/
Part20 ttp://pc8.2ch.net/test/read.cgi/tech/1120222322/
Part19 ttp://pc8.2ch.net/test/read.cgi/tech/1116209988/
Part18 ttp://pc8.2ch.net/test/read.cgi/tech/1113539594/
Part17 ttp://pc8.2ch.net/test/read.cgi/tech/1107926989/
Part16 ttp://pc8.2ch.net/test/read.cgi/tech/1101022051/
Part15 ttp://pc5.2ch.net/test/read.cgi/tech/1097880265/
Part14 ttp://pc5.2ch.net/test/read.cgi/tech/1093672937/
Part13 ttp://pc5.2ch.net/test/read.cgi/tech/1089011118/
Part12 ttp://pc5.2ch.net/test/read.cgi/tech/1083585833/
0003デフォルトの名無しさん
2008/05/07(水) 23:35:24Part10 ttp://pc5.2ch.net/test/read.cgi/tech/1074933908/ ※
Part09 ttp://pc5.2ch.net/test/read.cgi/tech/1068983609/ ※
Part08 ttp://pc5.2ch.net/tech/kako/1063/10630/1063029371.html
Part07 ttp://pc5.2ch.net/tech/kako/1056/10562/1056280510.html
Part06 ttp://pc5.2ch.net/tech/kako/1052/10529/1052931903.html
Part05 ttp://pc5.2ch.net/tech/kako/1048/10486/1048698321.html
Part04 ttp://pc5.2ch.net/tech/kako/1044/10441/1044196393.html
Part03 ttp://pc5.2ch.net/tech/kako/1038/10381/1038160750.html
Part02 ttp://pc3.2ch.net/tech/kako/1030/10309/1030985362.html
Part01 ttp://pc3.2ch.net/tech/kako/1023/10235/1023530449.html
0004デフォルトの名無しさん
2008/05/07(水) 23:36:02■MFC相談室 mfc18d.dll■
http://pc11.2ch.net/test/read.cgi/tech/1185917008/l50
Win32API質問箱 Build57
http://pc11.2ch.net/test/read.cgi/tech/1189255282/l50
【C++】 DirectX初心者質問スレ Part14 【C】
http://pc11.2ch.net/test/read.cgi/tech/1182351826/l50
【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 131
http://pc11.2ch.net/test/read.cgi/tech/1170338926/l50
C++相談室 part56
http://pc11.2ch.net/test/read.cgi/tech/1185377587/l50
C/C++の宿題を片付けます 95代目
http://pc11.2ch.net/test/read.cgi/tech/1187944110/l50
【初心者歓迎】C/C++室 Ver.42【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1188748806/l50
【関連サイト】
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
MSDN ライブラリ ※変更された
http://msdn.microsoft.com/library/ja/
http://msdn2.microsoft.com/ja-jp/library/ (2005のことはこっち)
Platform SDK Update ※変更された
http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
http://www.google.co.jp/
0005デフォルトの名無しさん
2008/05/07(水) 23:36:54part 1 ttp://piza.2ch.net/tech/kako/970/970607517.html
part 2 ttp://piza.2ch.net/tech/kako/981/981630730.html
part 3 ttp://piza2.2ch.net/tech/kako/993/993186053.html
part 4 ttp://pc.2ch.net/tech/kako/1002/10021/1002165477.html
part 5 ttp://pc.2ch.net/tech/kako/1006/10068/1006834463.html
part 6 ttp://pc.2ch.net/tech/kako/1011/10116/1011615035.html
part 7 ttp://pc.2ch.net/tech/kako/1017/10178/1017843192.html
part 8 ttp://pc.2ch.net/tech/kako/1022/10224/1022499000.html
part 9 ttp://pc5.2ch.net/tech/kako/1036/10368/1036897197.html
0006デフォルトの名無しさん
2008/05/07(水) 23:38:00Microsoft Windows Server 2003 R2 Platform SDK Web Install
http://www.microsoft.com/downloads/details.aspx?FamilyID=0baf2b35-c656-4969-ace8-e4c0c0716adb&DisplayLang=en
(ISO版などあり)
これ以降、Platform SDK + .NET Framework SDKとして
Windows SDKが公開されていて、その中で一番新しいのはこれ。
Windows SDK for Windows Server 2008 and .NET Framework 3.5
http://www.microsoft.com/downloads/details.aspx?FamilyID=f26b1aa4-741a-433a-9be5-fa919850bdbf&DisplayLang=en
少し前のバージョン(Vista + .NET 3.0の初期版)には日本語版もあったけど、
日本語化されているのは専ら.NET Framework部分だけ。
VC6対応の、最後のPSDKはここ。
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
テンプレ終わり。
0007デフォルトの名無しさん
2008/05/07(水) 23:39:530008前スレ971
2008/05/07(水) 23:40:002つの環境でうまくいかないのでおかしいなあと思っていたのですが、
1つ目の環境では32bit環境であるにもかかわらず64bitのライブラリをリンクしようとしていたミス
2つ目の環境ではmulti processorのライブラリを指定しているにもかかわらずsingle processorのライブラリディレクトリを指定していたミス
という非常にアホなミスで単にライブラリのリンクが失敗しているだけでした...
ご丁寧に呼び出し規約のことを考えていただいたみなさま、どうもありがとうございました。
dumpbinででてくるものが_付きでないものだから、呼び出し規約のせいじゃないかと思考が凝り固まってしまったのが敗因でした…
蛇足ですが前スレ>>990-992は自分じゃないですorz
みなさまどうもありがとうございました。
0009C++ コンパイラ
2008/05/08(木) 02:04:45Microsoft Visual C++ Toolkit 2003
ftp://195.252.112.9/programiranje/programski-jezici/VCToolkitSetup.exe
VCToolkitSetup.exe
size 32952488
sha1sum 956c81c3106b97042c4126b23c81885c4b5211f4
edonkey checksum
ed2k://|file|VCToolkitSetup.exe|32952488|c534888fa7605403dcb183d2d15282d1|/
0010C++
2008/05/08(木) 02:05:16Visual Studio 2005 Express Edition CD イメージからのインストール方法
http://www.microsoft.com/japan/msdn/vstudio/express/maninstall/
Visual C++ 2005 Express Edition 日本語版 サイズ 611,540 KB CRC 0xB3AD1A2F
http://download.microsoft.com/download/8/E/8/8E85D539-2255-4CFD-AA97-440AE6C6F44A/vc.iso
Visual Studio 2008 Express Edition の DVD イメージからのインストール
http://www.microsoft.com/japan/msdn/vstudio/express/maninstall/2008/default.aspx
http://download.microsoft.com/download/F/A/6/FA693F60-97D1-44EB-AC7F-6A44AC42B10E/VS2008ExpressJPNX1428694.iso
0011デフォルトの名無しさん
2008/05/09(金) 00:33:05{
return;
}
だとコンパイル通るのに
#define test (-1)
if(i<test)
{
return;
}
だと
if(i<test)
でエラーが出るんだが何がいけないんでしょうか?
0012デフォルトの名無しさん
2008/05/09(金) 00:50:48どんなエラーですか?
見た感じエラーにはならないですけど。
0013デフォルトの名無しさん
2008/05/09(金) 00:57:22VC2003 Standardは持っていて、慣れていていい感じなんですが
プロジェクトをシェアしようとすると、無償で入手可能なVC2005 Expressか
VC2008 Expressがいいように思えます。
・VC2005 Expressはりソースエディタがないらしいけど
どうやってリソースを作成しているんでしょ?
・VC2008 Expressはマルチスレッドプログラムの
デバッグができないらしいけど、あきらめるしかない?
作ろうとしているプログラムは、リソースも使うしマルチスレッドでもある。
おとなしく買えってことなのかな?
自分でStanadrdなりProfessionalなりを買うのはいいんだけど
自分しかメンテできないという環境はいやだなぁ、と思って相談しました。
0014デフォルトの名無しさん
2008/05/09(金) 01:26:44仮にできなくても、リソースコンパイラはWindowsSDKに入ってた気がする。
RCファイルは自力で書かないといけないけど。
0015デフォルトの名無しさん
2008/05/09(金) 01:42:58error C2143: 構文エラー : ')' が ';' の前にありません。
)つけてるのに出ます
わけがわかりません
0016デフォルトの名無しさん
2008/05/09(金) 01:46:15リソースに関しては、一回作れば済む話なので、あまり心配はしてません。
マルチスレッドデバッグは、これがないと厳しいな。
VC2003でマルチスレッドプログラムをデバッグしたときは、
ブレークポイントでちゃんと他のスレッドも止まってくれるのよね。
0017デフォルトの名無しさん
2008/05/09(金) 01:49:00testって定義が重複してたりしないかな?
重複しなそうな別の名前(testtesttestとか)に変えるとどう?
0018デフォルトの名無しさん
2008/05/09(金) 16:35:47色々検索してるんですがいいところがみつからなくて・・・
C言語のコンパイルの仕方がわかればいいです
0019デフォルトの名無しさん
2008/05/09(金) 16:59:16解説サイト以前の問題じゃないのか?
0020デフォルトの名無しさん
2008/05/09(金) 17:13:40VC++ではどこで挫折するのかと思ったら
コンパイルの仕方を質問してるってどんだけ〜
0021デフォルトの名無しさん
2008/05/09(金) 19:10:18いろんな名前にかえましたが
やっぱり同じエラーです
プロジェクト作り直したりしてみましたが
だめでつた
Const int とかにすることにしました
ありがとうございやした
0022デフォルトの名無しさん
2008/05/09(金) 20:48:460023デフォルトの名無しさん
2008/05/09(金) 20:53:10なにを書けば意図が伝わるのか、要点がよくわからないのですが
その辺りは指摘をお願いします。
では、質問させていただきます。
ダイアログにおいて[Microsoft Web Browser]という[ActiveXコントロールの挿入]を行いました。
すると、ダイアログにブラウザが表示されるのですがスクロールバーの消し方がわかりません。(縦横両方)
スクロールバーの設定はいじれるのでしょうか?
色々検索し、スクロールバーを消す命令を見つけたのですが
記述してもなにも起こらず仕舞いです。
晒します。
BOOL CBROWSER::OnInitDialog()
{
CDialog::OnInitDialog();
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
SetIcon(m_hIcon, TRUE);
RECT Rect;
GetWindowRect( &Rect );
ModifyStyle(WS_CAPTION|WS_SYSMENU|WS_BORDER|WS_DLGFRAME|WS_CLIPSIBLINGS,WS_MAXIMIZE,0);
SetWindowPos( &wndTop, -1,-1, Rect.right-Rect.left, Rect.bottom-Rect.top, SWP_FRAMECHANGED );
ScreenToClient(&Rect);
m_Web.SetWindowPos( &wndTop, Rect.left, Rect.top, Rect.right-Rect.left+1, Rect.bottom-Rect.top+1, SWP_FRAMECHANGED );
m_Web.EnableScrollBar(SB_BOTH,0); //これがそれらしいのですが・・・
return TRUE;
}
どなたかご存知であればご返答よろしくお願いします。
0024デフォルトの名無しさん
2008/05/09(金) 21:01:560025デフォルトの名無しさん
2008/05/09(金) 21:08:360026デフォルトの名無しさん
2008/05/10(土) 01:14:181にしろということだと思って
m_Web.EnableScrollBar(SB_BOTH,1);
に変更しましたが変化なしでしたorz
0027デフォルトの名無しさん
2008/05/10(土) 04:36:36どなたかご教授を・・。
0028デフォルトの名無しさん
2008/05/10(土) 06:19:580029デフォルトの名無しさん
2008/05/10(土) 08:13:51それ使えるのウィンドウのスタイルとしてスクロールバーを持っている場合だろうな
0030デフォルトの名無しさん
2008/05/10(土) 09:50:38どどどどこでもいいんすか。
じゃあエラーが出るのは違う要因のようです・・・。
ありがとうござんす。
0031デフォルトの名無しさん
2008/05/10(土) 11:28:110032デフォルトの名無しさん
2008/05/10(土) 11:45:20Form2のボタン2のEnableがtrueになる
Form1のボタン1のEnableがfalseになる
Form2のボタン2を押す
Form1のボタン1のEnableがtrueになる
Form2のボタン2のEnableがfalseになる
これだけのことなんですが、動くソースがどうしても書けません。
0033デフォルトの名無しさん
2008/05/10(土) 12:06:56そうなんですか・・・
ありがとうございます。
他の方法をあたってみます。
0034デフォルトの名無しさん
2008/05/10(土) 14:01:270035デフォルトの名無しさん
2008/05/10(土) 15:46:180036デフォルトの名無しさん
2008/05/10(土) 16:34:30Setter、Getter のメソッドを用意しているのですが
Setter、Getter 以外のメソッドで
自クラスから自クラスのプロパティにアクセスする場合も
Setter、Getter を経由すべきなのでしょうか
また、経由しないことでデメリット等はあるのでしょうか
よろしくお願い致します
0037デフォルトの名無しさん
2008/05/10(土) 16:54:34経由すればいいし、パフォーマンス優先なら経由しなければいい。
0038デフォルトの名無しさん
2008/05/10(土) 17:08:13【肥大化】C++ を見捨てたヤシ【複雑化】
http://pc11.2ch.net/test/read.cgi/tech/1201567967/
0039デフォルトの名無しさん
2008/05/10(土) 17:13:10なるほど、ありがとうございます
>>38
いま覗いてみましたが、
後半のほうでその手の話題になってますね、ちょいと読んでみます
ありがとうございます
0040デフォルトの名無しさん
2008/05/10(土) 18:35:42自クラス内だから直接触ってもいと思う。
でも、特殊な操作が無くて、Setter、Getter使って困ることが無ければ使ったほうがいいんじゃないかな?Setter、Getterつかっておけば後からの仕様変更が楽ではある。
0041デフォルトの名無しさん
2008/05/10(土) 21:48:11サンプルのソースがフォルダで管理されている時にVCでも同じフォルダ構成で管理したいのですが、
いっぺんに同じフォルダ構成にする方法ってありますか?
0042デフォルトの名無しさん
2008/05/11(日) 01:15:09sample.vcprojのFilterタグとFileタグに出力するスクリプトを書けばいいんじゃないかな
0043デフォルトの名無しさん
2008/05/11(日) 04:36:10●6月にマネージャパン、月刊アスキー、週刊アスキーの3誌が賞金総額2000万円の「シストレFXグランプリ」を開催
http://system-trading.jp/news/index.php?cID=3
[シストレFXグランプリとは]
クリック証券が提供するFXのデモ取引環境を利用して、システムトレードにチャレンジできるFX取引のグランプリです。
お客様ご自身で作成したシステムトレードの機能を評価する「シストレソフト部門」とトレード収益を競う「トレード部門」の2部門構成となっております。
●5月22日より登録受付開始、6月2日よりグランプリ開始の予定。賞金総額2000万円。
デモトレードの優勝者には賞金三百万円がプレゼントされます。
▼トレード部門
初期資産500万円で、デモ取引のトレード収益を競っていただきます。
●http://www.fx-gp.com/about/
▼賞金総額
■社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円
0044デフォルトの名無しさん
2008/05/11(日) 09:24:16ファイルを追加するようにフォルダを追加することは出来ないのですね。
具体的にはどうしたらいいんでしょう?
0045デフォルトの名無しさん
2008/05/11(日) 09:36:100046デフォルトの名無しさん
2008/05/11(日) 09:46:000047デフォルトの名無しさん
2008/05/11(日) 11:55:54とても量が多いのですが手でやってみます。
0048デフォルトの名無しさん
2008/05/11(日) 13:31:12ttp://www.shuwasystem.co.jp/books/7980/1169-X/1169-X.html
をBCC5.5ではなくVisualStudio2005でコンパイルしたいのですが、
〜番目の引数を 'const char [〜]' から 'LPCWSTR' に変換できません。
というエラーが数百と、
〜番目の引数を 'unsigned char [〜]' から 'char *' に変換できません。
〜番目の引数を 'const char [〜]' から 'unsigned char *' に変換できません。
というエラーが42箇所出てしまいコンパイルできません。
数百出たエラーはプロパティで マルチバイト文字セットを使用する にしてコンパイルしたら全て消えたのですが、
他の42のエラーもコンパイルの設定で回避できるようでしたらその方法を教えてください。
42箇所だけですので書き換える方法でもいいです。
error C2664: 'FontPrint' : 3 番目の引数を 'const char [15]' から 'unsigned char *' に変換できません。
FontPrint( 208, 160,"NOW GAME SCENE");
error C2664: 'ReadWaveFile' : 3 番目の引数を 'unsigned char []' から 'char *' に変換できません。
wave_size = ReadWaveFile( "..\\..\\data\\bgm00.wav", &g_WaveControllBGM->WaveFormat, g_WaveControllBGM->WaveData);
こういった箇所です。よろしくお願いします。
0049デフォルトの名無しさん
2008/05/11(日) 14:41:47コンパイラの設定で回避できるか知らんが
できたとしても設定で回避するようなエラーではない。
手作業で修正するべき。
0050デフォルトの名無しさん
2008/05/11(日) 15:24:490051デフォルトの名無しさん
2008/05/11(日) 15:31:580052デフォルトの名無しさん
2008/05/11(日) 15:32:53コマンドプロンプトでリダイレクトして実行って話?
0053デフォルトの名無しさん
2008/05/11(日) 15:37:25あるプロジェクトをデバッグしようとしたところ、そのアプリは
起動時に必要なディレクトリの存在チェックをしているみたいで
プロジェクト内にはそのディレクトリが存在しないため、エラーに
なって起動出来ませんでした。
そのディレクトリを作ってあげれば良いと思うのですが、プロジェクト配下に
作りたくないので、別の場所にアプリが必要とするディレクトリを作りたいと考えています。
この場合、アプリを起動させる時に、作成した別の場所のディレクトリをスタートアップ時の
ディレクトリとして認識させる方法ってあるのでしょうか?
分かり難い説明で申し訳ありません・・・。
0054デフォルトの名無しさん
2008/05/11(日) 15:48:59プロジェクトのプロパティのデバッグに作業ディレクトリって項目ないか?
それで起動時のカレントディレクトリは指定できるけど
0055デフォルトの名無しさん
2008/05/11(日) 15:55:20デバッグの作業ディレクトリを指定すりゃいいんじゃないの?
0056デフォルトの名無しさん
2008/05/11(日) 16:24:00おおっ!まさにこれです!
無事に起動する事が出来ました!
ありがとうございました!
0057デフォルトの名無しさん
2008/05/12(月) 01:57:50前スレで教えてもらったこの方法
---------------
[ファイル]->[新規作成]->[プロジェクト]->[Win32]->[Win32コンソールアプリケーション]
プロジェクトを作る場所、プロジェクト名を決定し、[OK]
[次へ]を選択し、[追加のオプション]で[空プロジェクト]を選択し[完了]
デフォルトでは左に表示される[ソリューションエクスプローラ]のツリー内の[ソースファイル]を右クリック
[追加]->[新しい項目]->[C++ファイル(.cpp)]
追加したいファイル名を入力して[OK]、拡張子まで書けば*.cにもできる。
で、ファイル内に以下のコードを記述する
#include<stdio.h>
int main( void ) {
puts( "ググレカス" );
return 0;
}
[Ctrl + F7]でコンパイルする。エラーがなければ[F5]で実行。
すぐにコマンドプロントが消えるのは仕様。出力結果を残したいならば[Ctrl + F5]で実行すればいい。
[F7]でビルドする。
-----------------------
では、C++言語になってしまうようです。
C言語をやるにはどうしたらよいでしょうか。
0058デフォルトの名無しさん
2008/05/12(月) 01:59:290059デフォルトの名無しさん
2008/05/12(月) 02:02:33言われてみればそのとおりでした。
さっそくそっちをダウンロード&インストールしてきます。
0060長いので二つに分割します(1/2)
2008/05/12(月) 04:19:58#include <iostream>
#include <vector>
using namespace std;
struct test
{
test(): a( rand() % 10 ) { }
int a;
};
int main()
{
// コンストラクタの rand() が機能しない
vector< test > t1(10);
for ( vector< test >::size_type i = 0; i != t1.size(); ++i )
{
cout << t1[i].a << " ";
}
cout << endl;
// コンストラクタの rand() がちゃんと機能する
vector< test > t2;
for ( vector< test >::size_type i = 0; i != 10; ++ i)
{
test t;
t2.push_back( t );
cout << t2[ i ].a << " ";
}
cout << endl;
return 0;
}
0061長いので二つに分割します(2/2)
2008/05/12(月) 04:22:05t1[ 0 ] から t1[ 9 ] まではすべて同じ値に
t2[ 0 ] から t2[ 9 ] まではばらばらの値に
なります。いったいが何がそうさせているんでしょう?
どうも何度か試したところでは t1[ 1 ] 以降は 一つ前の要素の値をそのままコピーしているらしく
たとえば
test(): a( 0 ) { if ( 何がしかの条件 ) { a = 1; } }
のようなコンストラクタを書いたとき
本来 0 にならなければならない要素にもかかわらず
直前の要素が 1 の時に 0 にならないケースが発生します。
test() { if ( 何がしかの条件 ) { a = 1; } else { a = 0; } }
って書くしかないんでしょうか?
0062デフォルトの名無しさん
2008/05/12(月) 06:10:310063デフォルトの名無しさん
2008/05/12(月) 07:50:19再現する最低限のソースを作って張るんだ。
貼られた部分だけを見ると、引き数つきのコンストラクタがないからエラーが出そうなんだが。
0064デフォルトの名無しさん
2008/05/12(月) 08:19:26うーん
0065デフォルトの名無しさん
2008/05/12(月) 10:09:020066デフォルトの名無しさん
2008/05/12(月) 10:15:44大丈夫、10はtestではなくvectorの引き数だ。
>>61
ディフォルトコンストラクタは最初の一回だけ呼ばれて、後はコピーコンストラクタしか呼ばれない。
つーか、実験目的ならrand()なんか使わずにclock()でも使っておけよ。
0067デフォルトの名無しさん
2008/05/12(月) 10:27:59clock()だと間に合わないみたいねw
--
[foo@Corvus tmp]$ ./a.out
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
--
ってことで、こんな風にしてみた。
--
static int staticCounterForDefault;
static int staticCounterForCopy;
struct test
{
int a;
test() : a(++staticCounterForDefault) {}
test(const test & foo) : a(++staticCounterForCopy) {}
};
--
では問題、実行せずに出力結果を予測しなさい。
# って、厳密には実装依存なのかな。
0068デフォルトの名無しさん
2008/05/12(月) 10:30:170070デフォルトの名無しさん
2008/05/12(月) 10:40:000071デフォルトの名無しさん
2008/05/12(月) 12:58:44それで次のようにOnProcが処理関数だとすると、ID_CMD_1,.....,ID_CMD_100に対応するID番号を
OnProcに知らせてやれば出来ると思うのですが、どのようにIDを取得するのかわかりません。
よろしくお願いいたします。
BEGIN_MESSAGE_MAP(CXXXX, XXXXX)
//{{AFX_MSG_MAP(CXXXX)
ON_COMMAND(ID_CMD_1, OnProc)
ON_COMMAND(ID_CMD_2, OnProc)
ON_COMMAND(ID_CMD_100, OnProc)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
0072デフォルトの名無しさん
2008/05/12(月) 13:14:260073デフォルトの名無しさん
2008/05/12(月) 17:39:210074デフォルトの名無しさん
2008/05/12(月) 20:59:17その別のフォームにある変数を渡したいのですがどうすればいいでしょうか
0075デフォルトの名無しさん
2008/05/12(月) 21:08:36007674
2008/05/12(月) 21:09:470077デフォルトの名無しさん
2008/05/12(月) 21:19:202. 変数の開き方はわかるけど、別のフォームの開き方が分からない。
3. どっちも分からない。
4. その他のことが分からない。
さあどれだ?……と、聞き返さなくて済むよう初めから詳しく書け。
007874
2008/05/12(月) 21:27:50別のフォームを開いてそのフォームの中で元のフォーム内の変数を使いたいのですが、
元のフォームから別のフォームを開く際に別のファイルのヘッダをインクルードしているので、
別のフォーム上で元のフォームのヘッダをインクルードできなくて、
そのような状態でどのように変数を渡してやればよいのかがわかりません。
0079デフォルトの名無しさん
2008/05/12(月) 21:34:22008074
2008/05/12(月) 21:56:29引数で渡せるのであれば、その引数をどうやって渡すかが思い浮かびません。
0081デフォルトの名無しさん
2008/05/12(月) 21:57:07一応言っておくけど、VC++ってのは言語名じゃなくて
MSの開発ソフトの名前だぞ。
0082デフォルトの名無しさん
2008/05/12(月) 22:15:06自分でそういう関数を作ればいいだけのこと。
008374
2008/05/12(月) 22:30:33⇒その関数の引数はどこから持ってくるの?
⇒そういう関数を作れ
(・д・)
008474
2008/05/12(月) 22:35:08メインのcpp内で
void set_pass(int j){i=j;}
int get_pass(void){return i;}として
最初のフォームでset_pass(渡したい変数)実行して、
次のフォームで 受け取る変数 = get_pass()
でOK?
0085デフォルトの名無しさん
2008/05/12(月) 22:54:020086デフォルトの名無しさん
2008/05/13(火) 01:04:46ここに
http://www.microsoft.com/japan/msdn/vstudio/express/default.aspx
VC2008というのが見あたらないのですが…
Visual C++2008でC言語のコンパイルなどをするにはどうしたらよいでしょうか?
0087デフォルトの名無しさん
2008/05/13(火) 01:22:210088デフォルトの名無しさん
2008/05/13(火) 01:23:270089デフォルトの名無しさん
2008/05/13(火) 01:23:49>>59ですが、
>>57の方法だと
>[追加]->[新しい項目]->[C++ファイル(.cpp)]
のC++をCに変えればいいのか…と思ったらCファイルが選択できないようなのです。
0090デフォルトの名無しさん
2008/05/13(火) 01:29:390091デフォルトの名無しさん
2008/05/13(火) 01:33:45そうなのですか?
猫でもわかるプログラミングで、
http://www.kumei.ne.jp/c_lang/intro/no_01.htm
これ↓をコンパイルするとエラーが出るのですが…
#include <stdio.h>
main()
{
printf("This is a test!");
}
0092デフォルトの名無しさん
2008/05/13(火) 01:40:020093デフォルトの名無しさん
2008/05/13(火) 01:49:31手動で変更するということでしょうか?
してみましたが、
コンパイルやビルドしようとするとエラーが出ます…
0094デフォルトの名無しさん
2008/05/13(火) 01:51:01ってかさ、>>57にも書いたんだけど、「拡張子まで書けば*.cにもできる。」ってあるじゃん?
ついでに・・・
猫に書いてあるプログラムが規格に完全に準拠しているなんて思わない!
すべてのコンパイラが規格通りの挙動を正しく行うなんて思わない!
猫に書いてあるプログラムが全てのコンパイラで通ると思わない!
0095デフォルトの名無しさん
2008/05/13(火) 01:52:07一つのソースファイルに複数のCファイルやC++ファイルをいれていたためエラーが起こっていたようです。
ご迷惑をおかけしました。
0096デフォルトの名無しさん
2008/05/13(火) 01:53:22>エラーが出るならエラー内容を張る!
次回からはそうします…
すいませんでした
>ってかさ、>>57にも書いたんだけど、「拡張子まで書けば*.cにもできる。」ってあるじゃん?
あああああ
完全に見落としてました…
すいません
>ついでに・・・〜
ややこしいのですねぇ…
ありがとうございました
0097デフォルトの名無しさん
2008/05/13(火) 01:55:15だって自分のプログラムなんだから渡したいデータは自分で用意できるはずだろ。
0098デフォルトの名無しさん
2008/05/13(火) 06:25:39近くに郵便局が無くて荷物を郵送できない人に
なら郵便局まで荷物を郵送すればいいじゃない
0099デフォルトの名無しさん
2008/05/13(火) 14:16:47int main()
0100デフォルトの名無しさん
2008/05/15(木) 18:21:44いま、ダイアログベースでピクチャボックスの画像を[印刷]ボタンを作って印刷しようと思っているのですが、どうにも仕方がわかりません。画像は表示できています。
印刷できるようにするにはどのようなプログラムを組めばいいのでしょうか?
よろしくお願いします。
0101デフォルトの名無しさん
2008/05/15(木) 19:48:15それを参考にしてダイアログベースに実装する
0102デフォルトの名無しさん
2008/05/16(金) 22:21:39beginthreadexで作ったスレッド内でブレークポイント設定すると
停止したと同時にOSも固まるのはどうにかなりませんか?
0103デフォルトの名無しさん
2008/05/16(金) 22:37:16別のバグでIMEとかインテリセンスがらみでフリーズはあるけどそれじゃね?
0104デフォルトの名無しさん
2008/05/16(金) 22:44:21気が変わって(ウィンドウを使いたくなったので)通常のアプリにしたくなったんですが
最低限どこを書き換えるといいでしょうか?
単純にmainをWinMainに書き換えるだけだと不十分でした。
0105デフォルトの名無しさん
2008/05/16(金) 22:47:370106デフォルトの名無しさん
2008/05/16(金) 22:48:080107デフォルトの名無しさん
2008/05/16(金) 22:54:35プロジェクトのプロパティの変更
0108デフォルトの名無しさん
2008/05/16(金) 23:00:010109デフォルトの名無しさん
2008/05/16(金) 23:18:13ダイアログ程度のウィンドウを表示したいだけなら,
"windows.h"をインクルードして,CreateDialog()でも
呼び出してダイアログを作ればよいだけ。
もっと本格的に作りたいなら,プログラムの構造から見直す必要が
あると思うので、105,108の言うように最初から作った方が
良いと思うよ。
0110105
2008/05/16(金) 23:34:08結局1から作り直し(といっても90%コピペ)しました。
0111デフォルトの名無しさん
2008/05/16(金) 23:34:21御参考。
ttp://msdn.microsoft.com/en-us/library/ms535517(VS.85).aspx
0112デフォルトの名無しさん
2008/05/17(土) 00:10:22兄貴の猫でもわかるWindowsプログラミングという本をやりました。
で、大体どのようなものかわかったのですが、
今日本屋でその続編で猫でもわかるネットワークプログラミングという
本をみつけましたが、第2版とかかれていまして、VisualC++.NET対応と書いてありました。
これは、VisualC++6.0では無理でしょうか?中身はWindows32APIを使うものでして、MFCは無しみたいです。
どうか、よろしくお願いします。
0113デフォルトの名無しさん
2008/05/17(土) 00:12:29でもWinSockとかを使うだけだったらVC6.0でもいけるよ
0114デフォルトの名無しさん
2008/05/17(土) 00:14:28いまはVisualC++2008(バージョン9.0)が無料配布されている。これ入れればよい。
0115デフォルトの名無しさん
2008/05/17(土) 00:16:01http://www.microsoft.com/japan/msdn/vstudio/express/
0116デフォルトの名無しさん
2008/05/17(土) 00:25:15クリップボードを監視したくて情報を探していたのですが、
・SetClipboardViewerという関数でクリップボード監視を開始する。
・SetClipboardViewerという関数はStanderdEditionを買わないと入らない
MFCまたはATLが無いと使えない。
と解釈しました。
質問ですが、
上記解釈は正しいでしょうか。
何か別にMFCですとかATLをわざわざ経由しなくても
上記関数と同様のことをしている関数があったりしますでしょうか。
VC++だけのためにVisual Studio買いたくない(´・ω・`)
0117デフォルトの名無しさん
2008/05/17(土) 00:25:49本当にありがとうございます。
>>114-115 同一人物の方ですか?わざわざリンクまで張っていただき
感謝です。一応、それもダウンロードしてみます。
ありがとうございました。明日、本屋いってきます。
0118デフォルトの名無しさん
2008/05/17(土) 00:26:26この頃のMS製品はなんでも.NETとつけるのが流行だった。
0119デフォルトの名無しさん
2008/05/17(土) 00:26:300120デフォルトの名無しさん
2008/05/17(土) 00:28:06SetClipboardViewerはATLもMFCも関係ない、ただのWindowsの関数。
2005ならWindows SDK入れてVCと統合しろ。
2008なら使えないのはなんか設定がおかしいだけ。
0121デフォルトの名無しさん
2008/05/17(土) 00:31:23取り急ぎ、感謝申し上げます。
2008です。いろいろと設定を見てみます。
0122112
2008/05/17(土) 00:36:16どうもありがとうございます。色々あるんですね。
今のVer.2008が9.0っていうのもわかりました。ぐぐったら色々でてきました。
>>119
ねこでもわかるのホームページがかいてありますね。。すごいソースですね。。
徐々にやっていきます。ありがとうございました。
0123デフォルトの名無しさん
2008/05/17(土) 00:41:21ドラッグ&ドロップでファイルのパスをtextBoxに表示しようとしてるのですが,上手く行きません。
検索して見つけたのがlistBoxだったので,↓のように変えてみたのですが・・
private: System::Void textBox_DragEnter(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e)
{
if(e->Data->GetDataPresent(DataFormats::FileDrop))
e->Effect = DragDropEffects::All;
else
e->Effect = DragDropEffects::None;
}
private: System::Void textBox_DragDrop(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e)
{
String^ s = (String^)e->Data->GetData( ::System::Windows::Forms::DataFormats::FileDrop, false);
textBox->Text=Path::GetFileName(s);
}
これでファイル名が表示されると思ったのですが,なにも表示されません。
どこがいけないのがご教授願います。
0124デフォルトの名無しさん
2008/05/17(土) 00:42:18俺作ったことあるし。
0125デフォルトの名無しさん
2008/05/17(土) 01:01:02ありがとうございました。
Windowsの関数とおっしゃられたので
Includeディレクトリgrepしてみたら
WinUser.h内に宣言らしきものがあったので
それをIncludeしてるWindows.hをForm1.hに
Includeしてみたら関数を認識するようになりました。
(.cppにIncludeしても認識しないんですね。。。)
ちょっと引数と戻り値の型合わせがうまくいきませんで
コンパイルは通りませんが、関数が使えることがわかって
大きく前進しました。
本当にありがとうございました。
0126デフォルトの名無しさん
2008/05/17(土) 01:13:38Form1.hとか言ってるし、もしかして.NETかぁ?
あと、Windowsの「関数」じゃなくてAPIな。
0127デフォルトの名無しさん
2008/05/17(土) 01:48:40Help見たら「Microsoft Visual Studio 2008」って書いてあるので
.NETではないと思います。
「2008だけど、.NET」っていう状況があるんでしょうか。すみません。無知で。
状況がわかりやすいようにデフォルトのForm1って名前に置き換えて
わざわざ書いてしまいました。
自分の解釈がおかしいことがしばしばあるもので。。。
ああ、すいません。xxに関する便利な公開された関数をまとめて
xxAPIっていうものだと思ってました。
勉強することが多すぎますね。
今日は本当にありがとうございました。
0128デフォルトの名無しさん
2008/05/17(土) 07:59:29Windowsフォームアプリケーションは、
.NET Frameworkを使うアプリケーション。
参照設定しているライブラリ(C#/VB.NETなら
プロジェクトのプロパティの設定)の種類によって、
実行には.NET Framework 2.0/3.0/3.5のいずれかが必要。
Visual Studio 2008に.NETがつかないのは、単にMSの戦略の問題。
0129デフォルトの名無しさん
2008/05/17(土) 12:45:33Windowsの関数と言っても問題なし。
0130デフォルトの名無しさん
2008/05/17(土) 13:58:260131デフォルトの名無しさん
2008/05/17(土) 23:08:16またWin32APIには関数だけじゃなくて型の定義なども含まれると認識している。
0132デフォルトの名無しさん
2008/05/18(日) 08:38:29.netだと売れないってこと?
0133デフォルトの名無しさん
2008/05/18(日) 08:54:50ユーザが.net Frameworkを用意しなくちゃ行けない
でも、そういうのを用意できるユーザってどのくらいいるのよと
0134デフォルトの名無しさん
2008/05/18(日) 09:32:16MSとしては.netを一押ししたいから無償配布のExpressなんかは
デフォルトだと.netのプログラムを作るようになっている
0135デフォルトの名無しさん
2008/05/18(日) 13:20:03Windowsユーザーのほとんどだろうね。
0136デフォルトの名無しさん
2008/05/18(日) 13:26:43.net?なにそれ?ってインストールもできない初心者がいて困る
ってことを言いたいのかと思われ
インストールできるけどヘンなランタイムとか要らないから却下
とかいう自称玄人もいるから困るといいたいのかと思われ
Vistaなら標準で3.5入ってるってから期待してたんだけど
あの体たらくだしなぁ
0137デフォルトの名無しさん
2008/05/18(日) 16:37:130138デフォルトの名無しさん
2008/05/18(日) 17:22:29商用アプリの顧客は必ずしも、自動updateに任せっ切りじゃないからなあ。
仮想化とか、ローカルストレージ無しの方向に行ってるんで、今後の大規模.NET
アプリはサービス提供の方向と踏んでる。
0139デフォルトの名無しさん
2008/05/19(月) 10:59:41世代交代さえ順調に進めば.NET FRAMEWORKの配布は問題じゃなくなるんだろう。
ただね、肝心のOSの世代交代がね。どうもね。
MSがVISTAへの交代より.NET FRAMEWORKへの移行を重要と位置づけて、SPで
.NET FRAMEWORKとSuper Fetchを配っちまえば話は早いのにと思わないでもない。
0140デフォルトの名無しさん
2008/05/19(月) 13:58:44ま、失敗してるが
0141デフォルトの名無しさん
2008/05/19(月) 14:40:09一般ユーザのことだと思うぞ
0142デフォルトの名無しさん
2008/05/20(火) 18:52:41リソースエディタでコンボボックスを右クリックしてプロパティで
項目の入力っていう欄があるんです。そこに項目を並べたいんですが、
どのようにならべればいいんですか?
並べたいデータは、
北海道、本州、四国、九州、その他 の5つです。
よろしく><;
0143デフォルトの名無しさん
2008/05/20(火) 20:18:550144デフォルトの名無しさん
2008/05/20(火) 20:31:060145デフォルトの名無しさん
2008/05/20(火) 21:28:440146デフォルトの名無しさん
2008/05/20(火) 21:37:110147デフォルトの名無しさん
2008/05/20(火) 21:51:37VC++2008で、親フォームから呼び出した子フォームを非アクティブにする方法で
ShowWithoutActivation
を使うと良いと言うのは分かったのですが、プロテクトプロパティなので、簡単に
変更が出来ません。
変更の仕方or別の方法、を教えてください
0148デフォルトの名無しさん
2008/05/20(火) 22:36:03とりあえずリフレクションとか。
というか、C++/CLIだよな?
0149デフォルトの名無しさん
2008/05/20(火) 22:53:51^ と * ←を使い分けや gcnew をつかってるのでC++/CLIのはずです
0150デフォルトの名無しさん
2008/05/20(火) 23:29:33場面は中学2年時。僕は運動音痴だ。
明日はスポーツテストだ。僕はみなに押し付けられて、学校の授業後に
ライン引きをやっていた。僕のほかには女子のヤンキーぽい生徒が2人だ。
なぜ、こんな連中が仕事をしているかと思えば、退屈だし面白そうだから
という話だ。
50m走のラインを引き終えると、ヤンキー女子の2人が走ってみようと言い出し2人は走っていた。「あ〜、つかれた〜」といいながら座っている。でも満足げだ。
しばらくすると、「おい、おまえも走れよ!」といいだし、ぎゃあぎゃあ騒いでいる。
僕は運動音痴なので走り方もおかしいからひどく嫌だったが、後がこわいので走ることにした。
よ〜いどんで思い切り走ってみる。しかし、女子2人は大声で笑い転げている。
僕は必死で走ろうと思えば思うほど、フォームが乱れるのがよくわかる。
どうしようもなく恥ずかしい。。しかし、次の瞬間転んでしまった。
女子2人は寄ってきて僕をからかう。そのとき、思春期にありがちな突如の勃起が襲ってきた。
どうしようもなく半ズボンがテントを張っている。
「キャー、こいつ何?興奮してるの?言葉攻め?」
僕はもうどうしようもなく恥ずかしかった。しかし、女子はすでになんらかの経験済みらしく、
慣れている様子で「おい、どうしたんだよ?」とかいいながら僕のナニをけったりしてくる。
僕はとまどいながらも恥ずかしさをぐっとこらえていた。
その後も「運動は音痴だけど、こっちはすげえじゃん」とかいってぎゃーぎゃー騒いでいる。
その後、10分くらいたって、あきたのか笑いつかれて2人は帰っていった。
僕は恥ずかしさと何がなんだかわからないままドキドキしてしょうがなかった。もう何もかんがえるどころではなく、ただうろたえるだけの時間だった。
2人が帰った後、ようやく帰ったかと自分を取り戻す事ができた。しかし
その直後、ドクドクしたものが出てきた。僕の初射精だ。その後もあわてたことはいうまでもない。
0151デフォルトの名無しさん
2008/05/20(火) 23:33:41このエラーが出てコンパイルできません。どうすればいいか教えてください。
バージョンはVC++ 2008 EEです。
後、一応参考になりそうなサイトで調べてVC++のディレクトリに下記のパスを追加している状態です
C:\Program Files\Microsoft Visual Studio 9.0\MSDN Express Library
コンパイルしようとしているソース
#include <iostream.h>
void main()
{
char ss[80];
cout << "何か入力してください";
cin >> ss;
cout << "入力は[" << ss << "]です\n";
}
0152デフォルトの名無しさん
2008/05/20(火) 23:36:21visual c++ 2008 Expressでwindowsフォームアプリケーションを作成しています。
ビルドしたexeを他の人のマシンで起動しようとすると、
>このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした。
と出て起動できませんでした。
色々調べた結果、以下のとおり解釈しました。
�@visual studioがインストールされていない環境で動かすには
静的リンクでコンパイルする必要がある。
�Awindowsフォームアプリケーション(でデザイナからレイアウトしているような場合)
では静的リンクは不可能
�Bwindowsフォームアプリケーションでしかデザイナは使えない
�Cデザイナが使えない場合、手打ちで「上からxピクセル。。。」と
コーディングしていくしかない
質問ですが、上記解釈は正しいでしょうか。
ほんのちょっと上のレスでそれらしいやりとりが見受けられましたが、
自分の思っているソレの話のことなのか、いまいち自信がないので、
ご回答のほどよろしくお願いします。
0153デフォルトの名無しさん
2008/05/20(火) 23:44:15そのサイトは残念ながら参考にならない。
そのソースは古くて、現代C++では通用しない。
#include <iostream>
int main()
{
char ss[80];
std::cout << "何か入力してください";
std::cin >> ss;
std::cout << "入力は[" << ss << "]です" << std::endl;
}
0154デフォルトの名無しさん
2008/05/20(火) 23:48:36フォームアプリケーションなら相手のPCに.NET Frameworkを入れればいけるはず。
VS 2008だから.NET Framework 3.5だ。
たとえデザイナを使わなかったとしても、
.NET Frameworkを使うC++/CLIアプリケーションである限り
静的リンクはできない。
それにVSが無い環境で使えないなんて使い物にならない機能が
わざわざ用意されているはずがない。正規の手順でランタイムを用意すれば、
VSがない環境でもVC++プログラムは実行できる。
0155デフォルトの名無しさん
2008/05/20(火) 23:52:26GUIの部分は、.NET Framework を使って書いて、
内部的な(例えば)通信の部分は、Win32API で書くってできます?
できたとしたら、それは邪道ですか?
0156デフォルトの名無しさん
2008/05/20(火) 23:57:42むしろそういうことができるのがVC++の強み。
0157デフォルトの名無しさん
2008/05/21(水) 00:06:11ありがとうございます。
そうですか、楽できるとこは楽したかったんです。
MFCも少し勉強し始めてたんですが、中断して C++/CLI の方をやります。
0158デフォルトの名無しさん
2008/05/21(水) 00:08:45レスありがとうございます。
>フォームアプリケーションなら相手のPCに.NET Frameworkを入れればいけるはず。
>VS 2008だから.NET Framework 3.5だ。
>>133-138の流れを見るに、
相手のPCに.NET Frameworkが入っていることを期待するのを
期待してはいけない、という流れに繋がるという、と理解して正しいでしょうか。。。
>正規の手順でランタイムを用意すれば、
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf
こちらですね。ご親切にありがとうございます。
まだ詳しく見ていませんが、
これを私がインストールするわけではなく、
相手のPCにインストールしてもらう、という認識でよろしいでしょうか
(煩わしい質問であれば、明日にでも詳しく調べますので返信は不要です)
だとすると、.NET Frameworkの軽いVer、というイメージですかね。。。
数年前に「使用するにはVBxxランタイムが必要です」といった
アプリを見た記憶があります。
それくらいなら、普通に導入してもらえそうですね。
本当に、ありがとうございました。
0159デフォルトの名無しさん
2008/05/21(水) 00:21:51本が古すぎたんですね・・・たしかに今見たら98年出版の本でした
後せっかくなので参考にお聞きしたいんですが、追加記述された std:: と std::endl;っていうのは
なんなのでしょうか?最初は変数の前に付けるものといった、約束事みたいな感じで覚えておけばいいのでしょうか?
0160デフォルトの名無しさん
2008/05/21(水) 00:34:40endlは結構古くからあったと思うけど、
'\n'の出力に加えバッファのフラッシュを行うもの。
だから時と場合によって\nを直接使うこともある。
どっちにするかはケースバイケース。
std::は名前空間という機能によるもの。
詳しく知りたければ、ググってもいいし、最近の本なら書いているだろうし。
0161デフォルトの名無しさん
2008/05/21(水) 00:40:01親切にありがとうございました!
0162デフォルトの名無しさん
2008/05/21(水) 00:46:13その程度ならググれ。
良い本を探すのは難しい。
0163デフォルトの名無しさん
2008/05/21(水) 12:01:42文字列の分割がうまくいきません。
String^ data0 = "a/b/c";
wchar_t separator = '/';
array<String^>^ data1 = data0->Split(separator, StringSplitOptions::None);
結果的には配列data1にdata0の要素を格納したいのですが、このやり方ではうまくいきません。
どなたかご教示願いませんでしょうか?
0164デフォルトの名無しさん
2008/05/21(水) 12:55:49ttp://msdn.microsoft.com/ja-jp/library/ms131448.aspx
最初の引数は文字じゃなくて、文字の配列だぜ。
0165デフォルトの名無しさん
2008/05/21(水) 13:12:24ご指摘ありがとうございます。
無事解決しました。
0166デフォルトの名無しさん
2008/05/21(水) 21:18:51それをC++のランタイムなので、それで解決できるなら、静的リンクもできるという話。
C++/CLI、Form使ってるというなら、
http://www.microsoft.com/downloads/details.aspx?familyid=333325FD-AE52-4E35-B531-508D977D32A6&displaylang=ja
こっちを再配布しないとイケナイ。
0167デフォルトの名無しさん
2008/05/21(水) 22:07:04STLのvectorを参考に、自前のクラスにイテレーターっぽい機能を付けてみようとして、
行き詰まっています。
以下のようなコードを書いているのですが、begin() がインライン展開されません。
vectorのbegin() はインライン展開されているみたいで、何が違うのか分からないです。
class B
{
public:
A* aa;
class iterator : public std::iterator<std::random_access_iterator_tag, double, ptrdiff_t, double*, double>
{
A* a;
public:
iterator( A* _a ) : a( _a )
{
};
~iterator( void )
{
};
};
B( void ) : aa( NULL ) {};
~B( void ){};
iterator begin()
{
return( iterator( aa ) );
};
};
0168デフォルトの名無しさん
2008/05/21(水) 23:35:23http://pc11.2ch.net/test/read.cgi/tech/1210694402/
0169デフォルトの名無しさん
2008/05/21(水) 23:40:38まさか何の最適化オプションも指定していないなんてことはないよな。
0170デフォルトの名無しさん
2008/05/22(木) 10:59:46ググってもMFCのCToolTipCtrlしかヒットしません。
例えばステータスバーに収まり切らない文字列を表示したいのです。
.NETで例えるなら statusStrip1.ShowItemToolTips = true; に相当する処理です。
0171デフォルトの名無しさん
2008/05/22(木) 11:09:18ttp://msdn.microsoft.com/en-us/library/bb760246.aspx
0172デフォルトの名無しさん
2008/05/22(木) 15:30:07ありがとうございます、取敢えずツールチップを表示する事は出来ました。
MFCの解説もエミュレートしているものは参考になりました。
まだステータスバーの位置のみで表示出来ませんが、もう少し頑張ってみます。
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
static HWND hTooltip;
static TOOLINFO ti;
switch (msg)
{
case WM_CREATE:
InitCommonControls();
hTooltip = CreateWindowEx(0, TOOLTIPS_CLASS, NULL, TTS_BALLOON, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hWnd, NULL, g_hInst, NULL);
GetClientRect(hWnd, &ti.rect);
ti.cbSize = sizeof(TOOLINFO);
ti.uFlags = TTF_SUBCLASS;
ti.hwnd = hWnd;
ti.lpszText = L"ツールチップのテスト";
SendMessage(hTooltip, TTM_ADDTOOL, 0, (LPARAM)&ti);
SendMessage(hTooltip, TTM_SETTITLE, TTI_INFO, (LPARAM)L"タイトル");
SendMessage(hTooltip, TTM_SETTIPBKCOLOR, (WPARAM)RGB(221, 238, 255), 0);
(後略)
0173デフォルトの名無しさん
2008/05/22(木) 17:05:34textBoxに入力制限をさせたいのですが、やり方がわかりません。
パスワードを入力するときみたいに、入力された文字が強制的に半角英数字になるように
設定させるにはどうしたら良いのでしょうか?
どなたかお願いします。
0174デフォルトの名無しさん
2008/05/22(木) 17:35:480175デフォルトの名無しさん
2008/05/22(木) 17:47:34プロパティのPasswordCharの項目に*
0176175
2008/05/22(木) 17:48:21ゴメンゴメン。忘れて
0177デフォルトの名無しさん
2008/05/22(木) 18:46:220178デフォルトの名無しさん
2008/05/22(木) 19:46:30過去にまともなものをプログラムした経験はほとんどなく
HSPでぷよぷよの模写を遊びで作ったことがある程度です
言語としてはCOBOLやC++をかじった程度ポインタなどは概念を踏まえて
あるていど辞書を引きながら書くことはできます。
プログラムに関する技量などは自分で調べたりしながら向上させていこうと思っているのですが
何を本格的に勉強しようか悩みTurbo DelphiかVC++で行こうと考えて
とりあえずVC++2008無償を入れてみたのですが
初めて扱う上に初めての開発環境でソフトの機能や基本的な使い方を習得するだけで挫けそうです
VC++の勉強サイトなどをみても2008の環境で説明されている所が見つけられず
新規ファイルを作る段階でさえCLTとWin32の詳細な意味を調べてテンプレート形式もそれぞれ調べて…
書こうと思ってもサイトで提示されている項目が無いたびに色々調べたり
プログラムを書く時間よりもやりたいことをする手順なんかで悩んでる時間のほうが長いです
開発環境2008で勉強できるところは無いでしょうか_| ̄|○ il||li
0179デフォルトの名無しさん
2008/05/22(木) 20:29:33HSPでぷよぷよ作れたなら結構スキルはあるんじゃない?
0180デフォルトの名無しさん
2008/05/22(木) 20:54:02今なら腐るほど解説ページあるぞ
0181デフォルトの名無しさん
2008/05/22(木) 21:00:43仮想でウィンドウの模写的なもの(できるだけの機能を残して)を作ることは出来ないかなと
ただ深く追求していくとプロセスメモリへのアクセスなどクラックの分野になってくるのかな?と思って…
CでもC++でもDelphiでもjavaなんでも他に使いやすい初心者向きのテキストエディタあるやろって話なんですが
覚えたころにはもう使われてませんでしたでは話にならないのでVc++にしようかなぁ…と…
ごめんなさい取り説よめでFAでしたね_| ̄|○ il||li
0182178
2008/05/22(木) 21:12:22>>180
レス感謝 win32API使うならCやC++がよさそうなので他のバージョンなりなんなり探してきます
そしておとなしくします!
さようなら2008 ( ´・ω・`)ノ~
0183デフォルトの名無しさん
2008/05/22(木) 21:34:200184デフォルトの名無しさん
2008/05/22(木) 23:17:070185デフォルトの名無しさん
2008/05/22(木) 23:35:400186デフォルトの名無しさん
2008/05/22(木) 23:40:54WM_INITMENUが呼ばれるタイミングっていうのはどういうタイミングで呼ばれるのですか?
たとえばWM_PAINTは、Windowが隠れたりして再描画が必要なときに呼ばれるみたいですが
WM_INITMENUの呼ばれるタイミングがわかりません。
よろしくお願いします。
0187デフォルトの名無しさん
2008/05/22(木) 23:50:390188デフォルトの名無しさん
2008/05/22(木) 23:52:24Releaseビルドでやってるっす。最適化オプションはO2ですね。
vectorのヘッダーを丸ごとコピーして適当に名前を変えてクラスにしたら、
ちゃんとインライン展開されてるようで。どこがキーなのか分かりません。
0189186
2008/05/23(金) 00:07:38自己解決です。スレ汚しすません。
0191デフォルトの名無しさん
2008/05/23(金) 02:29:00トレースでもしりゃわかるよ
0192デフォルトの名無しさん
2008/05/23(金) 02:41:05templateでかけば普通インライン展開されるんじゃなかったけ
0193デフォルトの名無しさん
2008/05/23(金) 08:24:120194デフォルトの名無しさん
2008/05/23(金) 09:04:210195デフォルトの名無しさん
2008/05/23(金) 09:10:18これで挫折するんじゃ救いようがないな
http://ja.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B
Visual C++ 2008 Express Edition
Visual C++ 2005 Express Editionに続き2007年12月18日から公開されている。
ATLやMFCが付属しない点はVisual C++ 2005 Express Editionと同じであるが、
Windows Platform SDKが標準で同梱されるようになり、
Win32アプリケーションの開発に必要なWindows SDKを別途用意する必要がなくなった。
0196デフォルトの名無しさん
2008/05/23(金) 09:14:23・Windowsの仕様
・IDEの使い方
結局これらがわからないとダメなんじゃない?
0197デフォルトの名無しさん
2008/05/23(金) 09:17:37俺はInteliSenceで隠れたところがCtrlキーを押すと半透明になるのが一番
便利だな。
0198デフォルトの名無しさん
2008/05/23(金) 10:58:15知らんかった
0199デフォルトの名無しさん
2008/05/23(金) 13:18:18VC++2008版のATL・MFCは、2005の時のものと大きな差がありますか?
2008EEから2005のMFC・ATL使うと何か弊害が考えられるでしょうか?
0200デフォルトの名無しさん
2008/05/23(金) 14:59:450201デフォルトの名無しさん
2008/05/23(金) 16:25:09例えばIDI_ICON1と言うアイコンをWNDCLASSEX構造体で
WNDCLASSEX wc;
(中略)
wc.hIconSm = LoadIcon(NULL, MAKEINTRESOURCE(IDI_ICON1));
などと指定しても、実際に表示されるのは吹き出しの中に"?"が書かれたアイコン(TTI_INFOと同じ)になってしまいます。
色深度に制限があるのかと思い24bitカラーのアイコンを使ったり実行ファイル用のアイコンをそのまま指定したりもしましたが症状は改善されません。
何が原因でしょうか。
0202デフォルトの名無しさん
2008/05/23(金) 16:38:42LoadIcon の仕様を確認するんだ。
1つめの引数NULLはWindows標準のアイコンだぞ。
0203デフォルトの名無しさん
2008/05/23(金) 17:13:43確かめてみたら追加のアイコンはインスタンスハンドルを指定するんですね…見落としていました。
4bit透過色使用アイコンは作成するソフトによっては色抜けしなくなるようです。
GIMP2で漸く色抜けするアイコンが作成出来ました。
本当にありがとうございました。
0204デフォルトの名無しさん
2008/05/23(金) 18:02:03コマンドライン引数を指定するようなプログラムのソースを書いて実行しても
ファイル名の指定がありません
Press any ker to continue
と出て、うまく行きません。
どうしたらいいですか?
0205デフォルトの名無しさん
2008/05/23(金) 18:08:270206デフォルトの名無しさん
2008/05/23(金) 18:09:13デバッガの使い方の話だよね?
プロジェクトのプロパティの「デバッグ」→「動作」→「コマンド引数」が、
デバッガが動かすプログラムに与えられるコマンドライン引数。
デバッガで動かしてるんじゃないなら、コマンドライン引数を与えてあげてください。
0207デフォルトの名無しさん
2008/05/23(金) 18:11:07それはなあ、おまえのパソコンがハング恩してるんだよ
0208デフォルトの名無しさん
2008/05/23(金) 18:28:18>>206
コマンドライン引数を指定する場所は見つかりました。
当のプログラムが、コマンドライン引数で指定したテキストファイルの内容を表示するプログラム
何ですが、引数はテキストファイルの絶対パスでいいんですか?
0209デフォルトの名無しさん
2008/05/23(金) 18:29:570210204
2008/05/23(金) 18:36:28#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *fp;
char ch;
if(argc!=2) {
printf("ファイル名の指定がありません\n");
exit(1);
}
if((fp = fopen(argv[1], "r"))==NULL) {
printf("ファイルを開くことができません\n");
exit(1);
}
if((fp = fopen(argv[1], "r"))==NULL) {
printf("ファイルを開くことが出来ません\n");
exit(1);
}
while((ch==fgetc(fp)) != EOF) putchar(ch);
fclose(fp);
return 0;
}
0211デフォルトの名無しさん
2008/05/23(金) 18:41:11カレントディレクトリがどこかわからないなら、とりあえず絶対パス入れとけば。
0212204
2008/05/23(金) 19:09:13絶対パスでやっても
ファイル名の指定がありません
となるんですが
0213デフォルトの名無しさん
2008/05/23(金) 19:20:55ひょっとして hoge c:\(途中略)Program Files\xxx の様になってないか?
上記例だと、"Program" と "Files\xxx" の間の空白がパラメータ区切りとみなされて
argc=3になってしまう。
0214デフォルトの名無しさん
2008/05/23(金) 19:21:58っつーか、VC++使ってんならそのままブレークポイント置いてargvの中身見てみろよ。
0215デフォルトの名無しさん
2008/05/23(金) 19:23:28じゃあ進歩しないぜ
0216デフォルトの名無しさん
2008/05/23(金) 22:29:09あれだ!そのプロジェクトと同じフォルダにテキストファイル置いてるか?なら、相対パスでOkだ。
それか、C:\に適当にテキストファイル作ってたとえば、C:\test.txtだったとすると
それで、hoge C:\text.txtってやってみな。それで表示がおかしかったら、if(argc!=2) ←これがおかしい。
argc!=1じゃないのか?なんでargc!=2にしてあるのかよく知らんけど。そこは、コマンドライン引数の個数をかくんだから
1個しか実行プログラムに引数を与えないなら、argc!=1ってしなきゃならん。
まあ、初心者のうちはそうやって七転八倒しながら覚えるって紋だ!!!!!!!!!
がんばりな。俺も、最初はコピー&ペーストすらしらないような人間がプログラムをやろうとしてたんだ。
いまじゃ、7年目で色々できるようになった。まあ、あれだ。がんがれ。
0217デフォルトの名無しさん
2008/05/24(土) 01:21:53>1個しか実行プログラムに引数を与えないなら、argc!=1ってしなきゃならん。
いやいやいやいやいやいやいや
0218デフォルトの名無しさん
2008/05/24(土) 01:31:40これってなくて大丈夫なんでしょうか?
0219デフォルトの名無しさん
2008/05/24(土) 02:01:49可能か不可能かってのなら可能。リソースコンパイラはWindowsSDKにも入ってるから。
0221デフォルトの名無しさん
2008/05/24(土) 10:13:58アプリウィザードを使わなくてもWTLは使えますか?
またWikipediaの解説を見るとATLがないとWTLは使えないようですが、これはWindows SDK for Windows Server 2008 and .NET Framework 3.5に含まれていますか?
選択画面を見る限りなさそうですが…。
因みに当然今は全てWin32APIでゴリゴリ書いています。
>>220
ResEditおすすめ。
IDEに関連付ければソリューションエクスプローラからダブクリで呼び出せるよ。
Unicode版もあるし。
ttp://www.resedit.net/
0222デフォルトの名無しさん
2008/05/24(土) 10:37:36そんなオサレ気なものなくたって、Win32APIがあればまだ5年は戦えるね。
0223デフォルトの名無しさん
2008/05/24(土) 13:27:500224デフォルトの名無しさん
2008/05/24(土) 13:41:132008EEでも、WTLのウィザード使えるよ。
0225デフォルトの名無しさん
2008/05/24(土) 14:06:230226221
2008/05/24(土) 16:50:33ありがとうございます。
取敢えずヘッダーとx86ライブラリをインスコしてからJScriptのファイルを書き換えて実行し、ウィザードが正常に動作する事を確認しました。
しかしその生成されたコードをそのまま実行してみたら、
fatal error C1083: include ファイルを開けません。'atlbase.h': No such file or directory
となってしまいました。
WTLとWindows SDKのインスコ先を見てもatlbase.hはありません。
WinSDKでまだ何か足りないものがあるのでしょうか。
0227デフォルトの名無しさん
2008/05/24(土) 17:06:310228デフォルトの名無しさん
2008/05/24(土) 18:31:23char型の配列名にszなんたらかんたらっていう変数名が多いです。たとえば
szClassName[] とかszText[]とか。。szってなんですかね??
あと、int型の整数を宣言するだけで、初期値を代入せずにいきなり使ってるんですが、
こういうのってありなんですか?なんか、大昔C言語を勉強したときはint i=0;と初期化してからじゃないと
コンパイルエラーが出た覚えがあるんですが。。
すみませんが、おしえてちょんまげ。
0229デフォルトの名無しさん
2008/05/24(土) 18:34:13Windows Driver Kit
http://www.microsoft.com/japan/whdc/DevTools/WDK/WDKpkg.mspx
サインインはいるが、Microsoft Connect Web サイトから無料で、isoイメージをダウンロードできる。
インクルードファイルパスに、"(DDKフォルダ)\inc\crt\atl71"
ライブラリファイルパスに、"(DDKフォルダ)\lib\atl\i386"を追加。
ExpressでのWTLウィザードは、そのままだとATL3.0用になるので、
stdafx.hの中の
#define _WTL_SUPPORT_SDK_ATL3
をコメントアウト。
なぜかATL7.1は、atlthunk.libがライブラリ指定されてないので、
リンクでエラーが出るなら、
リンカの追加の依存ファイルに、atlthunk.libを付ける。
いちいち、書き換えるのが面倒だったら、
WTLテンプレートファイルの方のstdafx.hを書き換えるか、
default.jsの
// Use ATL3 from SDK for VS2005 Express
の項をコメントアウトするといい。
// Linker settingsのところに、
LinkTool.AdditionalDependencies="atlthunk.lib";
で、atlthunk.libをリンク指定できる。
中途半端でほったらかしなWTLなんか使うより、
ATLだけでゴリゴリやった方がいいと思うけどね・・
0230デフォルトの名無しさん
2008/05/24(土) 18:41:28szはsが文字列、zがナル文字終端を表す。
いわゆるシステムハンガリアンというやつ。詳しくはググれ。
初期値を書かない変数は、あとで使うときに代入しているはず。
うっかりその代入を忘れたときには、
下手に0などで初期化しておくよりも、未初期化のままのほうが検出しやすいとされる。
そのため、(Win32プログラムに限らず)Cでは、
むやみに0初期化するべきでないというのが最近の傾向のはず。
もちろん、適切な値で初期化できるときはするべき。
未初期化変数はバグの温床だから、できればないほうがいい。
0231228
2008/05/24(土) 18:44:44どうもありがとうございます。よくわかりました。sが文字列でzがナル文字なるほろ。。
初期化についてもよくわかりました。
本当にどうもありがとうございました。
0232デフォルトの名無しさん
2008/05/24(土) 19:23:22この文章の示す個人情報とは何なのでしょうか。
ttp://privacy.microsoft.com/ja-jp/default.aspx
を読んでも特定出来ず、不安で登録出来ません。
0233デフォルトの名無しさん
2008/05/24(土) 20:02:29電話かメールで問い合わせできるはず
0234デフォルトの名無しさん
2008/05/24(土) 21:35:42private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e){
double A,B,C;
A = double::Parse(textBox1->Text);
B = double::Parse(textBox2->Text);
C = A + B;
textBox3->Text = "答えは" + Convert::ToString(C) + "です";
}
こんなプログラムを作ったのですが、textbox1と2に何も入れないでボタンをクリックすると
エラーが出てしまいます。textbox1と2に0をあらかじめ代入する方法も試したのですが、見栄えが悪いので、
何も数字が入力されていないとき、「入力してください」などのダイアログを表示する方法を教えてください。
0235デフォルトの名無しさん
2008/05/24(土) 22:27:35textBox1->Textが""ならdouble::Parseしないで、
入力を求めるMessageBoxでも表示すればいい。
0236デフォルトの名無しさん
2008/05/24(土) 22:28:43実際に何かやろうとすれば、
メールアドレスとか住所氏名を入力する欄が現れる。
0237234
2008/05/24(土) 23:21:55素早い回答ありがとうございます。
if(textBox1->Text == ""){MessageBox::Show("数字を入力してください");}
else{A = double::Parse(textBox1->Text);}
if(textBox2->Text == ""){MessageBox::Show("数字を入力してください");}
else{B = double::Parse(textBox2->Text);}
こんな感じで出来ましたが、結局Cを計算しようとしてしまいます。
Aが入力されていない時点で、プログラムを停止させることは出来るのでしょうか?
0238デフォルトの名無しさん
2008/05/24(土) 23:38:55全然内容読んでないけどAが入力されていなければexitすれば良いんじゃないかな?
0239デフォルトの名無しさん
2008/05/24(土) 23:56:19return
0240デフォルトの名無しさん
2008/05/24(土) 23:59:21return 0; でやってましたw
大変参考になりました。また機会があればご指導お願いします。
0241デフォルトの名無しさん
2008/05/25(日) 04:19:54_ASSERTを使おうと思ったら
LNK2019: 未解決の外部シンボル _CrtDbgReport が関数 "void __cdecl ほにゃらら"(ちょめちょめ)で参照されました。
というようなリンクエラーが出てしまいました。
crtdbg.hはインクルードしてます。
ためしに新規で作成してみたプロジェクトでは_ASSERTが使えました。
何が原因なのでしょう?
エラーの詳細内容を読んでも理解できませんでした。
ライブラリを使用する際にリンクの追加など、
プロパティを何箇所か変更しています。
環境は Microsoft Visual Stdio. NET 2003 です。
0242デフォルトの名無しさん
2008/05/25(日) 08:25:43リンクの設定をうまくいったのと同じにしたら?
0243デフォルトの名無しさん
2008/05/25(日) 08:28:18ランタイムライブラリがデバッグ版になってないんじゃないの?
C/C++→コード生成
0244241
2008/05/25(日) 14:57:31レスサンクスです。
>243
>ランタイムライブラリがデバッグ版になってないんじゃないの?
まさしくこれでした。
プロパティをいじっている時に構成を「すべての構成」にしていたので、
ランタイムライブラリをマルチスレッドに変えた時にも
リリース版のマルチスレッド設定にしてしまってました。
ありがとうございました。
0245デフォルトの名無しさん
2008/05/25(日) 16:54:36「Virtual PC/Windows CE エミュレータ」で、 Windows が不安定になるのが発生します。
ってメッセージが起動のたびに出るようになって、修復する方法を書いてあるページを見つけたんですが、
ttp://support.microsoft.com/kb/891667/ja
日本語の意味が分かりません。ここの解決方法をどなたか翻訳してください。
0246デフォルトの名無しさん
2008/05/25(日) 19:31:080247デフォルトの名無しさん
2008/05/25(日) 19:52:03最終的にはゲームを作ることを目標にしてるんですが、このままで大丈夫でしょうか…不安で仕方がないです。
0248デフォルトの名無しさん
2008/05/25(日) 22:43:50振り向いたら負け
0249デフォルトの名無しさん
2008/05/26(月) 00:36:56A.bmpを上に、B.bmpを下にして1枚の絵に表示させる
といった内容のモノを作りたいのですが(画像処理?)何か参考になるソース、もしくはHPがあったら教えていただけませんか?
0250デフォルトの名無しさん
2008/05/26(月) 03:52:450251デフォルトの名無しさん
2008/05/26(月) 07:40:58が出るのですが。この(*)の*の数字の詳細が知りたいのですが。(-1とか6とかいろいろある)
よろしくお願いします。
0252デフォルトの名無しさん
2008/05/26(月) 07:52:020253デフォルトの名無しさん
2008/05/26(月) 08:17:170254デフォルトの名無しさん
2008/05/28(水) 16:01:46OUTというマクロはプリプロセッサで無かったことにされてるみたいですが・・・
検索してみても、日本語で解説してあるページを見つけられませんでした。
どなたかお願いします。
0255デフォルトの名無しさん
2008/05/28(水) 17:02:580256デフォルトの名無しさん
2008/05/28(水) 18:08:23ということをプログラマに知らせるだけの記号。
0257デフォルトの名無しさん
2008/05/28(水) 18:24:22__outは/analyzeオプション用
0258デフォルトの名無しさん
2008/05/29(木) 00:35:26win32環境で作ったVC++プロジェクトをマネージ環境に移行するためにはどうすればいいのでしょうか。
.NET用プロジェクトを作ってソースを1つずつ移していくしかないのでしょうか?
0259デフォルトの名無しさん
2008/05/29(木) 08:43:430260デフォルトの名無しさん
2008/05/29(木) 23:15:292008VC++で、GetWindowTextWで取得したCStringをdoubleに変換したいのですが、うまくいきません
コードの書き方を教えてください
0261デフォルトの名無しさん
2008/05/29(木) 23:41:080262デフォルトの名無しさん
2008/05/29(木) 23:46:42CStringよりもstd::stringにしとけ
0263デフォルトの名無しさん
2008/05/29(木) 23:50:39CString str,AAA,BBB,CCC;
GetDlgItemText(IDC_EDIT1,AAA);
GetDlgItemText(IDC_EDIT2,BBB);
AA = atof( (const char*)AAA.GetBuffer(0));
BB = atof( (const char*)BBB.GetBuffer(0));
CC = AA + BB;
CCC.Format(_T("%f"),CC);
str = CCC +_T("が表示されます。");
SetDlgItemText(IDC_EDIT3, str);
こんな風にしたんですが、EDIT1に11.11、EDIT2に22.22を入力すると
"3.000000が表示されます。"と表示されてしまいます
0264デフォルトの名無しさん
2008/05/29(木) 23:56:480265デフォルトの名無しさん
2008/05/30(金) 00:07:49自作のdllを遅延読み込みしたいのですが、
「LNK2001: 外部シンボル xxxx は未解決です。」となってしまいます。
具体的な手順が理解できなくて、
以下の手順でやってるんですが、何か勘違い、抜けなどありますでしょうか。
�@dllはexeが作成されるディレクトリに先に作成されます。
�Adllの関数のプロトタイプを列挙しているヘッダファイルを、
exe側でプロパティでパスを追加した上でincludeする。
�Bリンカの「遅延読み込み」に自作のdll名を入れる
�Cexe側で「LoadLibrary(dll名)」を行う
�Dexe側でdll内の関数を呼び出す。
よろしくお願いします。
0266デフォルトの名無しさん
2008/05/30(金) 00:13:57LoadLibraryはダイナミックリンク
0267デフォルトの名無しさん
2008/05/30(金) 00:35:27ありがとうございます。解決しました
0268デフォルトの名無しさん
2008/05/30(金) 00:53:42ありがとうございます。
ヒントを頂き、ちょっと調べてみました。
�@LoadLibraryを消す
�A「追加の依存ファイル」に xxx.lib を追加
�B呼び出し側「#pragma comment」とかする必要がありそう
⇒"遅延読み込み"モードだからいらない???
�C肝心の.libが見つからない
⇒それくらいはどうにか自分で解決します。。。
早めに間違い・勘違い指摘いただけましたら
すごく助かります。。。
0269デフォルトの名無しさん
2008/05/30(金) 01:26:44ttp://system-trading.jp/news/index.php?ID=39
5月22日より登録受付開始、6月2日よりグランプリ開始の予定。
ttp://www.fx-gp.com/
●社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円
https://www.click-sec.com/corp/guide/demo/
0270デフォルトの名無しさん
2008/05/30(金) 10:47:51次のコードを書くと、Debug ビルドでは問題なく動きますが Release ビルドでは
アプリケーションが強制終了することがあります。なぜでしょうか?
// ゼロでクリアされた構造体を用意する関数
template < typename T >
T zeroStruct() { T t; memset( & t, 0, sizeof( T ) ); return t; }
void main() {
A a = zeroStruct< A >(); // A は構造体の型
}
0271デフォルトの名無しさん
2008/05/30(金) 12:17:48dllをスタティックにリンクするにはdllimportを使う。externだけじゃ呼べないよ。といってみる。
自作dllを作ったならdllexportを使ってると思うからその逆の使い方だ。
0272デフォルトの名無しさん
2008/05/30(金) 12:18:400273デフォルトの名無しさん
2008/05/30(金) 13:20:30それだけの用途なら、そんな滓みたいなテンプレート関数作る必要なんてさらさらないじゃん。
A a = {0}で充分。
0274270
2008/05/30(金) 13:52:27A a = {0} なんて書き方があったんですか。ありがとうございます。
わざわざ関数呼ばずとも、こちらを使った方が断然良いですね。
0275デフォルトの名無しさん
2008/05/30(金) 14:09:04wsprintf(chStr , "インスタンスハンドル : %d" , hInstance);
MessageBox(NULL , chStr , TEXT("Kitty on your lap") , MB_OK);
http://wisdom.sakura.ne.jp/system/winapi/win32/win5.html
これやると
'MessageBoxW' : 2 番目の引数を 'CHAR [128]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
っていわれるんだけど・・。なんか昔やってたソースを2008でやろうとしても同様にエラーがでる・・。
関数にcharのlong pointerの引数があったらそこに単純に"abc"ってやってもpointerわたしてるんだよね?
0276デフォルトの名無しさん
2008/05/30(金) 14:27:35下の方ではTCHAR 使ってるし
0277デフォルトの名無しさん
2008/05/30(金) 14:31:290278デフォルトの名無しさん
2008/05/30(金) 15:57:130279デフォルトの名無しさん
2008/05/30(金) 17:43:44LRESULT CALLBACK WndProc(HWND, UINT , WPARAM, LPARAM){
}
みたいなメインループ部分が見当たりません。
メインループさせたい場合、どのように書けばよいですか?
0280デフォルトの名無しさん
2008/05/30(金) 17:46:470281デフォルトの名無しさん
2008/05/30(金) 17:59:23Win32アプリケーションのプロジェクトを作ればいいと思うよ。
0282デフォルトの名無しさん
2008/05/30(金) 19:07:50C#から入ってきたので文字列周りの処理が死ぬほどムズイ
文字列処理に特化して説明してるHPとかありませんか
0283デフォルトの名無しさん
2008/05/30(金) 19:12:310284デフォルトの名無しさん
2008/05/30(金) 22:41:490285デフォルトの名無しさん
2008/05/31(土) 00:34:25VC++はいじったことないのでお勧めの書籍あるいはURL等ありましたら
教えて貰えませんか。
0286デフォルトの名無しさん
2008/05/31(土) 00:42:18とりあえず本屋で適当に選んできなよ
0287デフォルトの名無しさん
2008/05/31(土) 07:57:34std::stringを使えばいい
0288デフォルトの名無しさん
2008/05/31(土) 11:49:37CLR使わなきゃいい
0289デフォルトの名無しさん
2008/05/31(土) 12:33:090290デフォルトの名無しさん
2008/06/01(日) 01:31:59VCでするにはどうすればよいでしょうか?
0291デフォルトの名無しさん
2008/06/01(日) 19:13:16動作をデバッグするにはどうしたらいいんでしょう?
具体的には
int main( int argc, char** argv ){
の引数をいろいろ変えながらデバッグしたいんですが・・・。
0292デフォルトの名無しさん
2008/06/01(日) 19:16:26すごいよMSDNむすどんむすどん。
0293デフォルトの名無しさん
2008/06/01(日) 20:01:160294デフォルトの名無しさん
2008/06/01(日) 23:59:57sprintf(msg1,"%d:%s",no,str);
警告 1 warning C4996: 'sprintf' が古い形式として宣言されました。 c:\_将棋\fj-sai\fai001\fai001\メッセージ送信1.cpp 33
この警告を出さなくする方法ありませんか?
0295デフォルトの名無しさん
2008/06/02(月) 00:07:290296デフォルトの名無しさん
2008/06/02(月) 00:14:43#pragmaで抑制できたはず。
詳しくはググれ。
0297デフォルトの名無しさん
2008/06/02(月) 00:15:09sprintfを使わずに、boost::formatを使う。
0298デフォルトの名無しさん
2008/06/02(月) 00:21:24出来ました.ありがとうございます。
>>297
調べてみます。ありがとうございました。
0299デフォルトの名無しさん
2008/06/02(月) 00:42:520300デフォルトの名無しさん
2008/06/02(月) 00:47:04メニュー[プロジェクト] -> プロパティ -> デバッグ -> コマンド引数
を変更すればおkなはず。
面倒なときはイリーガルだけど、
#ifdef DEBUG
char* argv_[2] = { "application", "" };
argc = 2;
argv = argv_;
#endif
みたいにでばっぐしてみればどう?
0301デフォルトの名無しさん
2008/06/02(月) 06:42:550302デフォルトの名無しさん
2008/06/02(月) 07:12:08できるよ。
以上。
はい、次。
0303MFC始めて2日目
2008/06/02(月) 10:42:54void CDeepPurpleDoc::Serialize(CArchive& ar)
{
CString ss;
// CEditView は、すべてのシリアル化を処理するエディット コントロールを含んでいます。
reinterpret_cast<CEditView*>(m_viewList.GetHead())->SerializeRaw(ar);
if(ar.IsStoring())
{
ar << ss;
}
else
{
ar >> ss;
}
}
既存のテキストファイルを開こうとしたら
予期しないファイル形式
というエラーが出た。
シリアライズってなんだ?
0304デフォルトの名無しさん
2008/06/02(月) 11:12:43VC++2008で、BとCの下のスピンボタンの値を足し算して、Aの下の部分に表示したいんですが
どのように記述すれば値を取得して計算・表示できるのでしょうか?
0305デフォルトの名無しさん
2008/06/02(月) 12:21:030306デフォルトの名無しさん
2008/06/02(月) 15:37:34Bの下、Cの下、それぞれのスピンボタンの値を取得し、それらを加算してから文字列に変換し、
Aの下に直接書き込むか或いはAの下に配置したスタティックテキストを書き換えれば宜しい。
0307デフォルトの名無しさん
2008/06/02(月) 20:37:05オブジェクトを保存・読み込みする、みたいなコンセプト。
そこいらにあるファイルをデシリアライズするのは大変。
0308デフォルトの名無しさん
2008/06/02(月) 23:28:04遅くなりましたが、今、無事できました!
コンパイルもリンクもうまくいき、
ちゃんとdll内の関数も呼び出せました!
本当に、ありがとうございました。
0309デフォルトの名無しさん
2008/06/03(火) 21:41:31これはMFCなのか、ATLなのか。
0310デフォルトの名無しさん
2008/06/04(水) 00:57:200311MFC始めて3日目
2008/06/04(水) 14:32:28{
reinterpret_cast<CEditView*>(m_viewList.GetHead())->SerializeRaw(ar);
BYTE* pByteBuff;
CEditView* pEditView = ((CEditView*)m_viewList.GetHead());
if(ar.IsStoring())
{
CFile* pFile = ar.GetFile();
UINT size = (pEditView->GetEditCtrl()).GetWindowTextLengthA();
pByteBuff = new BYTE[size + 1];
UINT len = (pEditView->GetEditCtrl()).GetWindowTextA((LPTSTR)pByteBuff,size + 1);
pByteBuff[len] = 0;
pFile->Write(pByteBuff,len);
}
else
{
}
delete pByteBuff;
}
とやってファイルに書き込むと2回書き込まれる。
MFCがなにかやってるのか。
0312デフォルトの名無しさん
2008/06/04(水) 14:42:100313MFC始めて3日目
2008/06/04(水) 15:07:56(ソースコードの else の行に矢印がついてプログラムがストップ)
0315デフォルトの名無しさん
2008/06/04(水) 19:30:51現在MSVC++2005ProのMFCを用いてソフトを作ろうと考えております
一次元での温度分布をグラフィック表示するものを作ろうと考えていて
物体の二点の温度を入力した際に、その間を一次関数的に温度が増減すると仮定した上で
その温度分布をモノクロの色の濃さで表現するようなものを作りたいと思っています
このようなグラデーション表示を描画するためにはどのようにすればよいのでしょうか?
よろしくお願いいたします。
0316デフォルトの名無しさん
2008/06/04(水) 19:58:18の中で、同クラス内のフィールドを参照したい場合どうすればいいの?
ふつーに参照しようとすると、
関数呼び出しには引数リストがありません。
って言われるんだけど・・・
0317デフォルトの名無しさん
2008/06/04(水) 20:57:540318デフォルトの名無しさん
2008/06/04(水) 21:17:410319デフォルトの名無しさん
2008/06/04(水) 22:01:21下記のコードをビルドして実行すると点数の表示が-184563みたいに変な数字になってしまいます
どうすればちゃんとしたのを作れるでしょうか?
Visual Studio 2008 コマンドプロンプトからコンパイルすれば思ったとおりの結果になります
#include<stdio.h>
int main(void)
{
int score;
printf("点数を入力してください:");
scanf_s("%d",&score);
if (score > 100) score = 100;
printf("あなたの点数は %d 点です。");
return 0;
}
0320デフォルトの名無しさん
2008/06/04(水) 22:18:110321デフォルトの名無しさん
2008/06/04(水) 22:58:10できました
ありがとうございます
0322デフォルトの名無しさん
2008/06/04(水) 23:10:32http://pc11.2ch.net/test/read.cgi/tech/1212329099/
0323デフォルトの名無しさん
2008/06/05(木) 11:29:240324デフォルトの名無しさん
2008/06/05(木) 20:28:29MFCじゃなくてもOkになってたとは
0325デフォルトの名無しさん
2008/06/05(木) 21:41:55CALLBACK関数には、クッキーと呼ばれる自由に使っていいパラメータが用意されている場合が多い。そこにインスタンスのポインタを乗せて渡したりする。
0326デフォルトの名無しさん
2008/06/05(木) 22:13:37textbox->text = 配列変数名
だと型がcharをstringにできないとコンパイルエラーが出てしまいます。
環境は.Net2008です。
よろしくお願いします。
0327デフォルトの名無しさん
2008/06/05(木) 22:19:44どんな風に出したいのか詳細に決めたら、一気にプログラムを書く
0328326
2008/06/05(木) 22:42:30ループで1文字ずつstring型変数に入れて文字列にしてからtextBoxに
入れるしかないんですかね?
0329デフォルトの名無しさん
2008/06/05(木) 23:56:16文字列だって配列なんだし
0330デフォルトの名無しさん
2008/06/06(金) 00:58:380331326
2008/06/06(金) 01:07:324ビット区切りの16進数が12個並んでるからです。
EE000FF00002みたいな。
それをテキストボックスに1行ごとに表示させたいんです。
0332デフォルトの名無しさん
2008/06/06(金) 02:02:58自作のクラスを.cpp/.hで作って、
それらのファイルをプロジェクトには追加せずに、
.hをインクルードするだけで使うことはできませんか?
イメージは、stdio.hをインクルードしてprintfを使う、みたいな感じで。
ツール→オプション→VC++ディレクトリ、でパスは通してあります。
宜しくお願いします。
0333デフォルトの名無しさん
2008/06/06(金) 02:09:070334デフォルトの名無しさん
2008/06/06(金) 06:28:070335デフォルトの名無しさん
2008/06/06(金) 07:39:010336デフォルトの名無しさん
2008/06/06(金) 09:29:31printfと同じようにするなら>>333のいうとおりライブラリにする
ついでに、pragmaいれとけばlibのファイル名指定はいらなくなる
適切な場所にlibをおく必要はあるが。
0337デフォルトの名無しさん
2008/06/06(金) 09:38:52繋いである他PCから起動するとエラーが発生します。
HDDにコピーせず直接起動させるのにはどうしたら良いでしょうか?
パソコン自体に設定するのではなく、ファイル自体に設定したいので
よろしくお願いします。
エラー内容
問題が発生したため、.exeを終了します。
ご不便をおかけして申し訳ありません。
0338デフォルトの名無しさん
2008/06/06(金) 11:12:33みたいなツールを作ろうと思い、keybd_eventでキーイベントを発生させてみたのですが、
MHFでキーイベントを認識してくれません.(JoyToKeyは認識する.)
どうすればよいでしょうか?
0339デフォルトの名無しさん
2008/06/06(金) 11:22:080340デフォルトの名無しさん
2008/06/06(金) 13:54:47>>336
ありがとうございます。
やっぱりライブラリにするべきなんですね。
なるべくならライブラリにはしたくなかったんですが、
とりあえずその線で行くことにします。
0341デフォルトの名無しさん
2008/06/06(金) 18:35:45答えられるものだけ答える側が判断して答えればおkなんじゃないの?
0342デフォルトの名無しさん
2008/06/06(金) 19:07:010343デフォルトの名無しさん
2008/06/06(金) 19:21:30DLL作成側で生成したポインタのハンドラを呼び出し側に渡そうと
引数にて受け渡ししようとしていますが、
呼び出し側で確認をすると、ハンドラの値は0のままです。
DLL連携をすると引数受け渡しは不可能なのでしょうか?
■DLL作成側(MinGW)
●cpp
extern "C" __declspec(dllexport) int __stdcall GeoOpen(char* chrLicence, char* chrGeoDBDir, char* chrNormalize, long* lngHandler) {
Geo *geo = new Geo();
lngHandler = (long*)geo;
return 1;
}
■DLL呼び出し側(VC++)
●h
typedef int (__stdcall *GEOOPEN)(char*, char*, char*, long*);
●cpp
GEOOPEN geoOpen = (GEOOPEN)GetProcAddress(hGEOCODERDLL, "GeoOpen@16");
long* lngHandler;
if (geoOpen != NULL) {
int intRes = (*geoOpen)(chrLicence, chrGeoDBDir, chrNormalize, lngHandler);
}
0344デフォルトの名無しさん
2008/06/06(金) 19:59:22またDLLに渡す頃には消失されてる・・・のかな?
0345デフォルトの名無しさん
2008/06/06(金) 20:05:56int型の値を引数で返すには、引数をint*やint&にするだろ。
それと同じで、long*型の値を引数で返すには、long**やlong*&にしないといけない。
0346デフォルトの名無しさん
2008/06/06(金) 20:41:03プロジェクトに属するcppファイル内で使用したいcppをインクルードするという方法を
ときどき使ってる。
0347346
2008/06/06(金) 20:42:35使用したいcppをインクルードするという方法をときどき使ってる。
// CppIncluder.cpp
#include "included.cpp"
0348デフォルトの名無しさん
2008/06/07(土) 08:20:23DOS時代はコンパイルだけしといて
バッチファイル内のリンカのコマンドラインにobjファイル追加してた。
今はVCなのでプロジェクトに追加するだけ。
0349デフォルトの名無しさん
2008/06/07(土) 14:02:410350デフォルトの名無しさん
2008/06/07(土) 14:36:34確認するために簡単なプログラムを書いて試したい時、
どうしてますか?
0351デフォルトの名無しさん
2008/06/07(土) 14:58:150352デフォルトの名無しさん
2008/06/07(土) 15:06:160354デフォルトの名無しさん
2008/06/07(土) 19:15:40int ary[size];
上記のようなコードを書いたところ、コンパイルエラー
error C2057: 定数式が必要です。
となりました。
sizeはconst指定なので問題ないように思ったのですが、
何か解決策はありますでしょうか?
0355デフォルトの名無しさん
2008/06/07(土) 19:40:360356デフォルトの名無しさん
2008/06/07(土) 19:46:54pow
0357デフォルトの名無しさん
2008/06/07(土) 19:48:44#define POW2_10 (1024)
0358354
2008/06/07(土) 19:56:24gccでは通ったのでVCでもと思ったのですが…。
ありがとうございました。
0359デフォルトの名無しさん
2008/06/07(土) 20:40:22{
CoInitialize(NULL);
// 内部でCOMを使うクラス
COMClass cClass
CoUninitialize();
return 0;
}
ってやった場合先にCoUninitialize();が呼ばれそうですが
cClassのデストラクタでRelease()出来ますか?
0360デフォルトの名無しさん
2008/06/07(土) 20:44:41一応言っておくが、VCではなぜダメかというと
C99に対応してないので可変長配列が使えないから。
0361デフォルトの名無しさん
2008/06/07(土) 20:52:21可変長配列が普通の配列と同じように宣言できるの?
それってヤバくね?
0362デフォルトの名無しさん
2008/06/07(土) 21:01:18int main()
{
class inner_
{
public:
inner_() { CoInitialize(NULL); }
~inner_() { CoUninstialize(); }
}
inner_ in;
COMClass cClass;
return 0;
}
0363デフォルトの名無しさん
2008/06/07(土) 21:03:21なるほど!ありがとうございます!
0364デフォルトの名無しさん
2008/06/07(土) 21:45:55可変長配列の話じゃなくて、constつけてるのになぜ定数にならないかという話だと思う。
0365デフォルトの名無しさん
2008/06/07(土) 21:52:15関数呼び出しは静的じゃないからな。
constexpr を待ってくれとしか。
まあ、2の累乗ならビットシフトでできるから
そっちでやればいいけどね。
0366デフォルトの名無しさん
2008/06/08(日) 03:25:26ってやると aのサイズが1で
bのサイズが1を超えててもおKみたいなんだけど
勝手にaのサイズをかえてくれるってことでつか?
勝手にサイズ変えてくれるならどんなサイズでも問題ないよね?
って思ってどんどんstrcatしつづけるとそのうち原因不明のエラーが
で、aのサイズを増やすとエラーでなくなる
0367デフォルトの名無しさん
2008/06/08(日) 03:28:08バッファを超える文字列入れると
他の変数の置いてあるメモリを破壊するぜ。
0368デフォルトの名無しさん
2008/06/08(日) 08:43:30たまたまエラーにならなかっただけでしょう。
0369デフォルトの名無しさん
2008/06/08(日) 13:09:28トンクス やっぱりそれなりのサイズを用意しないとだめですか
そろそろstd::stringかCStringあたりを使うのを検討したいと思います
C#からきたのでString型でたいがいのことが済んでしまう環境に慣れてて
辛いです
0370366
2008/06/08(日) 16:16:520371デフォルトの名無しさん
2008/06/08(日) 16:17:350372デフォルトの名無しさん
2008/06/09(月) 11:01:21String^ str = "12345";
この文字列を数値に変換する方法を教えていただけませんか?
0373デフォルトの名無しさん
2008/06/09(月) 14:24:240374デフォルトの名無しさん
2008/06/09(月) 16:10:37無事解決しました。
0375デフォルトの名無しさん
2008/06/09(月) 17:20:01以下のような2つのクラスを作成しました。
目的は clbBクラス を clsAクラス に包含させるためです。
これをコンパイルすると C2061 エラーが発生します。
どなたか問題点とその対応を御教授いただけると幸いです。
//--------------------------------
// clsA.h
//--------------------------------
#include "clsB.h"
class clsA
{
public:
clsA();
virtual ~clsA();
private:
clsB m_b;
}
//--------------------------------
// clsB.h
//--------------------------------
#include "clsA.h"
class clsB
{
public:
clsB();
virtual ~clsB();
private:
clsA m_a;
}
0376デフォルトの名無しさん
2008/06/09(月) 17:23:43勉強しなおすことをお勧めするよ。(マジデ)
0377デフォルトの名無しさん
2008/06/09(月) 17:36:24クラスが無限ループしている…ブルブルガクガク…
0378デフォルトの名無しさん
2008/06/09(月) 19:00:30http://pc11.2ch.net/test/read.cgi/tech/1210694402/
C++相談室 part62
http://pc11.2ch.net/test/read.cgi/tech/1211900039/
0379デフォルトの名無しさん
2008/06/09(月) 19:09:09これではどうなのでしょうか?だめなら↑に行きます・・・
よろしくお願いします。
//--------------------------------
// clsA.h
//--------------------------------
#include "clsB.h"
class clsA
{
public:
clsA();
virtual ~clsA();
private:
clsB m_b;
}
//--------------------------------
// clsB.h
//--------------------------------
class clsA;
class clsB
{
public:
clsB();
virtual ~clsB();
private:
clsA m_a;
}
0380デフォルトの名無しさん
2008/06/09(月) 19:19:140381デフォルトの名無しさん
2008/06/09(月) 19:51:18スレで聞いて解決というレベルの話ではなく>>376の言うとおりだと思うよ
0382デフォルトの名無しさん
2008/06/09(月) 20:38:230383デフォルトの名無しさん
2008/06/10(火) 01:33:13どんな文字列を入れても「4」しか返ってきません。
関数は
int func(char*strName, char strValue[])
の様にして、関数内で
int intValue1 = (int)sizeof(strValue1);
としています。
関数の外で(int)sizeof(strValue1)する分には正しい数値が得られます。
どうしたら関数内で正しい文字列の長さを取得できますでしょうか?
0384デフォルトの名無しさん
2008/06/10(火) 02:48:04strValueのことだとしても、関数の外(呼び出し元ってことだよね?)だろうが中だろうがsizeofでは文字列長は取れない
文字列の長さなら素直にstrlenでも噛ませばよかろう
つーか、VC++じゃないよね
>>378の方が勉強になるんじゃない?
ついでなので
>関数の外なら正しい数値が得られる
文字列長ではなくて多分配列長(文字列長+終端文字の1バイト)が取得できていると思われる
0385デフォルトの名無しさん
2008/06/10(火) 12:55:43ありがとうございました。
strlenでうまくいきました。
配列長が関数の引き数からは
うまくとれないのは渡し方の問題
ですかね?初心者スレで検索・質問
してみます。
0386デフォルトの名無しさん
2008/06/10(火) 13:33:12俺だったら自分で調べようと思うが
0387デフォルトの名無しさん
2008/06/10(火) 13:58:00知りたい情報に関連する知識も得られたりするよね。
0388デフォルトの名無しさん
2008/06/10(火) 14:00:00その関数じゃ実行時にしか長さわからんだろ。
0389MFC始めて2週間目
2008/06/10(火) 14:58:06Rect を指定してテキストを印刷するとき
行間値の調整はどうするの?
0390デフォルトの名無しさん
2008/06/10(火) 15:08:20配列の全要素を並べて表示することは出来ないのでしょうか?
変数一個一個しか確認できないので配列の全要素の値を追いたいときにすごく面倒なんです
0391デフォルトの名無しさん
2008/06/10(火) 15:09:470392デフォルトの名無しさん
2008/06/10(火) 15:17:07配列じゃなくて、ポインタにnewした複数個のデータの表示法でした。
某CWだとツリー表示することが出来るので、VSでも出来ないのかなと・・・
0393デフォルトの名無しさん
2008/06/10(火) 15:20:26ウオッチ式のとこ、ポインタ,要素数 でやってみ。
p,100 とか
0394デフォルトの名無しさん
2008/06/10(火) 15:25:480395デフォルトの名無しさん
2008/06/10(火) 15:27:570396デフォルトの名無しさん
2008/06/10(火) 15:32:08言ってることがやっとわかりました。
ポインタ変数の名前の後に ,100 と追加すればいいんですね
いや、ポインタ、要素数でググれってことか勘違いしました
見れました。ありがとうございます。
しかし、これってただvc使ってるだけだと気付かないですよね?
ヘルプも見たんですけど、載ってなかったような・・・
こういう機能ってどこで知ったんですか?
0397デフォルトの名無しさん
2008/06/10(火) 15:34:100398デフォルトの名無しさん
2008/06/10(火) 15:39:36自分の調査能力が足りないみたいです
0399デフォルトの名無しさん
2008/06/10(火) 15:45:10この話出たの2008のスレだった。
そこで出たリンクに↓があるのでみてみて。
ttp://msdn.microsoft.com/ja-jp/library/75w45ekt.aspx
0400デフォルトの名無しさん
2008/06/10(火) 15:49:17書式指定でどうこう出来るもんだとは全然思わなかったのでスルーしてました
ありがとうございました
0401デフォルトの名無しさん
2008/06/10(火) 20:38:31VS2003のVC++のGDI+なんですが、
Font font = new Font(dc, &logfont);
とするとフォントをインスタンス化できますけど、logfontのフォント名に
"@MSゴシック" のように横に傾くフォントを指定すると、うまく指定され
ないように思われます。
たとえば
LOGFONT lf1, lf2;
lf1.lfFaceName = "@MS ゴシック"
Font* font = new Font(dc, &lf1);
font->GetLogFontW(&graphics, &lf2);
というように確認してみると、lf1には確かに"@MS ゴシック"がセットされて
いるのに、lf2には"@"が外れて"MS ゴシック"がセットされてしまいます。
私は何を勘違いしてるでしょうか?
0402デフォルトの名無しさん
2008/06/10(火) 21:54:05動くの使えばいいんじゃないか?
0403デフォルトの名無しさん
2008/06/10(火) 22:25:470404デフォルトの名無しさん
2008/06/10(火) 22:28:470405401
2008/06/11(水) 09:30:19何というキーワードでググったんですか?
0406デフォルトの名無しさん
2008/06/11(水) 09:59:410407デフォルトの名無しさん
2008/06/11(水) 10:08:300408ごー
2008/06/11(水) 14:49:52プログラム側からコールスタックの情報を取得することってできる?
__FILE__ と __LINE__ だけでは、その場所の情報しか取れないのが不満。
0409デフォルトの名無しさん
2008/06/11(水) 15:34:230410デフォルトの名無しさん
2008/06/11(水) 20:33:26こういう話か?
public:
test(void){};
~test(void) {};
};
#include <stdio.h>
#include "test.h"
int main() {
test x = new test();
printf("Hello World! \n");
}
1>c:\documents and settings\default\my documents\visual studio 2005\projects\test\test\main.cpp(7) :
error C2679: binary '=' : no operator found which takes a right-hand operand of type 'test *' (or there is no acceptable conversion)
なにこれ?
0412デフォルトの名無しさん
2008/06/12(木) 22:16:31にしろといってるんだろ
0414デフォルトの名無しさん
2008/06/12(木) 22:41:21unsigned short ss =
(u_short)GetDlgItemInt(
hDlg,
IDC_TBX,
&FLG,
FALSE
);
と書いてるのにIDC_TBXに入力された値と違う値を返すときがある
数値が10000超えたあたりからおかしい
test x = *(new test());
0416デフォルトの名無しさん
2008/06/12(木) 23:37:06だめだぴょん
0417デフォルトの名無しさん
2008/06/12(木) 23:58:50エスパーさんの出番です
0418デフォルトの名無しさん
2008/06/13(金) 01:01:420419デフォルトの名無しさん
2008/06/13(金) 11:41:21#define test* Test
0420デフォルトの名無しさん
2008/06/13(金) 22:28:16test &x = *(new test());
0421デフォルトの名無しさん
2008/06/13(金) 22:36:17test x = new test();
を
test *x = new test();
0422デフォルトの名無しさん
2008/06/13(金) 22:41:25Visual C++でやってるんですが、ライブラリのファイル?の作り方を教えてください。
0423デフォルトの名無しさん
2008/06/13(金) 23:52:05.libのプロジェクトを作りたいってのなら、
Win32のウィザードでスタティックライブラリを選ぶだけだが。
0424デフォルトの名無しさん
2008/06/14(土) 00:20:11ごめんなさい。初心者なんで全然わかんないんです。
スタティックライブラリは選びました。プロパティでもスタティックライブラリって
なってるんですが、プロジェクトのファイルの中に.libのついたついたのは
Debugフォルダの中に1つだけあります。それでいいんですか?
.cppのはビルトできたのですが、ライブラリってそれをどこからでも使えるってことですよね?
もしかして新しいプロジェクトではそれをincludeしても使えないんですか?
0425デフォルトの名無しさん
2008/06/14(土) 01:03:16インクルードするのはlibファイルじゃなくてヘッダ。
ライブラリに入れた関数の、プロトタイプ宣言やらなんやらのヘッダは自分で作らないと駄目。
(あるソースの関数を、別のソースから参照する時と一緒)
libファイルはリンカで結合するものなんで、
VC++のIDEなら、プロジェクトの構成プロパティのリンカ→入力→追加の依存ファイルに
追加しとけばリンクしてくれる。
他にもソース中に、#pragma comment(lib, "hoge.lib") とか書く方法もある (VC++依存)。
0426デフォルトの名無しさん
2008/06/14(土) 01:13:34ほとんど無いと思うんだが。
0427デフォルトの名無しさん
2008/06/14(土) 01:59:09すいません。全くできません。上のページの次のページの
#include <time.h>〜 return (day_of_week[mytime->tm_wday]);
}を.cppに、int get_time(int *, int *, int *);とchar *get_date(int *, int *, int *);
を.hに、プロジェクト名は1です。構成の種類はスタティックライブラリ。
そしてprivateという別の(構成の種類は実行)プロジェクトのcppに
#include <stdio.h> #include "1.h"〜 return 0;}を、(hは空です)とやっている
のですが、1.hをincludeできませんNo file みたいなのになるんです。
そもそもどうなるのかさえわかりません。追加の依存ファイルも候補みたいな感じで
出てきませんし、手打ちで入力してもビルドしても同じ結果です。
0428デフォルトの名無しさん
2008/06/14(土) 05:55:24ライブラリの使い方がわからないんじゃないか?
0429デフォルトの名無しさん
2008/06/14(土) 09:26:01長いので2つに分けます。申し訳ない。
/* windowsapp.h */
class CWindowsApp{
/* 中略 */
public:
void Initialize(HINSTANCE,INT,char*,int,int);
bool CreateWindow(); // 53行目
}
/* windowsapp.cpp */
bool CWindowsApp::CreateWindow() // 48行目
{ // 49行目
/* 中略 。やってる事は、WNDCLASSを作ってCreateWindowEx()を使って
ウィンドウを表示させるという流れ */
}
/* script.cpp */
bool initialize(){
/* 中略 */
// ウィンドウの作成。成功or失敗をそのまま返す
// g_WindowsAppInstは、既述したCWindowsAppクラスのインスタンス
return g_WindowsAppInst.CreateWindow(); // 76行目
}
0430デフォルトの名無しさん
2008/06/14(土) 09:26:41C:\Program Files\Microsoft Visual Studio\MyProjects\addressbook\windowsapp.h(53) : warning C4003: マクロ 'CreateWindowA' に指定された実引数の数が少なすぎます。
C:\Program Files\Microsoft Visual Studio\MyProjects\addressbook\windowsapp.h(53) : error C2059: 構文エラー : 'constant'
C:\Program Files\Microsoft Visual Studio\MyProjects\addressbook\script.cpp(76) : warning C4003: マクロ 'CreateWindowA' に指定された実引数の数が少なすぎます。
C:\Program Files\Microsoft Visual Studio\MyProjects\addressbook\script.cpp(76) : error C2059: 構文エラー : ','
C:\Program Files\Microsoft Visual Studio\MyProjects\addressbook\windowsapp.cpp(48) : warning C4003: マクロ 'CreateWindowA' に指定された実引数の数が少なすぎます。
C:\Program Files\Microsoft Visual Studio\MyProjects\addressbook\windowsapp.cpp(48) : error C2059: 構文エラー : ','
C:\Program Files\Microsoft Visual Studio\MyProjects\addressbook\windowsapp.cpp(49) : error C2143: 構文エラー : ';' が '{' の前に必要です。
C:\Program Files\Microsoft Visual Studio\MyProjects\addressbook\windowsapp.cpp(49) : error C2447: グローバルスコープで中カッコ ({) が見つかりましたが、対応する関数ヘッダーがありません。
関数のオーバーロードは、引数が異なれば可能というのは調査済みだったのでやってみたら、こんなエラーが・・・
しかし、このCreateWindow()関数の名前を、CreateWndとかCreateWindowCという名前に変更したら、すんなりコンパイルしてくれました。
どうしてこのようなエラーが出るのでしょうか。オーバーロードの条件について、何か勘違いをしているのでしょうか・・・
0431デフォルトの名無しさん
2008/06/14(土) 09:33:59CreateWindowはマクロでCreateWindowA/CreateWindowsWのどちらかになるが、
さらにCreateWindowAとWの両方ともCreateWindowExAとWを呼ぶ関数マクロになっている。
つまり、関数でないCreateWindowに多重定義は無理だから、ほかの名前にするしかない。
たとえばMFCやATLみたいにCreate()とか。
0432デフォルトの名無しさん
2008/06/14(土) 09:42:03迅速な対応、ありがとうございました!
0433デフォルトの名無しさん
2008/06/14(土) 10:18:12プログラミング以前にフォルダとかパスとか判ってなさそう・・・
0434デフォルトの名無しさん
2008/06/14(土) 10:24:59すいません。
ようするにどうやったら違うプロジェクトで
あるプロジェクトで作った関数を使えるようになるかってことなんですけど。
0435デフォルトの名無しさん
2008/06/14(土) 10:57:490436デフォルトの名無しさん
2008/06/14(土) 11:06:25つまり同プロジェクト内で作った関数のソースファイル、それを
一般化?したヘッダファイルの一対がライブラリってことですか?
0437デフォルトの名無しさん
2008/06/14(土) 11:13:070438デフォルトの名無しさん
2008/06/14(土) 11:17:20いろんなソールファイル内の関数をメインのソースで使うためのまとめ役?橋架け役?
みたいな感じじゃないんですか?
0439デフォルトの名無しさん
2008/06/14(土) 11:21:540440デフォルトの名無しさん
2008/06/14(土) 11:22:250441デフォルトの名無しさん
2008/06/14(土) 11:26:200442デフォルトの名無しさん
2008/06/14(土) 11:29:17ビルドは何をしている? [VC++の使い方]
0443デフォルトの名無しさん
2008/06/14(土) 11:31:50lib と .h を使うプロジェクトのフォルダにコピーするか、
プロジェクトのプロパティの、
「追加のライブラリディレクトリ」と「追加のインクルードディレクトリ」を設定するか、
#includeと「追加のライブラリファイル」でパスまで指定するか、
好きなの選べ。
最後のは、あんまり推奨しないが・・・
0444デフォルトの名無しさん
2008/06/14(土) 12:00:09>>440入門者のゲームプログラム作る本とか他にも入門書はいくつかやりました。
>>441変数のスコープは知ってますが関数のスコープはわかってないかもしれません。
ゲームプログラムの本の経験も含めて、1つのプロジェクト内でcppとhを対にしていくつも作る、
それで各対の関数を引き出す?そしてメインで使うみたいなのはできてるんです。
要するに疑問というか想像なのは、標準ライブラリみたいにcppとhの対が見えない、タグが無いというか・・
内部にしまわれてるというか、そうゆう状態で、どのプロジェクトでもhをincludeすれば
使えるようになる のを作るのがライブラリを作るってことではないのですか?
>>442ありがとうございます!わかりやすかったです。
0445デフォルトの名無しさん
2008/06/14(土) 12:10:42ありがとうございます。
プロジェクトのプロパティの、「追加のライブラリディレクトリ」に今なにも入ってない状態なんですが、
参照で見ていっても条件に一致するファイルはありません。となります。
そもそもここにどうゆう拡張子のものを追加できるかもわからないので、なぜ、どんな候補が無いかも
全くわからない状態です。
0446デフォルトの名無しさん
2008/06/14(土) 12:28:39フォルダの指定だから、ファイルの候補は無くていいんだよ。
0447デフォルトの名無しさん
2008/06/14(土) 12:39:48今フォルダごと追加のライブラリ ディレクトリに指定しましたが、やっぱり<1.h>をincludeできません。となります。>>427
の状態です。
0448デフォルトの名無しさん
2008/06/14(土) 12:52:49全然別の場所に置いて使うのが普通
0449デフォルトの名無しさん
2008/06/14(土) 12:56:38ライブラリ作成に挑戦するのは、
もうちょっとプログラミングそのものが
判ってからにした方がいいと思うよ。
個人的なライブラリなら、
別にソースファイルのコピーでも十分だし。
ちなみにヘッダをインクルード出来ないのは
ちゃんと.hファイルのあるインクルードディレクトリとファイル名を指定出来て無いだけで、
ライブラリとか関係無いからね。
0450デフォルトの名無しさん
2008/06/14(土) 13:04:41たまたま同じ場所にあってもいいけど
0451デフォルトの名無しさん
2008/06/14(土) 13:20:10>>449
>>450
みなさんありがとうございます。ライブラリからincludeしたhの関数を探し出してくる
ぐらいに考えてたのですが、違うようですね。
もうちょっと総合的な本を読んでみたいと思います。
0452デフォルトの名無しさん
2008/06/14(土) 13:35:12(正確には、includeした関数じゃなくて、
実際に呼び出しされてる外部関数を探し出す)
君がひっかかってるのは、それ以前の
ヘッダファイルとライブラリファイルの
ディレクトリ指定段階でしょ。
イロハで言えばイ以前だよw
0453デフォルトの名無しさん
2008/06/14(土) 14:22:51>ヘッダファイルとライブラリファイルのディレクトリ指定段階
こうゆう風に言うんですね。ありがとうございます。
0454デフォルトの名無しさん
2008/06/14(土) 15:12:25と
#include"1.h"
の違い理解してる?
0455デフォルトの名無しさん
2008/06/14(土) 15:19:35お前と関わるにおいて高学歴であることが何の意味もなさない(位お前とかどうでもいい)
お前の前で本当の自分(頭がいいこと)でいてもメリットが無い。アホなふりしてるほうがマシ、失敗を笑いにできるから。
お前から吸収できることがないと思われてるってこと。知り合いとしての優先順位の潜在的低さがでてる。
まだ情で関わってもらえるだけ有り難いと思え。
0456デフォルトの名無しさん
2008/06/14(土) 15:28:350457デフォルトの名無しさん
2008/06/14(土) 15:32:43知りませんでしたが、調べました。自作のhは""で囲むんですね。
ゲーム作りの入門本に似たようなのがあって、
ツール→オプション→ディレクトリを表示するプロジェクトで
ライブラリファイル、インクルードファイルのそれぞれで1のファイルを追加したのですが、
そうすると、未解決のシンボルというエラーに変わりました。
0458デフォルトの名無しさん
2008/06/14(土) 15:48:26ディレクトリを指定するところにファイルを追加するというのはどうかと(単なる記述ミス?)。
その関数が記述されてるソースをプロジェクトに追加するのが一番楽。
1.プロジェクト開いてる状態でソースファイルをドロップ。
2.開いたソースウィンド上で右クリック→プロジェクトへファイルの挿入。
これで出来んかな?
0459デフォルトの名無しさん
2008/06/14(土) 16:04:55ありがとうございます。コマンドプロンプト的なので軽く見た程度
なのでディレクトリ=ファイル=フォルダぐらいな感じの理解しかないんです。
したのやり方ですがもう少し具体的に書いていただけませんでしょうか?
それと既存項目の追加とは違うのでしょうか?
0460デフォルトの名無しさん
2008/06/14(土) 16:08:340461デフォルトの名無しさん
2008/06/14(土) 16:22:57そのレベルで教えて君じゃ、ゲーム出来てもバグだらけで遊べんだろうよ。
何のために本やグーグル先生があると思ってるんだね?
味噌汁で顔洗って出直してこい。
0462デフォルトの名無しさん
2008/06/14(土) 16:52:50わっかりました!みなさんいろいろありがとうございました!
0463デフォルトの名無しさん
2008/06/14(土) 16:57:290464デフォルトの名無しさん
2008/06/14(土) 17:08:19ダメだこりゃ。
ディレクトリ=フォルダ≠ファイル
0465デフォルトの名無しさん
2008/06/14(土) 17:44:330466デフォルトの名無しさん
2008/06/14(土) 18:04:26省略
WindowsやMac OSではフォルダと呼ぶが、UNIXやMS-DOSでは同様の概念を「ディレクトリ」と呼ぶ。
0467デフォルトの名無しさん
2008/06/14(土) 18:05:11シェルを通さず見える物がディレクトリと区別している。
0468デフォルトの名無しさん
2008/06/14(土) 18:05:550469デフォルトの名無しさん
2008/06/14(土) 18:06:100470デフォルトの名無しさん
2008/06/14(土) 18:09:29C:\みたいな形で扱う関数名ではDirectoryが使われている。
0471デフォルトの名無しさん
2008/06/14(土) 18:10:59普通にNTFSフォルダとか言うから。
0472デフォルトの名無しさん
2008/06/14(土) 18:11:51一般的な解釈
Windows 95以降 や Mac OS ではフォルダ、 MS-DOS や UNIX ではディレクトリと呼びます。
二つは同義です。
細かく言えば
物理的に存在していて、絶対URI(file:///C:/WINDOWS/ とか)を使って場所を示せるのがディレクトリ。
ディレクトリに、あたかもディレクトリのように見える仮想的なものをあわせたのがフォルダ。
マイコンピュータに入っている「コントロールパネル」などは、フォルダではあるけれど、ディレクトリではありません。
Mac OS: フォルダ、ディレクトリ、パス名について
“フォルダ”とは、ディレクトリを見てわかるように表現したものです。
Finder(図 2 参照)と合わせてフォルダを使うことにより、ファイルシステムを見たり、操作することが理解しやすくなります。
Finder でフォルダからある項目を出したり入れたりすると、基本的なディレクトリが変更されます。
“フォルダ”と“ディレクトリ”という用語は、特に区別する必要がない場合は、同じ意味で使用されることがあります。
面倒だから同じ意味でいいよ。
0473デフォルトの名無しさん
2008/06/14(土) 18:13:160474デフォルトの名無しさん
2008/06/14(土) 18:15:56少なくともこれは間違いだな。
0475デフォルトの名無しさん
2008/06/14(土) 18:16:480476デフォルトの名無しさん
2008/06/14(土) 18:17:32シェルって何なのか分かってないんだろうな。
0477デフォルトの名無しさん
2008/06/14(土) 18:18:280478デフォルトの名無しさん
2008/06/14(土) 18:26:40ファイルシステムの段階で、フォルダって言ってるんだから、
Windowsシェルは関係無い。
0479デフォルトの名無しさん
2008/06/14(土) 19:02:120480デフォルトの名無しさん
2008/06/14(土) 19:09:52ディレクトリを作成します。ファイルシステムがファイルとディレクトリのセキュリティをサポートしている場合は、
指定されたセキュリティ記述子を新しいディレクトリに適用します。
BOOL CreateDirectory(
LPCTSTR lpPathName, // pointer to a directory path string
LPSECURITY_ATTRIBUTES lpSecurityAttributes
// pointer to a security descriptor
);
0481デフォルトの名無しさん
2008/06/14(土) 19:22:220482デフォルトの名無しさん
2008/06/14(土) 19:23:500483デフォルトの名無しさん
2008/06/14(土) 19:33:04Directoryを使ってるだけでしょ。
普通は、
>一般的な解釈
>Windows 95以降 や Mac OS ではフォルダ、 MS-DOS や UNIX ではディレクトリと呼びます。
>二つは同義です。
で問題無いよ。
0484デフォルトの名無しさん
2008/06/14(土) 19:40:570485デフォルトの名無しさん
2008/06/14(土) 19:51:040486デフォルトの名無しさん
2008/06/14(土) 20:34:28Macの真似してフォルダにして無かったら、
パネルとか言ってたかもよ。
3.0時代からあった、コントロールのフォルダは
コントロールパネルだし。
0487デフォルトの名無しさん
2008/06/14(土) 20:55:49アドバイスまたは参考になるサイトとかあれば教えてください・・・
0488デフォルトの名無しさん
2008/06/14(土) 21:04:270489デフォルトの名無しさん
2008/06/14(土) 21:28:110490デフォルトの名無しさん
2008/06/14(土) 21:32:15****************
*******
*************************
************
0491デフォルトの名無しさん
2008/06/14(土) 22:24:44if,printf,switch,while,int,char
これしかまだ知らないのにできるわけがない。。。
と、いうわけで誰か教えてください(つω・`)
0492デフォルトの名無しさん
2008/06/14(土) 22:28:21ifとwhileが出来れば大丈夫
プログラムなんてどんなえらそうなこと言っても順次・選択・繰り返ししか出来ないんだから。
それが分かってるんなら後はC++独特の方言を覚えるだけ。
C++の簡単な入門書とかサイトでじっくり勉強してみなよ
0493デフォルトの名無しさん
2008/06/14(土) 22:31:29あと、キーの読み取り方と、文字の表示方法さえ知ってれば何とかなる。
0494デフォルトの名無しさん
2008/06/14(土) 22:41:260495デフォルトの名無しさん
2008/06/14(土) 22:48:480496デフォルトの名無しさん
2008/06/15(日) 00:34:09シェル特殊フォルダ
0497デフォルトの名無しさん
2008/06/15(日) 13:54:270498デフォルトの名無しさん
2008/06/15(日) 17:47:180499デフォルトの名無しさん
2008/06/15(日) 18:27:080500デフォルトの名無しさん
2008/06/15(日) 21:13:51ファイルシステムではディレクトリ
0501デフォルトの名無しさん
2008/06/15(日) 22:49:230502デフォルトの名無しさん
2008/06/15(日) 23:02:34http://support.microsoft.com/kb/100108/ja
フォルダなんかどこにも出てこないけど?
0503デフォルトの名無しさん
2008/06/15(日) 23:16:570504デフォルトの名無しさん
2008/06/15(日) 23:22:38よくトラぶって起動しなくなるらしい
0505デフォルトの名無しさん
2008/06/15(日) 23:33:53Windows95以降 → フォルダ
NTFSはWindowsNTで作られた物だから、
解説ではディレクトリと言う事も多い。
今では、区別なくフォルダと言っている。
例えば、圧縮フォルダはNTFSの機能だけど、
あんまり圧縮ディレクトリとは言わない。
0506デフォルトの名無しさん
2008/06/15(日) 23:40:310507デフォルトの名無しさん
2008/06/15(日) 23:48:49#include <stdio.h>
#include <conio.h>
int _tmain(int argc, _TCHAR* argv[])
{
TCHAR sKey[] = _T("test") ;
printf("plz enter [ %S ] \n", sKey) ;
unsigned int nCount = 0 ;
for(;;)
{
if(::_getch() == sKey[nCount])
{
printf("hit! [ %C ]\n", sKey[nCount]) ;
if(_tcslen(sKey) <= ++nCount) break ;
}
else printf("miss\n") ;
}
printf("\(^o^)/") ;
return 0;
}
0508デフォルトの名無しさん
2008/06/15(日) 23:54:19昔からDOSやWindowsでプログラミングやってる老人が、
ディレクトリをフォルダって言う事に抵抗感じるって事でしょ。
0509デフォルトの名無しさん
2008/06/16(月) 00:14:24専用スレでも立ててほかでやれ
と思ってるやつが何人いるんだろう
一人もいないのか?
0510デフォルトの名無しさん
2008/06/16(月) 00:24:260511デフォルトの名無しさん
2008/06/16(月) 00:34:16脳内で的確に修正し、さりげなく指摘できるのがプロ。
間違いを訳のわからん理論で正当化しようとするのは厨ニ病。
0512デフォルトの名無しさん
2008/06/16(月) 00:49:51で、君はそれのどれ?
0513デフォルトの名無しさん
2008/06/16(月) 01:30:08俺たちゃ振り回される被害者だってばよ!
0514デフォルトの名無しさん
2008/06/16(月) 07:29:55ソリューションにソリューションを追加できないものでしょうかね
自分は MFC や ATL を使わないので
この機能のためだけに Standard 買うのもちょっと…
0515デフォルトの名無しさん
2008/06/16(月) 09:54:43異なる言語のプロジェクトをひとつのソリューションで扱えるだけ
なんでそんな要求が出るのかしらないけど
MSBuildあたりを調べればなんか代替案出てくるんじゃない?
0516デフォルトの名無しさん
2008/06/16(月) 10:19:18>何のために本やグーグル先生があると思ってるんだね?
何のために2chに初心者質問スレがあると思ってるんだね?
という発想。
0517デフォルトの名無しさん
2008/06/16(月) 11:06:460518デフォルトの名無しさん
2008/06/16(月) 18:21:37CStaticオブジェクトに絵を描いています。
OnPaint()でLineTo()等を組み合わせて絵を描いているのですが、
ウィンドウの大きさを変えたとき、OnSize()で描画領域の大きさも変えて、絵も拡大縮小するような処理を行っています。
しかし、絵を拡大したとき、新たに描画されるところは拡大されて表示されるのですが、
既に表示されている部分の再描画が行われません。
これが処理を早くするための工夫(仕様?)であるところまでは調べられたのですが、
実際にどのように対処したらいいかがわかりません。
OnSizeでサイズを変更したときに全体が再描画されるようにするにはどうしたら良いでしょうか。
0519デフォルトの名無しさん
2008/06/16(月) 18:25:46Invalidateで全体が無効領域だということをシステムに教えてやる
0520デフォルトの名無しさん
2008/06/16(月) 18:26:400521518
2008/06/16(月) 18:48:09Invalidateを初めて知りました。ありがとうございます。
OnSizeでInvalidate(TRUE)
OnExitSizeMoveでInvalidate(FALSE)
とする事で対処しました。
0522デフォルトの名無しさん
2008/06/16(月) 20:43:55[ダイアログA]から、作成した登録ボタンを押して[ダイアログB]を開き、
Typdef struct Data
{
int Number;
char Name[10];
}stDATA;
をそれぞれに用意した2つのエディットボックスで入力して登録するもの
なのですが、UpdateData(TRUE);で取得したデータを、[ダイアログA]の保存ボタンを
押したときにファイルに保存するための処理が作れません・・・。
[ダイアログB]でファイルオープンし、そのまま保存することならできる
のですが、ダイアログAの保存ボタンで保存したい場合は、構造体のデータ
をどのようにやりとりすればよろしいでのしょうか?
もしかしたら、MFC以前の問題なのかもしれないのですが、
C言語とC++を初めて1か月半なので、なにとぞよろしくお願いします。
0523デフォルトの名無しさん
2008/06/16(月) 21:06:50FILE *fp でファイルを開いて、fprintfで保存します。
0524デフォルトの名無しさん
2008/06/16(月) 21:10:10freadで一個ずつロード
0525デフォルトの名無しさん
2008/06/17(火) 11:33:24複数のフォルダーを取得するにはどうしたらいいでしょうか?
複数のファイル名を取得するにはCFileDialogを使って、Shift+
マウスクリックで複数ファイルを同時に選択できました.
それと同じようなことをフォルダーに対して行いたいのです。
BROWSEINFOを使って一個のフォルダは選択出来ますが、
同時に100以上のフォルダーを選択したいので、Shiftやcntlなどを
使ってさくっとやりたいです。
なお、フォルダー選択後、各フォルダー内にあるデータファイルを
順番に全て処理していきます.
0526デフォルトの名無しさん
2008/06/17(火) 11:36:10ダイアログBが生きてるなら、Bのパブリック変数なりゲッタなりで。
Bが消えるなら、消える前に上記。あるいは、AのポインタをBに渡しておいて
BからAのパブリック変数に代入なりセッタなりで。
0527デフォルトの名無しさん
2008/06/17(火) 16:14:55メイン画面からサブ画面を開くのに
DoModal();
を使って開いているのですが、
このときサブ画面のエディットボックスなどに初期値を入れたいです。
メイン画面ではOnInit関数内でセットできたのですが、
サブ画面ではどこに記述して良いかわかりません。
初歩的な質問で申し訳ありませんがよろしくお願い致します。
0528デフォルトの名無しさん
2008/06/17(火) 16:19:44クラスビューからクラス選択してプロパティでオーバーライドをクリックして
OnInitDialogを探せ。
0529527
2008/06/17(火) 16:48:10おぉ☆★☆
早速のレスありがとうございました!!
早々に解決できました。
ありがとうございましたm(_ _)m
0530デフォルトの名無しさん
2008/06/17(火) 19:24:34>>526
まだ完成はしていないのですが、無事解決しそうです。
どうもありがとうございました。
0531デフォルトの名無しさん
2008/06/17(火) 20:59:57今先生から内緒でCDに焼いてもらったVisual Stadioなんですが、
#include <stdio.h>
void main(void)
{
printf("Hello");
}
これを実行すると
プロジェクト : error PRJ0003 : 'cmd.exe' の起動中にエラーが発生しました。
ってなるんですが、どうしたら良いですか??
お願いします。
0532デフォルトの名無しさん
2008/06/17(火) 21:06:540533デフォルトの名無しさん
2008/06/17(火) 21:07:26PCを再起動
コピーは良くない。逮捕されるぞ
Visual studio のアカデミック版は安いんだから、買え。
一番基本的なバージョンは無料ダウンロードできるんじゃなかったっけ?
0534デフォルトの名無しさん
2008/06/17(火) 21:11:24あの・・・すいませんが
環境変数ってどこですか?;
0535デフォルトの名無しさん
2008/06/17(火) 21:18:500536デフォルトの名無しさん
2008/06/17(火) 21:21:23事をするのにコピーしてもらうのかと、そもそも学校の課題とかなら
EEでも十分すぐる
0537デフォルトの名無しさん
2008/06/17(火) 21:36:300538デフォルトの名無しさん
2008/06/17(火) 23:04:520539デフォルトの名無しさん
2008/06/17(火) 23:17:23TV用
0540デフォルトの名無しさん
2008/06/17(火) 23:21:190541デフォルトの名無しさん
2008/06/17(火) 23:26:190542デフォルトの名無しさん
2008/06/18(水) 01:35:270543デフォルトの名無しさん
2008/06/18(水) 06:36:00Noneになるクソワロタ
あれ・・・?
0544デフォルトの名無しさん
2008/06/18(水) 10:50:59ボタン押しでファイル保存をしたいのですが、エクセルやワードを保存するときのように、
フォルダを選べて、名前をつけて保存したいです。
まず、その画面はどうやって表示したら良いでしょうか??
環境はVisualC++2005のMFCです。よろしくお願いします。
0545デフォルトの名無しさん
2008/06/18(水) 10:54:230546デフォルトの名無しさん
2008/06/18(水) 12:21:17class MakeWindow
{
public:
char Name[256];
int Width;
int Height;
int Bit;
int ScreenMode;
}
MakeWindow mWindow = new MakeWindow("A", 640, 480, 32, SELECT_MODE);
このようにしてオブジェクトを作成したのですが、
エラー 2 error C2661: 'MakeWindow::MakeWindow' : 5 個の引数を伴うオーバーロードされた関数はありません。(Line 6)
と表示されます。
受け取り側の変数も5個で設定しているのですが、何が原因なのでしょうか。
0547デフォルトの名無しさん
2008/06/18(水) 12:35:090548デフォルトの名無しさん
2008/06/18(水) 12:50:11'MakeWindow::MakeWindow'という関数はないと言ってる
そのまんま
0549デフォルトの名無しさん
2008/06/18(水) 12:54:28スレ違いだから終了
0550デフォルトの名無しさん
2008/06/18(水) 16:01:45Microsoft Visual C++ .NET
でアプリケーション (.exe)作成しました。
void main()を実行した所
実行画面が立ち上がりません。
出力の表示は
”XX.exe: ネイティブ' はコード 0 (0x0) で終了しました。”
となっています。
実行画面が表示されれば
Sleep(2000)が入っているの目視できるはずです。
ステップインで実行した所次のようになっていました。
・appmodul.cppの_tWinMainが実行
・crtexe.cのif ( !managedapp )でmanagedapp=0
・exit(mainret)が実行
ここで終了しているようです。
何とかmainの中身を実行させたいのですが何が原因なんでしょうか?
当方のスキル:社内プログラマ1年目
申し訳ありませんが何とかお力を御貸し頂きたいと思います。
0551MFC始めて3週間目
2008/06/18(水) 16:12:49ちなみに以下ではできない。
int CDeepPurpleView::OnCreate(LPCREATESTRUCT lpcs)
{
if(CEditView::OnCreate(lpcs) == -1)
return -1;
CDC* pDC = this->GetDC();
CFont screenFont;
screenFont.CreatePointFont(600,"MS ゴシック",pDC);
CFont* pOldFont = pDC->SelectObject(&screenFont);
return 0;
}
0552デフォルトの名無しさん
2008/06/18(水) 16:33:42MFCのプロジェクトを選んでいないか?main関数から始まるプログラムを作りたいなら、
Win32コンソールアプリケーションのプロジェクトを選ばないといけない。
あるいはMFCを使いたくてそうしているのなら、
プログラムの実行開始はmain関数でないというのがMFCの流儀。
0553デフォルトの名無しさん
2008/06/18(水) 16:40:410554550
2008/06/18(水) 17:10:31ありがとう御座います。
MFCを使用しないため
Win32コンソールアプリケーションで
プロジェクトを組みなおした所
問題が解決しました。
ありがとう御座います。
0555デフォルトの名無しさん
2008/06/18(水) 17:15:45SetWindowsHookExのサンプルをvc++2008でコンパイルしてみたんだけど、
フックされる気配がない・・・どこか間違ってるの?
0556デフォルトの名無しさん
2008/06/18(水) 17:25:08そういえばvoid main()は普通やらない。int main()にしろ。
0557デフォルトの名無しさん
2008/06/18(水) 20:44:35そのあとに、NyaRuRuセンセが「CLR上でフック動かすとか無謀すぎ」
って書いてるのに、何でコンパイルしたの?
0558デフォルトの名無しさん
2008/06/19(木) 01:30:55MouseEventArgs^ a = (MouseEventArgs^)e;
a->Button == MouseButtons::Right
こうですか!わかりません><
0559デフォルトの名無しさん
2008/06/19(木) 04:09:400560デフォルトの名無しさん
2008/06/19(木) 04:41:040561デフォルトの名無しさん
2008/06/19(木) 10:37:53まず、CFontが破棄されないように自動変数はやめてメンバーにでもして、
↓でどうよ。
int CDeepPerpleView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CEditView::OnCreate(lpCreateStruct) == -1)
return -1;
screenFont.CreatePointFont(600, _T("MS ゴシック"));
SetFont(&screenFont);
return 0;
}
0562デフォルトの名無しさん
2008/06/19(木) 17:46:53のdw1とdw2って、ドキュメントには予約って書いてあるけど、実際には使えないの?
0563デフォルトの名無しさん
2008/06/19(木) 18:51:270564デフォルトの名無しさん
2008/06/19(木) 21:38:130565デフォルトの名無しさん
2008/06/19(木) 23:02:34>383さんと関連するのかもしれませんが、下記のコードを実行すると、
期待した結果と異なる(結果は同じになると思うんですが)出力されます。
関数の引数を値渡しすると、初期化と同じとテキストに書かれているので、
こういう結果がなぜ起こるか分からないのです。
Visual Studio 2008 Express Edition
Windows Vista
void Print(char str[])
{
cout << "サイズは" << sizeof(str) << endl;
}
int main()
{
char str[] = "Test";
cout << "サイズは" << sizeof(str) << endl;
cout << "サイズは" << sizeof("Test") << endl;
Print("Test");
Print(str);
}
結果:
サイズは5
サイズは5
サイズは4
サイズは4
0566デフォルトの名無しさん
2008/06/19(木) 23:16:26"Test"の文字列を長くしたらどうなるか見てごらん。
0567デフォルトの名無しさん
2008/06/19(木) 23:17:31http://pc11.2ch.net/test/read.cgi/tech/1213466622/
C++相談室 part62
http://pc11.2ch.net/test/read.cgi/tech/1211900039/
0568デフォルトの名無しさん
2008/06/19(木) 23:18:45http://pc11.2ch.net/test/read.cgi/tech/1156206091/
0569デフォルトの名無しさん
2008/06/20(金) 09:40:00Print関数にはポインタを渡してるに過ぎない。
サイズが4なのはポインタのサイズ(32ビット)
0571デフォルトの名無しさん
2008/06/20(金) 11:43:06現在VisualC++2005のMFCでプログラムを組んでいます。
Cのstr関数を使用しているのですが、下記のような警告が出ます。
warning C4996: 'strcat' が古い形式として宣言されました。
string.hを見ろって言われて見たのですが、
まだまだ未熟な為、よくわかりません。
一応動作は問題なくできるのですが、気になったので教えて頂けませんか?
自分としてはこの警告を、
問題はありませんが、古い形式で宣言されてるので新しい形式にした方が良いよ。
というニュアンスでとらえています。
それでOKでしょうか?また、OKな場合新しい形式とはどういう形式でしょうか?
よろしくお願いします。
0572デフォルトの名無しさん
2008/06/20(金) 12:53:54新しい形式は、strcpy_s を調べてね
0573デフォルトの名無しさん
2008/06/20(金) 12:54:410574デフォルトの名無しさん
2008/06/20(金) 14:45:50ありがとうございます。
確かに _s をつけたら警告がなくなりました。
ANSIではstrcatとかですが、
VisualC++では _s を付加した新しい形式になってるってことでいいんですか?
ちなみに
>これを抑えるのは、_CRT_SECURE_NO_DEPRECATE をdefineする。
やってみたんですが、警告は消えませんでした・・・orz
0575デフォルトの名無しさん
2008/06/20(金) 14:53:05CRT のセキュリティ強化
ttp://msdn.microsoft.com/ja-jp/library/8ef0s5kh(VS.80).aspx
0576デフォルトの名無しさん
2008/06/20(金) 16:33:10(コマンドから[c:\hoge.exe < c:\hoge.txt]と入力した時のhoge.exeのデバッグ)
をするにはどうしたらいいですか?
プロジェクトのプロパティ→デバッグ→コマンドライン引数 に" < c:\hoge.txt"を足せばいいかと思ってやってみたのですが、上手くいきません。
0577デフォルトの名無しさん
2008/06/20(金) 16:38:56それでうまくいくはずだけど、どうなるの?
0578デフォルトの名無しさん
2008/06/20(金) 17:16:56hoge.exeの中身です↓
int _tmain(int argc, _TCHAR* argv[])
{
std::string line;
while (std::cin)
{
std::getline(std::cin, line);
std::cout << line << std::endl;
}
return 0;
}
hoge.txtの内容が出力されるはずですが、何も出力されないのです。
(コマンドプロンプトから[hoge.exe(のフルパス) < c:\hoge.txt]とした場合は内容が出力されます。)
引数は
argv[0] --- hoge.exe (のフルパス)
argv[1] --- <
argv[2] --- hoge.txt
になっているのですが・・。
0579デフォルトの名無しさん
2008/06/20(金) 17:34:17VisualStudio6以前だけ。
リダイレクトはシェルの機能なんで
コマンドライン引数には書けない。
0580574
2008/06/20(金) 17:42:07ありがとうございます。
参照させていただきました。
ネットだと、_CRT_SECURE_NO_WARNINGS を
ヘルプだと、_CRT_SECURE_NO_DEPRECATE を
定義すれば良いとありますが、どちらを定義しても警告が消えません。
ちなみに
_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES を 1 として定義する
もやってみましたが警告が消えません。
もしかして定義する場所が違っていますか?
str関数を使用しているファイル内で定義してるのですが。。。
0581デフォルトの名無しさん
2008/06/20(金) 17:50:22多分、<string.h>をインクルードする前に
定義しないと駄目だと思うぞ。
0582デフォルトの名無しさん
2008/06/20(金) 17:51:46VC++のバージョンは?
こっちでやってみたら、VS2005だとそのまま動作して2008だと無理だな
0584デフォルトの名無しさん
2008/06/20(金) 18:07:432005だとそのままでできるから設定がいるか、ヘルプが間違ってるか、どっちかかもね
0585デフォルトの名無しさん
2008/06/20(金) 18:22:52バグっぽいな。
0586デフォルトの名無しさん
2008/06/20(金) 18:29:38なんとか動いたw
0587デフォルトの名無しさん
2008/06/20(金) 19:51:09dlがありませんといわれました。
VC2005で作り直すとちゃんと呼び出せるdllができます。なにが原因でしょうか?
VC2008で作ったdll→VC2008のPCでは動くがVC2005では認識されない。
VC2005で作ったdll→VC2005のPCでもVC2008のPCでも動く
0588デフォルトの名無しさん
2008/06/20(金) 20:00:080589デフォルトの名無しさん
2008/06/20(金) 21:22:390590デフォルトの名無しさん
2008/06/20(金) 22:12:110591578
2008/06/20(金) 22:34:52バージョンはVS2008です。
皆様の言うとおりデバッグ無しでは動作しました。
バグ?ですかね。あきらめつつ設定でできないか頑張ってみます。
レス下さった皆様ありがとうございました。
0592デフォルトの名無しさん
2008/06/21(土) 07:32:27dllがないなら、dll入れればいいじゃん
0593デフォルトの名無しさん
2008/06/21(土) 13:47:422005のプロジェクトは2008でも読めるが、逆はできんぞ。
まあソリューションとプロジェクトのヘッダ書き換えればほぼイケるけど。
0594デフォルトの名無しさん
2008/06/21(土) 22:51:53Visual C++っていうのはソフトなんだよね?
それはれっきとした売り物でフリーじゃないよね?
そしてプリグラムを勉強したかったら何かしらのプログラミングソフトを購入することが必要?
0595デフォルトの名無しさん
2008/06/21(土) 22:54:22フリーの開発環境もあるからググレ
0596デフォルトの名無しさん
2008/06/21(土) 23:00:08マイクロソフトのホムペを隅から隅まで確認しろ
0597デフォルトの名無しさん
2008/06/21(土) 23:00:56Visual C++ 2005/2008 Express Edition はフリー
0598デフォルトの名無しさん
2008/06/21(土) 23:08:120599デフォルトの名無しさん
2008/06/22(日) 01:36:36#include <iostream.h>
void main()
{
int i;
i = 5 + 15;
cout << "計算すると";
cout << i;
cout << "になります。" << endl;
}
これなんだけどなぜだろうか?
0600デフォルトの名無しさん
2008/06/22(日) 01:56:16iostream.hはC++標準の一部ではありません。
現代的なCompilerの多くではサポートされません。
VC7以降も同様です。
0601デフォルトの名無しさん
2008/06/22(日) 01:58:20using namespace std;
0602デフォルトの名無しさん
2008/06/22(日) 04:56:11本当は using namespace は使わない方がいい。
今は気にしなくていいけどな。
0603599
2008/06/22(日) 07:52:340604デフォルトの名無しさん
2008/06/22(日) 09:28:130605デフォルトの名無しさん
2008/06/22(日) 11:14:400606デフォルトの名無しさん
2008/06/22(日) 11:21:21>>601
0607デフォルトの名無しさん
2008/06/22(日) 11:25:51http://pc11.2ch.net/test/read.cgi/tech/1213466622/
C++相談室 part62
http://pc11.2ch.net/test/read.cgi/tech/1211900039/
はきだめC/C++下級者の質問箱 2
http://pc11.2ch.net/test/read.cgi/tech/1156206091/
0608デフォルトの名無しさん
2008/06/22(日) 11:31:19Win32やMFCもNGだよね?
そうすると環境の設定とか?w
0609デフォルトの名無しさん
2008/06/22(日) 11:37:13よくわかってるではないか。
0610デフォルトの名無しさん
2008/06/22(日) 12:00:130611デフォルトの名無しさん
2008/06/22(日) 12:01:500612デフォルトの名無しさん
2008/06/22(日) 12:28:02でも>>602って(><
0613デフォルトの名無しさん
2008/06/22(日) 14:02:240614デフォルトの名無しさん
2008/06/22(日) 14:26:01今は気にするな
0615デフォルトの名無しさん
2008/06/22(日) 14:53:47VCは素晴らしいコンパイラ
0616デフォルトの名無しさん
2008/06/22(日) 15:36:17今は気にしなくていいけどな。
0617デフォルトの名無しさん
2008/06/22(日) 19:51:06string型使おうと思ったらPTSTRに変換できないって何だよそのエラーorz
最終的にはstringのdataメソッド使えば問題無かったけど・・・
Win32APIとか難しすぎるぜ!
0618デフォルトの名無しさん
2008/06/22(日) 20:12:200619デフォルトの名無しさん
2008/06/22(日) 20:17:01wchar_t* で typedef されるので wstring を使う必要があると思うんだが、
VC++2008 ってデフォルトで Unicode 環境を対象にしてなかったっけ?
今手元に環境が無いから何とも言えないが。
0620デフォルトの名無しさん
2008/06/22(日) 20:38:36セックス!
今までPerlとかPHPとかスクリプト系のプログラミングしかまともにしたことが無かったから
処理系(コンパイラ?)によって方言があるっていうのがなんとも理解しづらいorz=3
とりあえずなんか小さなアプリをチョコチョコ作ってそこから方言の意味を勉強していくよ。
0621デフォルトの名無しさん
2008/06/22(日) 20:41:21言語仕様が変わってる訳じゃないから。
0622デフォルトの名無しさん
2008/06/23(月) 05:28:160623デフォルトの名無しさん
2008/06/23(月) 17:55:58groupboxの中に複数のcheckboxを配置し、
同じgroupboxの中にあるボタンを押すと、全部のチェックボックスがチェックされる、という仕組みを作ろうとしています。
とりあえず、ボタンが押された時にグループボックス内のコントロール分のループを回すところまでは上手くいったのですが、
1.そのコントロールがチェックボックスと判定するにはどうすれば良いのか
2.そのコントロールがチェックボックスだった場合、それにチェックを入れるにはどうすれば良いのか
が判りません。
if(groupbox1->Controls[i]がチェックボックス){
groupbox1->Controls[i]->Checked;
}
…みたいな感じのことがやりたいのですが、どうすれば良いのでしょうか。
0624デフォルトの名無しさん
2008/06/23(月) 18:04:480625デフォルトの名無しさん
2008/06/23(月) 18:23:31>>624
ControlからCheckBoxへのキャストのやり方がわからないので困っているのです。
0626デフォルトの名無しさん
2008/06/23(月) 18:52:11ttp://msdn.microsoft.com/ja-jp/library/cby9kycs.aspx
0627デフォルトの名無しさん
2008/06/23(月) 19:21:32出来ました!ありがとうございます。
0628デフォルトの名無しさん
2008/06/23(月) 20:00:03ハイスコアを記録させたいのですが、
どうやったら記録できるのでしょうか??
本当に初心者なんでよろしくお願いします。
0629デフォルトの名無しさん
2008/06/23(月) 20:55:11class CScore
{
~~~~
public:
void SetScore(int score)
int GetScore(void)
private:
int m_HiScore = -1;
};
// スコア登録関数
void CScore::SetScore(int score)
{
if (m_HiScore < score) m_HiScore = score;
}
int CScore::GetScore()
{
return m_HiScore;
}
0630デフォルトの名無しさん
2008/06/23(月) 20:59:18ウィンドウズアプリケーション作れる?
製品版とどのくらいの差があるのかな。
0631デフォルトの名無しさん
2008/06/23(月) 21:04:43このページが参考になるかと
ttp://www.microsoft.com/japan/msdn/vstudio/products/vs08/compare.aspx
0632デフォルトの名無しさん
2008/06/23(月) 21:08:22ありが�d
0633デフォルトの名無しさん
2008/06/23(月) 21:40:57何が書いてあるのかさっぱりなんですが・・・
0634デフォルトの名無しさん
2008/06/24(火) 02:44:070635デフォルトの名無しさん
2008/06/24(火) 09:16:00>>628 記録方法で、3点
・ハイスコアの出し方
・画面表示のしかた
・ファイルへの書き方
ファイルへの書き方のような気がする。間違ってたら言って。
0636デフォルトの名無しさん
2008/06/24(火) 12:48:20http://pc11.2ch.net/test/read.cgi/tech/1213466622/
C++相談室 part62
http://pc11.2ch.net/test/read.cgi/tech/1211900039/
はきだめC/C++下級者の質問箱 2
http://pc11.2ch.net/test/read.cgi/tech/1156206091/
0637デフォルトの名無しさん
2008/06/24(火) 14:05:47このコピペ野郎いい加減うざいな
0638デフォルトの名無しさん
2008/06/24(火) 17:59:17ハイスコアの保存(ファイル)に一票
0639デフォルトの名無しさん
2008/06/24(火) 21:22:10何が書いてあるのかさっぱりなんですが・・・
0640デフォルトの名無しさん
2008/06/24(火) 21:30:390641デフォルトの名無しさん
2008/06/24(火) 23:32:04VC++のMFCで計算したデータを、
作成しているExcelテンプレートの特定の文字列に上書きすることは可能ですか?
例
MFCのexe → テンプレート起動 → 「kekka」に計算結果を上書き → 別名で保存(テンプレートはそのまま)
こんな感じで
0642デフォルトの名無しさん
2008/06/24(火) 23:40:200643デフォルトの名無しさん
2008/06/24(火) 23:59:51JAVA?のほうがやり易いんですかね・・
ググってきます
0644デフォルトの名無しさん
2008/06/25(水) 00:30:38よくありがちな厨房ですが
Win32APIなプログラムでオセロ作るのに1ヶ月もかかった馬鹿な漏れに
MFCとは一体何なのか勉強すべきなのかを教えてください
0645デフォルトの名無しさん
2008/06/25(水) 00:47:08・Excelを純な「表」として使ってるなら、ODBCドライバ。
SQLの言う「テーブル」に当たらなければ涙目
・(Excel2007形式)、ドトネト3.0+OpenXMLSDK
・Java+POI
・Lotus123形式が扱いやすいってJoelがいってた
0646641
2008/06/25(水) 01:04:25Excelのバージョンでも違うみたいですね
ちょっとほかの方法を考えてみます。ありがとうございました
0647デフォルトの名無しさん
2008/06/25(水) 02:30:52Studioに支援機能があったりして感じ大掛かりだけど、ぶっちゃけ、ただのWin32APIのラッパークラスだよ
だから、ちょっとしたツール作るには便利だけど、覚えたからと言って何か新しい事が出来る訳では無く、
知ってて困る事は無いけれど、知らないからと言って何か作れない訳じゃないって事で判断ヨロ。
0648デフォルトの名無しさん
2008/06/25(水) 03:58:27プロパティが灰色で全く何も表示されなくなってしまいました。
戻し方はありますでしょうか?
もしくは、VCの設定を完全に初期状態に戻したいのですが、
どの辺をいじったら良いでしょうか?
0649デフォルトの名無しさん
2008/06/25(水) 05:52:15MFCはWin32をラップするクラスを集めたライブラリではありません。
Windows上で動作する一般的なアプリケーションソフトは、win32API
だけで完成するものではありません。
簡単に理解できる例をあげると、ワードプロセッサーで範囲を選択し、
これをドラッグアンドドロップする。
ただこれだけの動作が、COMを必要とします。
そこで現在のMFCは、ビジネスソフトウエアにとって必要とされる機能を
含むフレームワークとして構築されています。
フレームワークが想定しているアプリケーションを開発する場合には、
とてもうまく機能すると思われますが、そうでない場合には不満も
あるでしょう。
フレームワークが対象としている開発対象の場合でも、標準の見た目や
コードの古臭さに不満を持つ場合も多いようです。
今後、それらの不満の一部が解消される可能性もあります。
Visual C++ 2008 Feature Pack について調べてみてください。
0650デフォルトの名無しさん
2008/06/25(水) 08:01:23MFCってのは、やろうとおもえば出来るが面倒だ、ってのを
わかりやすく、扱いやすいようにしたものだと思ってただ
0651デフォルトの名無しさん
2008/06/25(水) 08:11:34アセンブリ言語でWindowsアプリを作るみたいにつらい
0652デフォルトの名無しさん
2008/06/25(水) 08:38:53/*
*
*/
の部分が折りたためるのですが、「宣言」となります。
「宣言」の部分にコメントの概要を表示したいのですが、可能でしょうか?
可能なら記述の仕方を教えて下ください。環境は2008EEです。
0653デフォルトの名無しさん
2008/06/25(水) 09:40:38MFCで同じものを作ると有難味がわかる。
0654デフォルトの名無しさん
2008/06/25(水) 10:07:11>>644にとって、ただの回り道でしかない
0655デフォルトの名無しさん
2008/06/25(水) 10:25:370656デフォルトの名無しさん
2008/06/25(水) 10:30:030657デフォルトの名無しさん
2008/06/25(水) 14:19:000658デフォルトの名無しさん
2008/06/25(水) 14:42:320659644
2008/06/25(水) 17:12:21ありがとうございまつ
ちょっと面倒なことをやるときの便利なクラスくらいに認識することにします
今のところDirectXのゲーム作るくらいしか目的ないので後回しでよさそうですね
>>656
C#育ちなのでゲーム作りでC#が楽というのは同意なのですが
ランタイムの配布がめんどくさすぎます
「そのランタイムはなんで必要なの?」とか聞いてくるやつに説明するのもめんどくさすぎです
XNAなんかはランタイム地獄のくせに配布も考慮してくれないクソっぷりでorzです
VC++勉強し始めたのも「DirectX使うゲームの配布が楽そうだったから」という理由だけです
0660デフォルトの名無しさん
2008/06/25(水) 17:43:04それを言ったらWindows自体がランタイムだ
0661デフォルトの名無しさん
2008/06/25(水) 19:21:520662デフォルトの名無しさん
2008/06/25(水) 22:16:070663デフォルトの名無しさん
2008/06/25(水) 22:16:510664デフォルトの名無しさん
2008/06/25(水) 23:00:550665デフォルトの名無しさん
2008/06/26(木) 00:21:06RPGツクールランタイムも入れない。
0666デフォルトの名無しさん
2008/06/26(木) 00:25:150667デフォルトの名無しさん
2008/06/26(木) 06:50:53こいつ、windows C++で検索すると3位なんだけど、
ネット妄信馬鹿がこの記事信じると思うとやるせない。
0668デフォルトの名無しさん
2008/06/26(木) 06:59:02MFC関係なくVC++で可能。どうやるかは、自分でがんばってください。
(OLEを使うだけ。MFCならOLEラッパクラスもあったはず。)
>>659
MFC便利だよ。俺はとりあえず入れてる。
STL代わりにもなるし、ちょっとした時に便利。基本APIのラッパーだから軽いし。
0669デフォルトの名無しさん
2008/06/26(木) 14:42:22間違っていないと思うが
0670デフォルトの名無しさん
2008/06/28(土) 14:43:050671デフォルトの名無しさん
2008/06/28(土) 15:37:24#ifdef TEST
#include <hoge.h>
・
・
#endif
上記のような内容のインクルードファイル"master.h"を、
main.cpp内でインクルードし、IntelliSenseでhoge.hで定義
されたメンバを表示させたいんですが、できません。
解決策はないでしょうか?
環境はXPsp3+VC++2008です。
0672デフォルトの名無しさん
2008/06/28(土) 15:56:46表示させたい直前で1分待つ。その後、ctrl+space
0673671
2008/06/28(土) 16:07:04待ってもだめでした。ncbファイルを削除してもだめです。
#ifdefと#endifをコメントアウトすればIntelliSenseは問題ないんですが、
先の例のmaster.hは外部ライブラリなので中身をいじるとコンパイルでこけます。
書き忘れましたが、VC++2008はExpress版です。
0674デフォルトの名無しさん
2008/06/28(土) 16:57:40コメントアウトされてるヘッダでインテリセンス出来るわけが無いだろ。
0675デフォルトの名無しさん
2008/06/28(土) 17:14:500676デフォルトの名無しさん
2008/06/28(土) 17:22:15VC++2005 から VC++2008 に移ったときに
プラットフォームSDKが標準でインスコされる以外のメリットを教えてください
またこれはやばいだろというデメリットもあったら教えてくださいお願いします
0677デフォルトの名無しさん
2008/06/28(土) 18:03:510678デフォルトの名無しさん
2008/06/28(土) 19:16:36真っ先に2005よりは重いと言われると思ってたのに
軽い・・だと・・?!
0679デフォルトの名無しさん
2008/06/28(土) 19:48:01世の中のほとんどのフリーソフトは、VC++。
速度が違う。映像処理のソフトなんか作れば、他のVB、C#、JAVAなんか使い物になんない。
>>667
胡散臭いな。OSかプログラムの差じゃね?
timeGetTimeで実測出してよ。
0680671
2008/06/29(日) 00:38:48それでIntelliSenseは効きますが、コンパイルで定義済みだと怒られます。
外部ライブラリの中身は把握してませんし、中身もいじれないので・・・
0681デフォルトの名無しさん
2008/06/29(日) 01:35:30ほとんどは言い過ぎ
フリーソフトは大分Delphi、BCB製も含まれてる
もちVBもあるけど
最近は.netもちらほら
0682デフォルトの名無しさん
2008/06/29(日) 02:23:20企業で作る場合は環境に合わせるか汎用にするかで違うっしょ
0683204
2008/06/30(月) 00:16:57コマンドライン引数としてファイル名を指定するにはどうすればいいですか?
0684デフォルトの名無しさん
2008/06/30(月) 01:04:11winsockをOSのものから強制的に使わせるにはどうしたらよいでしょうか?
SPIというらしいんですがどうしたらよいのか。
0685204
2008/06/30(月) 02:18:00過去に一度聞いたことがありました。
コマンドライン引数をファイル名で指定するとき、ファイル名の半角スペースが
パラメータ区切りと見なされて別々の引数になってしまうとのことでしたが
ファイル名のスペースは何で置き換えればいいのでしょうか?
0686デフォルトの名無しさん
2008/06/30(月) 03:05:21スペースを置き換えるんじゃなくて、引数をダブルコーテーションで囲んであげればいいよ。
0687デフォルトの名無しさん
2008/06/30(月) 06:59:36パソコンの所有者がブロックさせてるんだからブロックされるのはしかたがない。
0688デフォルトの名無しさん
2008/06/30(月) 07:04:24現存するファイヤーウオールソフトを列挙して
自動的に殺すコード書けばええやんw
0689デフォルトの名無しさん
2008/06/30(月) 07:35:150690デフォルトの名無しさん
2008/06/30(月) 09:22:490691デフォルトの名無しさん
2008/06/30(月) 13:13:00・ソリューション
+プロジェクト を右クリックしてプロパティのページを表示する。
−構成プロパティ
+デバッグ でコマンド引数を指定する。
0692デフォルトの名無しさん
2008/06/30(月) 13:29:19プログラムを作成しているのですが、ファイルのドラッグ&ドロップ処理の所でつまっています。
DLLインジェクトを使い、DLL内からドロップ処理を行うことで、他プロセスへのドロップは可能になり、
「メモ帳」などのアプリでは、うまくいったのですが、「TMPGEnc 4.0 XPress」では、まったく動作しません。
そこで「Spy++」を使い「TMPGEnc 4.0 XPress」を調べてみたところ、
ドラッグ&ドロップしてもWM_DROPFILESメッセージが発生していないことが分りました。
そこで質問なのですが、本当にWM_DROPFILESを使わずにドロップされたファイルを取得することは可能なのでしょうか?
また、この場合の解決策を提示して頂けるとありがたいです。
0693デフォルトの名無しさん
2008/06/30(月) 13:35:090694デフォルトの名無しさん
2008/06/30(月) 14:04:01どうもです。
DragAcceptをtrueにし、ドロップ処理を行ったところ、WM_DROPFILESは発生しませんでした。
手動でこのソフトにドラッグ&ドロップを行ってもWM_DROPFILESは発生しません。
しかし、ファイルはちゃんと開かれます。
やはりWM_DROPFILESを使わずに取得していると思われるのです。
0695デフォルトの名無しさん
2008/06/30(月) 14:18:460696デフォルトの名無しさん
2008/06/30(月) 14:29:35OLE DragDrop じゃない
0697デフォルトの名無しさん
2008/06/30(月) 14:46:59どうもです。やはりそうなりますか。
「OLE DragDrop」はこの問題について調べている時に、いくつかサイトを見つけていたのですが、
他プロセスのウィンドウにドロップするという課題は解決していたので、必要ないと思っていました。
「OLE DragDrop」は最終的にSendMessageでWM_DROPFILESを投げるものでは、ないのでしょうかね?
手動でドロップしてもWM_DROPFILESが発生しないのであれば、SendMessageでWM_DROPFILESを送っても、
動作しないのでは、と思いまして。
「OLE DragDrop」について調べてみます。
0698デフォルトの名無しさん
2008/06/30(月) 14:50:060699デフォルトの名無しさん
2008/06/30(月) 14:59:14ちょっと前にどうしてもWM_DROPFILESが発生しなく困ったことが
あったけどOLEDragDropにしたらあっさり解決したよ。
0700デフォルトの名無しさん
2008/06/30(月) 15:12:18どうもです。
ttp://hp.vector.co.jp/authors/VA016117/oledragdrop5.html
こちらのサイトに置かれているサンプルを利用し、ドロップしてみたところ、
WM_DROPFILESは発生せずにファイルがちゃんと開かれました。
「OLE DragDrop」を実装できれば解決するとおもいます。
ありがとうございました。
0701デフォルトの名無しさん
2008/06/30(月) 23:30:33連携が取りやすいフリーのエディタってどんなものがあるのでしょうか?
検索したところ、CodeLiteというものくらいしか引っかからなかったので、
ほかにあれば教えてください。
http://www.forest.impress.co.jp/article/2008/05/19/codelite.html
0702デフォルトの名無しさん
2008/07/01(火) 00:02:28関数ってありますか? 今は以下のものを自分で定義して使っています。
bool exist_file(const string& fname)
{
_finddata_t data;
return _findfirst(fname.c_str(), &data) != -1;
}
0703デフォルトの名無しさん
2008/07/01(火) 00:02:29すいません。勘違いして安定するVer(2005)のほうをいれていたので、外部エディタは必要なくなりました。
せっかくだからこのまま使います。
0704デフォルトの名無しさん
2008/07/01(火) 00:22:57「: error C2440: '=' : 'HANDLE' から 'HICON' に変換できません。'void*' から非 'void' 型への変換には明示的なキャストが必要です。」と出てしまうのですがどうしたらいいのですか?
0705デフォルトの名無しさん
2008/07/01(火) 00:40:44エラーメッセージを声を出して読め
0706デフォルトの名無しさん
2008/07/01(火) 00:59:570707デフォルトの名無しさん
2008/07/01(火) 09:30:320708デフォルトの名無しさん
2008/07/01(火) 09:43:46FindFirstFile
0709デフォルトの名無しさん
2008/07/01(火) 11:04:05行間の幅を調整することは不可能なのでしょうか。
0710デフォルトの名無しさん
2008/07/02(水) 15:02:13class parent;
class child : parent;
の2つのクラスがあって、
void hogeFunc(vector<shared_ptr<parent> > & param)
を呼び出したいとき、
vector<shared_ptr<parent> > vp;
は渡せるけど、
vector<shared_ptr<child> > vc;
が渡せないのはなんでかわからないです。
お分かりの方、理由を教えていただけないですか。
ちゃんと、pとcは親子関係にあるので問題ないと思っています。
0711デフォルトの名無しさん
2008/07/02(水) 15:07:530712デフォルトの名無しさん
2008/07/02(水) 15:21:120713デフォルトの名無しさん
2008/07/02(水) 16:03:42ありがとうとざいます。
>>712
移動します。すいません。
ありがとうございました。
0714デフォルトの名無しさん
2008/07/02(水) 22:46:00Visual C++ 2008 Express Editionを使っているのですが、
リソースの追加の仕方がわかりません。
ヘルプを見てやろうとしたのですが、「プロジェクト→新しい項目の追加→リソース ファイル (.rc)」が無く、
メモ帳で空のリソース スクリプトをプロジェクトに追加しても「ソリューションエクスプローラでプロジェクトを右クリック→追加→リソース」が選択できない状態になっていて困っています。
どうしたらいいのでしょうか。
0715デフォルトの名無しさん
2008/07/02(水) 23:03:320716デフォルトの名無しさん
2008/07/02(水) 23:17:400717デフォルトの名無しさん
2008/07/03(木) 00:07:05変数の使い方を間違ってるのでしょうか?C++のクラスの使い方を見ながらやったつもりなのですが……
---------- Button_sousa.cpp ----------
#include "StdAfx.h"
#include "Button_sousa.h"
Button_sousa::Button_sousa(void){}
void Button_sousa::Key_input( KeyEventArgs^ e )
{
// 入力されたキーに対する操作を呼び出す
switch( e->KeyCode ){
case Keys::A:
MessageBox::Show( "push A" );
break;
default:
MessageBox::Show( i.ToString() ); // ここでエラーがでる
break;
}
}
---------- Button_sousa.h ----------
#pragma once
using namespace System::Windows::Forms;
ref class Button_sousa
{
public:
Button_sousa(void);
void Key_input( KeyEventArgs^ kc );
private:
int i;
};
0718デフォルトの名無しさん
2008/07/03(木) 00:07:580719デフォルトの名無しさん
2008/07/03(木) 08:41:11ttp://www.hyuki.com/writing/techask.html#paste
0720デフォルトの名無しさん
2008/07/03(木) 09:18:50そもそもこれで何をしたいのか意味が分からん
ToStringメソッドを使うの?int型に?
0721デフォルトの名無しさん
2008/07/03(木) 10:00:450722デフォルトの名無しさん
2008/07/03(木) 10:26:180723デフォルトの名無しさん
2008/07/03(木) 10:58:090724デフォルトの名無しさん
2008/07/03(木) 11:25:42// MessageBox::Show( i.ToString() ); // ここでエラーがで
0725デフォルトの名無しさん
2008/07/03(木) 11:31:35wsprintf(buff, "%d", i);
MessageBox::Show(buff);
でおk
0726デフォルトの名無しさん
2008/07/03(木) 11:33:25未初期化のiだっておっけー。
エラーが出る原因は別にあるはずなんだけど。
0727デフォルトの名無しさん
2008/07/03(木) 13:51:22書式に無い文字を渡すと例外終了するのかなあ。
単に無視してくれりゃいいのに。
自前でパースしてから、渡してやるしか無いのかな。
0728デフォルトの名無しさん
2008/07/03(木) 14:02:370729デフォルトの名無しさん
2008/07/03(木) 14:11:02_ASSERTE( ( "Invalid format directive" , 0 ) );
だからデバッグ時だけの話じゃん。
0730717
2008/07/03(木) 14:34:48発生したエラーは、
『追加情報: オブジェクト参照がオブジェクト インスタンスに設定されていません。』
というものです。
iはクラスで変数を使うテスト用に用意したものです。
static int i;
にするとエラーなく使えるんですがこれが正しいのかもわからず今検索中。。。
作りたいのはAを押すとiが増えてBを押すとiが減るみたいな感じです。あくまでもクラス内で完結したい。
0731デフォルトの名無しさん
2008/07/03(木) 14:44:250732デフォルトの名無しさん
2008/07/03(木) 15:08:50その追加情報の前に何かメッセージ出てるだろ?
隠さずに全部書けよ
0733デフォルトの名無しさん
2008/07/03(木) 15:32:33CLRのWindowsフォームアプリケーションで作りました。
---------- エラー ----------
'System.NullReferenceException' のハンドルされていない例外が test.exe で発生しました。
追加情報: オブジェクト参照がオブジェクト インスタンスに設定されていません。
---------- Button_sousa.h ----------
#pragma once
using namespace System::Windows::Forms;
using namespace System;
ref class Button_sousa
{
public:
Button_sousa(void);
void Key_input( KeyEventArgs^ e );
private:
int i;
};
---------- Button_sousa.cpp ----------
#include "StdAfx.h"
#include "Button_sousa.h"
Button_sousa::Button_sousa(void){i = 123;}
void Button_sousa::Key_input( KeyEventArgs^ e )
{
switch( e->KeyCode ){
case Keys::Right: i++; break;
case Keys::Left: i--; break;
default: MessageBox::Show( i.ToString() ); break;
}
}
0734717, 733
2008/07/03(木) 15:36:57---------- Form1.hから抜き出し ----------
#pragma once
//########## 追加 ##########
#include "Button_sousa.h"
---------- 中略 ----------
private:
/// <summary>
/// 必要なデザイナ変数です。
/// </summary>
System::ComponentModel::Container ^components;
//########## 追加 ##########
private: Button_sousa^ buttonSousa;
#pragma region Windows Form Designer generated code
---------- 中略 ----------
//########## 追加 ##########
Button_sousa^ buttonSousa = gcnew Button_sousa();
}
#pragma endregion
private: System::Void Form1_KeyDown(System::Object^ sender, System::Windows::Forms::KeyEventArgs^ e) {
//########## 追加 ##########
buttonSousa->Key_input( e );
}
};
}
0735デフォルトの名無しさん
2008/07/03(木) 15:38:130736デフォルトの名無しさん
2008/07/03(木) 15:40:06Button_sousa^ buttonSousa = gcnew Button_sousa();
を
buttonSousa = gcnew Button_sousa();
こうしてみ。
0737717
2008/07/03(木) 15:41:52この状態でコンパイルするとフォームが表示されます。
予定では、左右キーで数字の増減、そのほかのキーで現在の数字を表示です。
ですが、どのキーを押しても、
---------- エラー ----------
'System.NullReferenceException' のハンドルされていない例外が test.exe で発生しました。
追加情報: オブジェクト参照がオブジェクト インスタンスに設定されていません。
が表示されます。
エラーの場所は
case Keys::Right: i++; break;
case Keys::Left: i--; break;
default: MessageBox::Show( i.ToString() ); break;
のいずれかです。
『int i;』を『static int i;』とすると予定通りの動作をしますが、これが文法的に正しいのかはよくわからないので今調べてるのが現状です。
0738717
2008/07/03(木) 15:43:59なんと!できました!
宣言というか作り方というか、そこら辺が間違ってたんですね。。。
ちょっと勉強しなおしてきます。
ありがとうございました。
0739デフォルトの名無しさん
2008/07/03(木) 16:25:30リリースビルドでも終了する。
0740デフォルトの名無しさん
2008/07/04(金) 02:25:03eventなんていう予約語C++にはないと思うのですが、どういうことですか?
0741デフォルトの名無しさん
2008/07/04(金) 02:29:130742デフォルトの名無しさん
2008/07/04(金) 02:40:27レスthx
おお・・こんな便利な機能が。
しかし、何もインクルードしてないのに、EventClassとか意味がさっぱり・・。
0743デフォルトの名無しさん
2008/07/04(金) 03:16:40CLRじゃなきゃ関係ないけど、色は変わるね
0744デフォルトの名無しさん
2008/07/04(金) 18:52:35ボタン設けてウィンドウをキャプチャしてビットマップ保存するコードない?
0745デフォルトの名無しさん
2008/07/06(日) 16:32:44typedef int INT;
って、何のためにこんなことしてるのでしょうか。
将来の型サイズが変わったときの互換のため?
また
#define CONST const;
に至っては何のための宣言か想像すら出来ないです、
これらの宣言は何を意味してるのでしょうか。
よろしくお願い致します。
0746デフォルトの名無しさん
2008/07/06(日) 16:55:26const DWORD hoge
CONST DWORD hoge
大文字が宣言で、小文字が変数冥。
このほうがわかりやすいし、マブいっしょ?
0747デフォルトの名無しさん
2008/07/06(日) 17:08:24レスありがとうございます。
VC++でソースを見る際に、予約語が青文字になるのに対して、
置換後の INT や CONST だと青くならないので、逆に見にくいと思ってたのですが
そういう思想があったのですね。
.NET ではクラス名称に大文字と小文字が入り乱れてますが、
それはまた違う思想なんでしょうかね。
0748デフォルトの名無しさん
2008/07/06(日) 17:21:050749デフォルトの名無しさん
2008/07/06(日) 17:24:55とりあえず全部半角に揃えろ
0750デフォルトの名無しさん
2008/07/06(日) 18:00:070751デフォルトの名無しさん
2008/07/06(日) 18:17:580752デフォルトの名無しさん
2008/07/06(日) 18:42:05関数テンプレートにする
0753デフォルトの名無しさん
2008/07/07(月) 00:07:39排他処理をするにはセフォマやミューテクス以外で手段はありますか?
ある変数に複数のスレッドが同時にアクセスするのを防ぐためミューテクスを使ってますが
ミューテクスだと遅いだの、プロセス間で使用しないなら使うべきでないとか聞きます
他に手法がわからないのでとりあえず無名のミューテクスを使っていますが、
もっといい手法があったら教えてください
0754デフォルトの名無しさん
2008/07/07(月) 00:11:070755デフォルトの名無しさん
2008/07/07(月) 01:03:140756デフォルトの名無しさん
2008/07/07(月) 10:57:55h[0] = new CTest();
delete[] h;
上記のコードでVC++6.0でコンパイルすると
二項演算子 '=' : 型 'class CTest *' の右オペランドを扱う演算子は定義されていません。(または変換できません)(新しい動作; ヘルプを参照)
というエラーが発生します。
どこが間違っているのかわからないので教えてくださいませ。
0757デフォルトの名無しさん
2008/07/07(月) 11:14:50としたらいけました。なぜ?
0758デフォルトの名無しさん
2008/07/07(月) 11:21:34>h[0] = new CTest();
h[0]はCTest型。
っつぅか1行目でCTestを100個作ってるのになんでこれをするんだ。
0759デフォルトの名無しさん
2008/07/07(月) 11:26:10おお!
CTestの実態を100個作るということなのですか
CTestの入れ物を100個作るのかと思ってました。
0760デフォルトの名無しさん
2008/07/07(月) 11:27:13h[0]の型はCTest、
new CTest()の型はCTest* のため。
そもそも756の1行目の時点でh[0]にはCTest型のオブジェクトが
入ってるから2行目は不要だし、メモリリークするよ。
Javaから来た人?
0761デフォルトの名無しさん
2008/07/07(月) 11:32:29なるほどー。なんとなくわかってきました。
てっきりh[0]には &CTestが入るのかと思っていました。
>Javaから来た人?
VBのほうから来ました。
0762デフォルトの名無しさん
2008/07/07(月) 11:34:48CTestのポインタが100個入る配列は
どうやって宣言すればいいのでしょう???アホですみません。
0763デフォルトの名無しさん
2008/07/07(月) 11:45:480764デフォルトの名無しさん
2008/07/07(月) 11:45:55でもこれにnew CTest[100]の1回で詰めるのはできないよ。
ほんとにポインタが100個欲しいの?CTestが100個並んでればいいんじゃないの?
0765デフォルトの名無しさん
2008/07/07(月) 11:49:58おお!なるほど。
>>764
ありがとうございます!
これでポインタと配列をマスターできた気がします。
0766デフォルトの名無しさん
2008/07/07(月) 11:50:390767デフォルトの名無しさん
2008/07/07(月) 11:54:150768デフォルトの名無しさん
2008/07/08(火) 04:32:52a[9999999999]とかってできるんですか?
0769デフォルトの名無しさん
2008/07/08(火) 08:30:010770デフォルトの名無しさん
2008/07/08(火) 09:31:09設定したスタックサイズの限界。
0771デフォルトの名無しさん
2008/07/08(火) 09:32:290772デフォルトの名無しさん
2008/07/08(火) 09:33:50それ以外なら、連続でとれるメモリの大きさに影響される。
0773デフォルトの名無しさん
2008/07/08(火) 09:37:080774デフォルトの名無しさん
2008/07/08(火) 10:16:460775デフォルトの名無しさん
2008/07/08(火) 16:08:26たとえば座標1000ポイントある絵を座標を計算で変化させながら移動させて
1秒間に100コマとか作るのって配列でやる以外にいい方法はありませんか
0776デフォルトの名無しさん
2008/07/08(火) 16:16:00これでヒープ領域に確保される
0777デフォルトの名無しさん
2008/07/08(火) 16:33:350778デフォルトの名無しさん
2008/07/08(火) 16:34:580779デフォルトの名無しさん
2008/07/08(火) 16:37:56適当な思いつきで作っても使い物にならない。
0780デフォルトの名無しさん
2008/07/08(火) 16:46:03つまり使い終わったらもう消去されてるんですか?
0781デフォルトの名無しさん
2008/07/08(火) 16:50:131点目近くは1000点描画する間描画されてるんで見えるんですが・・・むずかしいですね
0782デフォルトの名無しさん
2008/07/08(火) 16:52:550783デフォルトの名無しさん
2008/07/08(火) 16:58:490784デフォルトの名無しさん
2008/07/08(火) 19:30:210785デフォルトの名無しさん
2008/07/08(火) 22:32:17#pragma onceしかないのでしょうか?
AとBがincludeされていたらCをdefineとかやりたいんですが可能ですか?
0786デフォルトの名無しさん
2008/07/08(火) 23:10:03#define
#endif
----------
#ifdef hoge // hoge が define されていたら
#define
#else // hoge が define されてないとき
#define
#endif
とか
0787デフォルトの名無しさん
2008/07/09(水) 00:45:46ありがとうございます
#defineについては期待通りの挙動を得ることができました
#includeも同じような処理ってありますか?
0788デフォルトの名無しさん
2008/07/09(水) 01:48:010789長くてすみません・・・(1/2)
2008/07/09(水) 11:34:15連想配列を使いたいんですが、使い方がわかりません。
ぐぐってみた感じ、「C++のSTLでmapがある」というのはわかりました。
とりあえず、STL、CLI、MFCとか単語だけはわかったのですが、どういった環境での開発がSTLとかCLI、MFCとかの状態に当てはまるのかわかりません…。
で、とにかくやってみたのですが、コンパイルエラーでした。・゚・(ノд`)・゚・。
[やってみたこと]
とりあえずチェックボックスを2つ配置。
iniView.cpp の上の方に #include <map> と書き、下のほうで
void CiniTestView::OnBnClickedCheck2()
{
map <CString, CString> m; //ここの行がエラーの対象
}
[結果]
エラー 1 error C2065: 'map' : 定義されていない識別子です。
エラー 2 error C2275: 'CString' : この型は演算子として使用できません
エラー 3 error C2065: 'm' : 定義されていない識別子です。
エラー 4 error C2275: 'CString' : この型は演算子として使用できません
0790長くてすみません・・・(2/2)
2008/07/09(水) 11:35:59WindowsMobile6用のiniファイル読み書き機能つきタイマー
→iniファイルの情報の取得に連想配列を使いたいです。
→タイマー機能はとりあえず実現できたので、設定ファイルを作りたいと思いました。
[開発環境]
OS : WindowsXP
ツール : Visual Studio 2005 Pro(90日評価版)
[プロジェクトの設定]
・MFCスマートデバイスアプリケーション
・SDKとして、Windows Mobile 6 Professionalを選択
・シングルドキュメント、ドキュメント ビュー アーキテクチャサポートあり、スタティックライブラリでMFCを使用
・基本クラスにCFormViewを選択
よろしくお願いいたしますm(_)m
0791デフォルトの名無しさん
2008/07/09(水) 11:46:08エラーメッセージ読めよ
0792デフォルトの名無しさん
2008/07/09(水) 11:46:440793デフォルトの名無しさん
2008/07/09(水) 13:01:15ありがとうございますm(_)m
エラーメッセージで「定義されていない」というのはわかったのですけど、
includeしているものがいけないのか、何が足りないのか、はたまたMobileでは使えないのか、判断がつかなかったのです。
名前空間の解決のみの話だったのですね。。。
コンパイル通りました!
どうもありがとうございました。
0794デフォルトの名無しさん
2008/07/09(水) 20:08:09インクルードガード
0795デフォルトの名無しさん
2008/07/10(木) 19:10:46開発を楽にしようと上記二つのプロジェクトを1つのワークスペースにまとめたのですが、
コンパイル確認しようとするとき、DLLのソースをアプリのプロジェクトに参加させそうになったり(プロジェクトの構成切り替え忘れ)、
DLLのビルド忘れ防止に依存関係を有効にしたら
アプリのビルド時のリンクでDLLファイルが読み込めないとエラーが出たり。
どうプロジェクトを構築すればいいのでしょうか?
よろしくお願いします。
0796デフォルトの名無しさん
2008/07/11(金) 19:27:50IDEが対応していないことをしようとしても、無理が出て結局楽にならないでしょう。
2003以降に移行してソリューションを使いましょう。
0797デフォルトの名無しさん
2008/07/11(金) 19:54:16VC++6では無理ですか。
アマゾンでVisual Studio 2008 Standard Editionの値段調べたら28,161円。
・・・うーん・・・。
アカデミックの方買えないかなぁ・・・。
0798デフォルトの名無しさん
2008/07/11(金) 20:02:15もっと給料うpを訴えよう!
0799デフォルトの名無しさん
2008/07/11(金) 21:16:550800デフォルトの名無しさん
2008/07/11(金) 21:21:530801デフォルトの名無しさん
2008/07/11(金) 22:09:500802デフォルトの名無しさん
2008/07/11(金) 22:23:31アレならExpressからのUpgradeにしとけばいいし。
0803デフォルトの名無しさん
2008/07/11(金) 22:39:51例えば本当に切れ味のいい28161円の包丁に躊躇する料理人がいると思うか?
例えば本当に切れ味のいい28161円の村正に躊躇する侍がいると思うか?
例えば本当にゆうこりんみたいな28161円のダッチワイフに躊躇する変態がいると思うか?
つまり、おまえは本当の変態じゃない
0804デフォルトの名無しさん
2008/07/11(金) 23:04:480805デフォルトの名無しさん
2008/07/11(金) 23:15:580806デフォルトの名無しさん
2008/07/11(金) 23:48:560807デフォルトの名無しさん
2008/07/12(土) 04:03:120808デフォルトの名無しさん
2008/07/12(土) 05:01:59せめて抱き枕+会話可能なAIを…
0809デフォルトの名無しさん
2008/07/12(土) 06:48:580810デフォルトの名無しさん
2008/07/13(日) 04:38:27あと STL に max がなかったり・・・。
0811デフォルトの名無しさん
2008/07/13(日) 04:57:08あと、std::max はあったと思う。
0812デフォルトの名無しさん
2008/07/14(月) 12:25:530813デフォルトの名無しさん
2008/07/14(月) 14:03:41VC++6.0 ダイアログベース MFC
WindowsXP SP3
の環境で作成した、ウィンドウをBMPで保存するプログラムが、
別のPC
VC++6.0 WindowsXP おそらくSPなし
の環境ではBMP画像が「描画できませんでした」となってしまいます。
SPの有無でうまく動作しないのでしょうか?
どうかご教授おねがいします。
0814デフォルトの名無しさん
2008/07/14(月) 14:08:32SP2なら、ttp://support.microsoft.com/kb/889412/ja の可能性もあると思うけど。
0815デフォルトの名無しさん
2008/07/14(月) 14:37:39ありがとうございます。
ただいまソフトが動作しなかったPCが手元にないので、確認してもらっているところです。
そのPCはインターネットに繋がっていないので、おそらくアップデートしていないのではないかと思われます。
また確認できたら報告します。
0816デフォルトの名無しさん
2008/07/14(月) 20:44:480817デフォルトの名無しさん
2008/07/14(月) 20:53:57XPやVistaなどで同じようなことをするにはどうすればよいのですか?
尚、パラレルポートには限らず、ポートなら何でも良いです。
出来ればタダで実現できる方法が良いです。
0818デフォルトの名無しさん
2008/07/14(月) 21:18:420819デフォルトの名無しさん
2008/07/14(月) 22:04:08名前空間中のヘッダファイルの関数宣言と,ソースファイル中の関数定義が,
クラスビューで重複して表示されるのは仕様なんでしょうか?
-------------------------
// Foo.h
namespace Test
{
void Hoge();
}
------------------------
------------------------
// Foo.cpp
namespace Test
{
void Hoge(){;}
}
-----------------------
と書くと,クラスビューで
{}Test .
Hoge()
Hoge()
と表示されます.どっちをクリックしても関数定義に
ジャンプしてくれるので実害は無いのですが..
# static メンバ関数にしようかな.
0820デフォルトの名無しさん
2008/07/14(月) 22:33:06やっぱそうなんですか。嫌な予感はしてたんですが。
カネか・・・・・・
0821デフォルトの名無しさん
2008/07/15(火) 00:02:04COM1とかLPT1とかというファイル名でCreateFileすればいい。
それとSetCommStateとかでググればサンプルも見つかると思う。
0822デフォルトの名無しさん
2008/07/15(火) 00:43:49DDKも今やタダだよ。
0823デフォルトの名無しさん
2008/07/15(火) 01:55:10QuickTime SDKをいれ、QuickTime SDKのAPIを使用したいのですが、
コンパイルで外部シンボルエラーになってしまいます。
(InitializeQTML(long))というのが
LNK2001: 外部シンボル ""extern "C" short
__cdecl xxxxx" (?xxxxx@@$$J0YAFJ@Z)" は未解決です。
以下のことは行いました。
Windows用のQuickTimeSDKをインストール
プロジェクトのプロパティで該当するlibの入っているフォルダを参照するように
設定(libをバイナリファイルで覗いてみると、使用したいAPIがみつかりました)
使用するAPIを定義したヘッダファイルのインクルード
共通言語ランタイムを://clr:pureから://clrへ
外部ライブラリは上記で大丈夫だと思っていましたが、コンパイルエラーになってしまいます。
何か、さらに必要な点、確認すべき点はありますでしょうか。
0824デフォルトの名無しさん
2008/07/15(火) 02:02:300825823
2008/07/15(火) 02:25:14さっそくのお返事ありがとうございます。
追加の依存ファイルでlibファイルを指定してみました。特に使用していない関数のシンボルエラーになりました。存在するlibは全て追加してみたのですが・・・
0826デフォルトの名無しさん
2008/07/15(火) 02:30:200827デフォルトの名無しさん
2008/07/15(火) 08:08:00と同様の効果を、プロジェクトのプロパティで指定する方法はありますか
0828デフォルトの名無しさん
2008/07/15(火) 09:39:28エラーにextern "C"まで出てるのはおかしい。
その部分、いったいどうやって書いた?
0829デフォルトの名無しさん
2008/07/15(火) 12:51:19確認したところSP2だということがわかりました。
SP3にアップデートすれば解決するのでしょうか?
0830デフォルトの名無しさん
2008/07/15(火) 13:49:33原因の一つとして考えられるってだけで、なおるかはわかんないよ。
でももしそのプログラムがGDI+を使ってるんだとしたら、HotFixを試してみるのがいいし、
単体HotFixじゃなくても、SP3でその原因は排除できるね。
0831デフォルトの名無しさん
2008/07/15(火) 14:22:23SP3を入れて、また試したいと思います。ありがとうございました。
0832デフォルトの名無しさん
2008/07/15(火) 21:19:19重要なデータのバックアップを忘れるな。
0833デフォルトの名無しさん
2008/07/15(火) 23:26:59クラスを作成してそこからあるDLLの関数に関数のポインタを渡したいのですが、
渡したポインタが『__clrcall』だから『__stdcall』には使えないと言われてしまいます。
どうやればstdcallの関数を作ることが出来るのでしょうか?
0834デフォルトの名無しさん
2008/07/15(火) 23:38:28プロジェクトのプロパティの全般で、共通言語ランタイムサポートが
/clr:safeや/clr:pureになっているならそこを/clrにして、
問題の関数に__stdcallを付ける、void __stdcall hoge()のように。
0835デフォルトの名無しさん
2008/07/15(火) 23:39:05#pragma unmanaged
0836デフォルトの名無しさん
2008/07/15(火) 23:40:35プロジェクトのプロパティ→(構成プロパティ)→C/C++→詳細→指定の警告を無効にする
0837デフォルトの名無しさん
2008/07/16(水) 15:28:59hoge.hで、
----------
public:
static void __stdcall mes( void );
----------
とし、hoge.cppで、
----------
void __stdcall hoge::mes( void )
{
MessageBox::Show( "呼び出すよ!" );
}
----------
としましたが、どちらも以下のワーニングが出てしまいました。
「warning C4441: '__stdcall ' の呼び出し規約が無視されました。代わりに、'__clrcall ' を使用しました」
/clr:pureでも/clrでも出てしまうので、現在試行錯誤中です。。。
>>835はよくわからないので勉強中です。
0838デフォルトの名無しさん
2008/07/16(水) 17:51:08Visual C++ 2008 Express Editionをインストールしたのですが、
libc.libやlibcmt.libなどのランタイムが見当たりません。
別途ダウンロードする必要があるのでしょうか?
0839デフォルトの名無しさん
2008/07/16(水) 17:51:15そのクラスの外に関数を書け。
ref/valueクラス内ではその警告も言っている通り__clrcallしか選べない。
0840デフォルトの名無しさん
2008/07/16(水) 17:52:22実際にコンパイル・リンクしてみてエラーにならなければ、どこかにインストールされているはず。
0841デフォルトの名無しさん
2008/07/16(水) 17:54:36libcmt.libはあるはず。
0842838
2008/07/16(水) 18:13:02libc.libはありませんでしたがlibcmt.libはありました。見落としていました。
申し訳ありませんでした。
0843デフォルトの名無しさん
2008/07/17(木) 20:50:040844デフォルトの名無しさん
2008/07/17(木) 21:38:300845デフォルトの名無しさん
2008/07/17(木) 21:56:18自分が持ってるフォントを色々試したのですが、相応しいのが見つかりませんでした。
0846デフォルトの名無しさん
2008/07/17(木) 22:07:03フォントは自分で探す方がいいよ。いろいろあって面白いから。
0847837
2008/07/17(木) 23:29:33たぶん出来たんだと思う…… 曖昧ですみませんが。ありがとうございました。
デバッグするハードがうまく動かないので試せないorz
ワーニング等は出なくなりましたので大丈夫だと思います。
0848デフォルトの名無しさん
2008/07/17(木) 23:46:320849デフォルトの名無しさん
2008/07/17(木) 23:57:230850デフォルトの名無しさん
2008/07/18(金) 00:06:110851デフォルトの名無しさん
2008/07/18(金) 00:12:42cppファイル?(ソースコード)の追加が無くなってしまったのですが、
どうしたらでてきますでしょうか?
0852デフォルトの名無しさん
2008/07/18(金) 00:51:18M$に聞くしかないんじゃないかな
0853デフォルトの名無しさん
2008/07/18(金) 00:55:08>>852
ありがとうございました。
また、VCのversionなど環境を書かずに質問してしまって申し訳ないです。
0854デフォルトの名無しさん
2008/07/18(金) 23:44:32/ ̄ ̄ ̄ ̄\
/ |
| ⌒ ⌒ /|
| (・) (・) |||||||
| ⊂⌒◯-----∂)___ ___
| ||||||||_ / ゙Y" \
\ヽ_/ \/ \
\ / \
/ ̄ ̄ ̄ ̄) * ( ̄ ̄ ̄ ̄)
| ─< |\ >─ (
| ) / (|ミ;\ ( )
ヽ  ̄ ̄) /(___人|,iミ'=;\ (  ̄ ̄ )
/" ̄ ̄ ̄ ̄ / 《v厂リiy\  ̄ ̄ ̄ ̄\
/ / ゙|,/'' v:,,、.¨)z,_ \
/ / ミ/ .-─ .゙》z、 \
/ / 〔」″ノ‐ 、u ¨\ )
( / ゙|, ..冫 .rー  ̄\_ |
| 〔 ミ./′ ..r-ー __,,ア┐ |
| | {. .,,,, .′ .´′ .¨\|
| | ∨ ノ冖′ =vvvvvv¨\
| / ミ. ,i' .゙\_
| / .{. ノ ,r¬″ .¨\
0855デフォルトの名無しさん
2008/07/21(月) 04:26:20http://www.yoshibaworks.com/ayacy/inasoft/autokeyb/chapter2.html
↑のHPにあるキーボードシミュレータを作りたいんですが、
引数の指定とはどういったプログラムを書けばいいんでしょうか?
0856855
2008/07/21(月) 11:36:470857デフォルトの名無しさん
2008/07/21(月) 15:39:21どうやって解決したか書いていただけると
後からこのスレを見た人に役立ちますよ
0858デフォルトの名無しさん
2008/07/21(月) 16:23:21読んでためになるようなことが書けるわけがない。
0859デフォルトの名無しさん
2008/07/21(月) 17:16:23お前には人を育てる能力が無さ過ぎる
0860デフォルトの名無しさん
2008/07/21(月) 21:12:26エディタの「Ctrl + Tab」の挙動を理解することができた。今までは理解しておらず、
混乱しながら「Ctrl + Tab」を使っていた。
あまりに自分が情けないので、ダメなのは自分だけではないことを知るために、
クイズを出したいと思う。Visual C++を使ってる人は以下の問題にチャレンジして
間違えて欲しい。
[問題] あなたはVisual C++で6枚の.cppファイルを開いている。ファイル名は
A, B, C, D, E, Fとする(.cppは省略)。Aが一番上に表示されていて、
その下に B, C, D, E, Fと続く。
(1) Ctrlキーを押しながらTabキーを1回押し、両方のキーを離す。この操作を4回
繰り返した。ファイルの順番はどうなったか?
(2) Ctrlキーを押しながらTabキーを4回押した。ファイルの順番はどうなったか?
答えを考えた後、実際やってみて答え合わせをし、間違った人は告白して下さい。
0861デフォルトの名無しさん
2008/07/21(月) 21:16:280862デフォルトの名無しさん
2008/07/21(月) 21:19:540864デフォルトの名無しさん
2008/07/21(月) 22:13:24Alt+Tabと同じ挙動だよな。
0865デフォルトの名無しさん
2008/07/22(火) 00:54:15す、す・・好きです!
0866デフォルトの名無しさん
2008/07/22(火) 07:00:450867デフォルトの名無しさん
2008/07/24(木) 00:01:03変数の宣言時の初期化方法で、正しい方法がわからないので教えてください
○ double goukei = 0.0;
× double x[1000] = 0.0;
x[1000]を初期化するには、forループで回すしかないでしょうか?
何か良い方法があれば教えてください
0868デフォルトの名無しさん
2008/07/24(木) 00:10:220869デフォルトの名無しさん
2008/07/24(木) 00:11:520871867
2008/07/24(木) 00:37:31#include <vector>
using namespace std;
typedef struct{
double x = 0;
} X;
vector<X> x;
ありがとうございます
0872デフォルトの名無しさん
2008/07/24(木) 00:39:410873867
2008/07/24(木) 00:49:51double x = 0.0;
} X;
vector<X> x[1000];
こうでした
0874デフォルトの名無しさん
2008/07/24(木) 00:50:530875デフォルトの名無しさん
2008/07/24(木) 00:59:310876867
2008/07/24(木) 01:14:24struct x1000 {
double x = 0.0;
}
std::vector<x1000> x(1000);
今度は自信があります
0877デフォルトの名無しさん
2008/07/24(木) 01:17:190878867
2008/07/24(木) 01:33:19ありがとうがざいます
こちらの方がアクセスが速くなるのですね
勉強になりました
ベクタは、配列と同様に格納された連続要素を保持する。
ベクタ要素へのアクセス、ならびに要素の追加は 定数時間 で完了する。
一方で特定の値を突き止める、ならびにベクタへの要素挿入は 線形時間 を要する。
0879デフォルトの名無しさん
2008/07/24(木) 01:55:200880デフォルトの名無しさん
2008/07/24(木) 02:15:530881デフォルトの名無しさん
2008/07/24(木) 11:03:440882デフォルトの名無しさん
2008/07/24(木) 21:15:510883デフォルトの名無しさん
2008/07/24(木) 22:10:43memcpy(&x[1],&x[0],sizeof(x)-sizeof(x[0]));
ダメ?
0884デフォルトの名無しさん
2008/07/24(木) 22:37:410885デフォルトの名無しさん
2008/07/25(金) 00:23:47このスレなら大丈夫でしょう。
0886デフォルトの名無しさん
2008/07/25(金) 16:48:21該当する項目などがあれば教えてください。
0887デフォルトの名無しさん
2008/07/25(金) 16:55:58VisualStudioを落として.、ncbを消して、VisualStudio起動して、リビルドしてみて。
0889デフォルトの名無しさん
2008/07/25(金) 19:59:290890デフォルトの名無しさん
2008/07/25(金) 20:58:180891デフォルトの名無しさん
2008/07/25(金) 22:04:180892デフォルトの名無しさん
2008/07/25(金) 22:29:110893デフォルトの名無しさん
2008/07/26(土) 12:42:500894デフォルトの名無しさん
2008/07/27(日) 02:29:330895デフォルトの名無しさん
2008/07/27(日) 02:33:23GetSakura()->Insert(GetMyStick());
0896デフォルトの名無しさん
2008/07/27(日) 04:27:24GetSakuraクラスにInserメソッドがあるのが気に食わん!!
受動態にするべきではないだろうか!?
0897デフォルトの名無しさん
2008/07/27(日) 07:02:340898デフォルトの名無しさん
2008/07/28(月) 01:48:010899デフォルトの名無しさん
2008/07/29(火) 01:07:53C++/CLIで、コンソールアプリケーションを操作するアプリを作ろうとしてます。
コンソールアプリは標準入力から情報を受け取って標準出力に吐き出す、というモノ。
でもって、コンソールアプリに情報を送り、返ってきた情報に応じて処理を分岐し、
さらにコンソールアプリに情報を送って…ということをやりたいと思っています。
ところがその第一歩目から躓いてしまいました。
myProcess->StartInfo->UseShellExecute = false;
myProcess->StartInfo->RedirectStandardInput = true;
myProcess->StartInfo->RedirectStandardOutput=true;
myProcess->Start();
StreamReader^ myStreamReader = myProcess->StandardOutput;
StreamWriter^ myStreamWriter = myProcess->StandardInput;
myStreamWriter->WriteLine("list");
textBox1->Text=myStreamReader->ReadLine();
myStreamWriter->WriteLine("exit");
myStreamWriter->Close();
myStreamReader->Close();
myProcess->WaitForExit();
myProcess->Close();
…というコードを書いたら、「list」のコマンドは実行されるのに、「exit」が実行されません。
listの位置にexitを持ってきたら正しく動作します。
何故期待通りに動いてくれないのでしょうか。また、どうしたら正しく動作するようになるのでしょうか。
0900デフォルトの名無しさん
2008/07/29(火) 09:36:350901デフォルトの名無しさん
2008/07/29(火) 10:23:12でも小数だろうが増減は整数倍だろ
0902デフォルトの名無しさん
2008/07/29(火) 10:37:460903デフォルトの名無しさん
2008/07/29(火) 10:45:560904デフォルトの名無しさん
2008/07/29(火) 10:52:16いろいろ検索したけど分からないんです><
0905デフォルトの名無しさん
2008/07/29(火) 11:06:49spinコントロールの内部では整数で持たせておいて、
エディットには自分で整数を割り算とかして表示させればいいだろう。
で、UDN_DELTAPOS のタイミングでエディットに反映させればいいかと。
0906デフォルトの名無しさん
2008/07/29(火) 11:29:14UDN_DELTAPOS関数の中にどういうコードを書けばいいんでしょうか?
0907デフォルトの名無しさん
2008/07/29(火) 11:30:090908デフォルトの名無しさん
2008/07/29(火) 11:31:29先ずは、ReadLine()で"list"の結果が正しく読めているのか確認するところから始めてはどうだろう。
或いは、コンソールアプリケーションの方に起動メッセージを出力するようにして、それをStart()の後にReadLine()して読めるか試すとか。
まさかとは思うが、コンソールアプリケーションの方ではちゃんと改行を出力しているよな?
0909デフォルトの名無しさん
2008/07/29(火) 11:32:36void Hoge::Foo1()
{
static int a = 0;
}
void Hoge::Foo2()
{
static int a = 0;
}
上記のFoo1とFoo2の関数内のstaticな変数aは共有されているのでしょうか?
0910デフォルトの名無しさん
2008/07/29(火) 11:34:31って面倒だからググってみたよ。
俺のやり方とちょっと違うみたいだが、メッセージ処理のとこだけありゃ書けるべ。
ttp://www13.plala.or.jp/kymats/study/game_other/UpDownControl/UpDownControl.html
0911デフォルトの名無しさん
2008/07/29(火) 11:38:07いいえ。仮令static変数であろうとも関数内で定義した変数は関数内でしか見えません。
やってできないことではありませんが、そのケースの場合はHogeがクラスならHoge内に置けばいいでしょう。
或いは、Hogeの非staticメンバ変数にする方がいいかもしれません。
0912909
2008/07/29(火) 11:38:100915デフォルトの名無しさん
2008/07/29(火) 11:45:12いいえ。
アクセスすることは、不可能ではありません。
0917デフォルトの名無しさん
2008/07/29(火) 11:47:43ググって先を見てる間にこんなにレスがつくとは、、リロードすべきだった。
0918デフォルトの名無しさん
2008/07/29(火) 11:49:500920909
2008/07/29(火) 12:00:21>そのケースの場合はHogeがクラスならHoge内に置けばいいでしょう。
>或いは、Hogeの非staticメンバ変数にする方がいいかもしれません。
知るかよ・・・
そのソース書いた奴に言ってくれ
>>915
曖昧過ぎてわからん
おまえそれで人とコミュニケーション取れてるのかよ
0921デフォルトの名無しさん
2008/07/29(火) 12:02:00だから、共有はされていないんだよ。アクセスする方法はあるけど。
0923デフォルトの名無しさん
2008/07/29(火) 15:09:08http://homepage3.nifty.com/k-takata/mysoft/bregonig.html
の正式版のlibやdllにリンクさせようとしたのですが、
ビルドしようとするとエラーになってしまいます。
ソースは↓のようにしています、どうすれば良いのでしょうか。
#include stdafx.h
#include <windows.h>
#include <tchar.h>
#include bregexp.h
int main(){
TCHAR msg[80];
BREGEXP *rxp = NULL;
TCHAR t1[] = _T( Yokohama 045-222-1111 );
TCHAR patern1[] = _T(s/(\\d\\d)-\\d{4}-\\d{4}/$1-xxxx-xxxx/g);
BSubst(patern1,t1,t1+_tcslen(t1),&rxp,msg);
}
0924デフォルトの名無しさん
2008/07/29(火) 15:12:09エラーはこんな感じです。
1>regex.obj : error LNK2028: 未解決のトークン (0A000017)extern C int __cdecl BSubstW(wchar_t *,wchar_t *,wchar_t *,struct bregexp
* *,wchar_t *) (?BSubstW@@$$J0YAHPA_W00PAPAUbregexp@@0@Z) が関数 int __cdecl main(void) (?main@@$$HYAHXZ) で参照されました。
1>regex.obj : error LNK2019: 未解決の外部シンボル extern C int __cdecl BSubstW(wchar_t *,wchar_t *,wchar_t *,struct bregexp * *,wchar_t *)
(?BSubstW@@$$J0YAHPA_W00PAPAUbregexp@@0@Z) が関数 int __cdecl main(void) (?main@@$$HYAHXZ) で参照されました。
0925デフォルトの名無しさん
2008/07/29(火) 15:16:04つ
BoostPro Binary Installer for Visual C++
ttp://www.boostpro.com/products/free
0926デフォルトの名無しさん
2008/07/29(火) 15:17:000927デフォルトの名無しさん
2008/07/29(火) 15:29:160928デフォルトの名無しさん
2008/07/29(火) 15:33:24BREGONIGを使いたいのです。
>>926
携帯に送ってから貼り付けたので、
その時に消えてしまったみたいです。
0929デフォルトの名無しさん
2008/07/29(火) 15:34:40では自前のラッパー提供するので使うか参考にしてくれ
3つにわける
#include <string>
#include <windows.h>
using namespace std;
#define BRNOJAPANESE 1 // \wが2バイト文字にHitする default
#define BRNOZENGO 2 // ^', '$'が文の前後にHitする default
#define BRDOTENTER 4 // ドットが改行にHitする
#define BRGLOBAL 8 // グローバルな検索 default
#define BRNOEIGO 16 // 大文字と小文字を区別しない default
typedef struct bregexp { const char *outp; const char *outendp; int splitctr; const char **splitp; int rsv1; char *parap; char *paraendp; char *transtblp; char **startp; char **endp; int nparens; } BREGEXP;
typedef int (WINAPI *bregfnc)(char * , char * , char * , BREGEXP ** , char *);
typedef void (WINAPI *bregfnd)(BREGEXP *);
int bregreplace(string &, string, string, int);
int _bregfind(string &, string, int&, int);
0930デフォルトの名無しさん
2008/07/29(火) 15:35:40int bregreplace(string &x, string p, string q, int opt){
if(x.size()==0 || p.size()==0)return -1;
string str = "s " + p + " " + q + " ";
if(opt &1)str+="k"; if(opt &2)str+="m";
if(opt &4)str+="s"; if(opt &8)str+="g";
if(opt&16)str+="i";
int n;
for(n=1;;n++) if(str.find(n)==0xFFFFFFFF) break;
str[1]=str[p.size()+2]=str[p.size()+q.size()+3]=n;
HINSTANCE hd = LoadLibrary("bregonig.dll");
if(!hd){cout<<"bregonig.dll load err\n";return -1;}
bregfnc BSubst = (bregfnc)GetProcAddress(hd,"BSubst");
bregfnd BRegfree = (bregfnd)GetProcAddress(hd,"BRegfree");
char msg[80]; BREGEXP *rxp = NULL;
n=BSubst( &str[0], &x[0], &x[x.size()], &rxp, msg);
if(n>0){
int m=(rxp->outendp)-(rxp->outp);
x.resize(m); memcpy(&x[0], rxp->outp, m);}
if(rxp)BRegfree(rxp); return n; }
0931デフォルトの名無しさん
2008/07/29(火) 15:36:16char *bregfind(string &x, string p, int &size){ return bregfind(x, p, size, 19);}
int _bregfind(string &x, string p, int &size, int opt){
if(x.size()==0 || p.size()==0)return -1;
string str = "m " + p + " ";
if(opt &1)str+="k"; if(opt &2)str+="m";
if(opt &4)str+="s"; if(opt&16)str+="x";
int n;
for(n=1;;n++) if(str.find(n)==0xFFFFFFFF) break;
str[1]=str[p.size()+2]=n;
HINSTANCE hd = LoadLibrary("bregonig.dll");
if(!hd){cout<<"bregonig.dll load err\n";return -1;}
bregfnc BMatch = (bregfnc)GetProcAddress(hd,"BMatch");
bregfnd BRegfree = (bregfnd)GetProcAddress(hd,"BRegfree");
char msg[80]; BREGEXP *rxp = NULL;
n=-1;
if( BMatch( &str[0], &x[0], &x[x.size()], &rxp, msg) ){
size = (rxp->endp[0])-(rxp->startp[0]);
n=(int)(rxp->startp[0]);}
if(rxp)BRegfree(rxp); return n; }
0932デフォルトの名無しさん
2008/07/29(火) 15:46:04その別のフォームにある変数を渡したいのですがどうすればいいでしょうか
0933デフォルトの名無しさん
2008/07/29(火) 15:52:310934デフォルトの名無しさん
2008/07/29(火) 15:55:37プロジェクトの設定をマルチバイト文字セットにするか、
Unicode版bregonigを使えば済む話。
>>932
VB.NET質問スレ(Part26)
http://pc11.2ch.net/test/read.cgi/tech/1212570454/l50
0935906
2008/07/29(火) 16:45:28ありがとうございました、
VisualC++初めて1週間なんでちょっとまだよくわかりませんが参考にしてみます。
0937デフォルトの名無しさん
2008/07/29(火) 19:41:34その後インストールしようとしてもそこで止まってしまいます
どうにかしてインストールする方法はないでしょうか?
0938デフォルトの名無しさん
2008/07/29(火) 21:00:18ラッパーありがとうございます。
おかげさまでBREGONIGを使えるようになりました。
かなり利便性が高いライブラリなので助かります。
>>934
マルチバイトやユニコード版は試しましたがダメでした。
0939デフォルトの名無しさん
2008/07/30(水) 01:02:53駄目ってどう駄目だったの?
君が貼ったコードとリンク先のライブラリで、こっちでエラーが出ないことは確認済みなんだが
0940デフォルトの名無しさん
2008/07/30(水) 09:30:58Acrobatは起動するのですがファイルを読み込むと
パラメータの数が無効です。というエラーメッセージが表示されます。
どこかおかしいところがありますでしょうか?
CAcroApp *objAcroApp = new CAcroApp();
CAcroAVDoc *objAcroAVDoc = new CAcroAVDoc();
objAcroApp->CreateDispatch("AcroExch.App");
objAcroAVDoc->AttachDispatch(objAcroApp->m_lpDispatch);
objAcroApp->Show();
objAcroAVDoc->Open("D:\\hogehoge\\bin\\hoge.pdf", "");
0941デフォルトの名無しさん
2008/07/30(水) 12:33:48ボタンを押すと実行されるというようなプログラムをつくりたいんですが。
SetDlgItemText(IDC_EDIT1,ss);
このエディットボックスのテキストssの値を
onbutton1()
の関数の中で使うにはどうすればいいですか?
エディットボックスに入れた値をボタンを押したときに反映させたいんですが。
やってみるとssは定義されていない識別子ですとエラーがでてしまいます。
0942デフォルトの名無しさん
2008/07/30(水) 12:43:36とりあえずこれでやってみ
0943デフォルトの名無しさん
2008/07/30(水) 12:48:38onbutton1の中ではGetDlgItemTextで取り出せばいいと思う。
0944デフォルトの名無しさん
2008/07/30(水) 12:51:120945デフォルトの名無しさん
2008/07/30(水) 13:00:28ありがとうございます
GetDlgItemText(IDC_EDIT1,ss)
でやってみたけどssは識別されていない識別子です、
ってエラーがでました。
0946945
2008/07/30(水) 13:02:450947デフォルトの名無しさん
2008/07/30(水) 13:06:45onbutton1の中ではssという変数は存在しない。
だから別の変数を作ってそいつへGetDlgItemTextで内容を受け取るんだ。
0948デフォルトの名無しさん
2008/07/30(水) 13:24:440949デフォルトの名無しさん
2008/07/30(水) 13:29:47どこを直せばいいのか教えてもらえないでしょうか?
#include<stdio.h>
int f(int x,int y)
{
return pow(2*x,y)+x-3*y+5;
}
int main(void)
{
int x;
int y;
printf("xを入力せよ:");
scanf("%d",&x);
printf("\nyを入力せよ:");
scanf("%d",&y);
printf("\n答え:%d",f(x,y));
return 0;
}
0950デフォルトの名無しさん
2008/07/30(水) 13:34:01#include <math.h>
0951デフォルトの名無しさん
2008/07/30(水) 13:34:350952デフォルトの名無しさん
2008/07/30(水) 13:35:410953デフォルトの名無しさん
2008/07/30(水) 13:55:11mathにすると今度はprintfとscanfの識別子が見つからなくなるんですよね…
stdioではできないんでしょうか?
>>951
スレ違いでしたか…すみません
>>952
pow関数はdouble使わないとエラーでるってのは分かりましたが今度はprintfとscanfがエラーにorz
0954デフォルトの名無しさん
2008/07/30(水) 13:57:15#include <stdio.h>
#include <math.h>
0955デフォルトの名無しさん
2008/07/30(水) 13:58:040956デフォルトの名無しさん
2008/07/30(水) 14:01:32C言語の認識
0957デフォルトの名無しさん
2008/07/30(水) 14:02:480958940
2008/07/30(水) 14:06:270959デフォルトの名無しさん
2008/07/30(水) 14:13:36それにすると今度は他の部分でエラーが出るように(つд`)
う〜ん、ちょっと初歩的過ぎるみたいなのでスレ移動します。
お目汚しすみませんでしたorz
0960デフォルトの名無しさん
2008/07/30(水) 14:21:112のexeのボタンを押したら1に引数を渡したいのですが、
どのように引数を渡したらよいのでしょうか?
環境はWinXP Pro、Visual C++2005、MFC ダイアログベースです。
0961デフォルトの名無しさん
2008/07/30(水) 14:32:17メッセージ - メッセージキュー
ソケット
パイプ、名前付きパイプ
同期(セマフォ、ミューテックス、イベント)
共有メモリ
RPC、ORB
Local Procedure Call
出典: フリー百科事典『ウィキペディア(Wikipedia)』
0962デフォルトの名無しさん
2008/07/30(水) 14:46:510963デフォルトの名無しさん
2008/07/30(水) 18:04:17VC6.0では問題なく動いたのですが・・・・。
なぜなんでしょう?
MSDN等ではマニフェストファイルを作成するようにとのことでしたが、
特に問題は無いと思っています
0964デフォルトの名無しさん
2008/07/30(水) 18:07:33移行したやつなのか?プロジェクトにマニフェストファイルが混ざってないか?
もしあるなら、右クリックでそれ無効にしてみ。
0965デフォルトの名無しさん
2008/07/30(水) 18:43:57ビルドしたのと別のPCに持っていって動かないというのであれば、ランタイムをインストールすればいい。
SP1の有無なんかで別物なんで正しいのを選んでちょうだい。
無印 http://www.microsoft.com/downloads/details.aspx?familyid=32bc1bee-a3f9-4c13-9c99-220b62a191ee&displaylang=ja
SP1 http://www.microsoft.com/downloads/details.aspx?familyid=200b2fd9-ae1a-4a14-984d-389c36f85647&displaylang=ja
0966デフォルトの名無しさん
2008/07/30(水) 19:40:58#include <windows.h>
void main(void){
::Beep(3000, 500);
}
Sample.exe の 0x762042eb で初回の例外が発生しました:
0x000006BA: RPC サーバーを利用できません。
このようになってしまいます。なにがいけないのでしょうか?
0967960
2008/07/31(木) 09:56:49ありがとうございます
1のListCtrlから1行取得して、2で編集したものを1に渡して再び1に表示したいのですが
その中ですとどれが一番使いやすいですか?
0968デフォルトの名無しさん
2008/07/31(木) 09:58:32とりあえずソケットでやっとけば間違いない
0969デフォルトの名無しさん
2008/07/31(木) 10:17:32{
inside++;
gw_color(gw,00,80,00);
gw_point(gw,480+(x*150),160+(y*150));
}
else
{
gw_color(gw,80,80,80);
gw_point(gw,480+(x*150),160+(y*150));
}
上記のようなif文を記述しているのですが、
error C2181: else 文が if と一致しません。
というエラーが出ます。
括弧などは確認したのですが・・・
0970デフォルトの名無しさん
2008/07/31(木) 10:19:31ちょう初心者
0971デフォルトの名無しさん
2008/07/31(木) 10:21:05のように書く。
0972デフォルトの名無しさん
2008/07/31(木) 10:22:09演算子が括弧の中に・・・有難う御座います、すみませんでした;
0973デフォルトの名無しさん
2008/07/31(木) 10:34:510974デフォルトの名無しさん
2008/07/31(木) 11:03:34エディットボックスとスピンボタンを使って。エディットボックス上に表示されている値を0.039で割って
int型整数Aにして使うというプログラムでエディットボックスの中身は0.039の倍数である必要があります。
現在はスピンボタンを押すと0.039プラスされる設定になっており、
スピンボタンだけつかって値の設定をする分には問題ありません
しかしエディットボックスに一度0.001など0.039の倍数以外の値を入れてしまうと、
スピンボタンを押すたびに0.039プラスされ
0.040,0,079......のように0.039の倍数でなくなってしまいます。
エディットボックスに5などの値を入れてスピンボタンを押した場合5に一番近い0.039の倍数、
に修正してint型の整数Aにして使いたいんです。
エディットボタンを押したときにプラスされる値は特に0.039にはこだわらなくて大丈夫です。
0975デフォルトの名無しさん
2008/07/31(木) 12:07:400976デフォルトの名無しさん
2008/07/31(木) 12:32:06引数が16進数で0x00〜0xFFまでの範囲だとしていされていて、
実際に設定する値は0〜10なんです。
0x00~0xFFまでを10進数に直しと
256になるんで1~10までに256個の数字を入れようとすると、
だいたい0,039刻みになるという感じなんですが。
どうやったらいいのか全然わかりません。
0977デフォルトの名無しさん
2008/07/31(木) 12:39:00たぶんこれは少数で、倍数→整数倍だから、小数点以下を処理する。
これに0.39をかけると「5に一番近い0.039の倍数」の完成。
さらにこれを0.39で割りAを求める。(実質2行目の結果と同じ)
0978デフォルトの名無しさん
2008/07/31(木) 12:42:322.エディットボックス上の値を1000倍して取得
3.値を39で割る(小数切り捨て)
4.値を1足して、1000で割る
5.エディットボックスに書き戻し
1.スピンボタン(DOWN)が押された
2.エディットボックス上の値を1000倍して取得
3.値に38を足してから39で割る(小数切り捨て)
4.値を1引いて、1000で割る
5.エディットボックスに書き戻し
0979デフォルトの名無しさん
2008/07/31(木) 12:45:094.値を1足して(引いて)39倍してから1000で割る
0980デフォルトの名無しさん
2008/07/31(木) 12:59:31>978
ありがとうございます試してみます。
0981デフォルトの名無しさん
2008/07/31(木) 14:06:36チェックボックスなどのCheckedChangedイベントは画面操作による変更によってのみ呼ばれるのですか?
それとも、コードによってチェック状態を変更した場合にも呼ばれるのですか?
どなたか教えてください。
0982デフォルトの名無しさん
2008/07/31(木) 14:18:50一応試して確認したほうがいいから自分で試してみればいい
0983デフォルトの名無しさん
2008/07/31(木) 14:35:55すみません、実は初期化とイベントで同じ処理を書いていて、2回実行されてたのでおかしいと思って聞きました。
初期化でチェックボックスを変更してるのですが、イベントというのは画面での操作によって起こされるものだと思っていたので、ちょっと信じられなかったのです。
0984980
2008/07/31(木) 15:05:17>978
できました!ありがとうございました!
0985デフォルトの名無しさん
2008/07/31(木) 16:06:330986デフォルトの名無しさん
2008/07/31(木) 16:09:50どれにしても、スライダのメッセージハンドラでエディットの内容書き換えればいいかと。
0987デフォルトの名無しさん
2008/07/31(木) 16:11:06とりあえずトラックバーで検索する
0988デフォルトの名無しさん
2008/07/31(木) 17:09:230989デフォルトの名無しさん
2008/07/31(木) 17:13:45FormなのかMFCなのかWin32なのか。
0990デフォルトの名無しさん
2008/07/31(木) 17:15:35そういった事が出来るsplitっぽい関数は何があるでしょうか。
System::StringのSplitだと文字列だとダメだったので。
0991デフォルトの名無しさん
2008/07/31(木) 17:30:290992デフォルトの名無しさん
2008/07/31(木) 17:37:26では何か良い方法を教えて貰えませんでしょうか。
strtokでも文字列で分割が出来ないんですよね。
0993デフォルトの名無しさん
2008/07/31(木) 17:40:32つか、スレ終わっちゃうな。
0994デフォルトの名無しさん
2008/07/31(木) 17:57:51std::stringにSplitってありましたっけ、検索しても出てこない…。
0995デフォルトの名無しさん
2008/07/31(木) 18:10:28★初心者にVisual C++を教えるスレ★ Part31
http://pc11.2ch.net/test/read.cgi/tech/1217494948/
0996デフォルトの名無しさん
2008/07/31(木) 18:11:53自分で
>System::StringのSplit
って言ってるじゃないか。
もっと詳しく環境やら書いてよ。それに単に文字列と書かれてもどれを指してるのかわからん。
0997デフォルトの名無しさん
2008/07/31(木) 18:16:03すみません、小文字だったのでstdの方かと思いました。
環境はVC++2008で、文字列の型はどんなのでも構いません。
"abcdefg abcdefg"の文字列に対して、
"cd"の文字列で分割するといった事がしたいのです。
0998デフォルトの名無しさん
2008/07/31(木) 18:59:18あと先頭と最後を考慮
0999デフォルトの名無しさん
2008/08/01(金) 01:03:291000デフォルトの名無しさん
2008/08/01(金) 01:04:3510011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。