5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

★初心者にVisual C++を教えるスレ★ Part32

1 :デフォルトの名無しさん:2008/10/31(金) 12:16:11
Visual C++入門者・初心者からの質問を、
お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。
・できるだけ具体的に。

質問の仕方については次のページが大変参考になります。
http://www.hyuki.com/writing/techask.html

■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
 (MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。

過去スレ、関連スレなどは>>2-5辺り。

2 :デフォルトの名無しさん:2008/10/31(金) 12:17:44
Part31 ttp://pc11.2ch.net/test/read.cgi/tech/1217494948/
Part30 ttp://pc11.2ch.net/test/read.cgi/tech/1210170833/
Part29 ttp://pc11.2ch.net/test/read.cgi/tech/1203007556/
Part28 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/

3 :デフォルトの名無しさん:2008/10/31(金) 12:18:33
Part12 ttp://pc5.2ch.net/test/read.cgi/tech/1083585833/
Part11 ttp://pc5.2ch.net/test/read.cgi/tech/1077965179/
Part10 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

4 :デフォルトの名無しさん:2008/10/31(金) 12:21:50
【関連スレ】
■MFC相談室 mfc19d.dll■
http://pc11.2ch.net/test/read.cgi/tech/1207301867/
Win32API質問箱 Build71
http://pc11.2ch.net/test/read.cgi/tech/1224745158/
【C++】 DirectX初心者質問スレ Part19 【C】
http://pc11.2ch.net/test/read.cgi/tech/1224942911/
C言語なら俺に聞け(入門篇) Part 37
http://pc11.2ch.net/test/read.cgi/tech/1224000127/
【初心者お断り】ガチ規格準拠C専用スレ Part133
http://pc11.2ch.net/test/read.cgi/tech/1201153965/
C++相談室 part63
http://pc11.2ch.net/test/read.cgi/tech/1221144557/
C/C++の宿題を片付けます 117代目
http://pc11.2ch.net/test/read.cgi/tech/1225320579/
【初心者歓迎】C/C++室 Ver.60【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1224057986/


【関連サイト】
猫でもわかるプログラミング
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
Google
http://www.google.co.jp/

5 :デフォルトの名無しさん:2008/10/31(金) 12:24:05
【このスレの前身 VisualC++相談室 過去スレ】
part 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

6 :デフォルトの名無しさん:2008/10/31(金) 12:26:49
Platform SDKの中で一番新しいのはこっち
Microsoft 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



テンプレ終わり。

7 :デフォルトの名無しさん:2008/10/31(金) 12:54:44
>>1乙!

CPaneDialog::Createのパラメータ、nIDは何を入れればいいんですか?

8 :デフォルトの名無しさん:2008/10/31(金) 13:52:30
>>1

>>7
自分で決めたID
同じ親をもつ同士でかぶらなければいい。

9 :デフォルトの名無しさん:2008/10/31(金) 15:19:50
>>1
乙です

10 :デフォルトの名無しさん:2008/10/31(金) 15:57:19
>>8
thx

11 :デフォルトの名無しさん:2008/10/31(金) 18:52:06
たとえばCRectとかのインスタンスは作った関数を出る前に解放したほうがいいんでしょうか?それとも関数を出る時に変数と同じで解放されるんでしょうか?

12 :デフォルトの名無しさん:2008/10/31(金) 18:59:01
解放する手段があるってことは解放する必要がある。
でも通常関数内で宣言したら消しようがないべ?
スコープ抜けるときに消えるし、ちゃんとデストラクタも呼ばれる。
ただし、newで作ったら、delete必要。

13 :デフォルトの名無しさん:2008/10/31(金) 19:20:22
なるほど、普通は関数を出たら消滅するとして、たとえば1秒間に何百回も関数が呼ばれる場合、
何度も同じオブジェクトを繰り返し作るのは速度的な問題以外に何かまずいことはありますか?


14 :デフォルトの名無しさん:2008/10/31(金) 22:14:57
ダイアログにエクスプローラのように、ファイルを選択していろいろやれるコントロールを追加したいんですが
これはTree Controlで頑張るしかないんですか?

15 :デフォルトの名無しさん:2008/11/01(土) 01:12:35
>>11
newして作ったのなら開放が必要。auto変数なら無用。
>>13
シングルスレッドに限定すれば速度以外は問題ない。
マルチスレッドの場合に関しては情報不足。

16 :デフォルトの名無しさん:2008/11/01(土) 09:50:19
Unicode 文字セットを使用して、LPTSTR型の変数の文字列を
コンソール上で出力するにはどうすればよろしいでしょうか?

17 :デフォルトの名無しさん:2008/11/01(土) 10:08:25
VisualStduio2005EEとVisualStudio2008EEって何が違いますか?
やっとインストール終わったと思ったら20008があると知って変更したほうがいいか調べてます
エディタの使いやすさは変わったでしょうか?

18 :デフォルトの名無しさん:2008/11/01(土) 10:23:05
>>15
ありがとうございます。メモリが壊れやすくなるからなるべく無駄のないように作るのが普通だとかそういうルールがあるのかとおもいました。
newの意味がやっとわかりました。関数を抜けても消滅させないためにあるんですね。

19 :デフォルトの名無しさん:2008/11/01(土) 10:32:32
>>16
printfでワイド文字列の書式指定するとか、wprintfみたいなワイド版の関数をつかう。
あとロケールを設定しないと正常に表示されない。

20 :デフォルトの名無しさん:2008/11/01(土) 10:46:06
Windowsのコマンドプロンプトはchcpでもwcharは表示できないよね
UTF-8なら出来るけど

21 :16:2008/11/01(土) 10:54:57
>>19
どうもありがとうございました。以下の内容でできました。
setlocale(LC_ALL, "");
printf("%S", LPTSTR);


22 :デフォルトの名無しさん:2008/11/01(土) 13:26:17
設定に関わらず必ずUnicode文字列と決まってるなら、LPTSTRじゃなくてLPWSTR使っとけ。

23 :デフォルトの名無しさん:2008/11/01(土) 13:50:40
・Visual C++2008 express
・開発環境・・WindowsForm・windowsXP
プログラムを作ろう!という本を見ながらプログラムを組んでいるんですが、
// dicegame.cpp : メイン プロジェクト ファイルです。

#include "stdafx.h"
#include "Form1.h"

using namespace dicegame;

[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
// コントロールが作成される前に、Windows XP ビジュアル効果を有効にします
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);

// メイン ウィンドウを作成して、実行します
Application::Run(gcnew Form1());
return 0;
}
この箇所で
1>.\dicegame.cpp(6) : error C2059: 構文エラー : 'namespace'
1>.\dicegame.cpp(6) : error C2238: ';' の前に無効なトークンがあります。
1>.\dicegame.cpp(20) : fatal error C1075: 左側 中かっこ '{' に対応するものが 'c:\documents and settings\user\my documents\visual studio 2008\projects\dicegame\dicegame\Form1.h(4)' で見つかる前に EOF が検出されました。
と言うエラーが出てデザインが表示できないんですが、どなたか原因がわかりますか??



24 :デフォルトの名無しさん:2008/11/01(土) 14:51:08
>>23
Form1.h側に問題があるんだろ

25 :デフォルトの名無しさん:2008/11/01(土) 15:00:24
クラスをウィザードで作ったあと、クラスビューを見てもクラスがリストに載ってないんです。
VS2008を再起動して見てみるとリストにあるんですけど、再起動なしで出てくるようにするにはどうすればいいんですか?一度ビルドしてもだめでした。

26 :デフォルトの名無しさん:2008/11/01(土) 21:55:04
VC++2008EEを使ってCの勉強しようと思ってるですけど
インスコした時の設定のままだとコンパイル等がC++基準になってるじゃないですか
それをC基準にするには設定のコンパイル言語の選択をCにする以外に変えるところはありますか?
あとその設定を既定値にするにはどうしたらいいですか?
よろしくお願いします。

27 :デフォルトの名無しさん:2008/11/02(日) 03:30:06
拡張子をcにすればc言語、cppにすればC++言語

28 :デフォルトの名無しさん:2008/11/02(日) 16:57:12
有料版の製品を一切使わずにVC++ 2008 EEを使って
SQL Serverに接続することは可能ですか?


29 :デフォルトの名無しさん:2008/11/02(日) 20:08:59
可能です。.NET使えば楽だと思う。
VC++ 2008 EEで.NETやるときはC++/CLIという言語で書くことになる。
SQLConnectionで検索してみ。

30 :デフォルトの名無しさん:2008/11/02(日) 20:33:08
>>29
ありがとうございます。
さっそく検索してみますね。

31 :デフォルトの名無しさん:2008/11/03(月) 15:28:47
現在Visual C++でゲームを製作していて
ttp://homepage2.nifty.com/natupaji/DxLib/program/ActionSample.cpp
を参考にしてアクションゲームを作っているのですが
// マップの描画
{
int i, j ;

for( i = 0 ; i < MAP_HEIGHT ; i ++ )
{
for( j = 0 ; j < MAP_WIDTH ; j ++ )
{
// 1は当たり判定チップを表しているので1のところだけ描画
if( MapData[i][j] == 1 )
{
DrawBox( j * CHIP_SIZE, i * CHIP_SIZE,
j * CHIP_SIZE + CHIP_SIZE, i * CHIP_SIZE + CHIP_SIZE,
GetColor( 255, 255, 255 ), TRUE ) ;
}
}
}
}

// キャラクタの描画
DrawBox( ( int )( PlX - CHAR_SIZE * 0.5F ), ( int )( PlY - CHAR_SIZE * 0.5F ),
( int )( PlX + CHAR_SIZE * 0.5F ) + 1, ( int )( PlY + CHAR_SIZE * 0.5F ) + 1,
GetColor( 255, 0, 0 ), TRUE ) ;
のところを自分で書いた画像に置き換えようとしているのですが、なかなかうまくいきません・・・。
どのようにすればいいのか教えてもらえないでしょうか?

32 :デフォルトの名無しさん:2008/11/03(月) 21:11:35
状況を「うまくいかない」としか言わない奴には教えない事にしてる。

33 :デフォルトの名無しさん:2008/11/03(月) 22:45:25
えらそうに

34 :デフォルトの名無しさん:2008/11/03(月) 22:48:14
いや実際教えようがないだろ。32とは別人だが。

35 :31:2008/11/03(月) 22:59:47
loadgraphなどを使って画像は表示されるのですが、表示されるだけで動かなかったり。
どうしてもキャラクタの描写を自分の書いた画像に置き換えることができない状態です・・・。


36 :デフォルトの名無しさん:2008/11/04(火) 09:47:10
お客様にエスパーさんはいらっしゃいますか

37 :デフォルトの名無しさん:2008/11/04(火) 09:59:15
その動かないコードをなんで書かないんだよ。
間違ってるところも指摘できないじゃないか。

38 :デフォルトの名無しさん:2008/11/04(火) 10:17:24
知ってることを教えるのとソリューションを提供するのとは別なんだとつくづく

39 :デフォルトの名無しさん:2008/11/04(火) 11:06:58
DrawBoxやloadgraphなんて聞いたこともない

40 :デフォルトの名無しさん:2008/11/04(火) 13:38:47
URLにDxLibってあるから想像はつくが>>31
loadgraphが全部小文字なのはおかしいな


41 :デフォルトの名無しさん:2008/11/04(火) 13:41:54
つーか、普通に貼ったURLのとこちょっと見ただけで普通に画像に差し替えられるが
どこが引っ掛かってるのだろうか。一応絵は出るらしいからパス設定じゃなさそうだし。

42 :デフォルトの名無しさん:2008/11/04(火) 20:33:37
質問です。
PC初期化したのでVC++を再インスコしたんですが
プログラム書いてもビルドできません。
2〜3秒フリーズして「応答なし」
となってしまいます。
これはスペックの問題なんですかね?

OS vista 
CPU celeron M
メモリ 2G
のノートPCです。

43 :デフォルトの名無しさん:2008/11/04(火) 20:39:57
XPでカーソルを変更するにはどうすればいいんですか?

HCURSOR hCursor;
hCursor = AfxGetApp()->LoadCursor(IDC_WAIT);
SetCursor( hCursor );

hCursorがNULLになるんです


44 :デフォルトの名無しさん:2008/11/04(火) 23:01:29
MSDNライブラリくらい調べてから質問しろよ

45 :デフォルトの名無しさん:2008/11/05(水) 01:05:52
複数イベントから同一のデータを更新したい場合
たとえばグローバル変数を使って

// グローバル変数
int g_count;

// ボタン1押下時処理
void OnButton1()
{
  g_count++;
}

// ボタン2押下時処理
void OnButton2()
{
  g_count++;
}

のようにやることができますが、
同様のことをグローバル変数を使わずにやる方法はないでしょうか?

46 :デフォルトの名無しさん:2008/11/05(水) 01:09:44
あります

47 :デフォルトの名無しさん:2008/11/05(水) 02:47:47
ダイアログウィンドウで配置しないでクリエイトで作ったCButtonのキャプションのフォントサイズを変更するにはどうすればいいんですか?

48 :デフォルトの名無しさん:2008/11/05(水) 09:38:48
>>47
言語とか環境は何?
まあWM_SETFONTで。

49 :デフォルトの名無しさん:2008/11/05(水) 09:39:23
おっと、言語はC++か。

50 :デフォルトの名無しさん:2008/11/05(水) 10:20:33
CButtonならおそらくMFC

51 :デフォルトの名無しさん:2008/11/05(水) 10:39:42
ああ、そっか

52 :デフォルトの名無しさん:2008/11/05(水) 15:46:31
で、CFontがスコープ外れて消滅し
フォントが変わりませんと、また質問が来る・・・と

53 :デフォルトの名無しさん:2008/11/05(水) 21:45:03
フォントの変更できました。ありがとうございました。

54 :デフォルトの名無しさん:2008/11/05(水) 21:52:45
ボタンが灰色になっていて押せません。
m_Btn1.EnableWindow(TRUE);
でも
m_Btn1.SetCheck(BST_UNCHECKED);
でも出来ません。起動後一瞬黒くなるんですが、すぐ灰色になります。どういうことですか?

55 :デフォルトの名無しさん:2008/11/05(水) 22:38:10
iostreamはどこからダウンロードすればいいのでしょうか?
あるいはどこのフォルダに格納されているのでしょうか?

iostreamを用いたプログラミングがしたいのですが…

56 :デフォルトの名無しさん:2008/11/05(水) 22:43:53
C++で#include <iostream>してエラーが出るなら、再インストールでもしておけ。

57 :デフォルトの名無しさん:2008/11/05(水) 22:44:03
マウスメッセージはポイントにあるコントロールにメッセージが送られるんですか?
コントロールのクラスを作って、その中でメッセージ対応の処理を書く以外で、クラスを作らずに親ウィンドウでメッセージ処理をするにはどうすればいいんですか?

58 :デフォルトの名無しさん:2008/11/05(水) 22:45:59
>>56
それででますね…
再インストールしたほうがよさそうですね

59 :デフォルトの名無しさん:2008/11/05(水) 22:54:51
>>56
あ、違います。
#include <iostream>
じゃなくて
#include <unistd.h>がエラー出てました
unistd.hというヘッダファイルはどうやって登録すればいいんでしょうか?
unistd.hというファイルをどこからかダウンロードして#include ""の絶対パスで指定するんですか?

60 :デフォルトの名無しさん:2008/11/05(水) 23:06:59
<unistd.h>はUnix/Linux固有のものがいっぱい詰まったヘッダ。
Windowsでいうとこの<windows.h>みたいなもの。
当然VC++用の<unistd.h>なんてない。

ようするに、VC++でそれをコンパイルさせないといけないのなら、
<unistd.h>なしでコンパイルできるようにすることこそがWindowsへの移植という君の仕事。
趣味ならCygwinでGCCでも使っておけ。

61 :デフォルトの名無しさん:2008/11/06(木) 06:14:00
>>59
とりあえず、エラーが出た

#include <unistd.h>

をコメント行(//)に変えた状態でコンパイルしてみれば、<unistd.h>内で
宣言・定義された関数や定数のうち、実際にプログラム中で使われている
ものだけが未定義エラー等で出力されると思うので、それらの機能や値の
意味を調べて、Windows APIや、Windowsの定数に置き換えてやればよい。

ソース内で使われている場所は、コンパイルエラーや警告が出た行。

エラーとして出ない関数や定数は、今回のプログラム中では使われて
いないので、放置してよい。

バカ正直にUnix互換のライブラリを用意する必要はない。

62 :デフォルトの名無しさん:2008/11/06(木) 10:01:10
>>54
状況がわからんけど、ハンドラは書いた?

63 :デフォルトの名無しさん:2008/11/06(木) 16:01:05
>>62
ハンドラはこれだけではダメなんでしょうか?
ボタンが灰色なだけでなく、メッセージも受け取れません。
ヘルプを見れば全てわかるように書いてあるそうですが、仕組みがわからず読み取ることもできません
おしえてください。お願いします。

//FileView.h
CMFCButton m_Btn;
afx_msg void LButtonDown();

//FileView.ccp
BEGIN_MESSAGE_MAP(CFileView, CDockablePane)
ON_BN_CLICKED(7, LButton)
END_MESSAGE_MAP()


CFileView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
m_Btn.Create(_T("OK"), WS_VISIBLE | WS_CHILD, rectDummy, this, 7)
m_Btn.EnableWindow(TRUE);
}

void CFileView::LButton()
{
TRACE0("OK\n");
}

64 :デフォルトの名無しさん:2008/11/06(木) 17:20:53
2008SP1のMFCはまだ触ってないからよくわからんが、
せめてIDは、、リソースをアクティブにした状態で編集メニューから
リソースシンボル→新規作成で作ってそれ使ったほうがいいぞ・・

今までのViewにそのやり方でボタン貼り付けたら機能するから
CDockablePaneの仕様によるのかもね。

65 :デフォルトの名無しさん:2008/11/06(木) 17:43:29
2008では、CDockablePaneなんて追加されたのか。

CSplitterWndクラスで作成する分割ウィンドウみたいなやつなら、ペイン
自体はCFrameWndみたいな枠だけじゃないのかな?

何がやりたいのか判らんが、CReBarとCDialogBarとかを使う方が簡単じゃ
ないのかな?

慣れていれば、シンボルはresource.hを直接編集してもいいと思うけど、
とりあえずマジックナンバーはやめようよ。

VC6ではできたのに、2003以降、IDE内で開いているプロジェクトのリソ
ースペインに、他のリソースを開いてドラッグ&ドロップでコピーしたり、
カット(CTRL-X)⇒ペースト(CTRL-V)できないけど、2008って直ってるの
かな? リソース編集しててると、突然IDEが落ちるなんてこともある。

66 :デフォルトの名無しさん:2008/11/06(木) 18:35:38
ありがとうございます。普通はこのやり方で合ってるというのがわかってよかったです。
ボタンではなくてドックパネルを徹底的に調べてみます。
他のコントロールは継承クラスを作ってそこでメッセージ処理をしていたのですが、
さすがにボタン1つのメッセージ処理のためにクラス作成は酷いんじゃないかと思い、、、が、うまくいかずはまりこんでしまいました。

マジックナンバーはアプリウィザードで作られたひな形がCreateのなかで連番を使っていたので
そのまま続きの数字を使って追加してしまいました。いつかはIDSの登録物と重なるし、オブジェクトが判別しづらいのでは?とは思ったのですが
全て修正しないと気持ちよくないし、ひな形の流れに負けて連番にしてしまいました。


67 :デフォルトの名無しさん:2008/11/07(金) 00:00:29
子ウィンドウから親ウィンドウで作ったオブジェクトのメンバ関数にアクセスするにはどうすればいいんですか?


68 :デフォルトの名無しさん:2008/11/07(金) 02:44:59
解決しました

69 :デフォルトの名無しさん:2008/11/07(金) 13:01:28
プリコンパイル済みファイルの名前のStdAfxってどういう意味をもっているんでしょう?
変更することもできるけれど、気にせずにそのまま使うのが普通なんでしょうか。

70 :デフォルトの名無しさん:2008/11/07(金) 20:45:09
俺が前にここで聞いた時にはStandard Application Frameworksの略だって聞いた。

71 :デフォルトの名無しさん:2008/11/08(土) 02:29:25
すみませぬ、質問させて下さい。
VC++2008で簡単なコンソールアプリを作ってみたのですが、
これをビルドして他人に渡してもエラーが出て実行できません。
他人のWindows環境で動作させるにはどのようにビルドすればよいのでしょうか?

72 :デフォルトの名無しさん:2008/11/08(土) 03:38:22
自己解決しやした。

73 :デフォルトの名無しさん:2008/11/08(土) 04:42:30
さっぱりわからんので教えてください。
VC++2008ExpressEditionで、Formでプログラムを作り始めて、
スクロールバーを縦横で表示・非表示を切り替えたい時、
ツールからフォームに貼り付けるとこうなります。

     ↑
←  →↓

のように右下に小さい四角が出来ません。

     ↑

     ↓
←  →□
こんな風にしたい

上手いことスクロールバーを表示するにはどこをいじればよいでしょう?

74 :デフォルトの名無しさん:2008/11/08(土) 18:01:28
貼り付けるんじゃなくて、Formが
内蔵しているメンバを弄るの。
this->HorizontalScroll->Visible = true;
this->VerticalScroll->Visible = true;
とか何とか

75 :デフォルトの名無しさん:2008/11/08(土) 23:48:18
お手数ですが質問させてください。
SystemTimeToVariantTime
関数をを使いたいのですが、使用すると以下のエラーが発生します

error LNK2001: 外部シンボル ""extern "C" int __stdcall SystemTimeToVariantTime(struct _SYSTEMTIME *,double *)" (?SystemTimeToVariantTime@@$$J18YGHPAU_SYSTEMTIME@@PAN@Z)" は未解決
です。

調べたところ、SystemTimeToVariantTimeを使うにはole32aut.lib
が必要そうなのですが、どうやって ole32aut.lib を手に入れればよいか
わかりません。(そもそもole32aut.libがないのかエラーの原因
なのかも微妙なのですが)

環境は Visual C++ 2005 Express です。


76 :デフォルトの名無しさん:2008/11/08(土) 23:51:39
>>75
Windows SDKをインストールしろ。
インストールしたら、スタートメニューのMicrosoft Windows SDKの中のどっかにVisual Studioとの統合みたいな項目があるからそれを叩け。

77 :75:2008/11/09(日) 00:16:12
ありがとうございます。試してみます。

78 :デフォルトの名無しさん:2008/11/09(日) 06:00:14
ウィンドウに、ダイアログリソースを張り付ける手順は

・ダイアログリソースを作成
・スタイルを子に設定
・ウィンドウのOnCreate関数に
 CDialog m_Dialog1;
 m_Dialog1.Create(IDD_DIALOG1, this);
 と
 CRect rectClient;
 GetClientRect(rectClient);
 m_Dialog1.SetWindowPos(NULL, rectClient.left + 1, rectClient.top + 1, rectClient.Width() - 2, rectClient.Height() - 2, SWP_NOACTIVATE | SWP_NOZORDER);
 を追加

これ以外になにをすればいいんですか?
これでコンパイルできるのですが、向こう側が透けて見えてダイアログが表示されないんです。教えてください。お願いします

79 :デフォルトの名無しさん:2008/11/09(日) 09:10:18
http://msdn.microsoft.com/ja-jp/library/yhth57kd(VS.80).aspx
MFC ライブラリ リファレンス
CDialog::Create
リソースからダイアログ ボックス テンプレートを使ってモードレス ダイアログ ボックスを作成します。

親ウィンドウを作成したときにダイアログ ボックスを表示する場合は、
ダイアログ ボックス テンプレートで WS_VISIBLE スタイルを使用します。
それ以外の場合は、ShowWindow 関数を呼び出す必要があります。

80 :デフォルトの名無しさん:2008/11/09(日) 09:49:37
>>79
できました。ありがとうございました!

81 :73:2008/11/09(日) 14:44:41
>>74
明日早速やってみます!

82 :デフォルトの名無しさん:2008/11/09(日) 20:09:18
いままでVC毛嫌いしててBCC使ってたけど、VCなかなか便利じゃないか
引数の型とかを教えてくれるのが感動した

83 :デフォルトの名無しさん:2008/11/11(火) 07:41:54
すいません、自分のIPアドレスを変更するにはどうしたらいいのでしょうか。
確保するのはすぐに判ったのですが、変更方法がさっぱりです。

84 :デフォルトの名無しさん:2008/11/11(火) 08:00:29
ダイアログ画面の中のコントロールをすべて再描画するにはどうすればいいんですか?

85 :デフォルトの名無しさん:2008/11/11(火) 11:39:36
VC++をこれから始めようとしているものです解説書見ながらサイコロゲームを作っているところです
VC++2008WindowsXP
実は他の方のサンプルを試してみたいのですが
サンプルの使い方もわかりません
手持ちの解説書にはそういうことは書いてありませんのでどなたかお力貸してください
下記は先人の方が質問されて、大先輩の方がサンプル付きで解答されています
上のアドレスが最初の質問で下のアドレスが2回目の質問のようです
最終的にはサンプルの全角空白(書いた方がわざとそうしています)を半角空白にして
SendInput()関数を入れると問題なく動いているようです
質問「キーの自動入力」
ttp://okwave.jp/qa4023937.html?ans_count_asc=2
ttp://soudan1.biglobe.ne.jp/qa4027968.html

質問者の方と私は環境が似ているので
このサンプルを動かしてみたいのですが
VC++の開き方すらよくわからない状態ですので
どなたかわかるように説明していただけないでしょうか?
私がやったこと
サンプルの全角空白を半角空白に8箇所直した
VC++2008を起動する→ファイル→新規作成→プロジェクト→Win32→
Win32プロジェクト→プロジェクト名入力→OK
(Win32アプリケーションウィザード)次へ→何も変更しないで完了
出てきた”(グローバルスコープ)”というソースコードのページの
どこに上記のサンプルを貼り付ければいいでしょうか?
”// TODO: ここにコードを挿入してください。”の部分へ貼り付けたり
・このときエラーはいっぱい出ました
わからないので全てを削除して貼り付けてみたりしましたがビルドできません
・この時のエラーは下記の1つでした
fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか?
VC++2008の開き方、サンプルの張り方教えてくださいm( _ _ )m

86 :デフォルトの名無しさん:2008/11/11(火) 11:50:54
どの部分が抜粋でどの部分が関数丸ごとかわかるようになるまで
もっと初歩的なことやったほうがいいと思うよ。

87 :デフォルトの名無しさん:2008/11/11(火) 11:53:48
>>86さん
そこをなんとか教えていただけないでしょうか?
よろしくお願いします
取りあえずサンプルの全角空白を半角空白に直した後どうすればよいのか教えてください
お願いします

88 :デフォルトの名無しさん:2008/11/11(火) 12:00:55
VOID setKeybrd( LPINPUT lpKey, WORD wVKey, BOOL bKeyDown )
{
  ・
  ・
}
これが関数だよ。
適当に最後にでも置いて、
VOID setKeybrd( LPINPUT lpKey, WORD wVKey, BOOL bKeyDown );
の1行を先頭のほうの
// このコード モジュールに含まれる関数の宣言を転送します:
のあたりにでも置いておく。

INPUT Key[ 2 ];
 ・
 ・
 ・
if ( SendInput((UINT)(lpKey - Key),Key,sizeof(INPUT)) == (UINT)(lpKey - Key) ){
//”S”を押すと実行する既存のプログラム
}
これが本体だ。
自分が使いたいとこに置けばいい。
この使いたいところ、ができないうちは何もできんからあきらめろ。
{} でくくって case IDM_ABOUT: の次あたりに放り込んでもいいけどな。

89 :デフォルトの名無しさん:2008/11/11(火) 12:10:40
>>88さん
マジでありがとう(;´д⊂ヽ
どうしていいのかわかんなくて困ってたんです
使いたいところってのはまだ(ソースコード作って)ないんです
取りあえずこのサンプルだけで自分の環境でも動かせないのか知りたかったんです
詳しく本当にありがとうございました
助かりました心から感謝してます
ありがとうございましたm( _ _ )m

90 :デフォルトの名無しさん:2008/11/11(火) 16:54:06
お世話になります
VC++とC++の違い教えてください
C++のサンプルコードはVC++でコンパイルできますか?
先ほど1時間かけてこの地方で一番大きな本屋さんへ行って解説本を2冊購入したのですが
なんと!
帰りの電車の中で気づいたのですが1冊はVC++ではなくC++用だったんですorz
まだレシート持ってるから電話して交換してもらった方がいい?
自分としては応用できそうならこのままこの本で勉強したいです
その本は「○○の絵本」シリーズでちょっと有名な本です
挫折はしましたがJAVAやPHPの時も購入して良本というイメージがあったんです
それで「VisualC++500の極意」と「C++の絵本」を持ってレジに行って買ったんです
内容的にはCを知っている方にC++とはこういうものですって感じです
私はCを習得したわけじゃないですけど
なんとなくわかります
Cで使ったPrintfのソースをそのまま使えるけどエラーが出ます、それは戻り値がないからで
そのままでも問題はありませんが気になるのならmainの前に型intを付けて最後にリザルト0をつければいい
こんな感じでわかりやすいんです
私が実際に使っていこうとしてるのはVC++EEなのでC++との違いが気になります
前置き長くなり申し訳ないです
C++のサンプルはVC++で使えますか?
よろしくお願いいたします

91 :デフォルトの名無しさん:2008/11/11(火) 16:59:22
なんかこの手の質問多いな。
C++は言語の名前、VC++はC++で開発するための製品、の名前。

92 :デフォルトの名無しさん:2008/11/11(火) 17:03:05
>>91さん
即レスどもありがとです!
ということは問題無しですね
ドキドキしちゃったよ
教えてくれてありがとうですm( _ _ )m

93 :デフォルトの名無しさん:2008/11/12(水) 14:44:55
話にならん低脳っぷりだな……小学生か。

94 :デフォルトの名無しさん:2008/11/14(金) 00:54:01
超初心者ならしょうがないでしょ
VC++とC++で迷うのは想定外だったけど
確かに知らなかったら迷うよなーとは思った

95 :デフォルトの名無しさん:2008/11/14(金) 01:57:51
初心者とか関係ないだろ。
人に聞く前に検索すれば済む話。

96 :デフォルトの名無しさん:2008/11/14(金) 06:39:48
理解できてる人だけが検索する単語を絞ることができる

97 :デフォルトの名無しさん:2008/11/14(金) 10:36:02
こんちわ
お世話になります
先輩たちのお陰でなんとかブラウザ作れましたありがとうございます
(実は解説本、そのまんま^^)
これでファイルの読み書きとあわせて2つのことができるようになりましたw
ありがとうです
この先、目標はブラウザで読み込んだテキスト内で文字検索して保存するです
例えばヤフーのトップ画面を見て「年金」や「少年」という文字を検索して
あればその記事を保存するってことをやってみたいです
やりかたとしてテキストファイルに保存しないで
トップ画面をダウンロードしながら検索もする方法を希望です
多分これが一番早い方法だと思うからです
ダウンロード中のヤフートップ画面から文字列検索する方法教えてください
ブラウザを作れたと言っても解説本のまま入力して作っただけなので
私はまだ難しいことは一切わかりません
ヤフートップ画面のテキストを保存する方法もわかりません
どなたか優しく教えてください
お願いします

98 :デフォルトの名無しさん:2008/11/14(金) 11:06:23
Visual C++ 2005 EEを使っています。

C++の参考書などでは、 new で配列を確保した場合に開放は delete [] で行うとなっていますが
タスクマネージャで使用メモリを調べてみると、delete [] ではなく delete のみの表記でも
同じように開放されているようです。
(MB単位の配列の new と delete を何千何万回繰り返しても、使用メモリが増加していかない)

これは、VC++ではdeleteの配列開放処理についてはコンパイラが
面倒をみてくれるという事でしょうか?
それとも、現在のC++では delete でも delete [] でもどちらでも問題ないのですか?

99 :デフォルトの名無しさん:2008/11/14(金) 14:21:59
>>98
new[]したなら必ずdelete[]。deleteするのは[]の無いnewしたもの。混同しちゃダメ。
コンストラクタ/デストラクタが無いものだと問題が起きない場合もあるのかもしれないけど。

100 :デフォルトの名無しさん:2008/11/14(金) 14:44:54
>>99
レスありがとうございます。
なるほど、単純なデータ配列ではなくて、コンストラクタやデストラクタのある
オブジェクト配列だと問題が発生するということですか。

メモリの開放自体がされないわけではなく、そういったオブジェクト内部処理に
問題が発生するという解釈でいいですかね。

単純なデータ配列(int配列のような)の場合に何か問題が起きる事例はありますか?
もちろん本来の記述ルールとして[]を付けるというのはわかってはいますが、
具体的にどういう問題が出るのかというのがいまいち良く分かりません。

101 :デフォルトの名無しさん:2008/11/14(金) 14:55:23
未定義なんだったらメモリ開放しようが、デストラクタ呼ぼうがVC++の勝手だろ・・・


102 :デフォルトの名無しさん:2008/11/14(金) 14:58:13
何が未定義

103 :デフォルトの名無しさん:2008/11/14(金) 15:10:06
いいページがあった
ttp://m--takahashi.com/bbs/pastlog/06700/06661.html

>多くの処理系では、先頭の一つだけデストラクタが動き、
>そして全部解放されます。

という事らしい
なのでVC++の場合には単純データ配列は全開放されるということね
つけないよりは付けた方が安全ではあるけど

104 :デフォルトの名無しさん:2008/11/14(金) 15:22:19
なんでこういう方向に行っちゃうのかな・・・。
new[]してdeleteは単純に間違い。

105 :デフォルトの名無しさん:2008/11/14(金) 15:22:55
でも結構、「配列の最初の1要素しか開放されない」って言い切った説明をしてる奴が多いよな。
未定義のものは未定義でいいけど、間違った説明はいかんよね。


106 :デフォルトの名無しさん:2008/11/14(金) 15:26:26
>>104
頭固いな
ここはC++のスレじゃなくてVC++のスレだから、
VC++としての挙動についての話をしてるだけだよ
もちろんC++のルールとしては間違いだ

107 :デフォルトの名無しさん:2008/11/14(金) 15:31:37
MSがドキュメントとして明言してない限り、未定義の動作であることにかわりないんではないだろうか
誰か該当する文書知らない?

108 :デフォルトの名無しさん:2008/11/14(金) 15:41:47
VC++でのコードでもまず確実に間違い。
VC++がそういう動作をすることを狙ってわざとそんなコードを書いたって、全く利点無し。

109 :デフォルトの名無しさん:2008/11/14(金) 15:49:53
>>108
あれか、委員長タイプか。ルール絶対主義というか
誰一人正しいか間違いかなんて質問はしてないだろうに

間違った記述をした時にこういう風に動くって事を知っておくだけでも
デバッグする上では役にたつもんだぜ?

110 :デフォルトの名無しさん:2008/11/14(金) 16:11:33
イインチョタイプワロタw

111 :デフォルトの名無しさん:2008/11/14(金) 16:26:57
>>105
多いなそういう本やサイト
思い込みだけで書いてるのは本当に困る

112 :デフォルトの名無しさん:2008/11/14(金) 16:41:25
>>97
まず自分で調べてある程度のコードを書いてから出直してこいよ

113 :デフォルトの名無しさん:2008/11/14(金) 20:25:13
こんちわ
お世話になります>>97です
何をどう調べればいいのかもわかんないんですよ
作成したブラウザでヤフートップを表示しているので
ヤフートップページのテキストは取り込めているとは思うのですが
どうやって文字を検索するのかわかんないです
すいませんが何を調べればいいのか教えていただけないでしょうか
お願いします


114 :デフォルトの名無しさん:2008/11/14(金) 20:28:57
そんな手とり足とり教えるには、掲示板という仕組みは非効率すぎる。

115 :デフォルトの名無しさん:2008/11/14(金) 20:29:24
>>103
ありがとうございます。参考になりました。
やっぱりそういう動きになっているんですね。

116 :デフォルトの名無しさん:2008/11/14(金) 20:33:40
>>113
さようなら\(^o^)/
あなたのような人はプログラムなんてやめてパソコンを廃棄するのがベストかと

117 :デフォルトの名無しさん:2008/11/14(金) 20:50:38
なんで?
みんなできないくせに解答してるとか???

118 :デフォルトの名無しさん:2008/11/14(金) 20:51:40
ヤフートップページを読み込んで任意の文字列を検索して保存する方法教えてください><

119 :デフォルトの名無しさん:2008/11/14(金) 20:54:19
<a>タグ内の文字列調べて、キーワードが入ってたらそのurlのページをダウンロードして保存すればいい。
HTMLについては勉強した?

120 :デフォルトの名無しさん:2008/11/14(金) 21:10:33
socketから直に受信データ取ってパーサ作らないと無理だろ・・・IWebBrowserしか知らん俺なんかは

121 :デフォルトの名無しさん:2008/11/14(金) 21:15:35
>>120
IWebBrowserがあるなら、そこからIHTMLDocument2辺りを取得すれば、
HTML内のJavaScript同様、DOMでぐりぐり探れる。

122 :デフォルトの名無しさん:2008/11/14(金) 21:36:13
>>119
誰がURLの話なんかしてるんだ?
HTMLから取得ってそのHTMLから取得する方法を聞いてるんだけど
どうやって取ればいいのかわかんない
一応、正規表現とかちょっとくらいはわかるよ

123 :デフォルトの名無しさん:2008/11/14(金) 21:41:03
トップページのリンクから該当記事をDLするんじゃないのか?
トップページには記事おいてないぞ リンクが貼ってあったとしても

124 :デフォルトの名無しさん:2008/11/14(金) 22:03:49
だから、そのリンク先は作成したブラウザで見れるんだけど
見るだけで、どうやればここから文字列を取得するのかがわかんないんだ
どこに対してどういう命令出すのかがわかんないんです

125 :デフォルトの名無しさん:2008/11/14(金) 22:05:23
>>124
>>121

126 :デフォルトの名無しさん:2008/11/14(金) 22:14:08
この質問者が日本人に思えないのは俺だけですか?

127 :デフォルトの名無しさん:2008/11/14(金) 23:25:17
>IHTMLDocument2辺りを取得すれば
これわかんないんです
WEBブラウザの命令でそういうのがあるんですか?
WEBブラウザを調べたけどわかりません><

128 :デフォルトの名無しさん:2008/11/14(金) 23:29:19
検索しろよボケ
一週間はレスすんなゴミクズが

129 :デフォルトの名無しさん:2008/11/14(金) 23:32:10
ボケとかゴミクズとか何それ
お前どこのがきや

130 :デフォルトの名無しさん:2008/11/14(金) 23:32:41
>>128
はよ答えろやカス

131 :デフォルトの名無しさん:2008/11/14(金) 23:34:00
>>128
できないくせに解答者やってる奴ってお前のことかwww
はらいてー
なんでそんなに怒ってるの?
たかが2chでwww


132 :デフォルトの名無しさん:2008/11/14(金) 23:34:23
>>130
IWebBrowser2のDocumentプロパティ

133 :デフォルトの名無しさん:2008/11/14(金) 23:35:07
おい>>128
お前は頭わるくは無いと自分では思ってるようだが
要領は最高に悪そうだな
意味もわからんやろなw

134 :デフォルトの名無しさん:2008/11/14(金) 23:36:41
>>132
それでいけるんですか
ありがとです

とりあえず>>128の小僧はこの先、解答すんなよ
知っててもしゃべらねくていいから
つーかお前出入り禁止
もうくんなカス

135 :デフォルトの名無しさん:2008/11/14(金) 23:38:05
喧嘩両成敗ってことで>>134も出入り禁止な。そしたらたぶん賛同を得られると思う。

136 :デフォルトの名無しさん:2008/11/15(土) 01:31:35
単語もでてるのに検索しないでわめき散らすだけか
アホとしか

137 :デフォルトの名無しさん:2008/11/15(土) 11:35:22
自分で調べようともしない教えて君ってホント痛いな

138 :デフォルトの名無しさん:2008/11/15(土) 11:51:38
ソースの編集は外部エディタのみで行い、VC++のエディタではread onlyで書き込みできないようにして開きたいんですが
設定で可能ですか?

139 :デフォルトの名無しさん:2008/11/15(土) 15:49:42
ブラウザがどうたら言ってるのは釣りにしか思えん。
本気だったら病院から書き込んでるに違いない。

140 :デフォルトの名無しさん:2008/11/15(土) 16:46:39
DQNてのはこんなもんだよ
期待しちゃ駄目

141 :デフォルトの名無しさん:2008/11/16(日) 14:26:41
まさにこれからVC++2008EEを使ってプログラムを勉強しようとしている初心者です。
お勧めのサイトや書籍がありましたら教えてください。
とりあえずは猫でもわかるプログラミングを見て勉強しようと思ってます。

142 :デフォルトの名無しさん:2008/11/16(日) 14:28:05
お前の現在のプログラミングに対する理解度による
全くの初心者なら猫でも〜でいいよ

143 :141:2008/11/16(日) 14:33:16
さっそくありがとうございます。

昔N88BASICとCをちょっとかじりました。
とはいえX6800とかの時代なので、最近のWindowsプログラミングはさっぱりな感じです。

144 :デフォルトの名無しさん:2008/11/16(日) 20:03:38
>>143
C++を勉強しつつ
Windowsプログラムの作法を勉強しなきゃならん
っていうのが初学者が投げ出してしまうところ
最初は
CとWin32APIっていうのが無難なのかなあ

145 :141:2008/11/16(日) 21:09:08
>>144
なるほど、とりあずCからやってみているので、ある程度形になったらWin32APIを勉強してみます。
ありがとうございました。

146 :デフォルトの名無しさん:2008/11/16(日) 23:00:03
EEはリソースエディタが無いのが痛いね
フリーのツールつかえばええやんって言うだろうが
初心者ほどまとまったパッケージがオススメ
つーことでウインドウプログラム作る様になったら
2万円もしないんだしStd買っちゃいな
クラス図も作れるし

147 :デフォルトの名無しさん:2008/11/16(日) 23:00:19
昔のWin32APIを勉強してた自分を振り返ると、デバッグが上手ければもっと楽に習得できたと思った
VSの呼び出し履歴とか最初全然使ってなかったなぁ( ´ω`)

148 :デフォルトの名無しさん:2008/11/17(月) 02:23:10
こんちわお世話になります
intについて聞きたいです
整数型の型名にintってありますよね
この型名のintと
関数mainの前に書かれているintは同じなのでしょうか?
私の所有する解説本ではmainについて
int main (void) メイン関数の定義開始
とだけ説明しているだけなのです
意味を並べていくと
int:整数型の型名 main:main関数の定義開始 void:戻り値のない評価式
ってことですよね
なぜmainの前にintを書くのか凄く気になります
勝手に想像しちゃうと
最後に書かれているreturn 0(戻り値が0なら正常終了、それ以外なら異常終了)
このゼロは整数なのでintを記載するのかな?
main関数定義開始の行頭にintはなぜですか?
私の所有する解説本は結局、最後のページまでこのことには触れていませんでした
勝手な推測してしまいましたが
どなたか正しい答え教えてください

149 :デフォルトの名無しさん:2008/11/17(月) 02:35:43
あなたのもってる解説本が糞だということはわかりました。

150 :デフォルトの名無しさん:2008/11/17(月) 02:39:05
int   main(  void )
↑    ↑   ↑
戻り値 関数名 引数

これを見て意味が分からないのであればプログラムはあきらめて下さい。

151 :デフォルトの名無しさん:2008/11/17(月) 02:55:27
いやいやw、それで諦めるのはまだ早いだろ。
まだ148の読んでいた本がダメすぎただけという可能性が高いということしか分からない。

152 :デフォルトの名無しさん:2008/11/17(月) 03:15:01
わかった!
>>150さんのでわかったよ
みなさん夜分お疲れのところありがとうございましたm( _ _ )m

153 :デフォルトの名無しさん:2008/11/17(月) 03:18:47
ていうか
私の推測は当たってたってことですよね
もしかして私はセンスあるのかなwww

154 :デフォルトの名無しさん:2008/11/17(月) 06:15:26
こんちわお世話になります
有料でも構わないのでC++の質問すれば
私が理解できるまで懇切丁寧に教えてくれるサイトないですか
解説本は解説するために専門用語連発でわかりにくい部分があるんです
その専門用語を解説するページが無いので
結局、解説本→グーグル→解説本→グーグル(たまにIT辞書) こんな感じです
進行するのがかなり時間かかってしまいます
かと言って基礎をすっ飛ばすわけにもいかず
超初心者用とか超入門とか書いてあっても中身は専門用語だらけ
無料の掲示板では解答者の善意で教えてもらってるわけで
解答者もいちいち注釈つけてられないですよね
てことで嘘つき解説本はタイトルに「超入門」とか「超初心者」とか書いてるけど
内容は本当の初心者にでもわかるものはないですね
だいたい解説に注釈無しで専門用語を使うこと自体
初心者には無理。
著者はタイトルに美味しそうな単語並べてとにかく売れる事が優先のものばかり
教えることが大前提の本はないでしょうか
超々ーーーぉ入門者でも理解できるサイト(有料可)か解説本教えてください


155 :デフォルトの名無しさん:2008/11/17(月) 09:00:29
わかるまで懇切丁寧に教えて欲しいのならば学校に通ってください。
あなたの知能レベルで理解できるかどうかなど他人にわかるものではありませんよ。

156 :141:2008/11/17(月) 09:35:16
>>146
stdは2005EEからのアップデートが可能みたいですね。
確かにそれなら安いし購入も検討します。

まだリソースエディタがフリーだとどう辛いのかもわかりませんが…

157 :デフォルトの名無しさん:2008/11/17(月) 23:12:09
リソースエディタだけIDEに統合されてない
フリーソフトを使うってのは辛いって話でそ

158 :デフォルトの名無しさん:2008/11/18(火) 00:56:24
coutとprintfの違いを教えてください

159 :デフォルトの名無しさん:2008/11/18(火) 07:46:21
>>158
coutはC++でしか使えない
printfはCでも使える

160 :デフォルトの名無しさん:2008/11/18(火) 07:51:42
ttp://www.asahi-net.or.jp/~yf8k-kbys/newcpph1.html

こちらのサイトを参考にしてVisual C++ 2005で練習をしているところなのですが
完成したプログラムを「デバッグ開始」で動かそうとすると、
一瞬だけコマンドプロンプトの黒画面が出て、すぐに消えてしまいます

最初のうちは普通に実行され、黒画面が残ったままになったので
設定を間違えて弄ってしまったのかもしれません
原因、元に戻す方法がわかる方はいらっしゃいませんか?

161 :デフォルトの名無しさん:2008/11/18(火) 09:02:07
リソースエディタなんてフリーで問題ないよ
どの道付属のアイコンエディタは使い物にならんし

162 :デフォルトの名無しさん:2008/11/18(火) 09:03:33
>>160
最後にgetch()を入れればキーを押すまで画面がとまるよ

163 :デフォルトの名無しさん:2008/11/18(火) 10:05:38
>>159
了解です
Printfで書くようにします
Cout使わないといけない場合なんかはないですよね
ありがとうございます

164 :141:2008/11/18(火) 10:18:26
>>157
解説ページなどでResEditやXN Resource Editorでそれほど問題なさそうだったので、
どのようなデメリットがあるのかよくわからないということでした。
わかりにくくてすみません。

とりあえずフリーのものでやってみようかなと思います。

165 :デフォルトの名無しさん:2008/11/18(火) 16:42:30
>>162
ありがとうございます
でも最後にgetch();を付けるとエラーが…

「デバッグ無しでビルド」を選択したら
とりあえずは消えない様になりました

166 :デフォルトの名無しさん:2008/11/18(火) 16:44:50
そもそもデバッグしないでいいならCtrl+F5で実行すりゃいい

167 :デフォルトの名無しさん:2008/11/18(火) 17:21:41
あとは

1.system("pause");
2.getchar();
3.main関数の最後の行("}")にブレークポイントをいれる

から好きなのを選べばいいと思うよ

168 :デフォルトの名無しさん:2008/11/19(水) 12:30:43
今まで少しの間でしたがVC#2005EEを使っていました。
今日からC++を学ぼうと思い、VC++2008EEを使ってみたのですが
コード補完機能がないのが気になりました。
VC#2005EEのときは、1文字目から予測リストが出てくるので非常に使いやすかったのですが
VC++2008EEにはそのような機能はないのでしょうか。

169 :デフォルトの名無しさん:2008/11/19(水) 13:32:24
>>168
ないよ
せいぜい関数の引数リストやクラスのメンバリストが出る程度だがそれでもないよりましだ

170 :デフォルトの名無しさん:2008/11/19(水) 13:33:56
あ、そういえばCtrl+スペースで出たな


171 :デフォルトの名無しさん:2008/11/19(水) 13:51:54
質問です。Visual C++2005を使っています。
プロジェクトをつくるとそのフォルダにReadMe.txtが自動で作られますが
ここに各ソースファイルの簡単な説明を追記したいのですが、どのようにすればよいのでしょうか?

作成されたReadMe.txtの最後の方に、
「AppWizard では "TODO:" コメントを使用して、ユーザーが追加またはカスタマイズする
ソース部分を示します。」とか書いてあるのですが、
各ソースファイルのコメント部分にTODO:と入れればその行が自動的に
ReaMe.txtに出力されるのかと思ったのですが、なんともなりません。
何かやり方が違うのでしょうか?

そういったReadMe.txtへの説明の自動追記機能はありますか?
それともRedMe.txtを直接開いて手書きで説明を加えなくてはならないのでしょうか?

172 :デフォルトの名無しさん:2008/11/19(水) 13:52:53
あ、>>171はVisual C++ 2005 Express Editionです。
ひょっとしてエディションの問題???


173 :デフォルトの名無しさん:2008/11/19(水) 16:06:59
>>165
コンパイルエラーならconio.hがインクルードされてないとかじゃね

174 :デフォルトの名無しさん:2008/11/19(水) 16:13:36
// TODO: ここにコマンド ハンドラ コードを追加します

175 :デフォルトの名無しさん:2008/11/19(水) 16:19:32
TODOコメント使うのはAppWizardであって、ユーザー(あなた)ではない
AppWizardがあなたが追加、またはカスタマイズすべきソース部分を教えてくれているだけ
AppWizardが生成するReadMeはあなたに対する説明文であって、あなたのアプリケーションを使う人に対するものではない

176 :デフォルトの名無しさん:2008/11/19(水) 16:43:17
>>169
レスありがとうございます。たしかに、ないよりはましですね。
もやもやがなくなったので勉強してきます。

177 :デフォルトの名無しさん:2008/11/19(水) 16:45:48
>>174-175
レスありがとうございます。
えーと、つまりReadMe.txtもTODO:コメントも、後から
自分で追記したりするようなものではないということでいいんでしょうか?
ReadMe.Txtはプロジェクト作成時にVCが自動作成したファイルだけを示し、
その内どこをいじるのかがTODO:コメントで指示されるという解釈であってますか?

178 :デフォルトの名無しさん:2008/11/20(木) 19:29:23
いやあれウィザードが吐くだけの固定コメだから
メッセージマップとかをクラスのプロパティからいっぱい作って見れ 全部同じコメだ

179 :デフォルトの名無しさん:2008/11/21(金) 12:12:07
int型のポインタを宣言するときは
int* pA; とするのがいいのか
int *pA; とするのがいいのか教えていただけませんか。
テキストにはどちらでも良いと書いてありましたが、できれば多数派に合わせておきたいので・・・

180 :デフォルトの名無しさん:2008/11/21(金) 12:36:44
>>179
ポインタをtypedefする
typedef int *LPINT
LPINT pA;


181 :デフォルトの名無しさん:2008/11/21(金) 16:31:05
>>179
後者が一般的

182 :デフォルトの名無しさん:2008/11/21(金) 16:32:25
int * p;
ではダメですか?

183 :デフォルトの名無しさん:2008/11/22(土) 16:31:46


名前:
E-mail:
内容:
超初歩の質問ですいません。環境はXP,VC++2008(SP1)でインストール直後のまっさらな状態です。

 String *name = textName->Text;



error C3699: '*' : この間接指定を型 'System::String' で使用できません

と、VisualStudio2008からダメ出しされまして、エラーメッセージどおりに、

 String ^name・・・・

としたらうまく通りました。

エラーの原因はStringクラスが定数文字列前提だからかな?とも
思ってますが、それよりも^演算子(なんでしょうか?)の
意味がさっぱり調べられません。
ググってもこれといったものが出ませんでした^^;

^の意味をどなたか教えていただけませんでしょうか・・・。


184 :デフォルトの名無しさん:2008/11/22(土) 16:51:51
>>183
http://msdn.microsoft.com/ja-jp/library/ms235215(VS.80).aspx

185 :デフォルトの名無しさん:2008/11/22(土) 17:08:32
183です。

助かりましたー。新仕様だったんですね。



186 :デフォルトの名無しさん:2008/11/22(土) 19:29:02
ちょw


187 :デフォルトの名無しさん:2008/11/22(土) 20:37:46
名前:
E-mail:
内容:
なんぞこれ


188 :デフォルトの名無しさん:2008/11/22(土) 21:32:16
デスマの合図に決まってるだろ

189 :デフォルトの名無しさん:2008/11/23(日) 00:33:46
質問です。VisualC++2008をつかっています。
ソースを書き換える前に保存をしたいのですが、
全部丸ごと別名で保存する方法を教えてもらえませんか?
.cppや.hを個別に保存はできましたが、プロジェクトの中身を丸ごと別名で保存はできないのでしょうか?



190 :デフォルトの名無しさん:2008/11/23(日) 01:26:10
逆に考えるんだ
元のプロジェクトの中身をコピーして別名にしたあと上書き保存すれば結果は同じだと

191 :189:2008/11/23(日) 02:01:38
>>190
なるほど、ありがとうございました

192 :デフォルトの名無しさん:2008/11/23(日) 03:58:12
Visual Source Safeを使えばいいと思うよ

193 :デフォルトの名無しさん:2008/11/23(日) 11:48:07
次のVC++で改良される自動生成コメント ...

// TODO: ここに 派遣さんが コマンド ハンドラ コードを追加します


194 :デフォルトの名無しさん:2008/11/23(日) 17:04:29
SDKのダイアログリソースを見ると全部英語表記で記述してありますが
VCでビルドするともちろん日本語で表示されますが
日本語用のストリングテーブルがどっかにあるんですか?

195 :デフォルトの名無しさん:2008/11/23(日) 22:14:00
調べた事ないが、リソースDLLがどっかにあるんじゃまいか?

196 :デフォルトの名無しさん:2008/11/23(日) 22:25:55
予約語にinterface ってのがあるんだがこれ何?
Javaのinterfaceと同じ感じなのか?
言語仕様にはこんなのなかったとおもうんだが

197 :デフォルトの名無しさん:2008/11/23(日) 22:28:58
C++/CLIのinterfaceではないだろうか

198 :デフォルトの名無しさん:2008/11/23(日) 22:39:06
>>197
調べてみたらそのようですね
ありがと

199 :デフォルトの名無しさん:2008/11/24(月) 16:16:26
すみません、ゲームをリリース版でコンパイルして実行ファイルを作ってみたんですが
MSVCR80.DLLというランタイムに依存してしまうようなんですが
このDLLは再配布可能でしょうか?

200 :デフォルトの名無しさん:2008/11/24(月) 19:20:22
っ「http://www.microsoft.com/downloads/details.aspx?FamilyID=32bc1bee-a3f9-4c13-9c99-220b62a191ee&DisplayLang=ja

201 :デフォルトの名無しさん:2008/11/26(水) 07:43:24
プログラミング超初心者で>>23と全く同じ状況になってしまいました
デザイン画面は 「このファイルのデザイナに、デザインできるクラスがないため、デザイナを表示できませんでした。」というエラーが出てしまいます
↓ちなみにこのコードを追加したらなってしまいました

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
//オプションボタン (ラジオボタン) の状態を確認
if (this->radioButtonKisu->Checked == true){
System::Diagnostics::Debug::WriteLine("奇数が選択されました");
}else if(this->radioButtonGusu->Checked == true){
System::Diagnostics::Debug::WriteLine("偶数が選択されました");
}else{
MessageBox::Show("奇数か偶数かを選んでください","お願い");
return;
    }
  }

前に成功したビルドの状態に戻せないんでしょうか
最初からやり直せば次に進めるんでしょうか

202 :201:2008/11/26(水) 11:04:56
あぁ、自己解決しました…

203 :デフォルトの名無しさん:2008/11/26(水) 20:30:45
ゲームを配布しようと思ってるんですが
コード生成のMTとMTdって何が違うんですか?
Dllが付くものは駄目だということは知っているんですが…

204 :デフォルトの名無しさん:2008/11/26(水) 22:16:31
ライブラリが最適化されてるか否か

205 :デフォルトの名無しさん:2008/11/26(水) 23:16:52
もう少しわかりやすく説明して欲しいんですが…

206 :デフォルトの名無しさん:2008/11/26(水) 23:26:24
デバッグ用じゃないかデバッグ用か

207 :デフォルトの名無しさん:2008/11/27(木) 00:00:34
ggrks

208 :デフォルトの名無しさん:2008/11/27(木) 00:45:38
じゃあ要するに配布の再はMTを使った方がいいってことですかね?

209 :デフォルトの名無しさん:2008/11/27(木) 00:52:04
そういうことにしておけばいいんじゃないですかね

210 :デフォルトの名無しさん:2008/11/27(木) 00:59:05
くたばれクソども

211 :デフォルトの名無しさん:2008/11/27(木) 09:56:20
MTdはデバッグ用でこれでビルドしたやつ配布すると馬鹿にされる。

212 :デフォルトの名無しさん:2008/11/27(木) 11:39:13
>>208
Releaseモードでビルドするんだよ


213 :デフォルトの名無しさん:2008/11/27(木) 16:52:45
myfunc.h という名前のヘッダファイルに
int max(int x,int y);
という関数プロトタイプを宣言し
main()があるソースファイルとは別のmyfunc.cppという名前のソースファイルに
int max(int x,int y)
の定義文を記述しました。
そしてmain()があるソースファイルのはじめに
#include "myfunc.h"
と記述して動いたのですが、はじめの#include文を消去しても、ヘッダファイルに適当な関数プロトタイプの宣言を追加しても
動きました。(定義はしていません)はじめに#includeを記述する必要はあるのでしょうか。
そもそもヘッダファイルの必要性がよくわかっていないので、教えていただけないでしょうか。


214 :デフォルトの名無しさん:2008/11/27(木) 17:21:44
よくわからんが、とりあえず何か消したら念のためビルドのクリーンとかで
クリアしてから試してみては。

215 :デフォルトの名無しさん:2008/11/27(木) 18:07:33
普通はヘッダの方は必要に応じて外部参照関数呼び出しを記述
extern int max(int x,int y);
で、cまたはcppソースの方にプロトタイプ宣言を入れる

cpp内で関数を参照する時、呼び出し側の関数よりも上に本体のコードがあれば
プロトタイプ宣言は必要ない。
本体が下にある場合はプロトタイプ宣言が必要。

216 :デフォルトの名無しさん:2008/11/28(金) 00:11:19
>>214,215
ありがとうございました。いろいろ試してみます。

217 :デフォルトの名無しさん:2008/11/28(金) 12:14:13
すいません、はじめてフォームアプリケーションを作ってみようと思ったんですが、
テキストボックスに入力した値がどこに入るのかわかりません。
Messagebox::Showでそれっぽいものを表示してみようとも思ったんですが、
System:::string この型は演算子として使用できません(String[0]とかも)となります。
private: System::Void textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e) {}の中で自分で何かをやるんでようか?

助けてorz

218 :217:2008/11/28(金) 12:16:01
MessageBox::Showを書いたのはbuton1_Clickの中です。

219 :デフォルトの名無しさん:2008/11/28(金) 12:21:32
なんつーか、それ以前にやることやったほうがいい気がするが。
もしくは本でも読むか。
試しに、buton1_Clickの中に MessageBox::Show(textBox1->Text); とか書いてみ

220 :デフォルトの名無しさん:2008/11/28(金) 12:28:35
>>219
ありがとうございました
おかげでスーパーハカーになることができました!


221 :デフォルトの名無しさん:2008/11/28(金) 13:34:02
>>216
とりあえずmax()の本体を別のcppファイルに移してためしてみるといい
ヘッダーの使い方がわかるはずだ

222 :デフォルトの名無しさん:2008/11/28(金) 21:13:21
>>221
ありがとうございます。max(int x,int y)が定義されているcppファイルを削除しても動いてしまったので
ためしに maxi(int x,int y)に名前を変えたところ、無事(? 動かなくなりました。
using namespace std; を main() があるcppファイルのはじめに記述していたのですが
stdの名前空間の中にmaxがあったのが原因だったみたいです。
その後、ヘッダーファイルをincludeしなかったりしてみたりと色々試してなんとなくですがヘッダの意味がわかった気がします。


223 :デフォルトの名無しさん:2008/11/28(金) 21:56:04
日本語でおk

224 :デフォルトの名無しさん:2008/11/29(土) 15:59:58
VC++2008無料版を使っています。
class の宣言文でpublic:を記述するとclassの位置までインデントが戻ってしまうのですが、
classの位置より1段階インデントした状態にオートインデントするにはどうすればいいのですか?

225 :デフォルトの名無しさん:2008/11/30(日) 10:19:41
USBにエディタを入れて持ち歩きたいんですけど
Visual C++ライクなエディタってありませんか?
Notepad++Portableは知ってるんですけど、折り畳みがダサいので・・・

226 :デフォルトの名無しさん:2008/12/03(水) 01:24:56
実行すると、Debugフォルダがかってに作成されちゃうんですが、仕様ですか?

227 :デフォルトの名無しさん:2008/12/03(水) 05:33:26
>>226
仕様です。
どうしても作りたくなければReleaseビルド以外使うな

228 :デフォルトの名無しさん:2008/12/03(水) 08:33:13
>>226
プロパティいじれば好きに出来るよ
$(OutDir)
とか
$(IntDir)
を好きな名前にしたらいい

229 :デフォルトの名無しさん:2008/12/03(水) 18:13:00
ゲーム製作をしていてVC++2008 でコンパイルしています。

コード生成設定をMTdでやると通るのですが、MTでやると以下のエラーが出てしまいます。

LINK : warning LNK4098: defaultlib 'LIBCMT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。
libcpmtd.lib(xdebug.obj) : error LNK2019: 未解決の外部シンボル __malloc_dbg が関数 "void * __cdecl operator new(unsigned int,struct std::_DebugHeapTag_t const &,char *,int)" (??2@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z) で参照されました。
libcpmtd.lib(xdebug.obj) : error LNK2019: 未解決の外部シンボル __free_dbg が関数 "void __cdecl operator delete(void *,struct std::_DebugHeapTag_t const &,char *,int)" (??3@YAXPAXABU_DebugHeapTag_t@std@@PADH@Z) で参照されました。
C:\Documents and Settings\***\デスクトップ\**\Debug\***.exe : fatal error LNK1120: 外部参照 2 が未解決です。

LIBCMTを無視しても逆にエラーが増えてしまうんですが、どうすればいいでしょうか?
ゲーム配布時にはMTdでもMTでもdllが付かなければ問題ないですか?

230 :デフォルトの名無しさん:2008/12/03(水) 18:41:50
>>229
libcpmtdはデバッグ用。内部でデバッグ用のmallocとfreeを呼んでるから/MTdじゃないとリンクできない。
リリースビルドならlibcpmtを使う。

ってか、プロジェクトの作成をウィザード任せにすればその辺を自分でいじることなんてないと思うんだけど。

231 :デフォルトの名無しさん:2008/12/03(水) 18:50:34
なるほど、debugモードでコード生成する時はMTdで
リリースモードでやるときはMTでやるものなんですね
試しにリリースモードでMT生成してみたら通りました。

どうもありがとうございましたー。

232 :デフォルトの名無しさん:2008/12/03(水) 20:24:26
すいません
windowsXP SP2で visual c++ 2005 Express Editionを使っているんですが

以前のエラーのため、Windows Forms Designer Package ({7494682B-37A0-11D2-A273-00C04F8EF4FF})
以前のエラーのため、Visual Studio Explorers and Designers Package ({8D8529D3-625D-4496-8354-3DAD630ECC1B})
以前のエラーのため、Visual Studio Explorers and Designers Package ({8D8529D3-625D-4496-8354-3DAD630ECC1B})
以前のエラーのため、Visual Studio Common IDE Package ({6E87CFAD-6C05-4ADF-9CD7-3B7943875B7C})

というようなエラーが出てしまいます

コマンド プロンプトで 'VCExpress /resetskippkgs' を入力しろと出るので試しましたが無理でした


調べたところbeta版がどうこうとあるのですが、自分はそのようなものは入れていません
beta版のアンインストーラーを使用しても、該当するものはありませんでした

何か解決策はないでしょうか?

233 :デフォルトの名無しさん:2008/12/04(木) 10:44:16
そのエラーは何をする時に出るの?

234 :デフォルトの名無しさん:2008/12/06(土) 01:18:55
お願いします。
WinXP SP2でVisual c++ 2005 Express Editionです。

UNICODEのIniファイルの情報をGetPrivateProfileStringで取得しようと
しているのですが、lpReturnedStringにはlpDefaultの値が入ってしまいます。

IniファイルがANSIのときはうまくいきます。
GetPrivateProfileStringの引数はワイド文字にしているつもりです。

意図的にGetPrivateProfileStringWにしてもダメでした。

UNICODEファイルの際の注意点などあるのでしょうか?
ご教授ねがいます。



235 :デフォルトの名無しさん:2008/12/06(土) 01:29:29
>>234
INI系の関数はAでもWでもファイルの中身はマルチバイト文字として扱われる。
そのおかげで、Aで書き込んでWで読み取るなんてことができるんだけどね。
もちろん、文字コードの自動判別なんてやっていない。

236 :デフォルトの名無しさん:2008/12/06(土) 10:27:18
>>234
> UNICODEのIniファイル

拡張子がINIってだけで中身がUnicodeじゃあ、INIファイルとは呼べ
ないシロモノだな。

自分で、CStdioFileクラスのCStdioFile::ReadString()/WriteString()
なりを使って、1行ずつ読み込んで文字列処理するコードを書くしか
ないな。(w

237 :デフォルトの名無しさん:2008/12/06(土) 12:35:20
そうだったのか。
たしかにINIファイルって、ASCIIしか使わないけど……

238 :デフォルトの名無しさん:2008/12/06(土) 13:08:53
> INIファイルって、ASCIIしか使わないけど……

んなこたぁない。シフトJISであれば漢字やカナ文字だって使える。

でなきゃ、漢字やカナ文字を含むパス名やファイル名の文字列保存に
使えない。

239 :デフォルトの名無しさん:2008/12/06(土) 13:49:53
マジ?シフトJISなら良かったのか。
それは気がつかなかった。今度試してみよう。

ていうか、レジストリ弄りたくなくて、いまだにINIファイル使ってるんだよね。

240 :デフォルトの名無しさん:2008/12/06(土) 14:34:14
Windowsフォルダに際限なくINIファイル作られるより、レジストリの方が
ずっとマシだと思えるんだが? ログインユーザー単位で設定が分けら
れるというメリットもあるし。

第一、レジストリなんて意識せずともWindowsのシステムでいじられ
まくりだぞ。

241 :デフォルトの名無しさん:2008/12/06(土) 14:37:53
>>239
Shift_JISというか、そこで使っているコードページの文字コード。
欧米ならWindows-1252だし、繁体中国語圏ならBig5という具合。

>>240
ファイルでもApplication Dataあたりに置けば、ユーザ別設定はできる。

242 :デフォルトの名無しさん:2008/12/06(土) 15:03:55
>>241
> ファイルでもApplication Dataあたりに置けば、ユーザ別設定はできる。

MFCフレームワークのデフォルト処理を前提に書いてしまった。言われ
れば、まぁ確かにそうだ。 ところで、複数インスタンス起動した
アプリからiniファイルへの同時アクセスとかって、今は問題ないん
だっけか?

243 :デフォルトの名無しさん:2008/12/06(土) 16:50:51
たんなるアプリの設定データはWindowsフォルダなんかにつくらんだろ。
自フォルダにINIファイル作るなんて普通じゃないか?フリーソフトなんかは特に。
わざわざ選択肢減らす必要なんてないしケースバイケースでよかろう。

244 :デフォルトの名無しさん:2008/12/06(土) 17:30:28
>自フォルダにINIファイル
Program Filesに置いたらVistaで問題が出る。
All UsersのAppDataとかでどうか。

245 :デフォルトの名無しさん:2008/12/06(土) 17:41:50
>>244
>Program Filesに置いたらVistaで問題が出る。
はじめやりずれーって思ったら他のユーザーでログインしたときを考えたら納得した

246 :デフォルトの名無しさん:2008/12/06(土) 19:27:48
>>243
> たんなるアプリの設定データはWindowsフォルダなんかにつくらんだろ。

昔は作りまくりだったんで、レジストリが搭乗したんだが?

今もMFCでCWinApp::SetRegistryKey()呼ばないとiniファイルを使うけど、
iniファイルが作られるデフォルトの場所はWindowsフォルダだよ。

>>244
> All UsersのAppDataとかでどうか。

自分(現在のログインユーザー)用の「マイドキュメント」フォルダの
パスはSHGetSpecialFolderLocation()で取得できるけど、これって取れる
んだっけ? もしかして決め打ち? それはそれで問題な気もするが?

なんて思ったら、

SHGetSpecialFolderLocation(hwndOwner,CSIDL_COMMON_APPDATA,...);

でいけるのか。 知らない間にCSIDLずいぶん増えているな。

ttp://msdn.microsoft.com/en-us/library/bb762494(VS.85).aspx

247 :デフォルトの名無しさん:2008/12/06(土) 19:30:24
昔話がしたいだけか。

248 :デフォルトの名無しさん:2008/12/06(土) 19:46:34
VistaでProgram Filesのデータを読み書きするのって各ユーザー毎に仮想フォルダ作って
勝手にやってくれんじゃなかったっけ?
具体的にはどういう風になんの?

正直Vistaなんて糞OS使った事もないから知らんが。

249 :デフォルトの名無しさん:2008/12/06(土) 20:20:51
全ユーザー共通のINIファイルじゃないとダメってソフトでも
なければさほど問題はなさそうな気もする
つかこれってINIファイルに限らず他のセーブデータにも
言える事だろ

250 :デフォルトの名無しさん:2008/12/06(土) 23:21:36
「Program Filesに置いたらVistaで問題が出る。」っていうのは、他の
スレでも見たような気がするが、実際何がどう問題なのかわからん。

すくなくとも、exe本体が存在するProgram Files下のアプリケーション
フォルダ内にiniファイルを作成して読み書きは問題なく動作している
けどな。

Administrator権限以外じゃダメとかなら、Vistaに限らず2000やXP等でも
問題になりそうな気がするし、セキュリティ上、別のログインユーザーに
iniファイル内容を見られると困るというなら、All Usersに置いても同じ
だと思う。


251 :デフォルトの名無しさん:2008/12/06(土) 23:40:23
別のログインユーザに見られたら困る、じゃなくて
別のログインユーザから見られないから困るんでしょ。
Program FilesやHKLMに無駄に書き込むソフトなんざそもそもマルチユーザを前提としていないので
これらの挙動はソフトとしては想定外なわけで。
あと、管理者権限を持つプロセスから呼ばれると仮想ストアじゃないとこから設定ファイル読みに行ってNotFoundとか。

なんにせよUAC程度で不具合出るようなソフトは単純に行儀悪いだけだと思う。

252 :デフォルトの名無しさん:2008/12/07(日) 00:27:46
>>251
そうそ
Program Filesにおいちゃうとアドミニ権限ないと
書き込めないし見れないんだよね
なんでアドミニ権限ないユーザが起動すると落ちるソフトとか結構あったりする

253 :デフォルトの名無しさん:2008/12/07(日) 00:35:26
行儀が悪いのはむしろこういう勝手な事をOSにさせるMSだと思うが
別にユーザー毎の設定で問題ないアプリなら不具合にならないわけだし
結局の所はケースバイケースって事でしょ

ゲームアプリのセーブデータなんかはプログラムフォルダ内に入れとかないと
セーブデータ残したままアンインストールする場合、普段ユーザーが見ない所に
ファイルが残るしな

「行儀がいい」と「頭が固い」を履き違えてるんじゃね

254 :デフォルトの名無しさん:2008/12/07(日) 00:43:20
>>253
いや、権限によってはProgram Filesを見れないから
アプリの起動自体できない
設定ファイルがないって感じで落ちる
ケースバイケースじゃなくてこう作らないと駄目ってところまできてる

255 :デフォルトの名無しさん:2008/12/07(日) 00:48:55
さすがにそれは設定ファイルが存在することを前提にプログラムを組む方がおかしい
なかったらデフォルト値で動かすのが普通。

256 :デフォルトの名無しさん:2008/12/07(日) 00:51:59
>>254
設定ファイルがないと動かないなんて作りになってるのは
ProgramFilesだろうがなんだろうが終わってるだろ

257 :デフォルトの名無しさん:2008/12/07(日) 00:59:36
>>256
仮にProgramFilesが駄目だったら今度どこに保存すんの?

258 :デフォルトの名無しさん:2008/12/07(日) 01:06:21
Vistaは持ってないけどこの認識であってる?

1.ファイルを読むだけだったらProgram Filesから行われる
2.書き込みが発生した場合、バーチャルストアで行われる
3.一度書き込みが発生したファイルは、バーチャルストアで読み書きが行われる

Program Filesから読めないとか、どこに保存するとか言ってる人がいるから混乱してきたが。
この認識が違うなら>>254に詳しい説明をしてほしい

259 :デフォルトの名無しさん:2008/12/07(日) 01:11:29
>>258
そんなのセキュリティのポリシーの設定で変わるじゃん
駄目にしてある会社だったら読み取りも駄目だろ

260 :デフォルトの名無しさん:2008/12/07(日) 01:15:46
その場合ってそのユーザにアプリって起動できんの?
インストールの設定も含めて

261 :デフォルトの名無しさん:2008/12/07(日) 01:29:36
仮にそういうセキュリティ設定になってたとしたら
INIファイルどころかあらゆるセーブデータの読み書きができなくなるわけだから
INIファイルをどうしようが結局同じことだと思うけど

まあどうしても全てのユーザーで動作させたいんだったら全セーブデータを
>>244のようにするか、レジストリに全てぶっこむしかないだろうね
アホ臭いとしか言いようがないが

262 :デフォルトの名無しさん:2008/12/07(日) 01:45:39
でもきちんと対応するってならそれっきゃないってことだろうな
まあ、業務でそういうところに当たらないとも限らないからちょっとメモっておこ
担当者がキチだと普通にこういうの要求されるよね

263 :デフォルトの名無しさん:2008/12/07(日) 03:54:39
>>254
ファイルが読めないなら起動に必要なデータファイルはどこから読むんです?

264 :234:2008/12/07(日) 04:26:59
豚切り失礼します。

>>236さん
遅くなりましたが、回答ありがとうございます。
そうですか。UNICODEはINIファイルとして使えないのですね。
勉強になりました。





265 :デフォルトの名無しさん:2008/12/07(日) 12:46:44
>>258
3.が違う

266 :デフォルトの名無しさん:2008/12/07(日) 16:07:48
>>265
どう違うの?

267 :デフォルトの名無しさん:2008/12/07(日) 20:53:50
言ってみたかっただけじゃね。

268 :デフォルトの名無しさん:2008/12/08(月) 01:31:32
CとC++の違いってヘッダがiostreamになって使う関数が違う以外にないの?
こんなんでオブジェクト施行とか騒いじゃってるの?拍子抜けなんだけど

269 :デフォルトの名無しさん:2008/12/08(月) 01:38:10
クラス、テンプレート、多重定義、例外処理……、
オブジェクト指向に関係あるものないもの、CになくてC++にある機能なんていくらでもあるが。

270 :デフォルトの名無しさん:2008/12/08(月) 01:49:56
クラスなんて構造体に毛がはえたようなものしょぼいんだよはっきりいって

271 :デフォルトの名無しさん:2008/12/08(月) 02:18:40
馬鹿野郎!
それのおかげでインテリセンスの恩恵があるんだろうが!

272 :デフォルトの名無しさん:2008/12/09(火) 00:47:26
C→C++の一番の利点は
コードが見やすいこと、これに尽きるだろ
C++に慣れるとCのでっかいコードは耐えられん
クラス化したくてウズウズしてくる
変数途中で宣言したくなる

273 :デフォルトの名無しさん:2008/12/09(火) 00:51:53
C言語の勉強やってからC++に移行したほうが良いだろうか
それとも最初からC++から勉強しても問題ない?

274 :デフォルトの名無しさん:2008/12/09(火) 00:57:11
>>258
バーチャルストアに書き込むのはマニフェストがない場合だけだよ。
マニフェストがあればあとは管理者権限への移行が成功すれば直接書くことになる。

275 :デフォルトの名無しさん:2008/12/09(火) 01:19:02
>>273
いきなりC++でいいと思う。
共通する事柄はいずれにせよ学ぶことになるし、
Cで良く使うテクだけどC++ではあまり使わないのとか意外とあるし。

276 :デフォルトの名無しさん:2008/12/09(火) 01:24:14
>>275
把握したありがっとう

277 :デフォルトの名無しさん:2008/12/09(火) 03:21:41
>>274
つかそれって結局管理者権限で実行するってことじゃねーの?
他のシステムファイルからみとかで管理者権限が必要でマニフェストに組み込まれた
アプリじゃなければ>>258のようになるってことっしょ?

278 :デフォルトの名無しさん:2008/12/09(火) 10:30:08
>>277
マニフェストがない場合、管理者権限でもバーチャルストア行き。

279 :デフォルトの名無しさん:2008/12/09(火) 10:52:59
マニフェストがないという言い方は正しくない

280 :デフォルトの名無しさん:2008/12/09(火) 12:44:06
一連の流れをみててもどうもわかりにくいです。
人によって言ってる事が違うというか。
管理者、制限ユーザー、マニフェスト関連で正確な挙動に
ついての詳細情報が掲載されてるサイトないですか?
VistaだけでなくXPや2000での情報も欲しいです。

281 :デフォルトの名無しさん:2008/12/09(火) 14:48:03
>>280
一次情報源としてMSDNライブラリなど

例えばここらへん。
http://msdn.microsoft.com/en-us/library/bb756883.aspx
http://msdn.microsoft.com/en-us/library/bb756973.aspx
http://msdn.microsoft.com/en-us/library/bb756996.aspx
http://technet.microsoft.com/en-us/windows/aa905113.aspx

282 :デフォルトの名無しさん:2008/12/09(火) 15:11:06
日本語でおk

283 :デフォルトの名無しさん:2008/12/09(火) 15:16:27
初心者スレで英文持ち出してくるヤツは死んでいいと思うよ
日本と米で仕様が違うのもよくある事だしな

284 :デフォルトの名無しさん:2008/12/09(火) 15:26:18
英文にしか情報がないようなことを初心者スレで質問するヤツは死んでいいと思うよ

285 :デフォルトの名無しさん:2008/12/09(火) 21:38:14
>>284
初心者なんだから分からんだろ。

286 :デフォルトの名無しさん:2008/12/09(火) 21:50:21
非標準言語のしか資料が無いと言うことが判っただけでも大きな進歩であり、
革新的な質問であったことは確定的に明らか。

287 :デフォルトの名無しさん:2008/12/09(火) 22:55:05
誰か日本語でわかりやすくまとめてくだちぃ

288 :デフォルトの名無しさん:2008/12/09(火) 23:24:08
ホームエディションだと管理者か制限ユーザーのカテゴリわけだけで
細かい設定はないんだよな
プロフェッショナルの管理者による厳しいセキュリティ設定まで考慮してもきりがないと思う
どうやっても管理者次第で動かない設定にできるんだし

XPホームエディションでProgramFilesに入れたアプリを制限ユーザーで動かしてみたけど
普通にINIファイルを含むセーブデータを読み書きできた
Vistaでマニュフェストの指定なしだとこの読み書きがバーチャルストアになるってことか
それを想定して動くつくりであればセーブデータもプログラムと同じフォルダでいいんじゃね

289 :デフォルトの名無しさん:2008/12/10(水) 01:08:56
まぁ仮想ストアは救済策ってーか、MSお得意の泥臭い互換性の維持だからな。
多分将来的にはユーザーのデフォの権限を制限ユーザーにしたいんだろうが、
それVistaでやっちゃうとProgram Filesに書き込むアプリなだけで動かなくなるわけだし。

マニフェスト無しでほっとくのも止めやしないが、管理者権限のコマンドプロンプトやファイラから
起動したら別々の設定ファイルをうっかり作っちまうとかも起こりうるので、
requireAdministratorで起動毎にUACダイアログを出した方がいい。

そしてアプリのユーザーにダイアログをうざがられてAppDataに
書き込まざるを得なくなるというプレッシャーこそがUACの真意だとかなんとか。

290 :デフォルトの名無しさん:2008/12/10(水) 02:03:25
かなりどうでもいい条件付けだな

291 :デフォルトの名無しさん:2008/12/10(水) 11:56:44
VS 2003からVS 2008にしてみました

C++のソースファイルはUTF-8で書かれていて、VS 2003では概ね問題なくコンパイルできていました。
ところがVS 2008のcl.exeは、このソース内に定数として書かれた文字列を勝手にSJISに変換して内部処理するようです。これでは正常動作できません。

この余計な機能を、何とか避ける方法はないのでしょうか?

膨大な量があるので、今さらファイルをSJISに戻すとかすることは不可能なんです。


292 :デフォルトの名無しさん:2008/12/10(水) 12:03:53
コードページは?

293 :デフォルトの名無しさん:2008/12/10(水) 12:10:24
普通にコマンドプロンプトを開いて作業しているので、932のシフトJISです。


294 :デフォルトの名無しさん:2008/12/10(水) 12:15:05
すいません、本当に簡単なことなのですが
if(argc == 3){
if(argv[1] == L"-o"){
if((fp = fopen("argv[2]", "w")) == NULL){
printf("出力ファイルをオープンできません.\n");
exit(1);
}
fclose(fp);
}
この
if(argv[1] == L"-o") の条件が通りません。
コマンドで test -o test1 のように打っても違うものとして認識しているようで・・・
画面にプリントしてみると同じなのですが、Lをつけるとデータが違うものになってしまうのでしょうか?

295 :デフォルトの名無しさん:2008/12/10(水) 12:16:52
chcpで変えてみては?
つーか、UTF-8でダメな例が思いつかないな、再現可能なソース無いですか?

296 :デフォルトの名無しさん:2008/12/10(水) 12:18:44
>>294
文字列の比較に直接 == は使えません。

297 :デフォルトの名無しさん:2008/12/10(水) 12:29:10
>>291
コンパイルエラーなのか動作が変なのか
エラーメッセージがあればそれを書いてもらうと何かわかるかもしれません

>>294
argvの型はTCHARですか

298 :デフォルトの名無しさん:2008/12/10(水) 12:39:28
またどこの言語からの転向者だろ
VSつながりでVBかC#あたりか

299 :デフォルトの名無しさん:2008/12/10(水) 12:40:19
template <typename Foo, typename Bar> class Baz : public Bar { なんたら
void Qux( const Quux<Foo,Bar> & foobar ) {...};
};

class Bar { なんたら }; // (1)

VC2008で上のをもう少し複雑に書くと Baz::Qux での引数の型 Quux<Foo,Bar> が
(1) の Bar と解釈されてコンパイルエラーになってしまう
GCCだと通るんだけどなあ

300 :デフォルトの名無しさん:2008/12/10(水) 12:40:36
>"argv[2]"
この書き方はPerlかPHPだろう

301 :デフォルトの名無しさん:2008/12/10(水) 12:52:34
もともとCとVBAをやってました
>>296
やっぱりstrcmpを使わないとだめですか?
>>297
int _tmain(int argc, _TCHAR* argv[])
こう宣言してます

302 :デフォルトの名無しさん:2008/12/10(水) 12:53:27
もともとCとVBAをやってました
>>296
やっぱりstrcmpを使わないとだめですか?
>>297
int _tmain(int argc, _TCHAR* argv[])
こう宣言してます

303 :デフォルトの名無しさん:2008/12/10(水) 12:57:44
>>302
はい。

304 :デフォルトの名無しさん:2008/12/10(水) 12:59:15
if( _tcscmp(argv[1],"-o") == 0 ) {
では

305 :デフォルトの名無しさん:2008/12/10(水) 13:00:32
if( _tcscmp(argv[1],_T("-o")) == 0 ) {
では

306 :デフォルトの名無しさん:2008/12/10(水) 13:01:43
if (_tcsicmp(argv[1],_T("-o")) == 0) {
では

307 :デフォルトの名無しさん:2008/12/10(水) 13:03:35
>>304さんの方法でやってみたところ
エラー 1 error C2664: 'wcscmp' : 2 番目の引数を 'const char [3]' から 'const wchar_t *' に変換できません。(新しい機能 ; ヘルプを参照)
というようなことを言われました。
どうもこの変換できないというところが理解できないです。代入しているわけでもないのに何故?って感じです。


308 :デフォルトの名無しさん:2008/12/10(水) 13:04:55
#include "stdafx.h"
#include "string.h"
#include "stdlib.h"


int _tmain(int argc, _TCHAR* argv[])
{
FILE *fp;
if(argc == 3){
if( _tcscmp(argv[1],"-o") == 0 ){
if((fp = fopen("argv[2]", "w")) == NULL){
printf("出力ファイルをオープンできません.\n");
exit(1);
}
fclose(fp);
}
else{
printf("USage :\n");
printf("-o : **********\n");
}
}
else{
printf("引数の数が違います");
}

return 0;
}

これが全文です。

309 :デフォルトの名無しさん:2008/12/10(水) 13:14:00
通常 "-o" の文字リテラルは char で構成される
文字セットがユニコードの場合 _tsccmp は _wcscmp にマップされる
_wcscmp が要求する型は const wchar_t * だからエラーになる

_T マクロは文字セットにあわせてユニコードの場合には "-o" を L"-o" と変える
L"-o" はワイド文字 wchar_t で構成されるリテラルだから通る
すまん思いきり間違えた 304は俺

310 :デフォルトの名無しさん:2008/12/10(水) 13:18:33
UNICODEに拘らなければANSI Cで十分なんだよな

311 :デフォルトの名無しさん:2008/12/10(水) 13:21:00
>>309
解決しました!ありがとうございます

312 :デフォルトの名無しさん:2008/12/10(水) 13:47:31
>>291で質問した者です
再現可能なソースを作っていて気がつきました。
chcp 65001やchcp 437としても動作が同じで、文字列リテラルが強制的にSJISに内部変換されていることが分かりました。
UTF-8のソースファイルなのですが、「BOM」を付けると、このような動作になるようです。

BOMを付けないUTF-8だと、warning C4819 が山ほど出て、化ける文字までありますが、何とかなりそうです。

今回作った下の再現プログラムも、BOMありのUTF-8と、BOM無しのUTF-8では、動作が違ってきます。

#include <iostream>
int main()
{
std::cout << "項目" << std::endl;
return 0;
}

一応解決したことにします。ありがとうございました。

313 :デフォルトの名無しさん:2008/12/10(水) 15:35:09
すみません>>294で質問したものですが、
同じソースで _tcscat(argv[2],L".txt"); という処理を入れ、作成ファイルをテキスト形式にしようと思ったのですが
出力されたファイルが、テキストではなくファイルで出力されてしまいます。
画面表示させるとちゃんと****.txt となっているのですが・・・

314 :デフォルトの名無しさん:2008/12/10(水) 15:49:13
>>313はスルーしてください
アホくさい間違いでしたので(汗

315 :デフォルトの名無しさん:2008/12/10(水) 22:29:54
Visual C++を使用していて、ちょっと困ってしまったので助けてください。
下記画像のようにスペース部分に色つき矢印やらドットやらが表示されて消えなくなってしまいました。
どこかでキーボード押し違えたみたいで・・
この設定の解除の仕方を分かる方いたら教えてください><
   ↓
http://imepita.jp/20081210/770880

316 :デフォルトの名無しさん:2008/12/10(水) 22:38:27
メニュー > ヘルプのキーボード何とかに一覧がある

317 :552:2008/12/10(水) 23:45:14
ヘルプで見ても、そもそもコレが何なのか解らないので検索できないので
教えていただけませんか?

318 :552:2008/12/11(木) 00:19:36
質問に答えてくれなかったからってこんなこと言うのもなんだけど
なんか、プログラマーって陰湿な性格の人が多いよね。

解るんなら教えてくれればいいじゃん。初心者用のスレだった気がするけど。

ついでに、編集→詳細→スペースの表示で自己解決しました。
だれも教えてくれんかった。

319 :デフォルトの名無しさん:2008/12/11(木) 00:47:38
今MIDIファイルを開くっていうプログラムを作りたいのですが、
よろしければ教えてください。
バージョンはVC++2005 AEです。


320 :319:2008/12/11(木) 00:53:28
319ですがGETFILE関数を使いたいです。
よろしくお願いします。

321 :デフォルトの名無しさん:2008/12/11(木) 02:15:04
>>318
君が質問したのは3、4時間前だろ?
誰もが同じスレをずっと監視してサポートセンターのように対応してくれるとでも思ってんのか?

自分で解決したならそれでいいし、自分で色々やってもできなかったらまた質問すりゃいいだろ
陰湿なのはちょっとレスがない程度でふてくされる君の思考回路だよ

322 :デフォルトの名無しさん:2008/12/11(木) 02:29:37
>>318
オマエみたいなパーデンネンを弾くために、みな時間置いてから答えるようにしてるからね。
ゴクローサン。

323 :デフォルトの名無しさん:2008/12/11(木) 07:33:14
>>315
[編集]→[詳細]→[スペースの表示]

324 :デフォルトの名無しさん:2008/12/11(木) 09:53:49
>>318
つーかその質問、定期的に出るんでうんざりなんだけど。
過去レス調べることもできないのかよ。

あと質問なんか1日くらい待てや、答える人が24時間張り付いてるわけじゃないぞ。

325 :デフォルトの名無しさん:2008/12/11(木) 10:10:52
こんにちわ。Visual C++でOPENGLを用いてゲームを作ろうと思うのですが、
ウィンドウを振動させるやり方がわかりません。。

何かコマンドややり方があるのならアドバイスください。よろしくお願いします。


※JAVASCRIPTでウィンドウを振動させるみたいな感じです。

326 :デフォルトの名無しさん:2008/12/11(木) 10:18:59
>>325
SetWindowPos APIとrand関数を使え

327 :デフォルトの名無しさん:2008/12/11(木) 10:28:02
もの凄く気軽に「こんなソフトありませんか?」
http://pc11.2ch.net/test/read.cgi/software/1218808744/331

331 名前:名無しさん@お腹いっぱい。[] 投稿日:2008/12/11(木) 09:50:07 ID:mvBU1EDM0
こんにちわ。

アクティブウィンドウを振動させるようなフリーソフトってありますか?
OPENGLで実験中にウィンドウを揺らしたいのですが・・・コマンドも分からないし、出来ないので外部のツールで強引にしようかと。。


よろしくお願いします。

328 :デフォルトの名無しさん:2008/12/11(木) 10:45:36
>>315
Ctrl+R、 Ctrl+Wを続けて入力


329 :デフォルトの名無しさん:2008/12/11(木) 10:58:16
>318
試験勉強みたいに頭の中に全部記憶する必要ない。
というか情報量多すぎるからその都度自分で調べて解決していかないとだめ。
初心者の場合はどうやって調べたらいいかわからないから
調べ方を教えてあげるのが重要。
答えだけ教えたんじゃ、いつまでたっても自分で調べられようにならない。

330 :M:2008/12/11(木) 11:35:21
今、VC++でMFCを用いたプログラムを作成中で、そのプログラムでRS232C通信を行いたいのですが、RS232c通信のプログラムの部分だけAPIを用いて記述したいのですがどのようにすればいいのでしょうか?
方法があれば教えてください。お願いします。

331 :デフォルトの名無しさん:2008/12/11(木) 11:42:17
>>330
ここなんかどうだろ?
http://www.ee.fukui-nct.ac.jp/~yoneda/text/other/C/A_06.htm

332 :デフォルトの名無しさん:2008/12/11(木) 11:43:59
>>326
2つともよく分からないまま検索したらMOVEWinfowというのもあるみたいで、if関数を用いて頻繁に座標をずらし振動させることにしました。
こんなんでいいのかな??

マルチすいません。ありがとうございます。

333 :M:2008/12/11(木) 11:48:46
>>331
ありがとうございます。
このプログラムをMFCのプログラムにどのように組み込めばいいのでしょうか?
あほな質問ですみません。。

334 :デフォルトの名無しさん:2008/12/11(木) 12:55:47
>>333
WM_COMMANDメッセージでコマンドを受け取ったら、main関数の中身を実行すれば?

335 :デフォルトの名無しさん:2008/12/11(木) 14:11:02
ファイルの読み書きとほとんど同じだな
やってる内容が理解できれば使えるだろ

336 :M:2008/12/11(木) 14:27:45
>>334
それでやってみようと思います。ありがとうございました。

337 :デフォルトの名無しさん:2008/12/11(木) 16:38:53
VC++2008使ってます

LogItemという独自クラスを作り、

 LogItem item;
 ListBox.add(item);

といったことしてます(単なるリストボックスへの追記)。
表示を変更する際に、

 ListBox.add(〜.format("{1}・・・",item.name,・・・))

等とすると、今度は削除時にいろいろ面倒です。
表示を適切に変更できるものの、削除時は、
ListBox.remove(item)でいけるような
(追記時の表示に依存しないような)
簡単な方法はご存じありませんか?
参考になりそうなサイトやキーワードを
教えていただければ幸いです。

338 :デフォルトの名無しさん:2008/12/11(木) 16:41:26
16ピンのPIC16F819のPICを利用してサーボモータや光電センサー、ディスプレイを制御したいのですがBASICのプログラムが分かりません 

サーボモータは Futaba S3002 を使用
・計7個のサーボモータ使用
・ボタンを押して入力したものをサーボモータに出力〔右に90度⇒左に90度〕

光電センサーは鏡とセンサーの間を通過するのを検出するもので omron E3R-R2E4 を使用
・コインを検出してカウントする
・6個使用

ディスプレイは数字と文字の両方を表示したいです


まとめると、コインを光電センサで検出してその検出したコインをディスプレイに表示する。たまボタンを押すとサーボモータが回転
するものを作りたいです。
この動作をBASICのブログラムで制御させるには、どのようなプログラムにすればいいですか

339 :デフォルトの名無しさん:2008/12/11(木) 16:43:58
>>338
ここはBASICのスレでもPICのスレでもない。

340 :デフォルトの名無しさん:2008/12/11(木) 19:13:55
337です。
自己解決しました。単なる調査不足&ありがちな混乱、でした

※ToStringをオーバーライドすればいいんですね・・・。

ってか。

質問の大半も意味不明でした。正確には「リストボックスにオブジェクトを
そのまま追加した時に、表示のみを変更できるようにしたい。」とすれば
よかったんでしょうね・・。

お騒がせいたしました。ほかに困っている人の助けになれば幸いです^^;


341 :デフォルトの名無しさん:2008/12/11(木) 21:14:25
Visual C++ 2008 Express Editionについての質問です。

Windowsフォームアプリケーションプロジェクトを作成し、
フォームにボタンとpictureBoxを配置しました。
ボタンを押すと、pictureBoxのプロパティで設定した画像の画素値を取得したり
描きこんだりしたいと思い、画像にアクセスする手段を模索することにしました。

どうもpictureBoxクラスから直接画像にアクセスすることはできず、
いったんBitmapクラスに移さないといけないことが分かりました。
これでSetPixel関数を使って、画素値を書き換えることができるようになったのですが、
これをまたpictureBoxに戻して表示することができません。

コードは以下の通りです。(ボタンを押したときの処理関数)

Bitmap bmp = pictureBox1->Image;

bmp.SetPixel( 10, 10, Color::Red );
pictureBox1->Image = bmp; ← これで型が合わないというようなエラーが出る

どのようにすればpictureBoxの画像を加工し、それを表示することができるのでしょうか?

342 :デフォルトの名無しさん:2008/12/12(金) 16:23:46
pictureBox1->Image = Image::FromHbitmap(bmp.GetHbitmap());とかでどう?

343 :デフォルトの名無しさん:2008/12/12(金) 17:44:23
すいません。C++でint型の変数ををchar型の配列にキャストして入れる方法ってどうやるのですか?
int iAnswer = 0;
int i = 0;
char ChAnswer[256];

ChAnswer = (char)i;

とやっているのですが、変換できないといわれます。

344 :デフォルトの名無しさん:2008/12/12(金) 17:46:28
ChAnswer[0] = (char)i; じゃないの?

345 :デフォルトの名無しさん:2008/12/12(金) 17:51:27
>>344
それだと、例えば123を変換した場合、1だけ変換ということになりそうな気がするのですが・・・違いますか?

346 :デフォルトの名無しさん:2008/12/12(金) 18:00:16
>>345
何でそう思うのか、、もっと基礎からやり直すか
具体的にやりたいこと書いて手取り足取り教わるしかないと思うよ。

347 :デフォルトの名無しさん:2008/12/12(金) 18:02:26
>>346
すいません。よく考えてたら頭の中にあったものが2次元配列でした・・・それにしても変な考えですけど。
逝ってきます。

348 :デフォルトの名無しさん:2008/12/13(土) 00:30:18
エスパー回答で言わせてもらえばsprintf()使えばいいと思うよ

349 :341:2008/12/13(土) 07:31:03
>>342
それでできました!
ありがとうございました!!

しかし、.NET環境でもWin32apiレベルのビットマップハンドルを意識した記述をしないと
いけないのはどうなのかと思いました・・・
C++ Builderはもっとシンプルになりますし・・・

350 :デフォルトの名無しさん:2008/12/13(土) 09:01:26
>>341
たぶんこうすればいける。
Bitmap^ bmp = gcnew Bitmap(pictureBox1->Image);
bmp->SetPixel(10, 10, Color::Red);
pictureBox1->Image = bmp;

Imageプロパティの型はImageへのハンドル。
にもかかわらず、341ではコード上Bitmapそのものを渡すようになっている。
本来、BitmapはImageの派生なので、Bitmapのハンドルなら渡せるというわけ。

351 :341:2008/12/14(日) 00:49:49
>>350
.NETでのハンドルという概念があるんですね。
勉強になりました。
ありがとうございました。

352 :デフォルトの名無しさん:2008/12/14(日) 03:25:51
VC2008EEで↓がコンパイルできるようにする
やり方を教えてください。

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR pCmdLine, int showCmd)
{
return 0;
}


353 :デフォルトの名無しさん:2008/12/14(日) 03:28:02
エラーは↓です

1>.\a4.cpp(4) : error C2146: 構文エラー : ';' が、識別子 'WinMain' の前に必要です。
1>.\a4.cpp(4) : error C2065: 'HINSTANCE' : 定義されていない識別子です。
1>.\a4.cpp(4) : error C2146: 構文エラー : ')' が、識別子 'hInst' の前に必要です。
1>.\a4.cpp(4) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
1>.\a4.cpp(4) : error C2059: 構文エラー : ')'
1>.\a4.cpp(5) : error C2143: 構文エラー : ';' が '{' の前にありません。
1>.\a4.cpp(5) : error C2447: '{' : 対応する関数ヘッダーがありません (旧形式の仮引数リスト?)


354 :デフォルトの名無しさん:2008/12/14(日) 03:36:58
>>353
WINAPIが定義されてないっぽい感じのエラーメッセージだけど、
windows.hはインクルードされてるしなぁ。

355 :デフォルトの名無しさん:2008/12/14(日) 03:49:57
>>352
普通にコンパイル通ったよ
プロジェクトの作成の仕方じゃないの?

ファイル→新規作成→プロジェクトの種類→Win32→Win32プロジェクト

356 :デフォルトの名無しさん:2008/12/14(日) 12:25:43
Vc++2008でプロジェクトを開いた時に、
▲ InteliSenseデータベースファイル C\......\Visual Studio\Projects|\ソリューションフォルダ\ソリューション.ncb を書き込み用に開けなかったため、
InteliSense 情報は VC++プロジェクトにりようできません。
ソリューションディレクトリが読み取り専用である場合、他の機能にも影響を及ぼします。

ってダイアログ出て、関数の引数とかが表示されなくなってしまいました。
フォルダの属性変えてみようとしたんだけど読み取り属性外せなくなったんですが、対処方ありますか?
他のソリューションでは問題ありません。ファイル壊れた?

357 :デフォルトの名無しさん:2008/12/14(日) 17:24:46
メッセージの通りだろ

358 :デフォルトの名無しさん:2008/12/14(日) 18:02:51
ncb ファイル消せばいい。

359 :デフォルトの名無しさん:2008/12/15(月) 09:28:10
ボタンを二つ作ってサブクラス化しています。
DefStaticProcA = (WNDPROC)GetWindowLong(hBTNa, GWL_WNDPROC);
SetWindowLong(hBTNa, GWL_WNDPROC, (LONG)TestProc);

DefStaticProcB = (WNDPROC)GetWindowLong(hBTNb, GWL_WNDPROC);
SetWindowLong(hBTNb, GWL_WNDPROC, (LONG)TestProc);

if(DefStaticProcA == DefStaticProcB)
  MessageBox(NULL, _T("同じ"), _T("button"), MB_OK);

ボタンのプロシージャはみんな同じアドレスに成るのでしょうか?
プロシージャを一つにまとめたいです。


360 :デフォルトの名無しさん:2008/12/15(月) 10:48:05
HWND HBTNv6[1000];
WNDPROC DefStaticProcBTN[1000];

void MakeButtonV6(HWND hWnd){
int i;
for(i = 0; i < 1000; i++){
HBTNv6[i] = CreateWindow(_T("BUTTON"), _T("A"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 30, 30, 20, 20, hWnd, NULL, hInst, NULL);
if(HBTNv6[i] == INVALID_HANDLE_VALUE){
MessageBox(NULL, _T("Error"), _T("CreateWindow"), MB_OK);
break;
}
DefStaticProcBTN[i] = (WNDPROC)GetWindowLong(HBTNv6[i], GWL_WNDPROC);
if(DefStaticProcBTN[i] == 0){
MessageBox(NULL, _T("Error"), _T("GetWindowLong"), MB_OK);
break;
}
if(i > 0){
if(DefStaticProcBTN[i] != DefStaticProcBTN[i -1]){
MessageBox(NULL, _T("違う"), _T("ぼ"), MB_OK);
break;
}
}
}
MessageBox(NULL, _T("終了"), _T("m"), MB_OK);
}

保障されているのかな〜。誰か教えて。

361 :デフォルトの名無しさん:2008/12/15(月) 10:52:55
何がしりたいのかわからん。
登録したウィンドウクラスにプロシージャも入ってるだろう。
でも同じプロセス内で差し替えできるから作った時期で違うようにはできる。

362 :360:2008/12/15(月) 11:38:13
ごめん、無かったことにして。

363 :デフォルトの名無しさん:2008/12/15(月) 17:35:59
>>359
さらに別のだれかがサブクラス化しているなどといったこともあるから、
一般に同じと仮定することは危険。

ウィンドウハンドルと元のウィンドウプロシージャのどれとどれが対応するのか
分かるように保存しておけば、それぞれのアドレスが異なっていても
同じウィンドウプロシージャでサブクラス化できるはずだ。

364 :デフォルトの名無しさん:2008/12/15(月) 22:35:59
3×n行のCSVファイルを読み込んで内部テーブル(?)にして、
後からそれを1行ずつ抽出してその項目を使って別の処理をするように今あるプログラムを書き換えたい。

VC++2005、WindowsXPで作業してます。
かなりの初心者ですがどうぞよろしくお願いします。

365 :デフォルトの名無しさん:2008/12/15(月) 22:41:01
宿題なら宿題スレで一発ですよ。
そうでないなら、どこは分かるけどどこが分からないというのをもっとはっきりさせてください。

366 :デフォルトの名無しさん:2008/12/15(月) 22:53:16
宿題じゃないんす・・・仕事なんですw
CArrayとか使ってみたんだけど、なかなかうまくいかず・・・
あと、内部テーブルを1行ずつ読み込んでループさせる方法がよくわからん。
レベル低い質問で申し訳ないです

367 :デフォルトの名無しさん:2008/12/16(火) 00:18:30
誰か来てくれると信じて書いてみるw

INT CLogFileConditions::LoadAllSearchInfo()
{
CCSVFile file;
CFileException fError;
CString sSearchListFile;

m_iResID = 0;
m_iConditionStatus = 0;
sSearchListFile = g_CurrentDir;
sSearchListFile += LOG_SEARCH_LIST_FILE;

if( file.Open( sSearchListFile, CFile::modeRead, &fError) )
{
CString strLogKind, strServerName, intSearchLength, sVal ;

m_LogKindToPath.RemoveAll();

while( file.ReadString() )
{
if( file.GetFieldCount()>=3 )
{
strLogKind = file.GetField(0);
strServerName = file.GetField(1);
intSearchLength = file.GetField(2);
}


368 :つづき:2008/12/16(火) 00:20:27
}
file.Close();

if( !m_LogSearchCondition.GetCount() )
{
m_iResID = IDS_ERR401;
m_iConditionStatus = 401;//ErrorIDNumber
}
}
else {
m_iConditionStatus = -1;
MsgBoxBySystemErrID( m_hwndParent,
fError.m_lOsError,fError.m_strFileName );
}
return m_iConditionStatus;
}

みたいな感じで処理条件を読み込む処理をまず作りたい。
ひとつめのレスの最後の方の処理をCSVを読み込む二次元配列にしたいんだ。
どうぞお力をお貸しください。。

369 :デフォルトの名無しさん:2008/12/16(火) 00:38:08
普通に配列をnewして入れてけばいいじゃんか

370 :デフォルトの名無しさん:2008/12/16(火) 00:46:41
ありがとう。
でもほんと全然わかんないんだw
もうちょっと詳しく書いてくれると助かります。
ごめんな

371 :デフォルトの名無しさん:2008/12/16(火) 00:53:34
コレクションクラスが使えるようになったほうがいいと思うけどねぇ・・
まずどこに入れたいのか、入れ物を定義しなさいよ。

372 :デフォルトの名無しさん:2008/12/16(火) 01:04:47
すまんコレクションクラスがわからん・・・

まあ定義もよくわかんないんだけどw
ネットで見ようみまねで

public:
CArray<double, double> GetLogSearchCondition(){ return &m_LogSearchCondition; }
  CDoubleArray& operator=( CDoubleArray& src )
  {
    for( int n = 0; n < src.GetSize(); n++ ) {
      this->Add( src[n] );
     }
     return *this;
   }
};

こんなん書いたらエラーが270個くらい出ました。。

373 :デフォルトの名無しさん:2008/12/16(火) 01:14:20
二次元配列にしたいって書いてるけど3つのフィールドは文字列文字列整数なんだよね?
とりあえずその3つが入るクラスを定義して、それの配列なりArrayなりつくって入れてけばいい。
長さわからんなら、数える手段を考えるか随時伸びるようにすればいい。

374 :デフォルトの名無しさん:2008/12/16(火) 01:19:27
そう、そうなんだけどそのやり方がわかんないんです。
ほんとすいません。。

375 :デフォルトの名無しさん:2008/12/16(火) 01:30:52
クラスの定義ってこういう感じ?

public:
void SetLogKindForSearch( CString sLogKindForSearch );
void SetServerNamesForSearch( CString sServerNamesForSearch );
int SetSerachLength( INT sSearchLength );

だが、配列にしていく方法はさっぱりだぜ・・・

376 :デフォルトの名無しさん:2008/12/16(火) 02:56:10
CArrayを先頭につければいいのかな?
だかフィールド3つで下に続いていくようにする方法がわからぬ・・・

377 :デフォルトの名無しさん:2008/12/16(火) 04:03:43
CMapStringObからCArrayに引数を変換できないっていうエラーが出るんだが、
意味が全くわからん・・・

誰も起きてないかこんな時間・・・

378 :デフォルトの名無しさん:2008/12/16(火) 05:59:41
言語の文法をろくに知らずにプログラムを書こうなんて、普通に不可能。
まず入門書を一通り読め。

379 :デフォルトの名無しさん:2008/12/16(火) 07:01:34
そんな時間がないのでご助力をお願いしているのです。。

380 :デフォルトの名無しさん:2008/12/16(火) 08:54:27
>>363
d。
ボタンのプロシージャはどれでも良いからボタンに返せばいいんですね。


381 :デフォルトの名無しさん:2008/12/16(火) 11:50:08
>>379
みんな冷たいよな。

まずはここを見て書き方を勉強する。
http://2hyo.com/

382 :デフォルトの名無しさん:2008/12/16(火) 14:18:46
仕事の話を2chで聞くとか信じられんわ……。

383 :デフォルトの名無しさん:2008/12/16(火) 15:04:12
文字をドラッグで選択するとその部分が反転するプログラムを作りたいのですが、
マウスのクリックで範囲のポジションを取得して選択範囲は取得できたのですが、
反転をどうやればいいのかがわかりません。アドバイスお願いします。

384 :デフォルトの名無しさん:2008/12/16(火) 15:05:18
まあ自分でコード書いて出してくれてるから対応はしやすいんだが、
出してくるコードが頓珍漢すぎてどこから説明したもんかわからんのだよ。
自分で理解してる範囲で書いてくれればいいんだが、適当にあちこちから断片集めてみました
というコードじゃ直しようもない・・・
仕様書いて0から起こしたほうがまだましだな・・

385 :デフォルトの名無しさん:2008/12/16(火) 15:08:07
>>383
反転する前の表示はどうやってんのさ。
TextColorとBackColor入れ替えて書いてみるとか、
システムの標準の色から持ってきてそれで書いてみるとか。

386 :デフォルトの名無しさん:2008/12/16(火) 15:16:20
>>385
元描画がいじれないとして、上から被せるような、CWndまでおおげさじゃなくてもいいんですが、
レイヤー的なもので半透明領域をかぶせられる関数は用意されていないでしょうか?

387 :デフォルトの名無しさん:2008/12/16(火) 15:27:11
>>386
そんなのないと思うけど、、、再描画とかどうすんのさ。
いんちきだが、PatBlt()でDSTINVERTで反転とかどうよ。

388 :デフォルトの名無しさん:2008/12/16(火) 16:48:52
なるどほ、元が動くと四角が付いてこないので被せるのは厳しいですね。
元をハッキングする方向にきりかえようとおもいます。ありがとうございました。

389 :デフォルトの名無しさん:2008/12/16(火) 17:51:24
C++でint型変数の値をchar型に変換したいのですが、普通にキャストしてもエラーが出ます
どうしたらいいのでしょう?

390 :デフォルトの名無しさん:2008/12/16(火) 17:55:03
char配列の文字列にしたいと言っているのであれば、
ostringstreamか何かでstringにしてc_str()で取り出すとか、
あるいはsprintfなど。

391 :デフォルトの名無しさん:2008/12/16(火) 18:03:23
ありがとうございます。試してみます

392 :デフォルトの名無しさん:2008/12/16(火) 20:00:10
林晴比古氏のVisualC++のビギナー編を買ったのですが、自分の開発環境がexpress editionなのでMFCがありません。
サンプルがほぼMFCなので無駄な買い物をしてしまった…と見ていいのでしょうか?
他に手があるのでしょうか?

393 :デフォルトの名無しさん:2008/12/16(火) 20:43:46
かわいそう・・・
仲間だからわかる・・・

394 :デフォルトの名無しさん:2008/12/16(火) 20:47:06
やはり無理でしたか…
VisualStudioの基本的な操作を覚えるには役に立ちますよね?
お互いがんばりましょう。

395 :デフォルトの名無しさん:2008/12/16(火) 21:29:59
まったく役に立たないと思います。
MFCが使えるようになってからも役に立たない本でした。
林晴比古のC++シニア上下は、ぼろぼろになった今でも時々読みます。

http://www.kumei.ne.jp/c_lang/
自分はMFCからなのですが、ここのWinAPIの最初の方だけ読んで一日でMFC使わないソフトも作れました。


396 :デフォルトの名無しさん:2008/12/16(火) 21:45:26
最近の林本は.netのサンプルものってたような気がしたけど

397 :デフォルトの名無しさん:2008/12/16(火) 21:56:27
>>395
そちらを買うか林氏の本を買うかで悩んでたんです。そちらのほうがよかったのですね!

>>396
.netのサンプルとは例えばどのようなものでしょう?


398 :デフォルトの名無しさん:2008/12/16(火) 22:22:29
ソフトの操作だけなら林本でいいと思う


399 :デフォルトの名無しさん:2008/12/16(火) 22:31:09
>>398
そう言ってもらえると助かります!
みっちり操作を体に叩き込みたいと思います!

400 :デフォルトの名無しさん:2008/12/16(火) 23:27:36
MFCを使えるバージョンってどれですか
無償版では使えないらしいので購入しようと思います
MFCを使えるバージョンと購入方法と価格を教えてください

401 :M:2008/12/16(火) 23:30:14
C++でのラベリングで下のような場合で、簡単なプログラムのやり方を教えてくれませんか?

11111111
11111
1111111111  
1111111     
11111111
1 1     2222
       2222
       222222



402 :デフォルトの名無しさん:2008/12/16(火) 23:33:06
MFCは全てのバージョンで使える

403 :デフォルトの名無しさん:2008/12/16(火) 23:46:58
>>400
http://kakaku.com/item/37600110112/

404 :デフォルトの名無しさん:2008/12/17(水) 09:30:25
2003以前のバージョンなら確実に使える

405 :デフォルトの名無しさん:2008/12/17(水) 19:36:51
上級者向けの本ってあるんですか?

406 :デフォルトの名無しさん:2008/12/17(水) 20:03:15
>>400です
>>403さん
スタンダードバージョンでMFC使えるんですね
アマゾンで28000円かぁ
少々きつい出費になりますが
どうしても作ってみたいものがあるので思い切って購入しようと思います
詳しくありがとうございました
ヤマダ電機では売っていないのかなあ?
ヤマダポイント約6000円持ってるんだよね^^;
教えてくれてありがとうでした


407 :デフォルトの名無しさん:2008/12/17(水) 20:09:15
VC++2008 Express使ってます。
Windows SDKを最新のものにしようと思い、2005使っているとき以来のPSDKを削除、
ついでにVC++2008も一旦削除して、さてインストールし直すぞ、と意気込んでいるのですが、
VC++2008をインストールすると、Microsoft Windows SDK for Visual Studio 2008とやらが自動でインストールされるそうで。
この場合、一旦これをアンインストールしてからMicrosoft Windows SDK for Windows Server 2008をインストール、でOK?


408 :デフォルトの名無しさん:2008/12/17(水) 21:01:49
Microsoft Visual C++ 2008 Version 9.0.21022.8 RTM
Win32コンソールアプリケーション
ビルドの失敗
ソース↓
// test_1.cpp
#include "stdafx.h"
#include "test_2.cpp"

class test_A{
static const int INT_A;
static const char *TEXT_A;
};

const int test_A::INT_A=1234;
const char *test_A::TEXT_A="abcd";

int _tmain(int argc, _TCHAR* argv[]){
return 0;
}

// test_2.cpp
#include "stdafx.h"

class test_B{
static const int INT_B;
static const char *TEXT_B;
};

const int test_B::INT_B=1234;
const char *test_B::TEXT_B="abcd";

409 :デフォルトの名無しさん:2008/12/17(水) 21:03:02
>>408のつづき。

ビルトをするとtest_Aは成功、test_Bは失敗します。ただし、一回目のビルドで
両方とも成功しているのに、その後同じ内容で二回目のビルドを行うと
やはりtest_Bだけ失敗するようになる、という場合もあります。
↓   ↓   ↓
fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。

どこが原因なのか分かりません。

410 :デフォルトの名無しさん:2008/12/17(水) 21:12:24
>>406
こうして2005Express Editionからアップグレードできることを知らない情弱が
今日も通常版を買っていくのであった・・・
http://www.microsoft.com/japan/msdn/howtobuy/vs2008/upgrade/default.aspx

411 :デフォルトの名無しさん:2008/12/17(水) 21:35:52
げっ・・・・・・プロジェクト→クラスの追加、でやってみたら、なんとなく
やらなければいけないことが分かりました・・・・・・・・orz

412 :デフォルトの名無しさん:2008/12/17(水) 21:42:50
>>408,409
// test_1.cpp
#include "test_2.cpp" // ←LINK1169

"test_2.cpp"をプロジェクトから除外するか、上記をコメントアウトすれば解決する。

413 :デフォルトの名無しさん:2008/12/17(水) 22:53:48
>>412

_tmainでtest_Bが使えませんが・・・。

414 :デフォルトの名無しさん:2008/12/17(水) 23:12:06
>>413
test_2.cppをプロジェクトから除外すれば使える。


415 :デフォルトの名無しさん:2008/12/17(水) 23:22:12
>>414

「プロジェクトの外部」って扱いにしてから、呼び出すんですね?

416 :デフォルトの名無しさん:2008/12/17(水) 23:33:59
>>415
そうだよ。どのみち #include "test_2.cpp" してんだから。
もっとも、#include "test_2.cpp"などというよーな書き方のほうを改めるべきだと思うがな。

// test.h
class test_A{
static const int INT_A;
static const char *TEXT_A;
};

class test_B{
static const int INT_B;
static const char *TEXT_B;
};

// test.cpp
#include "stdafx.h"
#include "test.h"

const int test_A::INT_A=1234;
const char *test_A::TEXT_A="abcd";

const int test_B::INT_B=1234;
const char *test_B::TEXT_B="abcd";

int _tmain( ・・・・) {
// To Do
}

417 :デフォルトの名無しさん:2008/12/17(水) 23:51:08
ありがとうございました。
初歩の初歩でした。

418 :デフォルトの名無しさん:2008/12/18(木) 04:18:43
cppをインクルードする奴ってキモチワルイ
あとヘッダに関数の中身定義する奴も同様にキモイ

419 :デフォルトの名無しさん:2008/12/18(木) 05:05:35
>>418
template関数全否定ですね、わかります

420 :デフォルトの名無しさん:2008/12/18(木) 09:59:14
>>410
というわりにはExpression Blend 2のアップグレードが割引率高くて安いうえに
VS2008Stdが入ってるのは教えてあげないのね。

421 :デフォルトの名無しさん:2008/12/18(木) 11:45:07
Visual Studio 2005 でC++をやっているのですが
i = 0;
for(i = 5; i < 0; i--){
printf("%d",i);
fflush(stdout);
Sleep(1000);
}
この処理を通ってくれません。forの頭までは来ているのですが次の処理でforを抜けてしまっています

422 :デフォルトの名無しさん:2008/12/18(木) 11:49:24
C++なのにprintfなんだ・・・

423 :デフォルトの名無しさん:2008/12/18(木) 11:52:05
>>421
i > 0
にしろ
それとi = 0は必要なのかね


424 :デフォルトの名無しさん:2008/12/18(木) 11:52:40
すみません。書き間違いです
コンパイラがC++で、書いてるのはCです

425 :デフォルトの名無しさん:2008/12/18(木) 11:55:33
おお、いつのまに符号逆に・・・・最初は使えていたのにおかしいと思いました。すみませんありがとうございます
i = 0 はなんとなく癖です

426 :デフォルトの名無しさん:2008/12/18(木) 12:00:53
下らないかもしれないけど、助けて下さい・・・。
VS2008でC++作ってます。
Irvineとかそういうダウンローダーでよくあるグリッドの入ったリストを作りたいんだけど、そのパーツ?コンポーネント?の名前さえも全くわからず・・・。
ToolBoxでコレだよ、的なもので良いので教えて下さい。

427 :デフォルトの名無しさん:2008/12/18(木) 12:28:37
>>426
Microsoft DataGrid コントロール
ActiveXのやつ

428 :デフォルトの名無しさん:2008/12/18(木) 12:31:39
ってIrvineとかそういうダウンローダーを知らないんだけど
LisiViewコントロールじゃだめなんかな?

429 :デフォルトの名無しさん:2008/12/18(木) 12:35:23
ListViewってアイテムごとに枠がつかなくないか?エクセルみたいに

430 :デフォルトの名無しさん:2008/12/18(木) 12:45:03
>>427
ありです。ちょっと試してみますー。

431 :426:2008/12/18(木) 12:55:29
出来たけどRowの部分に出てるのが気になる・・・orz

>>429
Excelみたいに各セルが選択できるタイプじゃなくて、選択の対象が行単位で出来るものが良いんですよね。
今ちょうど見たら良い例があったので出してみると、ギコナビの板の中身の表示部分(スレッド一覧)とか。
それにグリッドがついたようなものが欲しいです。

色々と足りてなくて申し訳ない・・・orz

432 :デフォルトの名無しさん:2008/12/18(木) 13:01:10
リソースのストリングテーブルって1つ以上作れないんですが、
文字列をまとめて入れ替えたい場合はどうすればいいんですか?
もしかして全てのloadstringの行でIDSを分岐させてるんですか?

433 ::2008/12/18(木) 13:12:37
>>432
IDをずらす

LoadString(hInstance, IDS_MYSTRING + (f ? 10000 : 0), sz, 256);

434 :デフォルトの名無しさん:2008/12/18(木) 14:04:50
えーまじですか・・・
めちゃくちゃloadStringあるんですけど・・・テーブル切り替えでがいいです!!!

435 :デフォルトの名無しさん:2008/12/18(木) 14:10:49
DLL単位で作って切り替えるとか

436 :デフォルトの名無しさん:2008/12/18(木) 14:15:33
おーーーthx!DLLで検索したら出てきましたよ!


437 :デフォルトの名無しさん:2008/12/18(木) 14:26:36
Irvineはソース公開されてる

438 :デフォルトの名無しさん:2008/12/18(木) 14:59:50
カスタムコントロールを派生させたいんですが、これ基本クラスなんですか?
CCustamCtrlとかないんですが

439 :デフォルトの名無しさん:2008/12/18(木) 15:04:26
MFCの話?
コントロールはCWndから派生

440 :デフォルトの名無しさん:2008/12/18(木) 15:19:02
カスタムコントロール自体のクラス名は何ですか?

441 :デフォルトの名無しさん:2008/12/18(木) 15:23:54
>>440
Static

442 :デフォルトの名無しさん:2008/12/18(木) 16:11:22
そういうことかありがと

443 :デフォルトの名無しさん:2008/12/18(木) 16:57:44
マクロで選択範囲の前と後に文字列を入れるにはどう書けばいいですか?

"test"

を選択してマクロ実行すると

_T("test")

になるようにしたいんです。
一度左に行って _T( を挿入するまでは出来るんですが、選択範囲が消えて ) を入れる位置がわからなくなります

444 :デフォルトの名無しさん:2008/12/18(木) 17:04:48
馬鹿でした。コピーしたらできました

DTE.ActiveDocument.Selection.Copy()
DTE.ActiveDocument.Selection.Text = "_T()"
DTE.ActiveDocument.Selection.CharLeft()
DTE.ActiveDocument.Selection.Paste()

445 :デフォルトの名無しさん:2008/12/18(木) 18:56:57
スタティックコントロールの背景を変えたいのですが、
CStaticの派生クラスのOnPaintの中で

void CStaticEX::OnPaint()
{
 CPaintDC dc(this); // device context for painting
 dc.SetBkColor(RGB(20,30,100));
}

と書いたのですが、背景色が変わりません。これどこがいけないんでしょうか?

446 :デフォルトの名無しさん:2008/12/18(木) 19:05:11
CPaintDC dc(this);

447 :デフォルトの名無しさん:2008/12/18(木) 19:54:47
>>431
やっぱListViewじゃない?
ListView_SetExtendedListViewStyle(hListView, LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
みたいな。
「リストビュー 拡張スタイル」でぐぐってみたら?

448 :デフォルトの名無しさん:2008/12/18(木) 20:56:50
他のダイアログボックスのオーバーライドOnOK関数呼び出しを、インテリセンスでは通っているのに
コンパイルエラーでメンバでは無いといわれるのはなぜですか?

449 :デフォルトの名無しさん:2008/12/18(木) 21:04:15
メンバでは無いから

450 :デフォルトの名無しさん:2008/12/18(木) 21:22:04
もちろんメンバ関数として作成してインテリセンスでも通ってるんです。

451 :デフォルトの名無しさん:2008/12/18(木) 22:03:52
インテリセンスがそんなに賢かったらコンパイルする必要ない

452 :デフォルトの名無しさん:2008/12/19(金) 00:26:34
>>445
PAINTSTRUCT ps;
CDC* pDC = BeginPaint(&ps); にする。

もっとも、そんなことしなくても、スタティックコントロールの背景色の変更は、
親ウィンドウの CWnd::OnCtlColor() で簡単にできるんだが・・・。

453 :デフォルトの名無しさん:2008/12/19(金) 00:35:14
すみません、このスレでいいのか分からないんですが、質問させてください。

全くのプログラム初心者に近い人間で、HSPをちょっと触ったことがある程度なんですが
C++を使ってみたいと思いました。
色々なサイトを回ってみたりしたのですが
開発環境の作り方がさっぱりわかりませんでした・・・orz
ttp://codezine.jp/article/detail/207?p=1
このページを参考に物を作りつつ勉強していこうと思ったのですが
最初の一歩目で躓きましたorz

どこか環境の作り方などが載っているサイトなどがあれば教えて頂けないでしょうか。
もし書き込むスレッドが間違っていたら教えて頂きたいです。
宜しくお願いします。

454 :デフォルトの名無しさん:2008/12/19(金) 01:30:29
まずは窓のそばに観葉植物を置いて・・・。
という話じゃないとは思うんだが、開発環境って具体的には何を指してるんだ?

455 :デフォルトの名無しさん:2008/12/19(金) 02:52:51
>>452
ありがとうございました。Ctlも調べてみますどうもです

456 :デフォルトの名無しさん:2008/12/19(金) 23:29:36
>>453
エスパー的に答えれば
フリーのVisual C++ 2008 Expressをダウンロードしてインスコ(環境出来上がり)
でもそのレベルじゃ記事読んでも理解できないから
Cはある程度わかっているとして
猫でも読んでWin32APIの基本は少なくとも勉強する
メッセージループ プロシージャなど
ってことでOK?

457 :デフォルトの名無しさん:2008/12/19(金) 23:39:56
今、猫でもわかるのCのところを見てみたら、スクリーンショットがVCの1.5とかそのあたりのやつじゃないか。
書かれたの、10年以上前だし。

http://www.amazon.co.jp/dp/4891005769
http://www.amazon.co.jp/dp/4891005823

↑このあたりの本でも買って勉強したほうがいいんじゃね?

458 :デフォルトの名無しさん:2008/12/19(金) 23:47:01
その辺のってCLI系のヤツだろ
それやるならC#でよいと思うがな

個人的には色々本買うより
初心者であってもCがある程度分かってるなら
Petzold本読むのを進める

459 :デフォルトの名無しさん:2008/12/19(金) 23:52:53
>>458
ああ、本当だ。.NET Frameworkって内容紹介に書いてあるな。
でもHSPをちょっとかじった程度だと、プログラミングWindowsとかムリだろ。

460 :デフォルトの名無しさん:2008/12/20(土) 00:39:07
Express Edition
c++ です。
フォームアプリケーションでファイルを開いて、フルパスからファイル名を抽出しようとしていて、
ググったところ、char ポインタ型で抽出していたので、System::Stringをcharポインタ型に変換してから抽出したのですが、実際に何度か連続で実行したところ
エラーが発生しました。恐らくポインタの開放か初期化でミスってると思うんですが…
ケータイからなのでソースは勘弁していただきたいので、System::String で直接ファイル名を抽出できないでしょうか?
スレ汚しすいません。

461 :デフォルトの名無しさん:2008/12/20(土) 00:41:58
>>460 です。
VisualStudio2008と書くのを忘れていました

462 :デフォルトの名無しさん:2008/12/20(土) 01:19:27
>>460
System::String は使ったことがないので考え方だけ。以下のコードでできるかどうかは不明。
文字列の最後に出てくる \ の位置を求めて、先頭からその位置までの文字列をばっさり捨ててる・・・つもり。
検証は、まかせる。(笑)

String filename = pathname.Remove( 0, pathname.LastIndexOf('\\')); // pathname は フルパスが入っている String



463 :デフォルトの名無しさん:2008/12/20(土) 01:37:27
>>462
最後の¥が残ってしまったものの抽出自体は成功しています!
後は自力でできそうです!
わずか一行で実装できるとは思いませんでした。
ありがとうございます。

464 :デフォルトの名無しさん:2008/12/20(土) 01:39:31
System::IO::Path::GetFileName使えばいいだけの話じゃないの?

465 :デフォルトの名無しさん:2008/12/20(土) 01:47:13
>>464
そんな便利な関数あったんですね…
すいません調べ不足でした。
>>463
ちなみに先ほどのは、ラストの¥の位置を表しているのでインクリメントしてあげれば解決しましたね。
お二方ありがとうございました。

466 :デフォルトの名無しさん:2008/12/20(土) 02:52:40
>>463
>後は自力でできそうです!
そりゃできるだろ。^^;

String filename = pathname.Remove( 0, pathname.LastIndexOf('\\') + 1); // + 1 を追加

たったこれだけの修正ができなかったら、C++を勉強する前に
まずはCの基本から身につけたほうがいいと思うぞ。

467 :デフォルトの名無しさん:2008/12/20(土) 19:56:30
VisualStudio2008
express、Windowsフォームです。
一つのイベントに対して複数のイベントを組むのは、どうすればいいのでしょうか。
具体的にはtoolStripのButtonをクリックした時に、名前をつけて保存と上書き保存と切り替えたいのですが…

468 :デフォルトの名無しさん:2008/12/20(土) 23:43:49
Visual C++2008 ExpressEditionで、実行したときに全角文字が〓に文字化けしてしまうんですがどうすれば正しく表示されるんでしょうか?

プログラムはこれです。

#include <iostream>
using namespace std;
int p,t,a,d,c,v,i,m[90]={0},s,r[]={-10,-9,-8,-1,1,8,9,10};
void k(){
if(m[p]==0)for(i=0;i<8;i++){
for(c=0,v=p+r[i];m[v]==3-t;v+=r[i])c++;
if(c&&m[v]==t){
a+=c;v=p;
if(d)do m[v]=t,v+=r[i];while(m[v]!=t);
}}}
char*h="・○●\n" ;
int main(){
for(i=1,m[41]=m[49]=2;i<10;m[i++*9]=3)m[40]=m[50]=t=s=1;
for(;;a=d=0){
for(p=9;p<82;++p)k(),cout<<h[m[p]*2];
if(a)for(d=a=s=p=8;a==8;k())t-2?(cin>>p>>i),(p+=i*9):++p;
else if(s)s=0,cout<<"pass"; else break;t=3-t;
}
return 0;
}

469 :デフォルトの名無しさん:2008/12/21(日) 00:40:30
>>468
[構成プロパティ]-[全般]-[文字セット]がUnicodeがどうのこうのってなってね?
マルチバイトがどうのこうのってのに設定すれば多分動くんじゃね?

470 :デフォルトの名無しさん:2008/12/21(日) 14:06:11
VC++2008EE SDK です。
hToolBar = CreateWindowEx(WS_EX_TOOLWINDOW, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE | CCS_ADJUSTABLE | CCS_NORESIZE, 50,200,200,20, hWnd, NULL, hInst, NULL);

ツールバーに背景色を設定したいのですがやり方がわかりません。
教えてください。


471 :デフォルトの名無しさん:2008/12/21(日) 19:25:33
>>470
SetWindowLongPtr
GCLP_ HBRBACKGROUND

472 :デフォルトの名無しさん:2008/12/21(日) 19:33:26
void型の構造体からデータを取得したいのですがやり方がわかりません教えて

473 :デフォルトの名無しさん:2008/12/21(日) 21:07:43
VS2005もしくはVC++6.0でリソース(ダイアログ、アイコンなど)を編集する実行ファイルの名前はなんなんですか?

474 :デフォルトの名無しさん:2008/12/21(日) 21:23:56
msdev.exe

475 :デフォルトの名無しさん:2008/12/21(日) 21:27:06
VS2008です。
右にTextBox(MainText)、左にパネル、パネルの上にTextBox(LineText)
LineTextにはMainTextの行数を表示してあります。
こんな風↓

パネル|MainText
1 |文字
2 |文字
3 |文字

でMainTextがスクロールするときには、同時にパネルをスクロールしたほうが、いいでしょうか?
LineTextをスクロールしたほうがいいでしょうか?
また、どうスクロールしたらいいでしょうか?

476 :デフォルトの名無しさん:2008/12/21(日) 22:49:13
>>474
VS2003も?

477 :470:2008/12/21(日) 23:15:22
>>471
サンクス。

478 :デフォルトの名無しさん:2008/12/22(月) 03:52:50
453です。暫く忙しくてPC触れず、返信が遅れました、すみません。

>>454
すみません、言葉が足らなかったようで。
開発支援ソフトというか、ソースを書いて、実行して・・・という動作を行うソフトを探していました。
こういったソフトを何というか、用語等が分からなくて・・・すみません。

>>456
直感で欲しかった返答を頂き、有難うございます。
少しずつ調べていく感じで、時間がかかっても一歩ずつ進んでいこうと思います。

>>457,458,459
参考書を探してみたのですが、書店で見てもイマイチどれがいいのか分からなくて・・・
購入して意味が分からない、というのも問題だと思ったのでいろいろネットを見回っていました。
Petzoldという本がどれかは分からないのですが、また今度探してみようと思います。

皆様、返信ありがとうございました。
試行錯誤で少しずつ勉強してみようと思います。

479 :デフォルトの名無しさん:2008/12/22(月) 04:13:52
CListCtrlでレポートスタイルにアイコンを表示するにはどうすればいいんでしょうか

DWORD dwViewStyle = WS_CHILD | WS_VISIBLE | LVS_REPORT;
m_ListCtrl.Create(dwViewStyle, rectDummy, this, ID_FileListCtrl)

m_ListCtrl.InsertColumn(0, _T("NAME"), LVCFMT_LEFT, 100);
m_Images.Create(IDB_NAME, 16, 0, RGB(255, 0, 255));
m_ListCtrl.GetHeaderCtrl()->SetImageList(&m_Images);

ここまで来たんですが、どうしても表示されません、教えてください。

480 :デフォルトの名無しさん:2008/12/22(月) 09:51:36
InsertItemの引数

481 :デフォルトの名無しさん:2008/12/22(月) 10:41:23
すいません忘れてました。

m_ListCtrl.InsertItem(0, _T("TEST"), 2); // BMPの3つ目のイメージを期待

Insertはこうかいてます

482 :デフォルトの名無しさん:2008/12/22(月) 10:57:31
SetImageList()呼んでないんじゃない?

483 :デフォルトの名無しさん:2008/12/22(月) 10:58:50
つーか、ヘッダに載せたいの?

484 :デフォルトの名無しさん:2008/12/22(月) 11:20:43
確認しましたが、SetImageListは呼んでません
リストコントロールの0列目の頭にアイコンを付けたいんです。
BMPは16で区切って8インデックスあるので
2番目は空では無いとおもうんです

485 :デフォルトの名無しさん:2008/12/22(月) 11:30:14
いや、ちょっと使い方に問題があると思うけどアイコンなくっても
アイコンのある筈の場所が空白になるだけだから、それは確認できるはず。
で、
m_ListCtrl.GetHeaderCtrl()->SetImageList(&m_Images);
これは
m_ListCtrl.SetImageList(&m_Images);
じゃないのか?

486 :デフォルトの名無しさん:2008/12/22(月) 11:31:41
m_ListCtrl.SetImageList(&m_Images, LVSIL_SMALL);
こうか

487 :デフォルトの名無しさん:2008/12/22(月) 11:39:19
うおーーーできたーー
GetHeaderってなんだったんだーーーー
ありがとう。まじありがとう。
無駄に難しくはまり込んでいた・・・

488 :デフォルトの名無しさん:2008/12/22(月) 20:19:26
VCで作ったwindowsのプログラムを全く別のパソコンで動かすにはどうしたらいいのでしょう?
ソリューション構成のとこをreleaseにして、できたexeファイルと画像と音声リソースを
同じディレクトリに入れて、USBメモリで他のパソコンに移して実行しても、
アプリケーションの構成が正しくないとかいうエラーが出てしまいます。
どなたかアドバイスお願いします

489 :デフォルトの名無しさん:2008/12/22(月) 20:22:15
まずは、正確なメッセージを貼るところから始めよう。

490 :デフォルトの名無しさん:2008/12/22(月) 20:23:37
次に、そのメッセージでググってみよう。


491 :デフォルトの名無しさん:2008/12/22(月) 20:26:05
アプリケーションをスタティックリンクするか、「他のパソコン」にランタイムをインストールするといいかも。

492 :デフォルトの名無しさん:2008/12/22(月) 21:11:11
ググッてみたら解決方法がいっぱい出てきました。
出てきたページを参考にランタイムを入れてみようと思います。
ありがとうございましまろ

493 :デフォルトの名無しさん:2008/12/22(月) 22:48:23
>>478

プログラミングWindows 第5版 (Charles Petzold著)

Win32APIを勉強する上ではバイブル的本だと思うが
君が理解できるかどうかは俺にはわからん
ただ訳もよくできてるから 初心者が読んでても結構楽しいぜ
それなりの値段だから 大きめの本屋で目を通してみると良い
とりあえず上巻だけでOK

494 :デフォルトの名無しさん:2008/12/22(月) 23:55:22
VC++2003を使用しています
テキストファイルやmp3等のリソースエディタでは埋め込みが不可能なものを
リソースとして埋め込み、使用するにはどのようにしたらいいのでしょうか
ググった所ビルドアクションを埋め込まれたリソースにするという事はわかったのですが、
追加したファイルのプロパティを確認しても項目がその他しか出ていませんでした
どうかよろしくお願いします

495 :デフォルトの名無しさん:2008/12/23(火) 00:01:29
VisualStudio2008 c++ です。
Regex::Matchesでパターンマッチした文字の位置を取得して、その列をSelectにすることできる?

ABC
ABC
ABC

↑これでAをMatchesで取得したとして、3つ目のAを指定したら3列目が選択される。みたいに
わかりにくくてごめん。

496 :デフォルトの名無しさん:2008/12/23(火) 00:20:34
>>494
「カスタムリソース」でググってみ。

497 :デフォルトの名無しさん:2008/12/23(火) 01:22:00
>>496
カスタムリソースで調べてやってみたら埋め込みリソースが成功しました
本当にありがとうございます

498 :デフォルトの名無しさん:2008/12/23(火) 22:33:03
VC++上でコンソールアプリケーションを実行したときに
printf()の出力先(標準出力)を、VC++の出力窓にすることはできます?
(OutputDebugString()を使わずに・・・)


499 :デフォルトの名無しさん:2008/12/23(火) 23:10:04
printfってオーバーライドできたっけ?

500 :デフォルトの名無しさん:2008/12/23(火) 23:12:56
>>498
標準出力の出力先はSetStdHandle()で切り替えられるけど、VCの出力窓のハンドルって取得できるのかな?
調べたらできるかもしれない。

501 :デフォルトの名無しさん:2008/12/23(火) 23:18:42
なんでんなこと死体んだ

502 :デフォルトの名無しさん:2008/12/23(火) 23:19:09
>>498
printfをオーバーライドして中身にOutputDebugString書いちゃ駄目なの?
あくまでOutputDebugStringは使っちゃ駄目?

503 :デフォルトの名無しさん:2008/12/23(火) 23:26:20
Regex::Matchesで検索した文字列の位置って、Forで地道に文字数カウントしかないの?
MatchCollectionのメンバで位置取得とかできないの?

504 :デフォルトの名無しさん:2008/12/24(水) 03:17:52
#define printf (vsprintfしてOutputDebugStringする自作関数)

505 :デフォルトの名無しさん:2008/12/24(水) 04:24:18
自己解決した。スマソ

506 :デフォルトの名無しさん:2008/12/25(木) 13:21:28
質問です。
Visual C++ 2005 Expressを使っているのですが、
EXEファイルのプロパティから見られる「バージョン情報」を追加するには
どうすればいいんでしょうか?

507 :デフォルトの名無しさん:2008/12/25(木) 14:14:08
>>506
リソースファイルを作ればいい
http://marigold.sakura.ne.jp/devel/windows/verinfo/index.html


508 :デフォルトの名無しさん:2008/12/25(木) 19:49:37
>>507
ありがとうございます。そちらを参考にして一応設定し、「バージョン情報」タブが
表示されるようになりました。

ですが、何も設定していないのに「言語」という項目が「英語(米国)」という値で
自動的に設定されてしまうのですが、この「言語」の項目を「日本語」にするには
どうすればいいのでしょうか?

ためしに
VALUE "言語", "日本語\0"
と記述すると項目は追加されるのですが、「言語」「英語(米国)」は残ってしまいます…

509 :508:2008/12/25(木) 20:01:21
自己解決できました。TranslationとStringFileInfoのBLOCKの値に
関係してたんですね

510 :デフォルトの名無しさん:2008/12/26(金) 02:41:53
VC++2008で、エディットボックスに入力された値を%と仮定して、
演算を行いたいと思っています。

15 と入力されていれば、1.15で演算

現在、取得した値に100加算し、100除算するようにしているのですが、
桁落ちが発生してしまい、変数に格納される値が1.1499…となってしまいます。
桁落ちを発生させず、正しく1.15として変数を格納するためにはどのようにすればよろしいでしょうか。

CString strBuf;
double d;
((CEdit*)GetDlgItem(iID))->GetWindowText(strBuf); // strBuf="15"
d = atoi(strBuf); // d=15.00000000

d = 100 + d/100; // d=1.149999999

511 :デフォルトの名無しさん:2008/12/26(金) 02:56:37
整数で計算して下さい

512 :デフォルトの名無しさん:2008/12/26(金) 03:14:09
結果出力、つまり文字列に変換するときに丸めればいい。
偶数丸めとか四捨五入とか。

513 :デフォルトの名無しさん:2008/12/26(金) 06:37:33
1ドル15セントみたいな概念は理解できないんだな

514 :デフォルトの名無しさん:2008/12/26(金) 07:10:36
100 + d/100

515 :デフォルトの名無しさん:2008/12/26(金) 07:19:30
たぶん、( 100 + d ) / 100 と書きたかったんじゃないか?

516 :510:2008/12/26(金) 09:32:30
(100+d)/100の間違いでした。
四捨五入で試して見たいと思いますが、
少数で演算はやめておいた方がよさそうですかね。
計算式が少し複雑なものだったので、楽できればと思ったのですが。

ありがとうございました。


517 :デフォルトの名無しさん:2008/12/26(金) 11:57:21
CString型の文字列に格納されている文字を1文字ずつ取り出したいです。

ただし半角なら1バイト単位で、全角なら2バイト単位で、という風に分離したいです。

半角だけなら、Strcpyでcharの配列にコピーした上で、
str[0] str[1]...という風に取り出せますが、

全角が混じっていると、1バイト目、2バイト目と分離されてしまいます。

その文字が半角か全角かを判断して、半角なら1バイト、全角なら2バイト同時に取り出すロジックを作りたいです。
こんな感じの関数として。

CString ripString(CString src,int index){ //ソースとなる文字列、n文字目

/*〜処理〜*/

return 文字列;
}

たとえば"あaいbうcえdおe"という文字列を入れると、

CString str="あaいbうcえdおe";

ripString(str,0) →結果 "あ"
ripString(str,1) →結果 "a"
ripString(str,2) →結果 "い"
ripString(str,3) →結果 "b"
 ・
 ・
 ・
 
こういうことをするのに良い方法はありますか?

518 :デフォルトの名無しさん:2008/12/26(金) 12:05:49
CharNext, IsDBCSLeadByte

519 :デフォルトの名無しさん:2008/12/26(金) 12:09:47
>>517
CString::GetAt( int iChar)

520 :デフォルトの名無しさん:2008/12/26(金) 12:18:56
>>517
#define _UNICODE


521 :デフォルトの名無しさん:2008/12/26(金) 19:48:42
初めてDLL作ろうとしたのですが、依存関係を設定してビルドするとなぜか〜〜.libが見つかりませんとでて失敗します。
〜〜.dllってどのようにすれば使えるのか教えてください。
dllファイルの作成自体は成功しています。


522 :デフォルトの名無しさん:2008/12/26(金) 20:37:37
>>521
google dll 作成方法

523 :デフォルトの名無しさん:2008/12/26(金) 21:03:56
散々調べてから2ちゃんで質問したんですが・・・
とりあえず自己解決しました。
Project Test   ←dllを使うプロジェクト
Project Test_dll ←dllのプロジェクト
という感じで、Test_dll.libができるのかと思ってたら、Test_dll.dllとTest.libの名前でファイルが作成されてました。

はじめにTestのソース内で#pragma comment(lib, "Test.lib")を試したところ
出力ファイル名が入力ファイル名が一致しています。というエラーが出たので、(名前も対応していないので)
Test.libがTest_dll.dllのアタッチとは関係ないものだと早とちりしていました。
結局Test.libをTest_dll.libにリネームして、リンクすることでビルドに成功できました。

524 :デフォルトの名無しさん:2008/12/26(金) 21:11:02
ただ出力ファイルのdllの名前はプロパティから変更できたのですが、出力されるlibファイルの名前が変更できません。
みなさんは毎回手動でリネームしているのでしょうか。

525 :デフォルトの名無しさん:2008/12/26(金) 21:52:49
libが必要になる方法なんかで作らないもん
面倒だし

526 :デフォルトの名無しさん:2008/12/26(金) 23:24:50
ビルド後のイベント

527 :デフォルトの名無しさん:2008/12/28(日) 10:28:01
リンカの詳細にインポートライブラリってのがあるべや

528 :デフォルトの名無しさん:2008/12/28(日) 20:13:39
モードレスダイアログのコンボに対して、親ウィンドウから値をセットするにはどうしたらいいんでしょうか。
Win32 VC++です。

モードレスダイアログに
setData(char* text)
{
ComboBox_AddString(hwndDialog, text);
}
親から
dialog.setData(text);
UpdateWindow(hWndDialog);



529 :デフォルトの名無しさん:2008/12/28(日) 21:01:37
うまくいかないのなら、その経過も書いてよ

530 :デフォルトの名無しさん:2008/12/28(日) 22:13:09
親から送る
ComboBox_AddString( GetDlgItem( hWndDialog, IDC_COMBOBOX), text);

531 :デフォルトの名無しさん:2008/12/28(日) 23:12:16
>>530
おっしゃるとおりにやってみたのですが、現象は変わりませんでした。
現象は、モードレスダイアログにあるコンボの中身が空のままです。
ただ、 num = (int)SendMessage(GetDlgItem( hWndDialog, IDC_COMBOBOX), CB_GETCOUNT, 0, 0);
でみると要素数numはちゃんと増えています。
WM_PAINTを拾ってInvalidateRectで再描画する必要があるのでしょうか。


532 :デフォルトの名無しさん:2008/12/28(日) 23:29:03
>モードレスダイアログにあるコンボの中身が空のままです。
ポインタ操作間違えて文字化けしているだけじゃないのか?

533 :デフォルトの名無しさん:2008/12/28(日) 23:50:08
そもそもどこの時点でしけてんだよ
まず、モードレスダイアログ自身に同じ処理を書くと成功すんのか?それ

534 :デフォルトの名無しさん:2008/12/29(月) 02:31:03
コンボボックスのリストの部分のサイズどうなってる?
コンボにフォーカスして↑↓キー入れてみたらちゃんと追加されてるとか

535 :デフォルトの名無しさん:2008/12/30(火) 17:54:28
ボタンが無効かどうかを調べるにはどうすればいいんですか?

536 :デフォルトの名無しさん:2008/12/30(火) 18:08:08
IsWindowEnabled()

537 :デフォルトの名無しさん:2008/12/30(火) 18:24:57
ありがとうございますっ

538 :デフォルトの名無しさん:2008/12/30(火) 22:10:54
Visual C++ 2005 Express+Windows Platform SDKの環境なのですが、
実行時にメニューバーの表示/非表示を切り替えたいのですが、
どういった方法がありますでしょうか?

539 :デフォルトの名無しさん:2008/12/30(火) 22:18:26
メニューバーをツールバーコントロールで作成しておいて、
EnableWindow( hWndToolBar, ( IsWindowEnabled( hWndToolBar) == FALSE);

540 :デフォルトの名無しさん:2008/12/30(火) 22:19:21
しまった、カッコが一個たらね。

541 :デフォルトの名無しさん:2008/12/31(水) 04:46:19
別の方法で解決しましたが、レスありがとうございました


542 :デフォルトの名無しさん:2008/12/31(水) 22:52:19
どうやって解決したのか書いてけよ
クソだな
根っからのクソ
育ちが悪すぎる
親、何?誰?かなりクソでしょ?
教育失敗してる

543 :デフォルトの名無しさん:2008/12/31(水) 23:51:34
今やるならC#で始めるほうがいいよな>初心者
ペゾルド本もC#だし。

544 :デフォルトの名無しさん:2009/01/01(木) 02:50:34
ネコ以下でした…

545 :デフォルトの名無しさん:2009/01/01(木) 11:15:15
vcprojからnmakeに変換する方法があれば教えてください。

546 :デフォルトの名無しさん:2009/01/01(木) 13:00:22
VC6はメニューにあるね

547 :デフォルトの名無しさん:2009/01/01(木) 13:14:00
2002以降無くなったな、便利だったんだが・・・

548 :デフォルトの名無しさん:2009/01/01(木) 13:49:40
>>546,547
レスありがとうございます。
探して見つかったら報告します。

549 :デフォルトの名無しさん:2009/01/01(木) 21:57:36
#include <fstream>
char *textdata;
void main(){
ifstream fin;
fin.open("test.txt",ios::binary);

この後、textdataにtest.txtのデータをコピーしたいのですが
test.txtはeofの後にもデータがあります。
それも含めて、ファイルの最後までデータを読み込みコピーするには
どうすれば良いですか?

550 :デフォルトの名無しさん:2009/01/01(木) 22:13:27
そういう関数の中でeofチェックしてるはずだから
eofチェックしない処理を自作する。

551 :デフォルトの名無しさん:2009/01/01(木) 23:41:29
できません

552 :デフォルトの名無しさん:2009/01/02(金) 07:50:04
>>549
eofのあとにデータがあるんじゃなくて、eofの判定をミスってるだけだろ。

553 :デフォルトの名無しさん:2009/01/02(金) 08:04:37
>>549
ソースを出してくれ

554 :デフォルトの名無しさん:2009/01/02(金) 11:28:48
#include <fstream>
#include <iostream>

using namespace std;
char textdata;

void main(){
ifstream fin;
fin.open("test.txt",ios::binary);
while(!fin.eof()){
fin.get(textdata);
cout << textdata;
}
getchar();

最初から作ったらできてたお

555 :デフォルトの名無しさん:2009/01/03(土) 01:38:20
すいません。質問です。

プリコンパイル済みヘッダーを使用する設定にして、
ソースにプリコンパイル済みヘッダーを include しないと、
「プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました」
というエラーが出るのですが、
これは全部のソースに、プリコンパイル ヘッダーを include しないといけないのでしょうか?

556 :デフォルトの名無しさん:2009/01/03(土) 03:10:17
>>555
すべての cpp ソースの頭に
#include "stdafx.h"
と書けば解決する。

557 :デフォルトの名無しさん:2009/01/03(土) 03:32:56
つまり「全部のソースに、プリコンパイル ヘッダーを include しないといけない」というわけだ。

558 :デフォルトの名無しさん:2009/01/03(土) 10:01:52
>>556さん
>>557さん
ありがとうございます。

やはりそうなのですか。
ところで、何で全部のソースに書かないといけないのでしょうか?

自分のイメージでは、プリコンパイルヘッダーって、
ヘッダーファイルをまとめたヘッダーファイルみたいな物と思っています。

別にプリコンパイルヘッダーに登録されているヘッダーファイルが
必要じゃない場合とかも、そのソースに include しないとエラーが出るっていうのが、
いまいち納得できませんでした。

何か自分は考え違いをしているのでしょうか?

559 :デフォルトの名無しさん:2009/01/03(土) 10:38:47
>>558
プリコンパイルヘッダーを使用する/しないは、全体の設定のほかに
個別のソースごとに設定できる。
必要なけりゃそれで除外すればいい。

560 :デフォルトの名無しさん:2009/01/03(土) 10:55:22
>>558
プリコンパイルヘッダはコンパイル前にあらかじめヘッダーをコンパイルして結果を保存し、再利用してコンパイルを高速化するためのもの。
だからプリコンパイルヘッダを使用すると指定したモジュールのヘッダー読み込みの順序が同じでなければならない。そのために各ファイルの先頭でstdafx.hを読み込むようにしている。


561 :デフォルトの名無しさん:2009/01/03(土) 20:20:54
イベントのハンドルが引数になってる場合はどうやって渡せばいいんですか?


562 :デフォルトの名無しさん:2009/01/03(土) 21:23:14
warning C4731: 'Mul' : インライン アセンブラ コードにより変更されたフレーム ポインタ レジスタ 'ebp' です。

この警告をなくす方法を教えてください。もしくは気にしなくても良いのでしょうか?
MSに http://msdn.microsoft.com/ja-jp/library/ywz8xf2a.aspx 悪い例のサンプルがあるんですけど
対応方法が載ってません。

563 :デフォルトの名無しさん:2009/01/03(土) 21:59:54
ようするにebp/espを書き換えなければ済む話。
警告無視で書き換えるなら、__asmを入るときの値を出るまでに復元しろということ。

564 :デフォルトの名無しさん:2009/01/03(土) 23:47:30
警告0の正しい?コードを書こうかなと思ってコード書き直してるのですが、
ReadProcessMemory(ProcessHandle, reinterpret_cast<LPVOID>(ModuleAddress+data.offset.x), &x, 4, NULL);
こう書くとwarning C4312: 'reinterpret_cast' : 'DWORD' からより大きいサイズの 'LPVOID' へ変換します。
とでるのですが、正しい使い方はどうなるんでしょうか?
ModuleAddressとdata.offset.xはどちらもDWORDです。


565 :デフォルトの名無しさん:2009/01/04(日) 00:12:20
それは、Win64だとvoid*も64ビットだから気を付けろという警告。
キャスト元をDWORDからULONG_PTRなんかにすればいい。
DWORDはWin64でも32ビットのままだが、ULONG_PTRはポインタと同じく64ビットになるという整数型。

566 :デフォルトの名無しさん:2009/01/04(日) 01:17:12
Windows XP SP3 Visual Studio 2003 の話です
ソースAがメインのソースとして
ソースBとCが他にあるとします.
ある構造体の宣言をソースCでし,ソースAとBでその構造体を使いたいものとします.
そのときコンパイルすると
構造体の再定義というエラー
error LNK2005: "その構造体は 既に ****.obj で定義されています。
とでます.
どのように宣言すればよいでしょうか?




567 :デフォルトの名無しさん:2009/01/04(日) 01:27:40
グローバル変数の実体は一つだけにして、他ソースからはexternで参照する。

568 :デフォルトの名無しさん:2009/01/04(日) 01:29:39
コンパイルエラーが出るなんて糞質問はコード公開必須だボケが

569 :566:2009/01/04(日) 01:31:04
すみません別ファイルへのリンクに
#include "ソースC.cpp"
とかいう変なことしてました.

570 :デフォルトの名無しさん:2009/01/04(日) 10:03:30
>>564
プロジェクトのオプションに64bit互換のチェックの有無があるからoffにする。


571 :562:2009/01/04(日) 11:48:44
>>563
ありがとう。
pushとpopをしておけば良いのですね。

572 :デフォルトの名無しさん:2009/01/04(日) 12:50:31
Visual C++本体の扱い方を解説しているサイトはありますか?
コーディングはできるんですが、ソフトの機能を把握しておきたいのです
ちなみに2008です

573 :デフォルトの名無しさん:2009/01/04(日) 14:13:05
>>572
ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.ja/dv_vstoc/html/06ddebea-2c83-4a45-bb48-6264c797ed93.htm

574 :デフォルトの名無しさん:2009/01/04(日) 22:13:13
exeのディレクトリにあるファイルは読み込めるのに
exeのディレクトリのフォルダのファイルは読み込もうとするとエラーが出ます。
何故ですか?

ifstream fin;

OK↓
fin.open("test.txt",ios_base::binary);

NG↓
fin.open("data/test.txt",ios_base::binary);

575 :574:2009/01/04(日) 22:21:20
どうやらファイルを見つけていないようです。

576 :574:2009/01/04(日) 22:40:00
単なるスペルミスでした。

577 :デフォルトの名無しさん:2009/01/05(月) 22:18:38
動的に作成した画像ファイルを読み込むとエラーになるんですが
なんとかなりませんか?

578 :デフォルトの名無しさん:2009/01/05(月) 22:23:39
エラーの内容から原因を推測して修正してください

579 :デフォルトの名無しさん:2009/01/06(火) 01:29:38
short int からintへ,int からshort intへの代入で,
特に型変換を記述しないで実行したんだけど,エラーも出ずに普通に動いた.
これ放置してて問題ない?それともちゃんと型変換した方がいい?

580 :デフォルトの名無しさん:2009/01/06(火) 01:31:05
コンパイラの警告レベルを高くしたらコンパイル時に文句言うんじゃね、と無責任に答える

581 :デフォルトの名無しさん:2009/01/06(火) 01:31:58
その場合でもshort→intのように無条件に大きくなる方はそのままでも平気。

582 :デフォルトの名無しさん:2009/01/06(火) 01:42:53
「const unsigned char *」 型とはどういう扱い方をするものですか?

_ismbslead、_ismbstrail関数を使って、文字列の中の2バイト文字を判別したいのですが・・・


int _ismbslead(
const unsigned char *str,
const unsigned char *current
);

この引数の渡し方の意味がわからないです。


CString型、もしくはこいつをコピーしたchar型の配列の各バイトをチェックするロジックを作りたいのですが、
第一、第二引数どちらについても、char*型で渡そうとすると「const unsigned char*に変換できません」というコンパイルエラーが。

この関数はどうやって使うモノなのか教えてください

583 :デフォルトの名無しさん:2009/01/06(火) 01:43:13
ありがとう,とりあえずはshort int から int へはそのまま放置しときます.

584 :デフォルトの名無しさん:2009/01/06(火) 10:21:57
>>582
キャスト

585 :デフォルトの名無しさん:2009/01/06(火) 10:52:44
constというのは呼び出す関数の内部で値を書き換えないようにするものなので
この場合無視していい
char * を unsigned char *にキャストする

586 :デフォルトの名無しさん:2009/01/06(火) 17:44:30
FileStreamとBinaryReaderを使って、Byte型の配列を、読み込んだファイルのデータ長に合わせて宣言したいです。

//入力ストリーム作成
FileStream^ fs = gcnew FileStream(fnp, FileMode::Open);

//バイナリリーダー作成
BinaryReader^ br = gcnew BinaryReader(fs);

//データ読み込み
int len = (int)fs->Length; //データ長
System::Byte data[len];

こうやると、C2057とC2466、C2133が出て、ファイルを読み込んでからByteの宣言は出来てないみたいなんですが、
どうすればファイルを読み込んだ後にByteの配列を宣言出来ますか?

587 :デフォルトの名無しさん:2009/01/06(火) 19:08:36
>>586
array<System::Byte>^ data = gcnew array<System::Byte>(len);
もっとも、File::ReadAllBytesを使えば1発で済むぞ。

588 :デフォルトの名無しさん:2009/01/06(火) 19:30:25
>>586
ありがとうございます。もうひと頑張りしてきます。

589 :デフォルトの名無しさん:2009/01/06(火) 19:30:55
>>588
>>587に安価ミスした・・・orz

590 :デフォルトの名無しさん:2009/01/07(水) 10:13:31
VC++でHashTab Shell Extensionみたいにプロパティをいじるようなソフトを作りたいんですが、何をすればいいかまったくわかりません。。
どなたかヘルプミーお願いします。

591 :デフォルトの名無しさん:2009/01/07(水) 10:48:34
HashTab Shell Extensionは知らんけど、まさにShell Extensionで調べるのがいいんじゃ?
絞るならCOMもつけるといいかも

592 :デフォルトの名無しさん:2009/01/07(水) 12:30:36
>>591
サンクス!
とりあえずとっかかりができました。これからいろいろ調べてみようと思います。

593 :デフォルトの名無しさん:2009/01/07(水) 18:34:46
Stringに\nで改行とかって含めることできますか?
それかString以外の別の型使わなきゃだめですか?
テキストボックスに改行付きで変数で一括で突っ込みたいんですが・・・

594 :デフォルトの名無しさん:2009/01/07(水) 18:55:30
>>593
Stringということは.NETか?
\r\n

595 :デフォルトの名無しさん:2009/01/07(水) 19:47:07
.NETならEnvironment.NewLine、普通のC++ならエディットボックスはWindowsの\r\nで。

596 :デフォルトの名無しさん:2009/01/07(水) 20:42:21
>>594,595
できました、ありがとうございます。

597 :デフォルトの名無しさん:2009/01/07(水) 23:59:31
CImageで読み込んだ画像ファイルに直接直線を描画したいのですが、
何か方法はありませんでしょうか?
Visual Studio2008でプログラミングをしています。

598 :デフォルトの名無しさん:2009/01/08(木) 00:39:42
LineTo( hDC, nEndX, nEndY);

599 :597:2009/01/08(木) 01:12:20
画面上ではなく、Cimageの読み込んだ画像のピクセルを直接書き換えるように
直線を書き込みたいのですが、何か方法はないですか??

600 :デフォルトの名無しさん:2009/01/08(木) 06:41:30
LineTo

601 :デフォルトの名無しさん:2009/01/08(木) 08:08:14
>>597>>599
CImageにはGetDC/ReleaseDCメンバ関数がある。

602 :デフォルトの名無しさん:2009/01/09(金) 19:10:49
2008の表示>ツールボックスの文字色はデフォが黒なんだけど見づらいので
どこをいじれば変えられますか?

603 :デフォルトの名無しさん:2009/01/09(金) 22:33:29
初心者です教えてください

604 :デフォルトの名無しさん:2009/01/09(金) 23:24:16
このソフトは初心者には扱えません。

605 :デフォルトの名無しさん:2009/01/11(日) 09:13:26
Editにキーボードで入力するとEN_UPDATEが発生するんですけど
SetWindowTextで文字列を挿入するとEN_UPDATEイベントが発生しません。
どうすれば良いでしょうか?


606 :デフォルトの名無しさん:2009/01/11(日) 09:23:58
オバマじゃだめなのか?

607 :デフォルトの名無しさん:2009/01/11(日) 16:28:57
#include <iostream>
#include <string>

using namespace std;

void main(){
wcout<<L"test";
wcout<<L"うんこ";
getchar();
}

なぜかL"うんこ"が表示されません。
っていうか日本語が表示されないのですが
なんとかしてください。

608 :デフォルトの名無しさん:2009/01/11(日) 16:31:09
ロケール

609 :デフォルトの名無しさん:2009/01/11(日) 16:48:54
うぁありがとぉぉおおう

610 :デフォルトの名無しさん:2009/01/12(月) 11:36:16
一度壊れたインテリセンス情報って復活できる?
ncbファイル消して開きなおしても、入力支援できない・・・

611 :デフォルトの名無しさん:2009/01/13(火) 10:46:21
プログラムではなくて、機能の質問なんですが、
#endifと最後に打った瞬間、上記文(#endifから上)の文字が全て灰色に変わりました。
(#ifdefなら青くなる筈だが、灰色に…)
色付に戻したいです。どうすれば良いのでしょうか?
よろしくお願いします。

612 :デフォルトの名無しさん:2009/01/13(火) 11:10:49
そりゃコンパイル条件から外れたからだろう

613 :デフォルトの名無しさん:2009/01/13(火) 11:48:59
アウトラインとかは関係ないのでしょうか?

614 :611:2009/01/13(火) 13:51:34
自己解決しました。
一番最初のプリプロセッサ命令のスペルミスしてた。
数時間格闘した結末はやはり呆気ないものだな…。

615 :デフォルトの名無しさん:2009/01/13(火) 14:37:20
コンパイル条件から外れた、で意味わからなかったのかよ・・・

616 :デフォルトの名無しさん:2009/01/13(火) 15:07:46
すんません。実行時にフォームのタイトルバーに文字を指定する方法を教えてください。。。

617 :デフォルトの名無しさん:2009/01/13(火) 15:12:55
あ、すんません。visual c++ 2008です・・

618 :デフォルトの名無しさん:2009/01/13(火) 15:23:06
あ、すんません。普通にText = "aaa";でいけました。ほんとすんません

619 :デフォルトの名無しさん:2009/01/13(火) 15:27:11
ゆとり死ね
市ねじゃなくて死ね

620 :デフォルトの名無しさん:2009/01/13(火) 15:39:18
CoInitializeで未解決のトークンとリンクエラーになるのですが何かlibを追加しなくてはダメですか?

621 :デフォルトの名無しさん:2009/01/13(火) 15:57:13
ole32.lib だと思うが、普通はわざわざ指定しないけどな?

622 :デフォルトの名無しさん:2009/01/13(火) 18:29:48
>>621
普通は指定しないですよね?
でもなぜかしれを追加したらリンク通りました・・・
ありがとうございます。

623 :611:2009/01/13(火) 19:22:32
>>615
フフ、プログラミングでわからない事なんて、しょっちゅうよ…

624 :デフォルトの名無しさん:2009/01/15(木) 01:15:15
・Visual C++2008 express
・開発環境・・WindowsVista

Debugモード、Releaseモード共にコンパイルは通ります。
Debugモードでデバッグ無しで実行は問題なく動作し、正常に終了します。
Releaseモードでデバッグ無しで実行した際には、途中でOSからのエラー、

----.exeは動作を終了しました。
問題が発生したため、プログラムが正しく動作しなくなりました。

というメッセージが出、途中で終了します。また、エラーが出るタイミングも
まちまちです。
これはどういう問題かと思われますか?タイミング問題でしょうか?


625 :デフォルトの名無しさん:2009/01/15(木) 01:24:30
変数の初期化し忘れとかそういう方向で

626 :デフォルトの名無しさん:2009/01/15(木) 08:00:10
Windows XP、Visual C++ 2003 でダイアログアプリを作っています。
アプリを一つだけ起動した状態は問題ないんですが、二つ以上起動すると
タスクバーのボタンがグループ化されたときに「(2) TODO: <ファイルの説明>」というような
表記になってしまいます。
このような文言らしきものがリソースの VS_VERSION_INFO にあったので
適当に編集してみたのですが、表記は変わりませんでした。
どうしたらタスクバーの表記が正しいものになるでしょうか?

627 :624:2009/01/15(木) 09:05:56
>>625
やはり、考えられるのはそれぐらいになりますよね・・・
ありがとうございました

628 :デフォルトの名無しさん:2009/01/15(木) 10:37:15
>>626
以下のレジストリから該当アプリを削除して再度実行する。
HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache

629 :デフォルトの名無しさん:2009/01/15(木) 10:56:59
基本クラスをCFormViewで作成したときに
これのウィンドウハンドルはm_hWndでしょうか?

630 :デフォルトの名無しさん:2009/01/15(木) 17:56:35
GetSafeHwnd()使え。

631 :デフォルトの名無しさん:2009/01/15(木) 18:57:02
メイクしたユーザの名前を実行ファイルに
文字列として埋め込むことって可能ですか?

632 :デフォルトの名無しさん:2009/01/15(木) 19:04:25
可能

633 :626:2009/01/15(木) 19:10:04
>>628
おおお 初回起動時の値をずっと保持しているのですね。
消して再実行したらきちんと編集した値に更新されました。
どうもありがとうございました。

634 :631:2009/01/15(木) 19:20:38
>>632
どうすればできますか?

635 :デフォルトの名無しさん:2009/01/15(木) 19:21:23
>>634
#define hoge "うんこタロウ"

636 :631:2009/01/15(木) 19:29:40
>>635
それだと"うんこタロウ"以外がメイクした時にも
"うんこタロウ"と埋め込まれると思うのですが・・・

637 :デフォルトの名無しさん:2009/01/15(木) 19:37:51
メイクする人が変われば名前変更しなさいよ
VCは自動でメイクした人の名前を認識できませんよ

638 :631:2009/01/15(木) 19:43:49
>>637
やはり手動でしかできませんか・・・
ありがとうございます。

639 :631:2009/01/15(木) 19:53:11
今思いついたのですが、
static const char NAME[NAME_LEN] ("HOGEHOGE");
と、ソースに埋め込んで、ビルド後のイベントで
実行ファイルをバイナリレベルで走査し、
指定文字列を発見したらGetUserName()を埋め込む
というのは危険すぎるでしょうか?

640 :デフォルトの名無しさん:2009/01/15(木) 19:57:52
ビルド後のイベントって他環境でも強制できるの?

641 :631:2009/01/15(木) 20:05:23
>>640
恐らく*.projあたりに埋め込まれているのだと思うので、
VCを使用している限り埋め込む実行ファイルと
プロジェクトを一対で持ちまわれば
可能になるのではないかな、と。
ただ、プログラムのコード中に(想定しているバッファ以外に)
走査対象文字列が出てきたらと考えると危険な香りが・・・

642 :デフォルトの名無しさん:2009/01/15(木) 20:42:25
>>641
コンパイルオプションに環境変数 USERNAME を埋め込むのはどうか?
/D "HOGEHOGE_USERNAME=\"$(USERNAME)\""

コードでその文字列を確保
CString sUserName = _T(HOGEHOGE_USERNAME);

643 :デフォルトの名無しさん:2009/01/15(木) 20:52:30
C言語の勉強として、GetWindowRect関数を利用してウィンドウシェードを作っているのですが、
OnGetMinMaxInfoで最小サイズを指定していると思われるウィンドウではどうしてもタイトルバー
だけにすることができません。
どうすればそのようなウィンドウでもタイトルバーだけにすることができるでしょうか。

Microsoft Visual C++ 2008 Express Edition DLLファイル(TTBaseのプラグイン)

644 :631:2009/01/15(木) 20:53:40
>>642
できました。ありがとうございます。

645 :デフォルトの名無しさん:2009/01/16(金) 22:47:03
新規作成で出てくるウィザードにあるプロジェクトの種類 CLR Win32 全般 ってどういう使い分けなんですか?
ロベールのC+;教室ってサイトでは Win32 コンソール アプリケーションを使ってやるみたいなんですけどどれがどう違うのか教えてください。
それと新規作成でファイルを選んだ場合に作成されるのがプロジェクトで作ったのと何が違うのかも・・・
VC++2008EEを使ってます

646 :デフォルトの名無しさん:2009/01/17(土) 07:38:09
>>645
CLRは.NET frameworkを使ったプログラムでC#やVisualBasicで作るのと同じ中間言語にコンパイルされる
C++で使う利点は無いので最初からC#で書いたほうが楽
実行時にランタイムが必要だったり不便な点がある

Win32は普通のプログラムなのでこれで作れ

全般はコンパイラを別のにして開発環境だけ使うとかしてクロスコンパイルが出来る(メイクファイルプロジェクト)


647 :デフォルトの名無しさん:2009/01/17(土) 16:58:59
すごく初歩的な質問かもしれませんが、1つのプロジェクトにa.cppとb.cppがある場合どのような順番でコンパイルされていくんですか?

648 :デフォルトの名無しさん:2009/01/17(土) 17:26:00
プロジェクトファイルに書いてある順番

649 :デフォルトの名無しさん:2009/01/17(土) 18:53:52
順番なんかどうでもいい

650 :デフォルトの名無しさん:2009/01/18(日) 01:58:13
/MP使えばほぼ同時だな。

651 :デフォルトの名無しさん:2009/01/19(月) 11:10:24
MFCでファイルオープンダイアログを出す方法を教えてください

652 :デフォルトの名無しさん:2009/01/19(月) 11:30:17
CFileDialog dlg(TRUE);
if (dlg.DoModal() == IDOK)
{
MessageBox(dlg.GetFileName());
}

653 :デフォルトの名無しさん:2009/01/19(月) 13:31:54
>>652
できましたありがとう

654 :デフォルトの名無しさん:2009/01/19(月) 23:39:08
CM_Get_DevNode_Registry_Propertyのかわりに
SetupDiGetDeviceRegistryPropertyほうを使うのが良いらしいんですが、
どういう理由なんでしょうか?

655 :デフォルトの名無しさん:2009/01/20(火) 11:40:37
MSDNにそう書いてあるから、じゃだめ?

656 :デフォルトの名無しさん:2009/01/20(火) 23:21:50
今使っているのはVisual Studio 2005です。

人に出来上がったexeファイルを配布するときに

このアプリケーションの構成が正しくないため、 アプリケーションを開始できません
でした。

というエラーを起こさないようにプロジェクトのランタイムライブラリの設定を
マルチスレッドDLLからマルチスレッドに変えました。
そうしたら以下のような警告が出て、他にも外部シンボルが未解決ですというエラーが大量に出ました。

warning LNK4098: defaultlib 'LIBCMT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。

人に配布するときに一番上のエラーが出なく、かつリンクが通るようにするにはどのようにすればいいのですか?

657 :デフォルトの名無しさん:2009/01/20(火) 23:42:25
>>656
DebugビルドとReleaseビルドが混じってるとか
リビルドしてみるか、言われたとおり /NODEFAULTLIB:LIBCMT.lib を試してみる

658 :デフォルトの名無しさん:2009/01/21(水) 09:08:20
>>656
元の構成に戻して、構成プロパティの全般ページの「MFCの使用」を
「スタティックライブラリでMFCを使用する」にする。

か、

元の構成に戻して、該当する方を渡す。

Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86)
http://www.microsoft.com/downloads/details.aspx?familyid=200B2FD9-AE1A-4A14-984D-389C36F85647&displaylang=ja

Microsoft Visual C++ 2005 再頒布可能パッケージ (x86)
http://www.microsoft.com/downloads/details.aspx?familyid=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&displaylang=ja

659 :656:2009/01/21(水) 14:59:38
ゲームを作ろうと思っているのですが、
他の人が作っているゲームや商業用のゲームは
再配布可能パッケージをインストールしなくても動いているのが気になります。
それはなぜなのでしょうか。

660 :デフォルトの名無しさん:2009/01/21(水) 15:10:46
>>659
スタティックリンクかもしれないし、
MFCを使ってないかもしれないし、
VCじゃないかもしれないし、
付属のセットアップで全部インストールされるかもしれないし、

もういいですか?

661 :デフォルトの名無しさん:2009/01/21(水) 15:11:21
全然満足できません

662 :デフォルトの名無しさん:2009/01/21(水) 15:14:29
あぁもう面倒くさいな。
取り敢えず「スタティックライブラリでMFCを使用する」でどうなるかやってみろ。

663 :デフォルトの名無しさん:2009/01/21(水) 15:17:55
面倒くさいならレスしないで下さいよ。ここは初心者スレなんだから。

664 :デフォルトの名無しさん:2009/01/21(水) 15:20:03
他の人が作っているゲームや商業用のゲームとかいう認識レベルのやつに説明しても無駄
開発環境や使用ライブラリぐらい調べてから質問しろ

665 :デフォルトの名無しさん:2009/01/21(水) 15:21:15
無駄ならレスしないで下さいよ。ここは初心者スレなんだから

666 :デフォルトの名無しさん:2009/01/21(水) 15:27:31
初心者じゃなくて初心者以前だろ

667 :デフォルトの名無しさん:2009/01/21(水) 15:28:56
知りもしないで文句だけたれてるクズがうざぃ

668 :デフォルトの名無しさん:2009/01/21(水) 15:39:57
そのゲームと同じにしたかったら同じ環境で同じように作ればいい

669 :デフォルトの名無しさん:2009/01/21(水) 15:44:28
その程度のレスなんていらないよぉ

670 :デフォルトの名無しさん:2009/01/21(水) 16:11:57
Microsoft Visual C++ 2005 再頒布可能パッケージなんだから
Visual C++ 2005以外で作れば入れる必要ない

671 :デフォルトの名無しさん:2009/01/21(水) 17:02:41
誰か>>643を…

672 :デフォルトの名無しさん:2009/01/21(水) 17:16:41
>>671
ちょっと待て

673 :デフォルトの名無しさん:2009/01/21(水) 17:51:52
と思われるウィンドウって他の人が出してるウインドウ?

サイズ変更のメッセージでサイズ調整したりするけど
他から勝手に余計なことされたらどうなるんだ?

674 :デフォルトの名無しさん:2009/01/21(水) 17:55:57
余計な事は考えないで質問にだけ答えてくださいよ。

675 :デフォルトの名無しさん:2009/01/21(水) 17:59:02
>>673
ウィンドウシェードが目的なので他のプログラムですね。
コマンドプロンプトなどだと中身が一行見えたり、GIMPだとほとんどウィンドウの中身が見えてしまっていて全く使えません。
もちろん手動でタイトルバーだけにしようと思っても(OnGetMinMaxInfoかなんかで)それ以上小さくならないですし。

676 :デフォルトの名無しさん:2009/01/21(水) 18:48:54
ウィンドウシェードなんて聞いたことない
知ってるやつが来るまでおとなしく待ってればいいよ

677 :デフォルトの名無しさん:2009/01/21(水) 19:37:30
>>676
MacやBlackboxなどにあるウィンドウをタイトルバーだけにする機能のことです。

678 :デフォルトの名無しさん:2009/01/21(水) 19:44:19
explorer.exeを殺して最小化すればいい。

679 :デフォルトの名無しさん:2009/01/21(水) 20:03:54
>>675
他のシェードツールでは問題なく動作するの?
それなら動かしつつSPYで見てみるとか

680 :デフォルトの名無しさん:2009/01/21(水) 20:26:41
>>678
互換シェル使っていますのでexplorer.exeはファイラー以外使ってません。
でもシェルを切ればタイトルバーだけになりますね。あまりあれは好きではありませんが。

>>679
Stylerでできた気がするのですが諸事情で確認できません。

681 :デフォルトの名無しさん:2009/01/21(水) 22:40:49
VS2008(VC9?)で、newしたときに、失敗したときに例外じゃなくてNULLを返させたいです。
でもnew(nothrow)みたいに、既存のソースのnewを一個一個置き換えるのはやなので、一発でなんか無いですか?



682 :デフォルトの名無しさん:2009/01/21(水) 22:55:40
newを自作

683 :デフォルトの名無しさん:2009/01/21(水) 22:59:59
なんか方法があるのは憶えてるけど、どうやるかは忘れたな。
ググればでてくるんじゃないか?

684 :デフォルトの名無しさん:2009/01/21(水) 23:03:43
検索したらmsdnにヒットしたけどオフィシャルとは思えない笑える説明

685 :デフォルトの名無しさん:2009/01/21(水) 23:08:01
笑える部分をコピペしてやりたいけど、それやると検索で見つかってしまうからやめておこう

686 :デフォルトの名無しさん:2009/01/21(水) 23:09:37
ダウンロードしたMSDNライブラリを、たとえばfirefoxで閲覧するにはどうすればよいでしょうか

687 :デフォルトの名無しさん:2009/01/21(水) 23:49:00
>>682-685
えー
教えてください


688 :デフォルトの名無しさん:2009/01/22(木) 00:24:09
もしかしてnothrownew.objをリンクするってやつ?

689 :デフォルトの名無しさん:2009/01/22(木) 14:29:19
WindowsのAPI関数をさしてF1キーなどでドキュメント付属のリファレンス見れますけど、
英語のものばっかり表示されるんですが、日本語で表示するにはどうすればいいですか?
オプションで全部日本語を設定してるんですが・・・

690 :デフォルトの名無しさん:2009/01/22(木) 14:55:16
んな難しい英語使われてないやろ

691 :デフォルトの名無しさん:2009/01/22(木) 15:00:09
なんで2ちゃんねらーって論点をずらすことばかりするの?

692 :デフォルトの名無しさん:2009/01/22(木) 15:03:55
そりゃあたくさん人がいるからだよ

693 :デフォルトの名無しさん:2009/01/22(木) 15:06:28
visual studio使ってる段階でクズだし基地外が好んで使うから

694 :デフォルトの名無しさん:2009/01/22(木) 15:20:01
>>689
キーワードタブのフィルタ条件を「日本語ドキュメント」にする。
その状態は記憶されるので次からは日本語になる。

695 :デフォルトの名無しさん:2009/01/22(木) 15:50:57
VC++6.0を使用しています。
メニューバーの項目を一つだけ右端に持って行きたいのですが可能でしょうか?
下のような感じで。
________________________________
|ファイル|編集|表示|___________________|ヘルプ|
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

696 :デフォルトの名無しさん:2009/01/22(木) 15:58:18
>>695
不可能

697 :デフォルトの名無しさん:2009/01/22(木) 16:04:28
>>965
無理

698 :デフォルトの名無しさん:2009/01/22(木) 16:05:12
>>696 >>697
感謝です。

699 :デフォルトの名無しさん:2009/01/22(木) 16:07:43
>>695
リソースじゃなくて自分でメニューバーのウィンドー作れば可能

700 :695:2009/01/22(木) 16:15:20
>>699
感謝です。

http://yokohama.cool.ne.jp/chokuto/urawaza/menu1.html
メニューバーの作り方はここを参考に作れば大丈夫でしょうか?

701 :デフォルトの名無しさん:2009/01/24(土) 21:59:52
Web制作の経験があるという理由だけで会社でVisual C++の担当になりました。
1から勉強しなければならないのですが、そもそもこのソフトで何ができるようになるのでしょうか?
上司に聞こうにも上手くはぐらかされるだけでストレスになっています。

例えばこういうものが作れるといった具体例があれば教えていただけないでしょうか?

702 :デフォルトの名無しさん:2009/01/24(土) 22:09:40
この世に存在する自動的に制御されているものはほとんど作れます

703 :デフォルトの名無しさん:2009/01/24(土) 22:17:49
これはさすがに釣りだろjk

704 :デフォルトの名無しさん:2009/01/24(土) 22:59:02
>>701
ウインドウズのアプリケーション。
ライブラリ。
DLL。
COM。
ActiveX。
Webアプリケーション。


705 :デフォルトの名無しさん:2009/01/25(日) 04:26:10
工具箱で何が作れるのか聞いてるようなもんだな。

706 :デフォルトの名無しさん:2009/01/25(日) 13:11:32
>>701
VCはなんでも作れるらから安心しろ。

707 :デフォルトの名無しさん:2009/01/25(日) 13:30:49
最初、ヴァーチャルストゥディオって読んでました


708 :デフォルトの名無しさん:2009/01/25(日) 13:38:02
VirtualStdioか
意味は通らなくもない

709 :デフォルトの名無しさん:2009/01/25(日) 16:33:42
VisualC++2005EEとVisualC++2008EEの違いって何ですか?
教えてください。

710 :デフォルトの名無しさん:2009/01/25(日) 16:40:52
VisualC++2008EEのほうが全てに秀でる あと軽い

711 :デフォルトの名無しさん:2009/01/25(日) 16:49:55
ありがとうございました。
2008インストールしてみます。

712 :デフォルトの名無しさん:2009/01/25(日) 19:45:42
>>701
会社の業務に関係するシステムを作らされそうなの?
たぶんC#とかVBでやったほうがいいとおもうけど。

713 :デフォルトの名無しさん:2009/01/26(月) 23:16:58
ダイアログベースアプリで、ウイザードが生成するコードで、
CXXXDlg::OnPaint()
{
 if(IsIconic())
 {
  処理

って奴あるじゃん。
あのIsIconicのときの処理って走りますか?
何時走るの??
ちなみにモーダルやモードレスの子ダイアログの場合、最小化すると走るらしいけど、
メインウインドの場合は?


714 :デフォルトの名無しさん:2009/01/26(月) 23:28:03
>>713
MSDNには最小化したら0以外が返るって書いてあるけど、
ダイアログ以外のウインドウだと動作が違うの?

715 :デフォルトの名無しさん:2009/01/26(月) 23:30:19
そもそも最小化しているときにOnPaintが呼ばれるのか?ということだろ。俺も気になる。

716 :デフォルトの名無しさん:2009/01/26(月) 23:41:09
てか、最近のVCのウィザードはif(IsIconic())なんてコードを吐くの?


717 :デフォルトの名無しさん:2009/01/26(月) 23:41:21
int main(void)
{
int a=0, b=99;
Exchange(a,b);
printf("a=%d ,b=%d\n",a,b);
}

int Exchange(int t1, int t2){
int tmp = t2;
t2 = t1;
t1 = tmp;
return t1,t2;
}


上の文では戻り値が返されずa=0,b=90と言う結果が出てしまいます。
どんな時に戻り値が適用され、どんな場合に仮引数、実引数が使われるのかが分かりません。
もしかして2つの値は返されないのでしょうか?
また、これは値渡しと言うものなのでしょうか?
混乱しています。よろしくお願いします。

718 :デフォルトの名無しさん:2009/01/26(月) 23:42:49
>>715
そうそう、そんな感じ。
ウィザードがわざわざ生成するくらいだから何とかすれば通るような。
でもブレイクポイント設定して何をやってもブレイクしないし。

719 :デフォルトの名無しさん:2009/01/26(月) 23:45:16
>>717
煽るわけじゃなくて、マジ疑問なんだけど、どういうのを
手本にして勉強してるの?
ネットのサイトとか?

二つの値を返したいときはこうだな。

void Exchange(int* t1, int* t2){
int tmp = *t2;
*t2 = *t1;
*t1 = tmp;
}

int main(void)
{
int a=0, b=99;
Exchange(&a,&b);
printf("a=%d ,b=%d\n",a,b);
}


720 :デフォルトの名無しさん:2009/01/26(月) 23:46:38
>>718
Win3.1時代の名残りかな?
そのころは、最小化するとタスクバーじゃなくて、アイコン化されてたし。

721 :デフォルトの名無しさん:2009/01/26(月) 23:49:23
>>720
最小化なのかアイコン化なのかもちょっと気になる。。

このIsIconic()〜のソースってSDIとかなら分かる気がする。

たとえば、親ウインドの中の子ウインドを最小化すると、親画面の左下に小さくなって並ぶじゃん。
あのときに、親ウインドにWM_PAINTが発生すれば、子供にも回ってきて、
子供は自分で自分がアイコンで占有している部分を更新リージョンからくり抜くんでしょ。たぶん。
でもメインウインドのダイアログのOnPaintでIf(IsIconic())って成立するのかな。。


722 :デフォルトの名無しさん:2009/01/26(月) 23:51:38
__int32と int型ってまったく同一に見られるんですか?
オーバーロードができないんですが。

723 :デフォルトの名無しさん:2009/01/26(月) 23:54:21
>>721
その場合は、子ウィンドウからしたら、全領域が非クライアント領域のような気がするし、
第一、WS_CLIPCHILDRENを付ければ勝手にやってくれることのような気がする。

724 :デフォルトの名無しさん:2009/01/26(月) 23:55:14
>>722
そういう仕様。
http://msdn.microsoft.com/en-us/library/29dh1w7z.aspx
> ..., and __int32 is synonymous with type int.
なお、ここには載っていないけど、__int64もlong longと同じ。

725 :722:2009/01/26(月) 23:56:48
すいません、リサーチ不足でした。
ありがとうございます。

726 :デフォルトの名無しさん:2009/01/26(月) 23:57:18
>>723
ああ。。確かに。
いったいこのコードなんだろう。誰かご存知のかた、ご回答お待ちしてます。

727 :デフォルトの名無しさん:2009/01/26(月) 23:58:59
>>719
いや、ポインタを使わずに返すには、こうしたらどうか?
……と、思って書いてみたんですけど…やっぱり無理ですよね。

サンクスです。

728 :デフォルトの名無しさん:2009/01/26(月) 23:59:43
C++なら参照というものがあってだな……。

729 :デフォルトの名無しさん:2009/01/27(火) 00:06:10
>>727
構造体を使えばできるけど、Cじゃあんまりやらないな。

struct pair {
int first, second;
};

struct pair swap(int a, int b)
{
struct pair c;
c.first = b;
c.second = a;
return c;
}

730 :デフォルトの名無しさん:2009/01/27(火) 00:12:11
VC+++MFCってコントロール少なすぎじゃないですか?
どう見ても、VC#でやったほうが楽なのに、なんでVC++のほうがメジャーなんですか?

731 :デフォルトの名無しさん:2009/01/27(火) 00:16:13
そりゃ単純にいままでVC++でやってきた連中からしたら
VC#なんか分からん事だらけだからじゃないの?
なんでVC++で簡単にテキストファイル開けたのに
C#でその方法をぐぐらなくっちゃいけないの?
そこまでして移行してご利益がいっぱいあるの?
MSは好都合かもしれないけど。そんなものみんないやなんです。



732 :デフォルトの名無しさん:2009/01/27(火) 00:16:36
>>730
C#よりも10年近く先に登場した分、資産・ノウハウが貯まっているところが多い。

733 :デフォルトの名無しさん:2009/01/27(火) 00:22:46
感覚的には、新規の案件はVCよりC#のほうが多いような気がしたけど、
求人サイトで、C++とC#で検索してみたら、まだC++のほうが多かったな。


734 :デフォルトの名無しさん:2009/01/27(火) 00:24:43
C++と比較したの?それともVC++と比較したの?
C++だけだと、LinuxとかUnixとか組み込みとかあるよ。

735 :デフォルトの名無しさん:2009/01/27(火) 00:25:27
C#でもWeb系ってたまにないか?

736 :デフォルトの名無しさん:2009/01/27(火) 00:29:21
>>735
aspで、イントラ作ろうって案件だと、C#かVBだしな。

737 :デフォルトの名無しさん:2009/01/27(火) 00:37:49
>>732
その割には使えるコントロールが全くないじゃないですか?
しかも、Viewって一つしかないし・・・

738 :デフォルトの名無しさん:2009/01/27(火) 00:45:22
>>737
Viewは複数あるじゃん。

739 :デフォルトの名無しさん:2009/01/27(火) 00:47:41
>>737
コントロールは増えてないってだけでしょ。
MSはVC向けにはわざとそういう便利なライブラリを出さないんだろうね。
おらおらおらおらおらおらおらおらおらおら!!!!!!
さっさとドットネットにいきやがれこんちくしょーーーーーー!!
ってことですね。

おっとつい興奮していつの間にかCapsLockがONになってた

740 :デフォルトの名無しさん:2009/01/27(火) 00:49:02
>>729
遅スレだけれどmain関数の中を

int main(void)
{
struct pair pair1;

pair1.first = 0;
pair1.second = 90;

swap(pair1.first,pair1.second);


printf("first=%d,second=%d\n",pair1.first,pair1.second);

return 0;
}

と、書いてみた。

駄目だった…。ちょっと思考錯誤してきます。

741 :デフォルトの名無しさん:2009/01/27(火) 00:51:47
>>739
90年代はActiveXの時代だった。
どっちかというと、VBで使うのが主流だったと思うけど。

742 :デフォルトの名無しさん:2009/01/27(火) 00:52:33
>>740
pair = swap(1, 2);


743 :デフォルトの名無しさん:2009/01/27(火) 00:55:12
>>741
ここで言っているコントロールってActiveXのことなん?
もしそうならVCでも使えるんじゃね?

744 :デフォルトの名無しさん:2009/01/27(火) 01:10:28
>>742
サンクスです。構造体に入れるのを忘れるとは…お恥かしい。
面倒な質問だったと思いますが最後まで有難う御座います。

これでひのきのぼうを装備してスライムが倒せそうです。

745 :デフォルトの名無しさん:2009/01/27(火) 02:32:06
>>743
使えるけど、たしか標準ではメニューに入っていないでしょ。

746 :デフォルトの名無しさん:2009/01/27(火) 07:43:04
基本的にはWindows標準のものだけ扱うからね。
でも2008SP1でごっそり増えたじゃない、C#にもまだないようなのが。
まあこれらもWindowsに標準で組み込まれる予定だけど。

747 :デフォルトの名無しさん:2009/01/27(火) 18:29:11

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{/*ウインドウクラス構造体の設定*/
HWND hDlgWnd;
//ダイアログボックスを表示します
hDlgWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),NULL,(DLGPROC)DlgWndProc);
ShowWindow(hDlgWnd, SW_SHOW);
UpdateWindow(hDlgWnd);
//戻り値を返す
return 0;
}
このようにモードレスダイアログを表示する関数を宣言しているのですが、一瞬表示されてすぐに消えてしまいます。
どこがおかしいのでしょうか?
ここの記述がおかしいのかはわかりませんが、ご検討をお願いします。


748 :デフォルトの名無しさん:2009/01/27(火) 18:39:15
>>747
モードレスダイアログは普通のウィンドウのようにメッセージループが必要。

749 :デフォルトの名無しさん:2009/01/27(火) 18:43:08
UpdateWindow呼んだあとreturnしちゃってるからな。

750 :デフォルトの名無しさん:2009/01/27(火) 19:46:16
747です。返信遅れてすみません。
では、WinMainの中に記述してはいけないということでしょうか?
今からいろいろやってみますが、かなりの初心者なので少しヒントを下さい。
お願いします!

751 :デフォルトの名無しさん:2009/01/27(火) 19:58:16
>>750
メッセージループっていってんだから
メッセージループでググレよウンコ

752 :デフォルトの名無しさん:2009/01/27(火) 20:15:28
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{ WNDCLASSEX wcex; //ウィンドウクラス構造体
HWND hDlgWnd;
   MSG msg;
ghInst = hInstance;
/*ウィンドウクラス構造体を設定*/
//ダイアログボックスを表示します
hDlgWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),NULL,(DLGPROC)DlgWndProc);
ShowWindow(hDlgWnd, SW_SHOW);
UpdateWindow(hDlgWnd);
while (GetMessage(&msg, NULL, 0, 0) > 0) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
//戻り値を返す
}
という風に書き直したらできました。しかし、このソースおかしいぞと思われたらレスください。
748,749,751さんどうもありがとうございました。



753 :デフォルトの名無しさん:2009/01/27(火) 20:36:45
なんでageてんの?

754 :デフォルトの名無しさん:2009/01/27(火) 22:23:39
VC#みたいな補完機能はないのでしょうか?
毎回Ctrl+Spaceするのはめんどくさいですしセミコロン打っても自動で文字間隔とかを調整してくれませんし不便で仕方ないです
補完でこのスレを抽出するとないと言われていますがそんな馬鹿なことはないですよね?

755 :デフォルトの名無しさん:2009/01/27(火) 23:12:01
ない

756 :デフォルトの名無しさん:2009/01/28(水) 00:07:12
VC++にはWPFがないのはなぜ?

もしかして、見放された?



757 :デフォルトの名無しさん:2009/01/28(水) 00:20:17
お前はC++を何だと思ってるんだ
アーキテクチャ考えれば無いのは当たり前

758 :デフォルトの名無しさん:2009/01/28(水) 00:38:43
>>755
そうですか・・・ありがとうございました

759 :デフォルトの名無しさん:2009/01/28(水) 00:40:33
つまり.NETに移行するって事は標準の言語ではなく
マイクロソフトのツールを使わせる戦略なの。
マイクロソフトにとってオープンソースや標準というものは金儲けの邪魔なのだ。
もちろん自分が好き勝手に決められる標準なら大好きだ。

760 :デフォルトの名無しさん:2009/01/28(水) 01:01:13
>>756
なんかのインタビューでC++はそういう用途のものじゃないから、って言っていた気がするが
見つけらんなかった。すまん。

761 :デフォルトの名無しさん:2009/01/28(水) 02:19:59
>>759
マイクロソフトの戦略というのは確かだが、
何でもかんでも決め付けるはどうかと

762 :デフォルトの名無しさん:2009/01/28(水) 10:09:07
>>739
MFCフューチャーパックなるものがリリースされて、
コントロールが10年ぶりくらいに刷新されたと聞いたけど、
あれ、どうなんだろう?
VS2003使いだから、導入したくても導入できない

763 :デフォルトの名無しさん:2009/01/28(水) 13:24:19
VC++2005Standard Editionにはmicrosoft platform SDKは同梱されていますか?

764 :デフォルトの名無しさん:2009/01/28(水) 13:40:56
>>763
されてるよ


765 :デフォルトの名無しさん:2009/01/28(水) 13:45:18
>>764
ありがとうございます

766 :デフォルトの名無しさん:2009/01/28(水) 15:23:17
>>763-765
>>763-765


























ttp://www.microsoft.com/japan/msdn/vstudio/express/2005/visualc/usingpsdk/

ttp://www.microsoft.com/japan/msdn/vstudio/express/default.aspx

767 :デフォルトの名無しさん:2009/01/28(水) 15:29:21
>VC++2005Standard Editionにはmicrosoft platform SDKは同梱されていますか?

768 :デフォルトの名無しさん:2009/01/28(水) 16:00:05
>>766
ExpressじゃなくてStandardの話をしている


769 :デフォルトの名無しさん:2009/01/28(水) 16:45:30
>>762
あれはコントロールってレベルじゃない。
http://www.atmarkit.co.jp/fdotnet/special/vs2008sp1/vs2008sp1_02.html

770 :デフォルトの名無しさん:2009/01/28(水) 22:23:57
>>766
すごい赤っ恥だな 俺だったら軽く鬱になる

771 :デフォルトの名無しさん:2009/01/28(水) 22:47:54
>>766みたいにオッチョコチョイの癖にカッコつけて言葉が少ない奴って
しょーもねー勘違いで、一人で変な方向に突っ走ってプロジェクトの火種くすぶらせるんだろーな。


772 :デフォルトの名無しさん:2009/01/29(木) 10:47:04
江戸っ子なんだろうw

773 :デフォルトの名無しさん:2009/01/29(木) 11:37:35
アプリケーション開始とともにモードレスダイアログを2つ起動させたいのですが、どのような記述をすればいいのかがわかりません。
インスタンスハンドルが2つ必要なのでしょうか?
さっぱり分からないのでお願いします

774 :デフォルトの名無しさん:2009/01/29(木) 11:39:29
1個はできてるの?
ためしに、単にCreateDialogを2回呼んでみては。

775 :デフォルトの名無しさん:2009/01/29(木) 12:07:05
1個は表示されてます。
hDlgWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),NULL,(DLGPROC)DlgWndProc);
hDlg = hDlgWnd;
ShowWindow(hDlgWnd, SW_SHOW);
UpdateWindow(hDlgWnd);

while (GetMessage(&msg, NULL, 0, 0) > 0) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
ghInst = (HINSTANCE)GetWindowLong( hDlg , GWL_HINSTANCE ) ;
//ghInst = GetModuleHandle(NULL) ;
hDlgWnd2 = CreateDialog(ghInst, MAKEINTRESOURCE(IDD_DIALOG2),hDlg,(DLGPROC)DlgWndProc);
hDlg2 = hDlgWnd2;
ShowWindow(hDlgWnd2, SW_SHOW);
UpdateWindow(hDlgWnd2);
while (GetMessage(&msg2, NULL, 0, 0) > 0) {
TranslateMessage(&msg2);
DispatchMessage(&msg2);
}

return (int)msg.wParam;

}

このように記述しています

776 :デフォルトの名無しさん:2009/01/29(木) 12:11:07
何でメッセージループが複数あるのさ。
同時ならループの前で2回作れ

777 :デフォルトの名無しさん:2009/01/29(木) 12:16:40
メッセージループの何たるかを知らずにコピペでプログラムを作る人間か…

778 :デフォルトの名無しさん:2009/01/29(木) 12:18:21
hDlgWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),NULL,(DLGPROC)DlgWndProc);
hDlg = hDlgWnd;
ShowWindow(hDlgWnd, SW_SHOW);
UpdateWindow(hDlgWnd);

ghInst = (HINSTANCE)GetWindowLong( hDlg , GWL_HINSTANCE ) ;
hDlgWnd2 = CreateDialog(ghInst, MAKEINTRESOURCE(IDD_DIALOG2),hDlg,(DLGPROC)DlgWndProc);
hDlg2 = hDlgWnd2;
ShowWindow(hDlgWnd2, SW_SHOW);
UpdateWindow(hDlgWnd2);
while (GetMessage(&msg, NULL, 0, 0) > 0) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return (int)msg.wParam;
//戻り値を返す
//return 0;
}

このように記述したらダイアログ2つともでました!
ですが、2つめのダイアログの表示が1つめのレイアウトとかぶってしまいました。色とか線が2つめのダイアログにも影響を与えています。


779 :デフォルトの名無しさん:2009/01/29(木) 15:50:33
Webブラウザコントーロールのバージョンはいくつになるんですか?
自分のマシンにIE7が入っていればIEコンポーネントを埋め込んだアプリを起動したときIE7として起動するんですか?

780 :778:2009/01/29(木) 16:00:51
解決しました。お答えくださったかたがたありがとうございました。

781 :デフォルトの名無しさん:2009/01/29(木) 16:08:31
どうでもいいけど、GetMessageが0以外の値として-2以下を返すときってないの?

782 :デフォルトの名無しさん:2009/01/29(木) 16:19:34
それより

警告 GetMessage 関数は、0 以外の値、0、-1 のいずれかを返します。したがって、次のようなコードは避けてください。

while (GetMessage(lpMsg, hWnd, 0, 0)) ...

と書いてるくせにVisual C++の自動作成されたやつはしっかりそうなっているという矛盾


783 :デフォルトの名無しさん:2009/01/29(木) 21:26:06
long long型の数値を入力するときは、
VC++ではfgets→atollができないので、
scanfを使うしかないのでしょうか?

784 :デフォルトの名無しさん:2009/01/29(木) 21:30:17
long long atoll(char *str){
long long result = 0;
int negative=0;

while (*str == ' ' || *str == '\t')
str++;
if (*str == '+')
str++;
else if (*str == '-') {
negative = 1;
str++;
}

while (*str >= '0' && *str <= '9') {
result = (result*10) - (*str++ - '0');
}

return negative ? result : -result;
}


785 :デフォルトの名無しさん:2009/01/29(木) 21:30:56
>>784
ありがとうございます。
ぐへへへへ、これであんなことやこんなことができる。

786 :デフォルトの名無しさん:2009/01/29(木) 21:33:25
_atoi64

787 :デフォルトの名無しさん:2009/01/29(木) 21:36:17
>>785
何だか分からんが
とりあえず通報しておいた

788 :デフォルトの名無しさん:2009/01/29(木) 21:56:38
なぜか負になる不思議!

789 :デフォルトの名無しさん:2009/01/30(金) 00:46:27
すまん、ホリデーってなん曜日だったっけ?

790 :デフォルトの名無しさん:2009/01/30(金) 01:24:22
給料日だよ

791 :デフォルトの名無しさん:2009/01/30(金) 06:55:22
俺は毎日がホリデイ

792 :デフォルトの名無しさん:2009/01/31(土) 04:49:26
CreateWindow()でNULLが返るのですが、どうやってデバッグすればよいですか?
(どの変数がおかしいのか、とか、、)

793 :デフォルトの名無しさん:2009/01/31(土) 04:54:41
テンパってます。助けてぇ〜

794 :デフォルトの名無しさん:2009/01/31(土) 05:01:11
CreateWindowにブレークポイント設定してそこまでの変数が
期待通りの値になっているか確認したら
うまいやり方は玄人が来るまで待て

795 :デフォルトの名無しさん:2009/01/31(土) 05:10:14
794
ありがと。それはやってるけど、何が正常なのかよくわからないです。
理由を

796 :デフォルトの名無しさん:2009/01/31(土) 05:29:15
CreateWindowから前の命令についてMSDN引きながら
どういう値が戻るのか、渡すのが正しいのか確認しなよ
それも出来ないならエスパーが来るまで2時間程寝たら?
今のテンパってる状態では何かやってもうまくいかないさ

797 :デフォルトの名無しさん:2009/01/31(土) 05:35:25
<例>cin >> a >> b >> c;
scanfを使って一行で表すにはどうしたらいいですか?

798 :デフォルトの名無しさん:2009/01/31(土) 10:38:18
まずGetLastError()をだな

799 :デフォルトの名無しさん:2009/01/31(土) 10:44:20
>>795
GetLastError();

800 :デフォルトの名無しさん:2009/01/31(土) 10:48:18
じゃ、俺も
GetLastError()


801 :デフォルトの名無しさん:2009/01/31(土) 16:29:08
プロジェクトをテンプレートから作成するとき
空のプロジェクトとWin32コンソールアプリケーションとでは
どこがどのように異なるのでしょうか。
VC++は2008 Expressです。

802 :デフォルトの名無しさん:2009/01/31(土) 16:40:57
質問です。
初心者でもひろってくれる会社はないですか?

803 :デフォルトの名無しさん:2009/01/31(土) 16:43:21
>>801
Win32コンソールアプリケーションだとmain関数入りのソースファイルが初めから追加済み。
空のプロジェクトは本当に空っぽ。

804 :デフォルトの名無しさん:2009/01/31(土) 17:13:58
自分でプロジェクト作って見ればいいだけだろ
お前のVC++は2008 Expressは飾りか?

805 :デフォルトの名無しさん:2009/02/01(日) 13:39:52
すいません、昨日の明け方カキコしたものです。ちょっと前まで寝てました。
なんでCreateWindow()でNULLが返るのか分かりました。WinProc()のWM_CREATEの中で
変なことやってました。早く寝るべきだったス。
ありがとうございました。


806 :デフォルトの名無しさん:2009/02/01(日) 13:46:36
>>802
ないです。

807 :デフォルトの名無しさん:2009/02/01(日) 13:47:54
>>797
int a, b, c;
scanf("%d%d%d", &a, &b, &c);

808 :デフォルトの名無しさん:2009/02/01(日) 19:23:23
>>802
求人サイトで、未経験者可の会社さがせ。

809 :デフォルトの名無しさん:2009/02/01(日) 21:02:25
けどそういう会社ってブラックな所多いよね。

810 :デフォルトの名無しさん:2009/02/01(日) 21:38:39
地元で自宅通勤できるならデジドカでもおkだけど、
県外に出てまでデジドカにはなりたくないな。

ところで情報工学科に受かったが、入学前の間このままVCで遊んでいればおk?

811 :デフォルトの名無しさん:2009/02/01(日) 21:47:15
何もしなくても問題ないと思うけどね
TOEICとか英語の資格取る勉強とかすれば?って気がする

812 :デフォルトの名無しさん:2009/02/01(日) 22:19:10
スレチなのに回答Thanks!
確かに、何も知らない人にも最初から教えてくれるはずだからな。

813 :デフォルトの名無しさん:2009/02/01(日) 22:44:30
>>810
私立の情報工学科なんて専門学校と同じだろ?


814 :デフォルトの名無しさん:2009/02/01(日) 22:52:43
国立だとどうなの?

815 :デフォルトの名無しさん:2009/02/01(日) 22:55:19
国立でも旧帝以外なら屑

816 :デフォルトの名無しさん:2009/02/02(月) 01:13:57
ダイアログコントロールのプロパティ[Visible]をfalseって裏では何を設定してるんですか?

817 :デフォルトの名無しさん:2009/02/02(月) 01:21:52
英語と苦手だったら数学の復習でもしてれば?
後は仕様書きちんと書いてからソフトを作ってみると良い経験になるかな

818 :デフォルトの名無しさん:2009/02/04(水) 01:03:58
いままで、動いていたプログラムが
サービスパック入れたとたん120個エラー。
しかも触ったことも無いヘッダファイルから・・・
 
・・・・orz

こういうことって良くあるんでつか?

819 :デフォルトの名無しさん:2009/02/04(水) 01:34:26
VC+++MFCって画面の作り方がさっぱりわかりません

ダイアログベースにするとしょぼいコントロールが数個あるだけで・・・
ドキュメントビューにすると、全く画面が作れないし・・・

どうやってつくるのか、いいHPあったら教えてください

820 :デフォルトの名無しさん:2009/02/04(水) 01:59:41
質問させてください。

数値のデータが列挙された Excelデータがあります。内容は、IDと、00 や、 02など
見た目では分かりにくいデータです。

Windows SDKを使用して、Excelの値の意味を画面表示することが目的のプログラムを
作成しようと調査しています。

そこで、Accessのデータベースと、Excelのパラメータを比較して画面出力する処理を
考えていますが、そもそもWindows SDKを使って、mdbと接続できるのでしょうか?

821 :デフォルトの名無しさん:2009/02/04(水) 02:26:06
Windows SDKとは関係ありません。
バイナリファイルに自分でアクセスする処理を作って下さい。

822 :デフォルトの名無しさん:2009/02/04(水) 03:03:19
生APIの海の世界へようこそ 君が今まで居た場所は池にすぎない

823 :デフォルトの名無しさん:2009/02/04(水) 08:27:33
いや、mdbと接続っていうならバイナリアクセスじゃなくて
com使ってexcelやaccessと接続するんじゃないの

office オートメーション

あたりでのキーワードでググってみたら?

824 :デフォルトの名無しさん:2009/02/04(水) 16:43:22
自分はADO使うんだと思った。

825 :デフォルトの名無しさん:2009/02/04(水) 17:29:12
VC++ならDAOでも ADOとDAOは用途似てる上に略式名がふざけすぎていると思うw

826 :デフォルトの名無しさん:2009/02/04(水) 20:33:51
>>819
ダイアログアプリにして
ぺたぺたコントロールを貼り付けていく

827 :デフォルトの名無しさん:2009/02/04(水) 21:18:03
確かにDialogベースアプリはしょぼい概観。
SDIとかMDIはめんどくさいしほとんど使う価値無し。

最近のアプリ(ウイルスソフトとか)って概観がWebページみたいな感じじゃないですか?
ああいうのってどうやって作るんだろ。
以前DirectXを使ってボタンを描画するライブラリとか見たことあるけど。


828 :デフォルトの名無しさん:2009/02/04(水) 21:25:07
スキン 貼り絵

829 :デフォルトの名無しさん:2009/02/04(水) 21:55:11
>>828
そんな感じなの?
ふーん。


830 :デフォルトの名無しさん:2009/02/05(木) 11:13:48
Diableベースアプリに見えた

831 :デフォルトの名無しさん:2009/02/05(木) 22:10:28
VS2008でMFCアプリ作ってみたら、すごいことになってたな。

832 :デフォルトの名無しさん:2009/02/05(木) 22:27:41
SP1のスケルトンだなw

833 :デフォルトの名無しさん:2009/02/06(金) 00:08:05
>>831
確かに!
.NET不要じゃね?て思っちまった

834 :デフォルトの名無しさん:2009/02/06(金) 03:55:01
クラスをまたがる処理がゴミゴミしてきたのでグローバル変数にしようと思うんですが、
なるべくコードの量を減らしたいので、今、すべての.cppでincludeしてあるstdafx.hを使ってなんとかしたいです。

まずCMainFrameをグローバル変数にしたいのですが、
// stdafx.h
extern CMainFrame* g_pMainFrame;

// MainFrame.cpp
#include "stdafx.h"
CMainFrame* g_pMainFrame;
CMainFrame()
{
 g_pMainFrame = this;
}

MainFrame.cpp内でグローバル変数を宣言しているのにexternするのは変化もしれませんが、
すべてのファイルで共有するのでこれでエラーが出ないようにしたいんです。
どうすればいいでしょうか?

835 :デフォルトの名無しさん:2009/02/06(金) 09:03:48
プリコンパイルヘッダー使ってるならstdafx.h使うのは無理じゃない?
あまりそれ使うのはお勧めしないが、
MainFrame.cppだけプリコンパイルヘッダーはずしてstdafx.hインクルード前に#define入れて
#ifdefでextern宣言飛ばすようにするとか。

836 :デフォルトの名無しさん:2009/02/06(金) 10:21:44
>>834
#define CxxxApp::GetMainWnd() g_pMainFrame

CMainFrame* CxxxApp::GetMainWnd()
{
return DYNAMINC_DOWNCAST( CMainFrame, m_pMainWnd);
}

837 :デフォルトの名無しさん:2009/02/06(金) 10:25:17
DYNAMINC_DOWNCAST → DYNAMIC_DOWNCAST

class CxxxApp
{
public:
CMainFrame* GetMainWnd();
}

838 :デフォルトの名無しさん:2009/02/06(金) 10:29:10
いかん。

#define CxxxApp::GetMainWnd() g_pMainFrame → #define theApp.GetMainWnd() g_pMainFrame


839 :デフォルトの名無しさん:2009/02/06(金) 10:36:29
MFC使ってるのに少しぐらいコードの量減らしたってほとんど意味ない

840 :デフォルトの名無しさん:2009/02/06(金) 10:45:30
>まずCMainFrameをグローバル変数にしたいのですが、

ってあるからそれ以外にもあるのだろうね、大量にw

841 :デフォルトの名無しさん:2009/02/06(金) 14:32:49
そうなんです、大量にあるんです。
コードの量を減らすのは見やすいようにするためなんですが、なるべく同じ関数は2度と呼び出さなくてもいいように
確保しておきたいんです。ループの中とかでも頻繁にクラス間のメンバ参照を使うので馬鹿にできないんです。
全ファイルにインクルードするのが面倒というか、増えていくファイルで自動で追加されるstdafx.hにglobal.hをインクルードしておくだけにしたいんです。

で1行は必ず自分のポインタを格納したグローバル変数をもう一度externするのをさけたいんです。
#defineで既にexternされている場合か、宣言が既にある場合はその行だけ飛ばすにはどうかけばいいんでしょうか?


842 :デフォルトの名無しさん:2009/02/06(金) 15:22:23
CMainFrameはたとえが悪かったな。AfxGetMainWndとかあるしな。
global.cpp をつくり変数はそこで定義すればいいじゃない。

よくやる手段としては、ヘッダファイルで
#ifdef EXTERN
#define EXTERN extern
#endif
とかやっといて、cpp1つだけインクルードの前に#define EXTERNとかやる。
stdafx.hを使うのであればmそのcppはプリコンパイルヘッダーを使わない設定にしないとならない。

843 :デフォルトの名無しさん:2009/02/06(金) 15:22:49
>>841
>>836 以降を実行しろ。グローバル変数になんぞする必要もない。

844 :デフォルトの名無しさん:2009/02/06(金) 15:23:01
#ifdef EXTERN じゃなくて#ifndef EXTERN だった

845 :デフォルトの名無しさん:2009/02/06(金) 15:30:44
グローバルはCWinApp派生クラスに一任だぜ 
WindApp派生クラスのヘッダファイルにextern theAppがあるだろ?

846 :デフォルトの名無しさん:2009/02/06(金) 15:55:21
もしかしてexternって、書いたファイルでその宣言を使える用にするんじゃなくて
externが書いてあるファイルをインクルードしておけば、どのファイルからでも使えるようになるんですか?

847 :デフォルトの名無しさん:2009/02/06(金) 16:03:01
まずインクルードのこと、翻訳単位について勉強だな

848 :デフォルトの名無しさん:2009/02/06(金) 16:16:01
すまん、本をもう一度読んでからレスを読み返してみるよ
みんなありがとう

849 :デフォルトの名無しさん:2009/02/06(金) 16:29:21
わかりました。グローバルファイルを別に作る必要すらなかったです。
externの意味を間違えていたのが原因でしたすいません!

// .hのクラスの外(グローバル領域)
extern CMainFrame* g_pMainFrame;

// .hのクラスの中
CMainFrame* g_pMainFrame;

// .cppのCMainFrameのコンストラクタ
g_pMainFrame = this;


850 :デフォルトの名無しさん:2009/02/06(金) 16:41:10
やばい振り出しに戻った

851 :デフォルトの名無しさん:2009/02/06(金) 18:12:17
そもそもグローバル変数にしなきゃならんような設計が間違い

852 :デフォルトの名無しさん:2009/02/06(金) 19:59:56
中途半端にコードだすから・・・
何度こういうケースを見たことか。

853 :デフォルトの名無しさん:2009/02/06(金) 21:51:31
VC++ 6.0 使ってます。
スレッドを生成するのに、JavaのThreadクラスのようなものは無いのでしょうか?

854 :デフォルトの名無しさん:2009/02/06(金) 21:52:58
CThread

855 :デフォルトの名無しさん:2009/02/06(金) 22:19:20
MFCごときで作るアプリなんざ、グローバル変数使ったって全然もんだいない。
じゃんじゃん使え。CWinAppの派生クラスに押し込めるとか、そんな糞めんどくさいことするな。
あとアクセス関数とか全然必要ないよ。
全部変数はパブリック。楽で良いぞ。

856 :853:2009/02/06(金) 23:19:37
>>854
ありがとうです。
CThreadはCWinThreadを継承して自分で作るってことですか?
調べてみたらこんなのしかなかったんですが、この方法でよいのでしょうか・・・?
http://www.tri-field.com/progtips/tips04.html
http://hp.vector.co.jp/authors/VA014436/prg_memo/windows/vctips/039.html
http://www.edita.jp/h1ro/one/h1ro8125407.html

857 :デフォルトの名無しさん:2009/02/06(金) 23:41:56
_beginthreadexつかえ。

858 :デフォルトの名無しさん:2009/02/06(金) 23:52:15
物凄く初歩的かつ大雑把な質問なのですが、
システムの処理上sqrtやcos,sinをかなり使っていて、
これらの処理が重いということは知っていたのですが、
「最近のPCだと、もちろん重いことには重いがそれほど四則計算と変わりない」と聞きました
実際のところはどうなのですか?

859 :デフォルトの名無しさん:2009/02/06(金) 23:54:55
最近のマシンで動作する3Dゲームを見れば分かる。
アレだけたくさんのポリゴンを計算し、それらの表面の光沢を表現し
その膨大な演算を一瞬にしてこなしているだろ?
だから早いんだよ



860 :デフォルトの名無しさん:2009/02/06(金) 23:57:03
確かにそうですね。
最近は2次元の計算作業なんて多少無理しても大丈夫なレベルになってるんですね。
ありがとうございます。

861 :デフォルトの名無しさん:2009/02/07(土) 00:03:24
>>860
自分のための処理であるのなら実際に自分が使用する環境で実測してみることをお勧めする
処理速度や計算機リソースをどの程度消費するかなどは結局のところ実際に計ってみないと議論できない面がある
実際に行いたい処理から規模をスケールダウンして実測してみてそこから外挿してそれが無理な処理か大丈夫なレベルか判断

862 :デフォルトの名無しさん:2009/02/07(土) 00:17:32
計算機なんて20年ぶりに聞いたw


863 :デフォルトの名無しさん:2009/02/07(土) 04:53:42
FORTRAN屋みたいな奴がいるなw

864 :デフォルトの名無しさん:2009/02/08(日) 00:16:09
VC2008で操作ミスってソースウィンドウのタブやスペースが
”→”、”・”と表示されるようになったんですが、
元に戻すにはどうしたらいいんでしょうか?

865 :デフォルトの名無しさん:2009/02/08(日) 00:24:55
メニューバー→編集→詳細→スペースの表示


866 :デフォルトの名無しさん:2009/02/08(日) 00:25:25
ageスマン

867 :デフォルトの名無しさん:2009/02/08(日) 00:25:49
>865
直りました。
ありがとうございます。

868 :デフォルトの名無しさん:2009/02/08(日) 20:03:10
VC++9を使いはじめたものです。
タブを押すと押しただけどんどんタブが追加されていくんですが、
これをタブをインデントをそろえるために使えませんでしょうか?
キーボードをEmacsタイプにするのは、ほかのキーバインドもEmacs風になってしまうので、
やめたいです。
よろしくお願いします


869 :デフォルトの名無しさん:2009/02/08(日) 20:29:42
逆に考えるんだ。
「VSのやり方に合わせよう」と考えるんだ。
みんなそうしているよ。

870 :デフォルトの名無しさん:2009/02/08(日) 20:30:13
そこだけ設定抜きだして入れりゃいいじゃんか

871 :デフォルトの名無しさん:2009/02/08(日) 20:36:23
>>870
どうやるんスか?

872 :デフォルトの名無しさん:2009/02/08(日) 21:37:14
これをタブをインデントを

873 :デフォルトの名無しさん:2009/02/08(日) 21:51:12
>>871
ユーザー設定のコマンドに全部設定あるだろ。
EMACSでやってる欲しい設定だけ拾ってキーに設定するんだよ

874 :デフォルトの名無しさん:2009/02/08(日) 22:24:54
タブデント!

875 :デフォルトの名無しさん:2009/02/09(月) 00:08:29
初心者です。
VC6.0のFormViewで色々実装しています。

ドキュメントクラスのSerialize関数がメニューの[開く][上書き保存][保存]
からしか呼び出されません。

上記のものを消してしまい、後で追加したいのですが何も考えずに追加すると
Serialize関数が呼び出されません。一見[開く]などとたの項目とでは特に
違いがなさそうなのですがSerialize関数を呼び出すにはどうすればよいのでしょうか。


876 :デフォルトの名無しさん:2009/02/09(月) 09:55:03
追加したコマンドIDは消す前と同じかえ?

877 :デフォルトの名無しさん:2009/02/09(月) 09:58:45
別に新規で作って見てみたら?
それでわからなかったら、Serializeにブレークポイント置いておいて
止まったら呼び出し履歴見てみれば。

878 :デフォルトの名無しさん:2009/02/12(木) 15:54:51
VC++6.0のダイアログベースで作成しているのですが
元のダイアログをAとし、別のダイアログBを作成し、AからBにDoModalを行った後、
Bのダイアログのリストビューのアイテムをダブルクリックした時に、
Aのダイアログにもどり、Aにあるスタティックテキストをそのダブルクリックされたアイテムの
名前に変更したいのですが非常に苦戦しております、、

自分が考えていたのはアイテムがダブルクリックされたときに、
アイテムをグローバル変数に突っ込んで CDialog::OnOK();を実行し
元のダイアログに戻った時にデータを突っ込んでUpdateDataをかけようと思っていたのですが、
CDialog::OnOK();で元のダイアログが閉じられたあとにどこに行っているのかがさっぱりで
処理を突っ込めませんでした。

CDialog::OnOK();の後どこにいくのか、また他になにか良い方法はないか
よろしくおねがいします。

879 :デフォルトの名無しさん:2009/02/12(木) 16:15:37
OnOK後はDoModalから返ってくるだろ。
Bのパブリックメンバーにしておいて、DoModalがOK返してきたら
AからBのそのメンバー見ればいいじゃんかよ。

880 :デフォルトの名無しさん:2009/02/12(木) 16:40:04
>>879
あー、言われて見直して10分悩んで見直したら出来ました。
全然頭が回ってないですね自分。

ありがとうございました。助かりました。

881 :デフォルトの名無しさん:2009/02/13(金) 01:53:54
windowsでC++の勉強を始めたのですが、Std::coutに出力してもどこにも
出力が出ません。どうすれば表示されますか?

882 :デフォルトの名無しさん:2009/02/13(金) 02:15:57
コンソールアプリケーションのプロジェクトを選べ

883 :デフォルトの名無しさん:2009/02/13(金) 02:42:29
ありがとうございます。
windowsアプリケーションを選ぶときは、どうすればいいですか?

884 :デフォルトの名無しさん:2009/02/13(金) 04:15:21
windowsアプリケーションを選べばいんじゃね?

885 :デフォルトの名無しさん:2009/02/13(金) 05:44:00
MessageBox()を使えばいいよ。

886 :デフォルトの名無しさん:2009/02/13(金) 10:33:06
>>878です。
先程のプログラムでAからBにDoModalしたのちに、BのDoDataExchangeの最後に、
thread_param param;
param.instance = this;
param.pParam = 0;
m_Thread = AfxBeginThread(thread_entry,¶m,THREAD_PRIORITY_NORMAL);

と実行してスレッドを作成しようとするとエラーが出てプログラムが強制終了してしまいます。
ボタンにして画面が出た後に実行すると出来るのですが、画面に入った後に自動的に実行したいのですが、
どのようしたらよいでしょうか?

887 :デフォルトの名無しさん:2009/02/13(金) 12:24:08
>>886
スレッドにローカル変数のアドレス渡してるのがマズい。
作成されたスレッド側がparamを参照しようとした時に
スレッドを作成した側が既にスコープを抜けてparamが破棄されてる可能性がある。

888 :デフォルトの名無しさん:2009/02/13(金) 13:33:46
>>887
できました!
的確なご指摘ありがとうございました!

889 :デフォルトの名無しさん:2009/02/14(土) 12:21:07
vc2008 で Intellisense の自動更新を無効にする方法知りませんか?

890 :デフォルトの名無しさん:2009/02/14(土) 14:55:38
Visual C++ 2008 Express Edition
Windoes XP Pro SP3
C++/CLI使用

親ウィンドウで画像ファイルを指定すると、MDIの子ウィンドウで画像を読み込んで表示し、親ウィンドウのズームイン/ズームアウトボタン(またはメニュー)でアクティブな子ウィンドウの画像をウィンドウごと大きくしたり小さくしたりするプログラムを作りました。
子ウィンドウの作成・イメージ読み込み・ズーム処理などを行うクラスと、そのウィンドウをコレクションで複数保持するクラスを作り、クラスライブラリとして作成し、それを親ウィンドウのFormから呼び出す形でプログラミングしました。

複数の画像読み込み、複数の子ウィンドウ表示、ズームイン/ズームアウトなどの処理は正常に動作しています。

この親ウィンドウのメニューに、表示されている複数の子ウィンドウのリストが表示される(一般的なウィンドウメニュー)を追加しました。
方法は簡単で、menuStrip1のMdiWindowListItemプロパティにウィンドウメニューのオブジェクトを代入するだけです(開発環境のプロパティウィンドウから設定しました)。
これも正常に動作して、コードを追加しなくてもウィンドウメニューに画像ファイルを読み込んだ複数の子ウィンドウのタイトルが、メニューに表示されました。

次に続く・・・

891 :890:2009/02/14(土) 14:56:43
ここからが問題です。
子ウィンドウのウィンドウタイトルには、画像のファイル名とズーム倍率が表示されるように作りました。
例:
1つ目の子ウィンドウ「img1001.jpg / 100%」
2つ目の子ウィンドウ「img1002.jpg / 100%」
親ウィンドウのズームイン/ズームアウトボタンを押すと、画像の大きさが変わると同時に、タイトルの倍率の数値も変わります。
例:
1つ目の子ウィンドウをズームインした場合
「img1001.jpg / 120%」
ところが、この状態で親ウィンドウのウィンドウメニューをドロップダウンさせると、ズームインさせる前の状態で表示されてしまいます。

ウィンドウ(W)
1 img1001.jpg / 100%
2 img1002.jpg / 100%

つまり、子ウィンドウのタイトルを変更させても、ウィンドウメニューには反映されません。
しかし、アクティブウィンドウを変えると(別の子ウィンドウをクリックして全面に出すと)反映されます。

例:2つ目の子ウィンドウをクリックした後
ウィンドウ(W)
1 img1001.jpg / 120%
1 img1002.jpg / 100%

やりたいこと:
ズームイン/ズームアウトボタンを押した直後にウィンドウメニューを表示させても、そのウィンドウのタイトルの変更をすぐに反映させたい。

どなたかご教授お願いします。

892 :デフォルトの名無しさん:2009/02/14(土) 15:09:19
開発環境
Microsoft Visual Stdio2008
c++ Windowsフォームアプリケーション
textBox1,textBox2,button1を設置して
button1を押すとBox1のひらがなはローマ字に、ローマ字はひらがなに変換して
Box2に入れるようにしたいのですが、ひらがなからローマ字への変換ができません。
自分なりに考えたプログラムを張るのでアドバイスや、
もっと効率のいい方法がありましたら教えていただけると幸いです。

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
String^str1 = textBox1->Text;
String^str2;
int len,i;
len = textBox1->Text->Length;
for(i=0;len>i;i++){
if(str1[i]=='a'){
str2=str2+"あ";
}
else if(str1[i]=='i'){
str2=str2+"い";
}
else if(str1[i]=='u'){
str2=str2+"う";
////////////////////略/////////////////////
}
textBox2->Text = str2;

}

893 :デフォルトの名無しさん:2009/02/14(土) 19:05:48
あいうえお以外には使えない

894 :デフォルトの名無しさん:2009/02/14(土) 19:17:18
>>893
分かりにくくてすいません////略////の部分で上記以外のローマ字からひらがなへの
変換(la li lu kya kyu kyoなど)は終わっています
数字や漢字は変換せずに追加されるようになています

895 :デフォルトの名無しさん:2009/02/14(土) 19:37:14
子音が重なったら、「っ」変換する処理とかは入ってるのだろうか。

896 :デフォルトの名無しさん:2009/02/14(土) 19:40:28
そういう処理はIMEにまかせて、結果だけ奪え。

897 :デフォルトの名無しさん:2009/02/14(土) 19:53:50
>>895
はい、「yotto」→「よっと」などですよね?
「ん」も母音か子音かの前かで「nn」と「n」で使い分けているので大丈夫です。

if(str1[i]=='あ')ではif文の中の処理に入れないのでひらがなからローマ字への変換ができないんです、
どうしたらどんなひらがなかによって判断できるようになりますか?

898 :デフォルトの名無しさん:2009/02/14(土) 20:16:52
シナ製のIMEは、wを連打するとwwwwwになるはず。
偉大なる祖国のFEPだと、っっっっっっwってなる。

899 :デフォルトの名無しさん:2009/02/14(土) 20:18:20
>>897
str1[i] == L'あ'でできると思う。

900 :デフォルトの名無しさん:2009/02/14(土) 20:29:48
>>899
なるほど!!おかげさまで無事できました、ありがとうございます。

901 :デフォルトの名無しさん:2009/02/15(日) 09:21:53
Source Filesの下に、Main.cppというソースがあって、そこから
Source Filesの隣にあるResource Filesというフォルダの下のHoge.txtファイルを
オープンしたいのですが、
FileOpenFunc(_T("..\\Resource Files\\Hoge.txt"));
と書いてもファイルが見つかりません。どう書けばよいですか?


902 :デフォルトの名無しさん:2009/02/15(日) 11:52:48
実行時のフォルダからのパスを書かなきゃだめだから

903 :デフォルトの名無しさん:2009/02/15(日) 11:58:07
カレントディレクトリからのパスじゃねぇっけ?
たしかファイルダイアログを呼び出すたびにホイホイかわってすっげーぷっつんくる仕様だった希ガス
アクセスするときには必ずフルパス直してアクセスしないとつながんねーとかアリガチ?

904 :デフォルトの名無しさん:2009/02/15(日) 12:07:19
まあ、そういう作りだったらexeのパスを取得してフルパスにした方が確実だな

905 :デフォルトの名無しさん:2009/02/15(日) 12:31:12
GetModuleFileとかそんな感じの、実行ファイル名をフルパスでゲット出来る関数があったはずだから、
それとShlwApiとかそれっぽい名前の関数群を使えばいいかもしれない気がしないでもない。

906 :デフォルトの名無しさん:2009/02/15(日) 19:58:59
RegisterClassってなにをやってるんですか?
CreateWindowとRegisterClassって1個にまとめちゃえばいいような気がする。


907 :デフォルトの名無しさん:2009/02/15(日) 20:04:11
>>906
なんかはじめのメインウィンドウ作るときぐらいしか使わない記憶あるけど
俺のきのせい?

908 :デフォルトの名無しさん:2009/02/15(日) 20:19:56
RegisterClassは、Windowsに、「こういうスタイルを登録するよ。名前はUSERね」ってやってるだけ。
次に、CreateWindowで、「こういうウインドウ作ります。スタイルはUSERです」ってWindowsに通知する。
CreateWindowで、STATIC とか、EDIT って指定するだろ?アレは、そういうスタイルがWindowsが持ってるわけだ。
RegisterClassで指定してるのは、これから使う、ユーザ独自のスタイル。
んなもんWindowsのしったこっちゃないから、あらかじめ登録しちゃうわけ。
CreateWindowで、RegisterClassで登録した名前を指定するのはそういうわけ。登録して、使う。


909 :デフォルトの名無しさん:2009/02/15(日) 21:12:57
ようするに1つのクラスをテンプレートにして、いくつものウィンドウを作れる。
だから別々に分かれている。

910 :デフォルトの名無しさん:2009/02/16(月) 01:53:46
RegisterClassはウィンドウの動作に関する事を指定する
CreateWindowはウィンドウの見た目に関する事を指定する

911 :初心者:2009/02/16(月) 02:23:14
「botton1をクリックしたとき、〜する」っていうような、コードを教えてください。
ほんとに、初心者ですみません。

912 :デフォルトの名無しさん:2009/02/16(月) 02:36:41
ボタンを貼り付ける。
そんで、そのボタンをダブルクリックする。
生成されたコードの中に処理を書く

913 :初心者:2009/02/16(月) 02:50:39
コードをkwskお願いします

914 :デフォルトの名無しさん:2009/02/16(月) 02:56:20
ダイアログベースの場合は上記の通り。
ボタンをはっつけて、それをダブルクリックするだけで勝手にコードが自動生成される。
んで、そこに書き込む。

WinAppの場合は、ウインドプロシージャでやる。
詳しくはここを読め。
http://homepage2.nifty.com/c_lang/sdk/sdk_28.htm


915 :初心者:2009/02/16(月) 03:07:57
すみません、説明不足でした。
if型で、「botton1をクリックしたときに、〜する」というコードです。
ほんとに、すみません

916 :デフォルトの名無しさん:2009/02/16(月) 03:10:02
とりあえずボタンをダブルクリックするまでやってみなよ

917 :初心者:2009/02/16(月) 03:14:22
botton1と、botton2があり、それを選んでbotton3を押すと、
それぞれ動き方が違うというプログラムを作りたいです。

918 :デフォルトの名無しさん:2009/02/16(月) 03:32:01
ん?IF型ってなぁに?
まずダイアログベースアプリなのか、SDIアプリケーションなのか、Win32アプリケーションなのか、
それ以外なのかちゃんと書こうぜ。

919 :デフォルトの名無しさん:2009/02/16(月) 03:44:40
ボタンを選択するってことはラジオボタン?
もしかしてこんなかんじかな?

IDC_RADIO1、2はラジオボタンで、スタイルがプッシュボタン型。
で、通常のボタン(ボタン3)を押した場合の処理が以下。(名前はOnBnClickedButton1だけどな)

void CzzzDlg::OnBnClickedButton1()
{
  // TODO : ここにコントロール通知ハンドラ コードを追加します。
  if( ((CButton *)GetDlgItem(IDC_RADIO1))->GetCheck() == TRUE )
  {
    MessageBox("Radio1");
  }
  else if( ((CButton *)GetDlgItem(IDC_RADIO2))->GetCheck() == TRUE )
  {
    MessageBox("Radio2");
  }
}


920 :デフォルトの名無しさん:2009/02/16(月) 03:47:10
あ、間違えた^^;
== TRUEではなくて、== BST_CHECKED だな。


921 :初心者:2009/02/16(月) 06:50:13
説明不足が多く、すみませんでした。
>>919
ありがとうございました!!

922 :デフォルトの名無しさん:2009/02/16(月) 10:01:49
textBox1 の「1」の部分に変数を使いたいのですが
方法が分かりません ><

923 :デフォルトの名無しさん:2009/02/16(月) 10:30:44
フォーム?MFC?

924 :デフォルトの名無しさん:2009/02/16(月) 10:32:33
フォームです

925 :デフォルトの名無しさん:2009/02/16(月) 11:07:02
>>908-910
すげぇ、、、
説明がすぅっと頭に入ってきました。
Win32の達人の方ですね。


926 :デフォルトの名無しさん:2009/02/16(月) 11:07:29
array<System::Windows::Forms::TextBox^>^ textBox;
でメンバー持っておいて、
this->textBox = gcnew array<System::Windows::Forms::TextBox^>(2);
してから
this->textBox[0] = textBox1;
this->textBox[1] = textBox2;
するとか。

927 :デフォルトの名無しさん:2009/02/16(月) 11:17:47
>>926
うーむ。なるほど

ここに、変数を使うのは、あまり一般的ではないですか?

928 :デフォルトの名無しさん:2009/02/16(月) 11:25:13
>>926
あ。ありがとうございました!

929 :デフォルトの名無しさん:2009/02/16(月) 17:37:54
Visual C++ 6.0
Windoes XP Pro SP3
を使用しています。

グローバルに構造体を作って、クラス内でexturnをしようすると、
exturnのところでエラーが出て怒られてしまいます。
グローバルでの定義部分ではエラーは出てないものの、ちゃんと出来ているかも正直怪しいかもしれません。
何か良い方法は無いでしょうか?

930 :デフォルトの名無しさん:2009/02/16(月) 17:38:16
Visual C++ 6.0
Windoes XP Pro SP3
を使用しています。

グローバルに構造体を作って、クラス内でexturnをしようすると、
exturnのところでエラーが出て怒られてしまいます。
グローバルでの定義部分ではエラーは出てないものの、ちゃんと出来ているかも正直怪しいかもしれません。
何か良い方法は無いでしょうか?

931 :デフォルトの名無しさん:2009/02/16(月) 17:39:04
すいません、二重書き込みしてしまいました…

932 :デフォルトの名無しさん:2009/02/16(月) 17:41:01
しかもexternだろw

言いたいことがよくわからん。
どんなコードなんだ?

933 :デフォルトの名無しさん:2009/02/16(月) 18:10:00
>>932
すいません、externでした。

グローバルに
struct st{
char id[ID_SIZE];
char name[NAME_SIZE];
struct st *next;
};
と定義して、それをクラスAやクラスBで
extern struct st{
char id[ID_SIZE];
char name[NAME_SIZE];
struct st *next;
};
とすると、まず「空白の宣言が見つかりました。」というエラーが出て止まってしまいます。

拙い説明で申し訳ないです。

934 :デフォルトの名無しさん:2009/02/16(月) 18:23:03
まだわかんねー。
何がやりたいんだ。
構造体の定義と、変数の宣言とその変数のextern宣言が必要だが、そもそも変数(実体)がない。

935 :デフォルトの名無しさん:2009/02/16(月) 18:29:52
#include "st.h"
でいいんじゃないの?何がしたいのかまったくもってわからない。

936 :デフォルトの名無しさん:2009/02/16(月) 18:30:27
ageスマソ

937 :デフォルトの名無しさん:2009/02/16(月) 19:10:08
externでぐぐるぐらいしてから来たらいかがですかね
定義、宣言、参照について全く理解していない気がします。

938 :デフォルトの名無しさん:2009/02/16(月) 19:10:14
グローバルに構造体の型を宣言しています。
さらに、実体もグローバルに定義しています。

実体に値が入っていて、
その値をスレッド内でグローバルで定義した実体を通して
参照したいです。

グローバル変数を使う知識として、
externを付けることは知っているのですが、
そもそも、スレッド内からグローバルに定義した
構造体にアクセスできるかどうかわかりません。

何か方法がありましたら、教えてください。

>>935
やってみたのですが、そのようなヘッダはありませんと怒られてしまいました。

939 :デフォルトの名無しさん:2009/02/16(月) 19:14:55
あと、拙い説明にもかかわらず
ご返事いただきありがとうございます。

>>937
結構ぐぐったのですが私の理解力が足らず申し訳ございません・・・

940 :935:2009/02/16(月) 19:15:48
// FILE : st.h
struct st { ... };
extern st g_st;

// FILE : st.cpp
#incluede "st.h"
st g_st;

// FILE : a.h
#include "st.h"
class A { ... };

ってことね。とりあえず何を参考に勉強してるのかしりたい。

941 :デフォルトの名無しさん:2009/02/16(月) 20:08:02
すいません、聞きたいのですが。。。
Windowsファームアプリケーションを作成したのですが、ほかのPCで動作しません。
「このアプリケーションの構成が正しく・・・」と表示されます。
リリースコンパイルもしましたが動きません。
「プロパティ」の「C++」の「コード生成」の「ランタイムライブラリ」を「マルチスレッド」にすると、コンパイルすることができません。
いったいどうすれば動くのでしょうか?
ほかのPCに、ランタイムを入れない方法を探しています。
お願いします。

942 :デフォルトの名無しさん:2009/02/16(月) 20:34:19
>>941
×ファーム
○フォーム

純粋なWin32アプリや標準ライブラリだけを使うコンソールアプリなら
ライブラリを静的にリンクすればよいと思うけど、
Windowsフォームアプリケーションでランライムに依存しないのは無理じゃないの?

943 :デフォルトの名無しさん:2009/02/16(月) 21:04:01
> Windowsファームアプリケーション

C++/CLIだったりして・・・。そのPC、.netframework入れてないとかw

944 :デフォルトの名無しさん:2009/02/17(火) 07:42:27
>>941
>ランタイムを入れない方法を探しています。
無理
フォームアプリはランタイム(.NET Framwork)必須


945 :デフォルトの名無しさん:2009/02/17(火) 11:57:12
いろいろ試した結果、パスに日本語が入ってると読み込めないようです
どうすれば読み込めるようになりますか?
char fname[] = "C:\\テスト\\test.txt";
ifstream fin;
fin.open(fname);
char c;
while (fin.get(c)) {
printf("%c", c);
}
fin.close();
if (getch()) return 0;

946 :デフォルトの名無しさん:2009/02/17(火) 12:42:13
locale設定した?

947 :デフォルトの名無しさん:2009/02/17(火) 13:04:17
setlocale(LC_ALL, "japanese");
ifstream fin;
こうすれば読み込めるようになりました、ありがとうございます

948 :デフォルトの名無しさん:2009/02/17(火) 18:05:29
先物の夕場は証券自己とかの約定させる気のない発注・取り消しに個人が振り回されて
値がついてる感じだな

949 :デフォルトの名無しさん:2009/02/18(水) 00:28:05
VC++とVB&C#の違いは大まかに言うと
オブジェクト->プロパティ
オブジェクト.プロパティ
という理解でいいんでしょうか?

950 :デフォルトの名無しさん:2009/02/18(水) 00:29:58
出直して来い

951 :デフォルトの名無しさん:2009/02/18(水) 00:32:44
すごい理解

952 :デフォルトの名無しさん:2009/02/18(水) 15:46:47
>>949
親読んでこい
説教してやる

953 :デフォルトの名無しさん:2009/02/18(水) 17:59:43
VC++ 2005ExpressEditionでWin32アプリ作ってます。

int WINAPI WinMain( HINSTANCE hi, HINSTANCE hip, LPSTR sc, int ic )
{
   MSG    Msg;
   char    *str;
   memset( &Msg, 0, sizeof( MSG ) );


   return ( int )Msg.wParam;
}

strが0xcccccccc<不適切なPtr>となるのはなぜですか。
C++ならstring使えっていう事なんですか?

954 :デフォルトの名無しさん:2009/02/18(水) 18:01:33
何が疑問なのかわからん。
そのstrは単に初期化してないポインタだからそのままじゃ使えないだろう。

955 :デフォルトの名無しさん:2009/02/18(水) 18:02:27
strが初期化されていないから不定値。
デバッグ時に0xccで埋められてるだけ。
実際にアプリケーションを動かすと、不定値。

char *str = NULL;
とかで初期化する。

956 :デフォルトの名無しさん:2009/02/18(水) 18:10:20
なるほど。
newしてあげれば不適切Ptrではなくなるんですね。
ありがとうございます。


あのぉ。。。もひとつ疑問がでちゃったんですが、いいですか?

newして例外出てんのに期待通りの動作してるのはなぜですか
これが解決できたら1年ぐらいROMしときます。


957 :デフォルトの名無しさん:2009/02/18(水) 18:26:16
例外の内容によるでしょう。
具体的にコード出してこういう例外が出たと書いてくれないとわからんよ。

958 :デフォルトの名無しさん:2009/02/18(水) 18:35:51
>>956
>newしてあげれば不適切Ptrではなくなるんですね。
なんもわかってねぇじゃん
まず、入門書と紙と鉛筆用意して全文書き取りからはじめたほうがいいぞ

959 :デフォルトの名無しさん:2009/02/18(水) 19:22:49
すいません。3日かかってどうしても直らないエラーがあるので教えて下さい。

ビルドすると、
fatal error C1083: include ファイルを開けません。'afxwin.h': No such file or directory e:\visual studio 2005\projects\キャプチャ\irsystem\stdafx.h 43
というエラーが出ます。
環境は
Visual Studio 2005 Professional Edition sp1
OS:Vistaです。
Visual Stadio Professionalかつフルインストールしているので、
MFCが入っているはずなのですがどうしても動きません。
どなたかわかる方いらっしゃいますでしょうか。
わかる方がいましたら教えて下さい。


960 :デフォルトの名無しさん:2009/02/18(水) 19:42:35
>>959
うーん、なんかVC2008eeででるんと同じようなエラー内容だなぁ・・・
なんか設定する必要あんのかな?

961 :デフォルトの名無しさん:2009/02/18(水) 19:43:35
そのinclude文のとこ右クリックして開いてみ
それで見つからないならインクルードパスの設定すればいい

962 :デフォルトの名無しさん:2009/02/18(水) 19:52:04
ツール - オプション - プロジェクト - VC++ ディレクトリ で
「インクルード ファイル」の設定内容をチェック

バージョンの違いでちょっと文言が違う鴨試練

963 :デフォルトの名無しさん:2009/02/18(水) 20:03:24
http://support.microsoft.com/kb/320479/ja

これかなぁ・・・なんか違う?

964 :デフォルトの名無しさん:2009/02/18(水) 20:25:58
ライブラリのパスの直下のlibファイルはリンクできるのですが、
サブディレクトリのlibファイルは、下記のようにはリンクできないのですか?
OK #pragma comment(lib, "mylib.lib")
NG #pragma comment(lib, "lib/mylib2.lib")

965 :デフォルトの名無しさん:2009/02/18(水) 21:48:11
hhj


966 :デフォルトの名無しさん:2009/02/18(水) 22:07:10
#pragma comment(lib, "lib\\mylib2.lib")

967 :964:2009/02/18(水) 23:03:19
966
もちろんディレクトリ区切りを\\にしてもだめでした。
それにフルパスで記述したときに/で通るので、多分原因はそこではないと思います。
#pragma commentでライブラリファイルを指定するときに、サブディレクトリ内もちゃんと見るんですよね。
とりあえずそこの確認がほしいのです。

968 :デフォルトの名無しさん:2009/02/18(水) 23:24:34
自分のプログラムとしてはなんかlibに関してはプロジェクトに追加してるかどうかだなぁw
ヘッダ読んでpraguma云々の記述はlibファイルなんかねーとこ指してるけど動いてるw
って状況やってみそ
ヘッダとlibファイルのプロジェクトへの追加な

969 :デフォルトの名無しさん:2009/02/18(水) 23:40:56
./hoge/lib.lib

とかでもダメぽ?

970 :964:2009/02/19(木) 00:17:33
ファイルの階層はこんな感じです。
C:\MyLibrary  ←VC++ディレクトリ-ライブラリとインクルードの一番上で指定。
  mylib.lib
  lib
    mylib.h (#include <lib/mylib.h>は失敗しない)
    mylib.lib (上では区別のためにmylib2.libと書いたけど、コピーしたもの)
プロジェクト-リンカ-追加の依存ファイルで指定しても

1>LINK : fatal error LNK1104: ファイル 'lib/mylib.lib' を開くことができません。

と出ます。
./lib/mylib.libも同様にpragma でも依存ファイルの指定でも失敗しますorz

971 :デフォルトの名無しさん:2009/02/19(木) 01:19:58
まさか、lib\\mylib.h のなかに #pragma comment(lib, "lib/mylib.lib") って書いている
わけじゃないだろーな

972 :デフォルトの名無しさん:2009/02/19(木) 01:23:57
コンパイルしようとしてるソースファイルはどこなんだよ

973 :デフォルトの名無しさん:2009/02/19(木) 02:03:28
// main.cpp
// マイドキュメント-VS2008-Projects/Test/Test
// = プロジェクトディレクトリ
#include <lib/mylib.h> // OK
#pragma comment(lib, "lib/mylib.lib") // NG
//#pragma comment(lib, "C:/MyLib/lib/mylib.lib") // OK
//#pragma comment(lib, "mylib.lib") // OKだけど違うファイル
int main()
{
const int ret = test_func(2);
return 0;
}

// mylib.h
#pragma once
int test_func(int val);

//mylib.cpp
#include "mylib.h"
int test_func(int val) { return val * 100; }

改行を削るとこのような感じになります。
コンパイルすると970のエラーメッセージが出ます。。。
もう遅いし、解決できそうにないのであきらめてフルパスで書くことにします。
ありがとうございました。

974 :デフォルトの名無しさん:2009/02/19(木) 02:41:48
同名の違うファイルにパスが通ってるのも問題じゃないか

975 :デフォルトの名無しさん:2009/02/19(木) 03:16:25
つーか、自前のlibなら、#pragma comment(lib, "ほにゃらら")は ヘッダに書けよ。
したら、cpp にゃ、ヘッダをインクルードするだけで済むだろーが。

じゃないと、他のプロジェクトで mylib.h を使いまわす時に、lib をリンクし忘れるのがオチだ。

976 :デフォルトの名無しさん:2009/02/19(木) 05:36:29
>>970
あるよ。
以上。
↓次の方どうぞ

977 :デフォルトの名無しさん:2009/02/19(木) 11:22:48
>>926
このコードの真ん中って、「this->」いらなくない?

978 :デフォルトの名無しさん:2009/02/19(木) 11:24:50
>>977
TextBoxと紛らわしかったので、説明上念のためつけただけ。

979 :デフォルトの名無しさん:2009/02/19(木) 11:28:08
>>978
いや、エラーになるでしょ

980 :デフォルトの名無しさん:2009/02/19(木) 11:36:27
>>978

array<System::Windows::Forms::TextBox^>^ textBox;


ひょっとして、これだけ、違うところに記述するんですか?

981 :デフォルトの名無しさん:2009/02/19(木) 11:39:54
同じメソッド内に書いたらそこでしか使えないじゃない。
まあそれで済むならそれでいいけど。

982 :デフォルトの名無しさん:2009/02/19(木) 11:50:06
>>981
すみません。いけました。
ありがとうございます

983 :デフォルトの名無しさん:2009/02/19(木) 20:52:20


984 :デフォルトの名無しさん:2009/02/19(木) 22:37:44
471 名前: デフォルトの名無しさん [sage] 投稿日: 2009/02/17(火) 22:42:17
いいオカズがあったら教えてくださいm(_ _)m


472 名前: デフォルトの名無しさん 投稿日: 2009/02/17(火)23:51:34
>>471
http://images.google.co.jp/images?hl=ja&q=%E3%83%9E%E3%83%84%E3%82%B3%E3%83%87%E3%83%A9%E3%83%83%E3%82%AF%E3%82%B9&lr=&um=1&ie=UTF-8&sa=N&tab=wi


473 名前: デフォルトの名無しさん [sage] 投稿日: 2009/02/18(水) 00:13:42
>>472
すみません。いけました。
ありがとうございます

985 :デフォルトの名無しさん:2009/02/19(木) 23:21:11
このスレみて、誰も答えられない難題もあるんだなぁと思った
質問に対して、一切答えられないものもあると
それくらい難しいものなんだなぁ・・・

986 :デフォルトの名無しさん:2009/02/19(木) 23:24:45
質問内容がイミフでスルーされるときも

987 :デフォルトの名無しさん:2009/02/20(金) 00:06:45
オブジェクト指向で設計についての質問なのですが
void prefunc(INTF intf);
bool func(INTF intf , string str, RECT rect);
void postfunc(HINTF intf);

func(INTF intf, string str, RECT rect) {
    prefunc(intf);
    intf->func(str, rect);
    postfunc(intf);
}

void prefunc2(INTF intf);
bool func2(INTF intf, DWORD count, RECT rect, DWORD flags, DWORD color);
void postfunc(INTF intf);

といった関数があってprefunc,func,postfuncでセットになっています。
funcの第二引数以降の型や数は異なっています。
funcの処理の流れはどのセットでも一緒で類似している点が多いのでこれらの関数をクラス化したいと考えました。
prefunc,postfuncは小クラスで独自の処理を行うため↓には書いてませんがオーバーライドして実装しようとおもってます
class CParent {
public:
    virtual void prefunc(HANDLE handle);
    virtual bool func(HANDLE handle, ...);
    virtual void postfunc(HANDLE handle);
};
class CChild : public CParent {
public
    virtual bool func(HANDLE handle, ...);
};
のように可変引数を使って動くかどうかテストしてみて動いたんですが
可変引数を使ってオーバーライドする設計の仕方ってのは出来上がったソースの可読性も低くなるしこのまま実装していいのか悩んでいます
もっと良い方法はないでしょうか。

988 :デフォルトの名無しさん:2009/02/20(金) 07:28:22


989 :デフォルトの名無しさん:2009/02/20(金) 11:06:07
オブジェクト指向で設計するぐらいなら、どのスレで質問したらいいか良く考えろよ

990 :デフォルトの名無しさん:2009/02/20(金) 11:08:53
>>926
この手法を使えば、for文でテキストボックスから
値を収集できるんですね。
すごいです><

991 :デフォルトの名無しさん:2009/02/20(金) 15:13:18
textBox1が空白の時に、
a = this->textBox1->Text; でエラーが出るのを、

if(textBox1->Text != L""){a = this->textBox1->Text;}

じゃない方法でエラーが出ないようにできないですか?

992 :デフォルトの名無しさん:2009/02/20(金) 22:04:19


993 :デフォルトの名無しさん:2009/02/20(金) 23:27:30
if(textBox1->TextLength){a = this->textBox1->Text;}

994 :デフォルトの名無しさん:2009/02/21(土) 00:34:22
質問なのですが、
VisualC++ 6.0
Windows XP
SDIで、モードレスダイアログを生成しているのですが、
このダイアログからDocumentにアクセスの仕方が分かりません。
ご教授お願いします。

995 :デフォルトの名無しさん:2009/02/21(土) 01:37:27
VC2008 EE で
デフォルトの警告レベルを最大(4)に指定するにはどうすればよいですか?

996 :デフォルトの名無しさん:2009/02/21(土) 01:46:45
プロジェクトのプロパティ

997 :デフォルトの名無しさん:2009/02/21(土) 01:54:08
>>994
MFC なら MFC のスレで聴きな。このスレもう終わるし。

998 :デフォルトの名無しさん:2009/02/21(土) 07:07:53
>994
そのモードレスダイアログが誰の子か知らないけど
親もしくは親の知り合いがDocumentにアクセスできるはず
自分ひとりで全部やろうとしないで人間関係を大切にしよう

999 :デフォルトの名無しさん:2009/02/21(土) 09:36:52
999

1000 :デフォルトの名無しさん:2009/02/21(土) 09:37:57
1000

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

254 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)