08/12/11 11:42:17
>>330
ここなんかどうだろ?
URLリンク(www.ee.fukui-nct.ac.jp)
332:デフォルトの名無しさん
08/12/11 11:43:59
>>326
2つともよく分からないまま検索したらMOVEWinfowというのもあるみたいで、if関数を用いて頻繁に座標をずらし振動させることにしました。
こんなんでいいのかな??
マルチすいません。ありがとうございます。
333:M
08/12/11 11:48:46
>>331
ありがとうございます。
このプログラムをMFCのプログラムにどのように組み込めばいいのでしょうか?
あほな質問ですみません。。
334:デフォルトの名無しさん
08/12/11 12:55:47
>>333
WM_COMMANDメッセージでコマンドを受け取ったら、main関数の中身を実行すれば?
335:デフォルトの名無しさん
08/12/11 14:11:02
ファイルの読み書きとほとんど同じだな
やってる内容が理解できれば使えるだろ
336:M
08/12/11 14:27:45
>>334
それでやってみようと思います。ありがとうございました。
337:デフォルトの名無しさん
08/12/11 16:38:53
VC++2008使ってます
LogItemという独自クラスを作り、
LogItem item;
ListBox.add(item);
といったことしてます(単なるリストボックスへの追記)。
表示を変更する際に、
ListBox.add(~.format("{1}・・・",item.name,・・・))
等とすると、今度は削除時にいろいろ面倒です。
表示を適切に変更できるものの、削除時は、
ListBox.remove(item)でいけるような
(追記時の表示に依存しないような)
簡単な方法はご存じありませんか?
参考になりそうなサイトやキーワードを
教えていただければ幸いです。
338:デフォルトの名無しさん
08/12/11 16:41:26
16ピンのPIC16F819のPICを利用してサーボモータや光電センサー、ディスプレイを制御したいのですがBASICのプログラムが分かりません
サーボモータは Futaba S3002 を使用
・計7個のサーボモータ使用
・ボタンを押して入力したものをサーボモータに出力〔右に90度⇒左に90度〕
光電センサーは鏡とセンサーの間を通過するのを検出するもので omron E3R-R2E4 を使用
・コインを検出してカウントする
・6個使用
ディスプレイは数字と文字の両方を表示したいです
まとめると、コインを光電センサで検出してその検出したコインをディスプレイに表示する。たまボタンを押すとサーボモータが回転
するものを作りたいです。
この動作をBASICのブログラムで制御させるには、どのようなプログラムにすればいいですか
339:デフォルトの名無しさん
08/12/11 16:43:58
>>338
ここはBASICのスレでもPICのスレでもない。
340:デフォルトの名無しさん
08/12/11 19:13:55
337です。
自己解決しました。単なる調査不足&ありがちな混乱、でした
※ToStringをオーバーライドすればいいんですね・・・。
ってか。
質問の大半も意味不明でした。正確には「リストボックスにオブジェクトを
そのまま追加した時に、表示のみを変更できるようにしたい。」とすれば
よかったんでしょうね・・。
お騒がせいたしました。ほかに困っている人の助けになれば幸いです^^;
341:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/12/12 16:23:46
pictureBox1->Image = Image::FromHbitmap(bmp.GetHbitmap());とかでどう?
343:デフォルトの名無しさん
08/12/12 17:44:23
すいません。C++でint型の変数ををchar型の配列にキャストして入れる方法ってどうやるのですか?
int iAnswer = 0;
int i = 0;
char ChAnswer[256];
ChAnswer = (char)i;
とやっているのですが、変換できないといわれます。
344:デフォルトの名無しさん
08/12/12 17:46:28
ChAnswer[0] = (char)i; じゃないの?
345:デフォルトの名無しさん
08/12/12 17:51:27
>>344
それだと、例えば123を変換した場合、1だけ変換ということになりそうな気がするのですが・・・違いますか?
346:デフォルトの名無しさん
08/12/12 18:00:16
>>345
何でそう思うのか、、もっと基礎からやり直すか
具体的にやりたいこと書いて手取り足取り教わるしかないと思うよ。
347:デフォルトの名無しさん
08/12/12 18:02:26
>>346
すいません。よく考えてたら頭の中にあったものが2次元配列でした・・・それにしても変な考えですけど。
逝ってきます。
348:デフォルトの名無しさん
08/12/13 00:30:18
エスパー回答で言わせてもらえばsprintf()使えばいいと思うよ
349:341
08/12/13 07:31:03
>>342
それでできました!
ありがとうございました!!
しかし、.NET環境でもWin32apiレベルのビットマップハンドルを意識した記述をしないと
いけないのはどうなのかと思いました・・・
C++ Builderはもっとシンプルになりますし・・・
350:デフォルトの名無しさん
08/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
08/12/14 00:49:49
>>350
.NETでのハンドルという概念があるんですね。
勉強になりました。
ありがとうございました。
352:デフォルトの名無しさん
08/12/14 03:25:51
VC2008EEで↓がコンパイルできるようにする
やり方を教えてください。
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR pCmdLine, int showCmd)
{
return 0;
}
353:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/12/14 03:36:58
>>353
WINAPIが定義されてないっぽい感じのエラーメッセージだけど、
windows.hはインクルードされてるしなぁ。
355:デフォルトの名無しさん
08/12/14 03:49:57
>>352
普通にコンパイル通ったよ
プロジェクトの作成の仕方じゃないの?
ファイル→新規作成→プロジェクトの種類→Win32→Win32プロジェクト
356:デフォルトの名無しさん
08/12/14 12:25:43
Vc++2008でプロジェクトを開いた時に、
▲ InteliSenseデータベースファイル C\......\Visual Studio\Projects|\ソリューションフォルダ\ソリューション.ncb を書き込み用に開けなかったため、
InteliSense 情報は VC++プロジェクトにりようできません。
ソリューションディレクトリが読み取り専用である場合、他の機能にも影響を及ぼします。
ってダイアログ出て、関数の引数とかが表示されなくなってしまいました。
フォルダの属性変えてみようとしたんだけど読み取り属性外せなくなったんですが、対処方ありますか?
他のソリューションでは問題ありません。ファイル壊れた?
357:デフォルトの名無しさん
08/12/14 17:24:46
メッセージの通りだろ
358:デフォルトの名無しさん
08/12/14 18:02:51
ncb ファイル消せばいい。
359:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/12/15 10:52:55
何がしりたいのかわからん。
登録したウィンドウクラスにプロシージャも入ってるだろう。
でも同じプロセス内で差し替えできるから作った時期で違うようにはできる。
362:360
08/12/15 11:38:13
ごめん、無かったことにして。
363:デフォルトの名無しさん
08/12/15 17:35:59
>>359
さらに別のだれかがサブクラス化しているなどといったこともあるから、
一般に同じと仮定することは危険。
ウィンドウハンドルと元のウィンドウプロシージャのどれとどれが対応するのか
分かるように保存しておけば、それぞれのアドレスが異なっていても
同じウィンドウプロシージャでサブクラス化できるはずだ。
364:デフォルトの名無しさん
08/12/15 22:35:59
3×n行のCSVファイルを読み込んで内部テーブル(?)にして、
後からそれを1行ずつ抽出してその項目を使って別の処理をするように今あるプログラムを書き換えたい。
VC++2005、WindowsXPで作業してます。
かなりの初心者ですがどうぞよろしくお願いします。
365:デフォルトの名無しさん
08/12/15 22:41:01
宿題なら宿題スレで一発ですよ。
そうでないなら、どこは分かるけどどこが分からないというのをもっとはっきりさせてください。
366:デフォルトの名無しさん
08/12/15 22:53:16
宿題じゃないんす・・・仕事なんですw
CArrayとか使ってみたんだけど、なかなかうまくいかず・・・
あと、内部テーブルを1行ずつ読み込んでループさせる方法がよくわからん。
レベル低い質問で申し訳ないです
367:デフォルトの名無しさん
08/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:つづき
08/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:デフォルトの名無しさん
08/12/16 00:38:08
普通に配列をnewして入れてけばいいじゃんか
370:デフォルトの名無しさん
08/12/16 00:46:41
ありがとう。
でもほんと全然わかんないんだw
もうちょっと詳しく書いてくれると助かります。
ごめんな
371:デフォルトの名無しさん
08/12/16 00:53:34
コレクションクラスが使えるようになったほうがいいと思うけどねぇ・・
まずどこに入れたいのか、入れ物を定義しなさいよ。
372:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/12/16 01:14:20
二次元配列にしたいって書いてるけど3つのフィールドは文字列文字列整数なんだよね?
とりあえずその3つが入るクラスを定義して、それの配列なりArrayなりつくって入れてけばいい。
長さわからんなら、数える手段を考えるか随時伸びるようにすればいい。
374:デフォルトの名無しさん
08/12/16 01:19:27
そう、そうなんだけどそのやり方がわかんないんです。
ほんとすいません。。
375:デフォルトの名無しさん
08/12/16 01:30:52
クラスの定義ってこういう感じ?
public:
void SetLogKindForSearch( CString sLogKindForSearch );
void SetServerNamesForSearch( CString sServerNamesForSearch );
int SetSerachLength( INT sSearchLength );
だが、配列にしていく方法はさっぱりだぜ・・・
376:デフォルトの名無しさん
08/12/16 02:56:10
CArrayを先頭につければいいのかな?
だかフィールド3つで下に続いていくようにする方法がわからぬ・・・
377:デフォルトの名無しさん
08/12/16 04:03:43
CMapStringObからCArrayに引数を変換できないっていうエラーが出るんだが、
意味が全くわからん・・・
誰も起きてないかこんな時間・・・
378:デフォルトの名無しさん
08/12/16 05:59:41
言語の文法をろくに知らずにプログラムを書こうなんて、普通に不可能。
まず入門書を一通り読め。
379:デフォルトの名無しさん
08/12/16 07:01:34
そんな時間がないのでご助力をお願いしているのです。。
380:デフォルトの名無しさん
08/12/16 08:54:27
>>363
㌧。
ボタンのプロシージャはどれでも良いからボタンに返せばいいんですね。
381:デフォルトの名無しさん
08/12/16 11:50:08
>>379
みんな冷たいよな。
まずはここを見て書き方を勉強する。
URLリンク(2hyo.com)
382:デフォルトの名無しさん
08/12/16 14:18:46
仕事の話を2chで聞くとか信じられんわ……。
383:デフォルトの名無しさん
08/12/16 15:04:12
文字をドラッグで選択するとその部分が反転するプログラムを作りたいのですが、
マウスのクリックで範囲のポジションを取得して選択範囲は取得できたのですが、
反転をどうやればいいのかがわかりません。アドバイスお願いします。
384:デフォルトの名無しさん
08/12/16 15:05:18
まあ自分でコード書いて出してくれてるから対応はしやすいんだが、
出してくるコードが頓珍漢すぎてどこから説明したもんかわからんのだよ。
自分で理解してる範囲で書いてくれればいいんだが、適当にあちこちから断片集めてみました
というコードじゃ直しようもない・・・
仕様書いて0から起こしたほうがまだましだな・・
385:デフォルトの名無しさん
08/12/16 15:08:07
>>383
反転する前の表示はどうやってんのさ。
TextColorとBackColor入れ替えて書いてみるとか、
システムの標準の色から持ってきてそれで書いてみるとか。
386:デフォルトの名無しさん
08/12/16 15:16:20
>>385
元描画がいじれないとして、上から被せるような、CWndまでおおげさじゃなくてもいいんですが、
レイヤー的なもので半透明領域をかぶせられる関数は用意されていないでしょうか?
387:デフォルトの名無しさん
08/12/16 15:27:11
>>386
そんなのないと思うけど、、、再描画とかどうすんのさ。
いんちきだが、PatBlt()でDSTINVERTで反転とかどうよ。
388:デフォルトの名無しさん
08/12/16 16:48:52
なるどほ、元が動くと四角が付いてこないので被せるのは厳しいですね。
元をハッキングする方向にきりかえようとおもいます。ありがとうございました。
389:デフォルトの名無しさん
08/12/16 17:51:24
C++でint型変数の値をchar型に変換したいのですが、普通にキャストしてもエラーが出ます
どうしたらいいのでしょう?
390:デフォルトの名無しさん
08/12/16 17:55:03
char配列の文字列にしたいと言っているのであれば、
ostringstreamか何かでstringにしてc_str()で取り出すとか、
あるいはsprintfなど。
391:デフォルトの名無しさん
08/12/16 18:03:23
ありがとうございます。試してみます
392:デフォルトの名無しさん
08/12/16 20:00:10
林晴比古氏のVisualC++のビギナー編を買ったのですが、自分の開発環境がexpress editionなのでMFCがありません。
サンプルがほぼMFCなので無駄な買い物をしてしまった…と見ていいのでしょうか?
他に手があるのでしょうか?
393:デフォルトの名無しさん
08/12/16 20:43:46
かわいそう・・・
仲間だからわかる・・・
394:デフォルトの名無しさん
08/12/16 20:47:06
やはり無理でしたか…
VisualStudioの基本的な操作を覚えるには役に立ちますよね?
お互いがんばりましょう。
395:デフォルトの名無しさん
08/12/16 21:29:59
まったく役に立たないと思います。
MFCが使えるようになってからも役に立たない本でした。
林晴比古のC++シニア上下は、ぼろぼろになった今でも時々読みます。
URLリンク(www.kumei.ne.jp)
自分はMFCからなのですが、ここのWinAPIの最初の方だけ読んで一日でMFC使わないソフトも作れました。
396:デフォルトの名無しさん
08/12/16 21:45:26
最近の林本は.netのサンプルものってたような気がしたけど
397:デフォルトの名無しさん
08/12/16 21:56:27
>>395
そちらを買うか林氏の本を買うかで悩んでたんです。そちらのほうがよかったのですね!
>>396
.netのサンプルとは例えばどのようなものでしょう?
398:デフォルトの名無しさん
08/12/16 22:22:29
ソフトの操作だけなら林本でいいと思う
399:デフォルトの名無しさん
08/12/16 22:31:09
>>398
そう言ってもらえると助かります!
みっちり操作を体に叩き込みたいと思います!
400:デフォルトの名無しさん
08/12/16 23:27:36
MFCを使えるバージョンってどれですか
無償版では使えないらしいので購入しようと思います
MFCを使えるバージョンと購入方法と価格を教えてください
401:M
08/12/16 23:30:14
C++でのラベリングで下のような場合で、簡単なプログラムのやり方を教えてくれませんか?
11111111
11111
1111111111
1111111
11111111
1 1 2222
2222
222222
402:デフォルトの名無しさん
08/12/16 23:33:06
MFCは全てのバージョンで使える
403:デフォルトの名無しさん
08/12/16 23:46:58
>>400
URLリンク(kakaku.com)
404:デフォルトの名無しさん
08/12/17 09:30:25
2003以前のバージョンなら確実に使える
405:デフォルトの名無しさん
08/12/17 19:36:51
上級者向けの本ってあるんですか?
406:デフォルトの名無しさん
08/12/17 20:03:15
>>400です
>>403さん
スタンダードバージョンでMFC使えるんですね
アマゾンで28000円かぁ
少々きつい出費になりますが
どうしても作ってみたいものがあるので思い切って購入しようと思います
詳しくありがとうございました
ヤマダ電機では売っていないのかなあ?
ヤマダポイント約6000円持ってるんだよね^^;
教えてくれてありがとうでした
407:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/12/17 21:03:02
>>408のつづき。
ビルトをするとtest_Aは成功、test_Bは失敗します。ただし、一回目のビルドで
両方とも成功しているのに、その後同じ内容で二回目のビルドを行うと
やはりtest_Bだけ失敗するようになる、という場合もあります。
↓ ↓ ↓
fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。
どこが原因なのか分かりません。
410:デフォルトの名無しさん
08/12/17 21:12:24
>>406
こうして2005Express Editionからアップグレードできることを知らない情弱が
今日も通常版を買っていくのであった・・・
URLリンク(www.microsoft.com)
411:デフォルトの名無しさん
08/12/17 21:35:52
げっ・・・・・・プロジェクト→クラスの追加、でやってみたら、なんとなく
やらなければいけないことが分かりました・・・・・・・・orz
412:デフォルトの名無しさん
08/12/17 21:42:50
>>408,409
// test_1.cpp
#include "test_2.cpp" // ←LINK1169
"test_2.cpp"をプロジェクトから除外するか、上記をコメントアウトすれば解決する。
413:デフォルトの名無しさん
08/12/17 22:53:48
>>412
_tmainでtest_Bが使えませんが・・・。
414:デフォルトの名無しさん
08/12/17 23:12:06
>>413
test_2.cppをプロジェクトから除外すれば使える。
415:デフォルトの名無しさん
08/12/17 23:22:12
>>414
「プロジェクトの外部」って扱いにしてから、呼び出すんですね?
416:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/12/17 23:51:08
ありがとうございました。
初歩の初歩でした。
418:デフォルトの名無しさん
08/12/18 04:18:43
cppをインクルードする奴ってキモチワルイ
あとヘッダに関数の中身定義する奴も同様にキモイ
419:デフォルトの名無しさん
08/12/18 05:05:35
>>418
template関数全否定ですね、わかります
420:デフォルトの名無しさん
08/12/18 09:59:14
>>410
というわりにはExpression Blend 2のアップグレードが割引率高くて安いうえに
VS2008Stdが入ってるのは教えてあげないのね。
421:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/12/18 11:49:24
C++なのにprintfなんだ・・・
423:デフォルトの名無しさん
08/12/18 11:52:05
>>421
i > 0
にしろ
それとi = 0は必要なのかね
424:デフォルトの名無しさん
08/12/18 11:52:40
すみません。書き間違いです
コンパイラがC++で、書いてるのはCです
425:デフォルトの名無しさん
08/12/18 11:55:33
おお、いつのまに符号逆に・・・・最初は使えていたのにおかしいと思いました。すみませんありがとうございます
i = 0 はなんとなく癖です
426:デフォルトの名無しさん
08/12/18 12:00:53
下らないかもしれないけど、助けて下さい・・・。
VS2008でC++作ってます。
Irvineとかそういうダウンローダーでよくあるグリッドの入ったリストを作りたいんだけど、そのパーツ?コンポーネント?の名前さえも全くわからず・・・。
ToolBoxでコレだよ、的なもので良いので教えて下さい。
427:デフォルトの名無しさん
08/12/18 12:28:37
>>426
Microsoft DataGrid コントロール
ActiveXのやつ
428:デフォルトの名無しさん
08/12/18 12:31:39
ってIrvineとかそういうダウンローダーを知らないんだけど
LisiViewコントロールじゃだめなんかな?
429:デフォルトの名無しさん
08/12/18 12:35:23
ListViewってアイテムごとに枠がつかなくないか?エクセルみたいに
430:デフォルトの名無しさん
08/12/18 12:45:03
>>427
ありです。ちょっと試してみますー。
431:426
08/12/18 12:55:29
出来たけどRowの部分に出てるのが気になる・・・orz
>>429
Excelみたいに各セルが選択できるタイプじゃなくて、選択の対象が行単位で出来るものが良いんですよね。
今ちょうど見たら良い例があったので出してみると、ギコナビの板の中身の表示部分(スレッド一覧)とか。
それにグリッドがついたようなものが欲しいです。
色々と足りてなくて申し訳ない・・・orz
432:デフォルトの名無しさん
08/12/18 13:01:10
リソースのストリングテーブルって1つ以上作れないんですが、
文字列をまとめて入れ替えたい場合はどうすればいいんですか?
もしかして全てのloadstringの行でIDSを分岐させてるんですか?
433:あ
08/12/18 13:12:37
>>432
IDをずらす
LoadString(hInstance, IDS_MYSTRING + (f ? 10000 : 0), sz, 256);
434:デフォルトの名無しさん
08/12/18 14:04:50
えーまじですか・・・
めちゃくちゃloadStringあるんですけど・・・テーブル切り替えでがいいです!!!
435:デフォルトの名無しさん
08/12/18 14:10:49
DLL単位で作って切り替えるとか
436:デフォルトの名無しさん
08/12/18 14:15:33
おーーーthx!DLLで検索したら出てきましたよ!
437:デフォルトの名無しさん
08/12/18 14:26:36
Irvineはソース公開されてる
438:デフォルトの名無しさん
08/12/18 14:59:50
カスタムコントロールを派生させたいんですが、これ基本クラスなんですか?
CCustamCtrlとかないんですが
439:デフォルトの名無しさん
08/12/18 15:04:26
MFCの話?
コントロールはCWndから派生
440:デフォルトの名無しさん
08/12/18 15:19:02
カスタムコントロール自体のクラス名は何ですか?
441:デフォルトの名無しさん
08/12/18 15:23:54
>>440
Static
442:デフォルトの名無しさん
08/12/18 16:11:22
そういうことかありがと
443:デフォルトの名無しさん
08/12/18 16:57:44
マクロで選択範囲の前と後に文字列を入れるにはどう書けばいいですか?
"test"
を選択してマクロ実行すると
_T("test")
になるようにしたいんです。
一度左に行って _T( を挿入するまでは出来るんですが、選択範囲が消えて ) を入れる位置がわからなくなります
444:デフォルトの名無しさん
08/12/18 17:04:48
馬鹿でした。コピーしたらできました
DTE.ActiveDocument.Selection.Copy()
DTE.ActiveDocument.Selection.Text = "_T()"
DTE.ActiveDocument.Selection.CharLeft()
DTE.ActiveDocument.Selection.Paste()
445:デフォルトの名無しさん
08/12/18 18:56:57
スタティックコントロールの背景を変えたいのですが、
CStaticの派生クラスのOnPaintの中で
void CStaticEX::OnPaint()
{
CPaintDC dc(this); // device context for painting
dc.SetBkColor(RGB(20,30,100));
}
と書いたのですが、背景色が変わりません。これどこがいけないんでしょうか?
446:デフォルトの名無しさん
08/12/18 19:05:11
CPaintDC dc(this);
447:デフォルトの名無しさん
08/12/18 19:54:47
>>431
やっぱListViewじゃない?
ListView_SetExtendedListViewStyle(hListView, LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
みたいな。
「リストビュー 拡張スタイル」でぐぐってみたら?
448:デフォルトの名無しさん
08/12/18 20:56:50
他のダイアログボックスのオーバーライドOnOK関数呼び出しを、インテリセンスでは通っているのに
コンパイルエラーでメンバでは無いといわれるのはなぜですか?
449:デフォルトの名無しさん
08/12/18 21:04:15
メンバでは無いから
450:デフォルトの名無しさん
08/12/18 21:22:04
もちろんメンバ関数として作成してインテリセンスでも通ってるんです。
451:デフォルトの名無しさん
08/12/18 22:03:52
インテリセンスがそんなに賢かったらコンパイルする必要ない
452:デフォルトの名無しさん
08/12/19 00:26:34
>>445
PAINTSTRUCT ps;
CDC* pDC = BeginPaint(&ps); にする。
もっとも、そんなことしなくても、スタティックコントロールの背景色の変更は、
親ウィンドウの CWnd::OnCtlColor() で簡単にできるんだが・・・。
453:デフォルトの名無しさん
08/12/19 00:35:14
すみません、このスレでいいのか分からないんですが、質問させてください。
全くのプログラム初心者に近い人間で、HSPをちょっと触ったことがある程度なんですが
C++を使ってみたいと思いました。
色々なサイトを回ってみたりしたのですが
開発環境の作り方がさっぱりわかりませんでした・・・orz
URLリンク(codezine.jp)
このページを参考に物を作りつつ勉強していこうと思ったのですが
最初の一歩目で躓きましたorz
どこか環境の作り方などが載っているサイトなどがあれば教えて頂けないでしょうか。
もし書き込むスレッドが間違っていたら教えて頂きたいです。
宜しくお願いします。
454:デフォルトの名無しさん
08/12/19 01:30:29
まずは窓のそばに観葉植物を置いて・・・。
という話じゃないとは思うんだが、開発環境って具体的には何を指してるんだ?
455:デフォルトの名無しさん
08/12/19 02:52:51
>>452
ありがとうございました。Ctlも調べてみますどうもです
456:デフォルトの名無しさん
08/12/19 23:29:36
>>453
エスパー的に答えれば
フリーのVisual C++ 2008 Expressをダウンロードしてインスコ(環境出来上がり)
でもそのレベルじゃ記事読んでも理解できないから
Cはある程度わかっているとして
猫でも読んでWin32APIの基本は少なくとも勉強する
メッセージループ プロシージャなど
ってことでOK?
457:デフォルトの名無しさん
08/12/19 23:39:56
今、猫でもわかるのCのところを見てみたら、スクリーンショットがVCの1.5とかそのあたりのやつじゃないか。
書かれたの、10年以上前だし。
URLリンク(www.amazon.co.jp)
URLリンク(www.amazon.co.jp)
↑このあたりの本でも買って勉強したほうがいいんじゃね?
458:デフォルトの名無しさん
08/12/19 23:47:01
その辺のってCLI系のヤツだろ
それやるならC#でよいと思うがな
個人的には色々本買うより
初心者であってもCがある程度分かってるなら
Petzold本読むのを進める
459:デフォルトの名無しさん
08/12/19 23:52:53
>>458
ああ、本当だ。.NET Frameworkって内容紹介に書いてあるな。
でもHSPをちょっとかじった程度だと、プログラミングWindowsとかムリだろ。
460:デフォルトの名無しさん
08/12/20 00:39:07
Express Edition
c++ です。
フォームアプリケーションでファイルを開いて、フルパスからファイル名を抽出しようとしていて、
ググったところ、char ポインタ型で抽出していたので、System::Stringをcharポインタ型に変換してから抽出したのですが、実際に何度か連続で実行したところ
エラーが発生しました。恐らくポインタの開放か初期化でミスってると思うんですが…
ケータイからなのでソースは勘弁していただきたいので、System::String で直接ファイル名を抽出できないでしょうか?
スレ汚しすいません。
461:デフォルトの名無しさん
08/12/20 00:41:58
>>460 です。
VisualStudio2008と書くのを忘れていました
462:デフォルトの名無しさん
08/12/20 01:19:27
>>460
System::String は使ったことがないので考え方だけ。以下のコードでできるかどうかは不明。
文字列の最後に出てくる \ の位置を求めて、先頭からその位置までの文字列をばっさり捨ててる・・・つもり。
検証は、まかせる。(笑)
String filename = pathname.Remove( 0, pathname.LastIndexOf('\\')); // pathname は フルパスが入っている String
463:デフォルトの名無しさん
08/12/20 01:37:27
>>462
最後の¥が残ってしまったものの抽出自体は成功しています!
後は自力でできそうです!
わずか一行で実装できるとは思いませんでした。
ありがとうございます。
464:デフォルトの名無しさん
08/12/20 01:39:31
System::IO::Path::GetFileName使えばいいだけの話じゃないの?
465:デフォルトの名無しさん
08/12/20 01:47:13
>>464
そんな便利な関数あったんですね…
すいません調べ不足でした。
>>463
ちなみに先ほどのは、ラストの¥の位置を表しているのでインクリメントしてあげれば解決しましたね。
お二方ありがとうございました。
466:デフォルトの名無しさん
08/12/20 02:52:40
>>463
>後は自力でできそうです!
そりゃできるだろ。^^;
String filename = pathname.Remove( 0, pathname.LastIndexOf('\\') + 1); // + 1 を追加
たったこれだけの修正ができなかったら、C++を勉強する前に
まずはCの基本から身につけたほうがいいと思うぞ。
467:デフォルトの名無しさん
08/12/20 19:56:30
VisualStudio2008
express、Windowsフォームです。
一つのイベントに対して複数のイベントを組むのは、どうすればいいのでしょうか。
具体的にはtoolStripのButtonをクリックした時に、名前をつけて保存と上書き保存と切り替えたいのですが…
468:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/12/21 00:40:30
>>468
[構成プロパティ]-[全般]-[文字セット]がUnicodeがどうのこうのってなってね?
マルチバイトがどうのこうのってのに設定すれば多分動くんじゃね?
470:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/12/21 19:25:33
>>470
SetWindowLongPtr
GCLP_ HBRBACKGROUND
472:デフォルトの名無しさん
08/12/21 19:33:26
void型の構造体からデータを取得したいのですがやり方がわかりません教えて
473:デフォルトの名無しさん
08/12/21 21:07:43
VS2005もしくはVC++6.0でリソース(ダイアログ、アイコンなど)を編集する実行ファイルの名前はなんなんですか?
474:デフォルトの名無しさん
08/12/21 21:23:56
msdev.exe
475:デフォルトの名無しさん
08/12/21 21:27:06
VS2008です。
右にTextBox(MainText)、左にパネル、パネルの上にTextBox(LineText)
LineTextにはMainTextの行数を表示してあります。
こんな風↓
パネル|MainText
1 |文字
2 |文字
3 |文字
でMainTextがスクロールするときには、同時にパネルをスクロールしたほうが、いいでしょうか?
LineTextをスクロールしたほうがいいでしょうか?
また、どうスクロールしたらいいでしょうか?
476:デフォルトの名無しさん
08/12/21 22:49:13
>>474
VS2003も?
477:470
08/12/21 23:15:22
>>471
サンクス。
478:デフォルトの名無しさん
08/12/22 03:52:50
453です。暫く忙しくてPC触れず、返信が遅れました、すみません。
>>454
すみません、言葉が足らなかったようで。
開発支援ソフトというか、ソースを書いて、実行して・・・という動作を行うソフトを探していました。
こういったソフトを何というか、用語等が分からなくて・・・すみません。
>>456
直感で欲しかった返答を頂き、有難うございます。
少しずつ調べていく感じで、時間がかかっても一歩ずつ進んでいこうと思います。
>>457,458,459
参考書を探してみたのですが、書店で見てもイマイチどれがいいのか分からなくて・・・
購入して意味が分からない、というのも問題だと思ったのでいろいろネットを見回っていました。
Petzoldという本がどれかは分からないのですが、また今度探してみようと思います。
皆様、返信ありがとうございました。
試行錯誤で少しずつ勉強してみようと思います。
479:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/12/22 09:51:36
InsertItemの引数
481:デフォルトの名無しさん
08/12/22 10:41:23
すいません忘れてました。
m_ListCtrl.InsertItem(0, _T("TEST"), 2); // BMPの3つ目のイメージを期待
Insertはこうかいてます
482:デフォルトの名無しさん
08/12/22 10:57:31
SetImageList()呼んでないんじゃない?
483:デフォルトの名無しさん
08/12/22 10:58:50
つーか、ヘッダに載せたいの?
484:デフォルトの名無しさん
08/12/22 11:20:43
確認しましたが、SetImageListは呼んでません
リストコントロールの0列目の頭にアイコンを付けたいんです。
BMPは16で区切って8インデックスあるので
2番目は空では無いとおもうんです
485:デフォルトの名無しさん
08/12/22 11:30:14
いや、ちょっと使い方に問題があると思うけどアイコンなくっても
アイコンのある筈の場所が空白になるだけだから、それは確認できるはず。
で、
m_ListCtrl.GetHeaderCtrl()->SetImageList(&m_Images);
これは
m_ListCtrl.SetImageList(&m_Images);
じゃないのか?
486:デフォルトの名無しさん
08/12/22 11:31:41
m_ListCtrl.SetImageList(&m_Images, LVSIL_SMALL);
こうか
487:デフォルトの名無しさん
08/12/22 11:39:19
うおーーーできたーー
GetHeaderってなんだったんだーーーー
ありがとう。まじありがとう。
無駄に難しくはまり込んでいた・・・
488:デフォルトの名無しさん
08/12/22 20:19:26
VCで作ったwindowsのプログラムを全く別のパソコンで動かすにはどうしたらいいのでしょう?
ソリューション構成のとこをreleaseにして、できたexeファイルと画像と音声リソースを
同じディレクトリに入れて、USBメモリで他のパソコンに移して実行しても、
アプリケーションの構成が正しくないとかいうエラーが出てしまいます。
どなたかアドバイスお願いします
489:デフォルトの名無しさん
08/12/22 20:22:15
まずは、正確なメッセージを貼るところから始めよう。
490:デフォルトの名無しさん
08/12/22 20:23:37
次に、そのメッセージでググってみよう。
491:デフォルトの名無しさん
08/12/22 20:26:05
アプリケーションをスタティックリンクするか、「他のパソコン」にランタイムをインストールするといいかも。
492:デフォルトの名無しさん
08/12/22 21:11:11
ググッてみたら解決方法がいっぱい出てきました。
出てきたページを参考にランタイムを入れてみようと思います。
ありがとうございましまろ
493:デフォルトの名無しさん
08/12/22 22:48:23
>>478
プログラミングWindows 第5版 (Charles Petzold著)
Win32APIを勉強する上ではバイブル的本だと思うが
君が理解できるかどうかは俺にはわからん
ただ訳もよくできてるから 初心者が読んでても結構楽しいぜ
それなりの値段だから 大きめの本屋で目を通してみると良い
とりあえず上巻だけでOK
494:デフォルトの名無しさん
08/12/22 23:55:22
VC++2003を使用しています
テキストファイルやmp3等のリソースエディタでは埋め込みが不可能なものを
リソースとして埋め込み、使用するにはどのようにしたらいいのでしょうか
ググった所ビルドアクションを埋め込まれたリソースにするという事はわかったのですが、
追加したファイルのプロパティを確認しても項目がその他しか出ていませんでした
どうかよろしくお願いします
495:デフォルトの名無しさん
08/12/23 00:01:29
VisualStudio2008 c++ です。
Regex::Matchesでパターンマッチした文字の位置を取得して、その列をSelectにすることできる?
ABC
ABC
ABC
↑これでAをMatchesで取得したとして、3つ目のAを指定したら3列目が選択される。みたいに
わかりにくくてごめん。
496:デフォルトの名無しさん
08/12/23 00:20:34
>>494
「カスタムリソース」でググってみ。
497:デフォルトの名無しさん
08/12/23 01:22:00
>>496
カスタムリソースで調べてやってみたら埋め込みリソースが成功しました
本当にありがとうございます
498:デフォルトの名無しさん
08/12/23 22:33:03
VC++上でコンソールアプリケーションを実行したときに
printf()の出力先(標準出力)を、VC++の出力窓にすることはできます?
(OutputDebugString()を使わずに・・・)
499:デフォルトの名無しさん
08/12/23 23:10:04
printfってオーバーライドできたっけ?
500:デフォルトの名無しさん
08/12/23 23:12:56
>>498
標準出力の出力先はSetStdHandle()で切り替えられるけど、VCの出力窓のハンドルって取得できるのかな?
調べたらできるかもしれない。
501:デフォルトの名無しさん
08/12/23 23:18:42
なんでんなこと死体んだ
502:デフォルトの名無しさん
08/12/23 23:19:09
>>498
printfをオーバーライドして中身にOutputDebugString書いちゃ駄目なの?
あくまでOutputDebugStringは使っちゃ駄目?
503:デフォルトの名無しさん
08/12/23 23:26:20
Regex::Matchesで検索した文字列の位置って、Forで地道に文字数カウントしかないの?
MatchCollectionのメンバで位置取得とかできないの?
504:デフォルトの名無しさん
08/12/24 03:17:52
#define printf (vsprintfしてOutputDebugStringする自作関数)
505:デフォルトの名無しさん
08/12/24 04:24:18
自己解決した。スマソ
506:デフォルトの名無しさん
08/12/25 13:21:28
質問です。
Visual C++ 2005 Expressを使っているのですが、
EXEファイルのプロパティから見られる「バージョン情報」を追加するには
どうすればいいんでしょうか?
507:デフォルトの名無しさん
08/12/25 14:14:08
>>506
リソースファイルを作ればいい
URLリンク(marigold.sakura.ne.jp)
508:デフォルトの名無しさん
08/12/25 19:49:37
>>507
ありがとうございます。そちらを参考にして一応設定し、「バージョン情報」タブが
表示されるようになりました。
ですが、何も設定していないのに「言語」という項目が「英語(米国)」という値で
自動的に設定されてしまうのですが、この「言語」の項目を「日本語」にするには
どうすればいいのでしょうか?
ためしに
VALUE "言語", "日本語\0"
と記述すると項目は追加されるのですが、「言語」「英語(米国)」は残ってしまいます…
509:508
08/12/25 20:01:21
自己解決できました。TranslationとStringFileInfoのBLOCKの値に
関係してたんですね
510:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/12/26 02:56:37
整数で計算して下さい
512:デフォルトの名無しさん
08/12/26 03:14:09
結果出力、つまり文字列に変換するときに丸めればいい。
偶数丸めとか四捨五入とか。
513:デフォルトの名無しさん
08/12/26 06:37:33
1ドル15セントみたいな概念は理解できないんだな
514:デフォルトの名無しさん
08/12/26 07:10:36
100 + d/100
515:デフォルトの名無しさん
08/12/26 07:19:30
たぶん、( 100 + d ) / 100 と書きたかったんじゃないか?
516:510
08/12/26 09:32:30
(100+d)/100の間違いでした。
四捨五入で試して見たいと思いますが、
少数で演算はやめておいた方がよさそうですかね。
計算式が少し複雑なものだったので、楽できればと思ったのですが。
ありがとうございました。
517:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/12/26 12:05:49
CharNext, IsDBCSLeadByte
519:デフォルトの名無しさん
08/12/26 12:09:47
>>517
CString::GetAt( int iChar)
520:デフォルトの名無しさん
08/12/26 12:18:56
>>517
#define _UNICODE
521:デフォルトの名無しさん
08/12/26 19:48:42
初めてDLL作ろうとしたのですが、依存関係を設定してビルドするとなぜか~~.libが見つかりませんとでて失敗します。
~~.dllってどのようにすれば使えるのか教えてください。
dllファイルの作成自体は成功しています。
522:デフォルトの名無しさん
08/12/26 20:37:37
>>521
google dll 作成方法
523:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/12/26 21:11:02
ただ出力ファイルのdllの名前はプロパティから変更できたのですが、出力されるlibファイルの名前が変更できません。
みなさんは毎回手動でリネームしているのでしょうか。
525:デフォルトの名無しさん
08/12/26 21:52:49
libが必要になる方法なんかで作らないもん
面倒だし
526:デフォルトの名無しさん
08/12/26 23:24:50
ビルド後のイベント
527:デフォルトの名無しさん
08/12/28 10:28:01
リンカの詳細にインポートライブラリってのがあるべや
528:デフォルトの名無しさん
08/12/28 20:13:39
モードレスダイアログのコンボに対して、親ウィンドウから値をセットするにはどうしたらいいんでしょうか。
Win32 VC++です。
モードレスダイアログに
setData(char* text)
{
ComboBox_AddString(hwndDialog, text);
}
親から
dialog.setData(text);
UpdateWindow(hWndDialog);
529:デフォルトの名無しさん
08/12/28 21:01:37
うまくいかないのなら、その経過も書いてよ
530:デフォルトの名無しさん
08/12/28 22:13:09
親から送る
ComboBox_AddString( GetDlgItem( hWndDialog, IDC_COMBOBOX), text);
531:デフォルトの名無しさん
08/12/28 23:12:16
>>530
おっしゃるとおりにやってみたのですが、現象は変わりませんでした。
現象は、モードレスダイアログにあるコンボの中身が空のままです。
ただ、 num = (int)SendMessage(GetDlgItem( hWndDialog, IDC_COMBOBOX), CB_GETCOUNT, 0, 0);
でみると要素数numはちゃんと増えています。
WM_PAINTを拾ってInvalidateRectで再描画する必要があるのでしょうか。
532:デフォルトの名無しさん
08/12/28 23:29:03
>モードレスダイアログにあるコンボの中身が空のままです。
ポインタ操作間違えて文字化けしているだけじゃないのか?
533:デフォルトの名無しさん
08/12/28 23:50:08
そもそもどこの時点でしけてんだよ
まず、モードレスダイアログ自身に同じ処理を書くと成功すんのか?それ
534:デフォルトの名無しさん
08/12/29 02:31:03
コンボボックスのリストの部分のサイズどうなってる?
コンボにフォーカスして↑↓キー入れてみたらちゃんと追加されてるとか
535:デフォルトの名無しさん
08/12/30 17:54:28
ボタンが無効かどうかを調べるにはどうすればいいんですか?
536:デフォルトの名無しさん
08/12/30 18:08:08
IsWindowEnabled()
537:デフォルトの名無しさん
08/12/30 18:24:57
ありがとうございますっ
538:デフォルトの名無しさん
08/12/30 22:10:54
Visual C++ 2005 Express+Windows Platform SDKの環境なのですが、
実行時にメニューバーの表示/非表示を切り替えたいのですが、
どういった方法がありますでしょうか?
539:デフォルトの名無しさん
08/12/30 22:18:26
メニューバーをツールバーコントロールで作成しておいて、
EnableWindow( hWndToolBar, ( IsWindowEnabled( hWndToolBar) == FALSE);
540:デフォルトの名無しさん
08/12/30 22:19:21
しまった、カッコが一個たらね。
541:デフォルトの名無しさん
08/12/31 04:46:19
別の方法で解決しましたが、レスありがとうございました
542:デフォルトの名無しさん
08/12/31 22:52:19
どうやって解決したのか書いてけよ
クソだな
根っからのクソ
育ちが悪すぎる
親、何?誰?かなりクソでしょ?
教育失敗してる
543:デフォルトの名無しさん
08/12/31 23:51:34
今やるならC#で始めるほうがいいよな>初心者
ペゾルド本もC#だし。
544:デフォルトの名無しさん
09/01/01 02:50:34
ネコ以下でした…
545:デフォルトの名無しさん
09/01/01 11:15:15
vcprojからnmakeに変換する方法があれば教えてください。
546:デフォルトの名無しさん
09/01/01 13:00:22
VC6はメニューにあるね
547:デフォルトの名無しさん
09/01/01 13:14:00
2002以降無くなったな、便利だったんだが・・・
548:デフォルトの名無しさん
09/01/01 13:49:40
>>546,547
レスありがとうございます。
探して見つかったら報告します。
549:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/01/01 22:13:27
そういう関数の中でeofチェックしてるはずだから
eofチェックしない処理を自作する。
551:デフォルトの名無しさん
09/01/01 23:41:29
できません
552:デフォルトの名無しさん
09/01/02 07:50:04
>>549
eofのあとにデータがあるんじゃなくて、eofの判定をミスってるだけだろ。
553:デフォルトの名無しさん
09/01/02 08:04:37
>>549
ソースを出してくれ
554:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/01/03 01:38:20
すいません。質問です。
プリコンパイル済みヘッダーを使用する設定にして、
ソースにプリコンパイル済みヘッダーを include しないと、
「プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました」
というエラーが出るのですが、
これは全部のソースに、プリコンパイル ヘッダーを include しないといけないのでしょうか?
556:デフォルトの名無しさん
09/01/03 03:10:17
>>555
すべての cpp ソースの頭に
#include "stdafx.h"
と書けば解決する。
557:デフォルトの名無しさん
09/01/03 03:32:56
つまり「全部のソースに、プリコンパイル ヘッダーを include しないといけない」というわけだ。
558:デフォルトの名無しさん
09/01/03 10:01:52
>>556さん
>>557さん
ありがとうございます。
やはりそうなのですか。
ところで、何で全部のソースに書かないといけないのでしょうか?
自分のイメージでは、プリコンパイルヘッダーって、
ヘッダーファイルをまとめたヘッダーファイルみたいな物と思っています。
別にプリコンパイルヘッダーに登録されているヘッダーファイルが
必要じゃない場合とかも、そのソースに include しないとエラーが出るっていうのが、
いまいち納得できませんでした。
何か自分は考え違いをしているのでしょうか?
559:デフォルトの名無しさん
09/01/03 10:38:47
>>558
プリコンパイルヘッダーを使用する/しないは、全体の設定のほかに
個別のソースごとに設定できる。
必要なけりゃそれで除外すればいい。
560:デフォルトの名無しさん
09/01/03 10:55:22
>>558
プリコンパイルヘッダはコンパイル前にあらかじめヘッダーをコンパイルして結果を保存し、再利用してコンパイルを高速化するためのもの。
だからプリコンパイルヘッダを使用すると指定したモジュールのヘッダー読み込みの順序が同じでなければならない。そのために各ファイルの先頭でstdafx.hを読み込むようにしている。
561:デフォルトの名無しさん
09/01/03 20:20:54
イベントのハンドルが引数になってる場合はどうやって渡せばいいんですか?
562:デフォルトの名無しさん
09/01/03 21:23:14
warning C4731: 'Mul' : インライン アセンブラ コードにより変更されたフレーム ポインタ レジスタ 'ebp' です。
この警告をなくす方法を教えてください。もしくは気にしなくても良いのでしょうか?
MSに URLリンク(msdn.microsoft.com) 悪い例のサンプルがあるんですけど
対応方法が載ってません。
563:デフォルトの名無しさん
09/01/03 21:59:54
ようするにebp/espを書き換えなければ済む話。
警告無視で書き換えるなら、__asmを入るときの値を出るまでに復元しろということ。
564:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/01/04 00:12:20
それは、Win64だとvoid*も64ビットだから気を付けろという警告。
キャスト元をDWORDからULONG_PTRなんかにすればいい。
DWORDはWin64でも32ビットのままだが、ULONG_PTRはポインタと同じく64ビットになるという整数型。
566:デフォルトの名無しさん
09/01/04 01:17:12
Windows XP SP3 Visual Studio 2003 の話です
ソースAがメインのソースとして
ソースBとCが他にあるとします.
ある構造体の宣言をソースCでし,ソースAとBでその構造体を使いたいものとします.
そのときコンパイルすると
構造体の再定義というエラー
error LNK2005: "その構造体は 既に ****.obj で定義されています。
とでます.
どのように宣言すればよいでしょうか?
567:デフォルトの名無しさん
09/01/04 01:27:40
グローバル変数の実体は一つだけにして、他ソースからはexternで参照する。
568:デフォルトの名無しさん
09/01/04 01:29:39
コンパイルエラーが出るなんて糞質問はコード公開必須だボケが
569:566
09/01/04 01:31:04
すみません別ファイルへのリンクに
#include "ソースC.cpp"
とかいう変なことしてました.
570:デフォルトの名無しさん
09/01/04 10:03:30
>>564
プロジェクトのオプションに64bit互換のチェックの有無があるからoffにする。
571:562
09/01/04 11:48:44
>>563
ありがとう。
pushとpopをしておけば良いのですね。
572:デフォルトの名無しさん
09/01/04 12:50:31
Visual C++本体の扱い方を解説しているサイトはありますか?
コーディングはできるんですが、ソフトの機能を把握しておきたいのです
ちなみに2008です
573:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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
09/01/04 22:21:20
どうやらファイルを見つけていないようです。
576:574
09/01/04 22:40:00
単なるスペルミスでした。
577:デフォルトの名無しさん
09/01/05 22:18:38
動的に作成した画像ファイルを読み込むとエラーになるんですが
なんとかなりませんか?
578:デフォルトの名無しさん
09/01/05 22:23:39
エラーの内容から原因を推測して修正してください
579:デフォルトの名無しさん
09/01/06 01:29:38
short int からintへ,int からshort intへの代入で,
特に型変換を記述しないで実行したんだけど,エラーも出ずに普通に動いた.
これ放置してて問題ない?それともちゃんと型変換した方がいい?
580:デフォルトの名無しさん
09/01/06 01:31:05
コンパイラの警告レベルを高くしたらコンパイル時に文句言うんじゃね、と無責任に答える
581:デフォルトの名無しさん
09/01/06 01:31:58
その場合でもshort→intのように無条件に大きくなる方はそのままでも平気。
582:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/01/06 01:43:13
ありがとう,とりあえずはshort int から int へはそのまま放置しときます.
584:デフォルトの名無しさん
09/01/06 10:21:57
>>582
キャスト
585:デフォルトの名無しさん
09/01/06 10:52:44
constというのは呼び出す関数の内部で値を書き換えないようにするものなので
この場合無視していい
char * を unsigned char *にキャストする
586:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/01/06 19:08:36
>>586
array<System::Byte>^ data = gcnew array<System::Byte>(len);
もっとも、File::ReadAllBytesを使えば1発で済むぞ。
588:デフォルトの名無しさん
09/01/06 19:30:25
>>586
ありがとうございます。もうひと頑張りしてきます。
589:デフォルトの名無しさん
09/01/06 19:30:55
>>588
>>587に安価ミスした・・・orz
590:デフォルトの名無しさん
09/01/07 10:13:31
VC++でHashTab Shell Extensionみたいにプロパティをいじるようなソフトを作りたいんですが、何をすればいいかまったくわかりません。。
どなたかヘルプミーお願いします。
591:デフォルトの名無しさん
09/01/07 10:48:34
HashTab Shell Extensionは知らんけど、まさにShell Extensionで調べるのがいいんじゃ?
絞るならCOMもつけるといいかも
592:デフォルトの名無しさん
09/01/07 12:30:36
>>591
サンクス!
とりあえずとっかかりができました。これからいろいろ調べてみようと思います。
593:デフォルトの名無しさん
09/01/07 18:34:46
Stringに\nで改行とかって含めることできますか?
それかString以外の別の型使わなきゃだめですか?
テキストボックスに改行付きで変数で一括で突っ込みたいんですが・・・
594:デフォルトの名無しさん
09/01/07 18:55:30
>>593
Stringということは.NETか?
\r\n
595:デフォルトの名無しさん
09/01/07 19:47:07
.NETならEnvironment.NewLine、普通のC++ならエディットボックスはWindowsの\r\nで。
596:デフォルトの名無しさん
09/01/07 20:42:21
>>594,595
できました、ありがとうございます。
597:デフォルトの名無しさん
09/01/07 23:59:31
CImageで読み込んだ画像ファイルに直接直線を描画したいのですが、
何か方法はありませんでしょうか?
Visual Studio2008でプログラミングをしています。
598:デフォルトの名無しさん
09/01/08 00:39:42
LineTo( hDC, nEndX, nEndY);
599:597
09/01/08 01:12:20
画面上ではなく、Cimageの読み込んだ画像のピクセルを直接書き換えるように
直線を書き込みたいのですが、何か方法はないですか??
600:デフォルトの名無しさん
09/01/08 06:41:30
LineTo
601:デフォルトの名無しさん
09/01/08 08:08:14
>>597>>599
CImageにはGetDC/ReleaseDCメンバ関数がある。
602:デフォルトの名無しさん
09/01/09 19:10:49
2008の表示>ツールボックスの文字色はデフォが黒なんだけど見づらいので
どこをいじれば変えられますか?
603:デフォルトの名無しさん
09/01/09 22:33:29
初心者です教えてください
604:デフォルトの名無しさん
09/01/09 23:24:16
このソフトは初心者には扱えません。
605:デフォルトの名無しさん
09/01/11 09:13:26
Editにキーボードで入力するとEN_UPDATEが発生するんですけど
SetWindowTextで文字列を挿入するとEN_UPDATEイベントが発生しません。
どうすれば良いでしょうか?
606:デフォルトの名無しさん
09/01/11 09:23:58
オバマじゃだめなのか?
607:デフォルトの名無しさん
09/01/11 16:28:57
#include <iostream>
#include <string>
using namespace std;
void main(){
wcout<<L"test";
wcout<<L"うんこ";
getchar();
}
なぜかL"うんこ"が表示されません。
っていうか日本語が表示されないのですが
なんとかしてください。
608:デフォルトの名無しさん
09/01/11 16:31:09
ロケール
609:デフォルトの名無しさん
09/01/11 16:48:54
うぁありがとぉぉおおう
610:デフォルトの名無しさん
09/01/12 11:36:16
一度壊れたインテリセンス情報って復活できる?
ncbファイル消して開きなおしても、入力支援できない・・・
611:デフォルトの名無しさん
09/01/13 10:46:21
プログラムではなくて、機能の質問なんですが、
#endifと最後に打った瞬間、上記文(#endifから上)の文字が全て灰色に変わりました。
(#ifdefなら青くなる筈だが、灰色に…)
色付に戻したいです。どうすれば良いのでしょうか?
よろしくお願いします。
612:デフォルトの名無しさん
09/01/13 11:10:49
そりゃコンパイル条件から外れたからだろう
613:デフォルトの名無しさん
09/01/13 11:48:59
アウトラインとかは関係ないのでしょうか?
614:611
09/01/13 13:51:34
自己解決しました。
一番最初のプリプロセッサ命令のスペルミスしてた。
数時間格闘した結末はやはり呆気ないものだな…。
615:デフォルトの名無しさん
09/01/13 14:37:20
コンパイル条件から外れた、で意味わからなかったのかよ・・・
616:デフォルトの名無しさん
09/01/13 15:07:46
すんません。実行時にフォームのタイトルバーに文字を指定する方法を教えてください。。。
617:デフォルトの名無しさん
09/01/13 15:12:55
あ、すんません。visual c++ 2008です・・
618:デフォルトの名無しさん
09/01/13 15:23:06
あ、すんません。普通にText = "aaa";でいけました。ほんとすんません
619:デフォルトの名無しさん
09/01/13 15:27:11
ゆとり死ね
市ねじゃなくて死ね
620:デフォルトの名無しさん
09/01/13 15:39:18
CoInitializeで未解決のトークンとリンクエラーになるのですが何かlibを追加しなくてはダメですか?
621:デフォルトの名無しさん
09/01/13 15:57:13
ole32.lib だと思うが、普通はわざわざ指定しないけどな?
622:デフォルトの名無しさん
09/01/13 18:29:48
>>621
普通は指定しないですよね?
でもなぜかしれを追加したらリンク通りました・・・
ありがとうございます。
623:611
09/01/13 19:22:32
>>615
フフ、プログラミングでわからない事なんて、しょっちゅうよ…
624:デフォルトの名無しさん
09/01/15 01:15:15
・Visual C++2008 express
・開発環境・・WindowsVista
Debugモード、Releaseモード共にコンパイルは通ります。
Debugモードでデバッグ無しで実行は問題なく動作し、正常に終了します。
Releaseモードでデバッグ無しで実行した際には、途中でOSからのエラー、
----.exeは動作を終了しました。
問題が発生したため、プログラムが正しく動作しなくなりました。
というメッセージが出、途中で終了します。また、エラーが出るタイミングも
まちまちです。
これはどういう問題かと思われますか?タイミング問題でしょうか?
625:デフォルトの名無しさん
09/01/15 01:24:30
変数の初期化し忘れとかそういう方向で
626:デフォルトの名無しさん
09/01/15 08:00:10
Windows XP、Visual C++ 2003 でダイアログアプリを作っています。
アプリを一つだけ起動した状態は問題ないんですが、二つ以上起動すると
タスクバーのボタンがグループ化されたときに「(2) TODO: <ファイルの説明>」というような
表記になってしまいます。
このような文言らしきものがリソースの VS_VERSION_INFO にあったので
適当に編集してみたのですが、表記は変わりませんでした。
どうしたらタスクバーの表記が正しいものになるでしょうか?
627:624
09/01/15 09:05:56
>>625
やはり、考えられるのはそれぐらいになりますよね・・・
ありがとうございました
628:デフォルトの名無しさん
09/01/15 10:37:15
>>626
以下のレジストリから該当アプリを削除して再度実行する。
HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache
629:デフォルトの名無しさん
09/01/15 10:56:59
基本クラスをCFormViewで作成したときに
これのウィンドウハンドルはm_hWndでしょうか?
630:デフォルトの名無しさん
09/01/15 17:56:35
GetSafeHwnd()使え。
631:デフォルトの名無しさん
09/01/15 18:57:02
メイクしたユーザの名前を実行ファイルに
文字列として埋め込むことって可能ですか?
632:デフォルトの名無しさん
09/01/15 19:04:25
可能
633:626
09/01/15 19:10:04
>>628
おおお 初回起動時の値をずっと保持しているのですね。
消して再実行したらきちんと編集した値に更新されました。
どうもありがとうございました。
634:631
09/01/15 19:20:38
>>632
どうすればできますか?
635:デフォルトの名無しさん
09/01/15 19:21:23
>>634
#define hoge "うんこタロウ"
636:631
09/01/15 19:29:40
>>635
それだと"うんこタロウ"以外がメイクした時にも
"うんこタロウ"と埋め込まれると思うのですが・・・
637:デフォルトの名無しさん
09/01/15 19:37:51
メイクする人が変われば名前変更しなさいよ
VCは自動でメイクした人の名前を認識できませんよ
638:631
09/01/15 19:43:49
>>637
やはり手動でしかできませんか・・・
ありがとうございます。
639:631
09/01/15 19:53:11
今思いついたのですが、
static const char NAME[NAME_LEN] ("HOGEHOGE");
と、ソースに埋め込んで、ビルド後のイベントで
実行ファイルをバイナリレベルで走査し、
指定文字列を発見したらGetUserName()を埋め込む
というのは危険すぎるでしょうか?
640:デフォルトの名無しさん
09/01/15 19:57:52
ビルド後のイベントって他環境でも強制できるの?
641:631
09/01/15 20:05:23
>>640
恐らく*.projあたりに埋め込まれているのだと思うので、
VCを使用している限り埋め込む実行ファイルと
プロジェクトを一対で持ちまわれば
可能になるのではないかな、と。
ただ、プログラムのコード中に(想定しているバッファ以外に)
走査対象文字列が出てきたらと考えると危険な香りが・・・
642:デフォルトの名無しさん
09/01/15 20:42:25
>>641
コンパイルオプションに環境変数 USERNAME を埋め込むのはどうか?
/D "HOGEHOGE_USERNAME=\"$(USERNAME)\""
コードでその文字列を確保
CString sUserName = _T(HOGEHOGE_USERNAME);
643:デフォルトの名無しさん
09/01/15 20:52:30
C言語の勉強として、GetWindowRect関数を利用してウィンドウシェードを作っているのですが、
OnGetMinMaxInfoで最小サイズを指定していると思われるウィンドウではどうしてもタイトルバー
だけにすることができません。
どうすればそのようなウィンドウでもタイトルバーだけにすることができるでしょうか。
Microsoft Visual C++ 2008 Express Edition DLLファイル(TTBaseのプラグイン)
644:631
09/01/15 20:53:40
>>642
できました。ありがとうございます。
645:デフォルトの名無しさん
09/01/16 22:47:03
新規作成で出てくるウィザードにあるプロジェクトの種類 CLR Win32 全般 ってどういう使い分けなんですか?
ロベールのC+;教室ってサイトでは Win32 コンソール アプリケーションを使ってやるみたいなんですけどどれがどう違うのか教えてください。
それと新規作成でファイルを選んだ場合に作成されるのがプロジェクトで作ったのと何が違うのかも・・・
VC++2008EEを使ってます
646:デフォルトの名無しさん
09/01/17 07:38:09
>>645
CLRは.NET frameworkを使ったプログラムでC#やVisualBasicで作るのと同じ中間言語にコンパイルされる
C++で使う利点は無いので最初からC#で書いたほうが楽
実行時にランタイムが必要だったり不便な点がある
Win32は普通のプログラムなのでこれで作れ
全般はコンパイラを別のにして開発環境だけ使うとかしてクロスコンパイルが出来る(メイクファイルプロジェクト)
647:デフォルトの名無しさん
09/01/17 16:58:59
すごく初歩的な質問かもしれませんが、1つのプロジェクトにa.cppとb.cppがある場合どのような順番でコンパイルされていくんですか?
648:デフォルトの名無しさん
09/01/17 17:26:00
プロジェクトファイルに書いてある順番
649:デフォルトの名無しさん
09/01/17 18:53:52
順番なんかどうでもいい
650:デフォルトの名無しさん
09/01/18 01:58:13
/MP使えばほぼ同時だな。
651:デフォルトの名無しさん
09/01/19 11:10:24
MFCでファイルオープンダイアログを出す方法を教えてください
652:デフォルトの名無しさん
09/01/19 11:30:17
CFileDialog dlg(TRUE);
if (dlg.DoModal() == IDOK)
{
MessageBox(dlg.GetFileName());
}
653:デフォルトの名無しさん
09/01/19 13:31:54
>>652
できましたありがとう
654:デフォルトの名無しさん
09/01/19 23:39:08
CM_Get_DevNode_Registry_Propertyのかわりに
SetupDiGetDeviceRegistryPropertyほうを使うのが良いらしいんですが、
どういう理由なんでしょうか?
655:デフォルトの名無しさん
09/01/20 11:40:37
MSDNにそう書いてあるから、じゃだめ?
656:デフォルトの名無しさん
09/01/20 23:21:50
今使っているのはVisual Studio 2005です。
人に出来上がったexeファイルを配布するときに
このアプリケーションの構成が正しくないため、 アプリケーションを開始できません
でした。
というエラーを起こさないようにプロジェクトのランタイムライブラリの設定を
マルチスレッドDLLからマルチスレッドに変えました。
そうしたら以下のような警告が出て、他にも外部シンボルが未解決ですというエラーが大量に出ました。
warning LNK4098: defaultlib 'LIBCMT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。
人に配布するときに一番上のエラーが出なく、かつリンクが通るようにするにはどのようにすればいいのですか?
657:デフォルトの名無しさん
09/01/20 23:42:25
>>656
DebugビルドとReleaseビルドが混じってるとか
リビルドしてみるか、言われたとおり /NODEFAULTLIB:LIBCMT.lib を試してみる
658:デフォルトの名無しさん
09/01/21 09:08:20
>>656
元の構成に戻して、構成プロパティの全般ページの「MFCの使用」を
「スタティックライブラリでMFCを使用する」にする。
か、
元の構成に戻して、該当する方を渡す。
Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86)
URLリンク(www.microsoft.com)
Microsoft Visual C++ 2005 再頒布可能パッケージ (x86)
URLリンク(www.microsoft.com)
659:656
09/01/21 14:59:38
ゲームを作ろうと思っているのですが、
他の人が作っているゲームや商業用のゲームは
再配布可能パッケージをインストールしなくても動いているのが気になります。
それはなぜなのでしょうか。
660:デフォルトの名無しさん
09/01/21 15:10:46
>>659
スタティックリンクかもしれないし、
MFCを使ってないかもしれないし、
VCじゃないかもしれないし、
付属のセットアップで全部インストールされるかもしれないし、
…
もういいですか?
661:デフォルトの名無しさん
09/01/21 15:11:21
全然満足できません
662:デフォルトの名無しさん
09/01/21 15:14:29
あぁもう面倒くさいな。
取り敢えず「スタティックライブラリでMFCを使用する」でどうなるかやってみろ。
663:デフォルトの名無しさん
09/01/21 15:17:55
面倒くさいならレスしないで下さいよ。ここは初心者スレなんだから。
664:デフォルトの名無しさん
09/01/21 15:20:03
他の人が作っているゲームや商業用のゲームとかいう認識レベルのやつに説明しても無駄
開発環境や使用ライブラリぐらい調べてから質問しろ
665:デフォルトの名無しさん
09/01/21 15:21:15
無駄ならレスしないで下さいよ。ここは初心者スレなんだから
666:デフォルトの名無しさん
09/01/21 15:27:31
初心者じゃなくて初心者以前だろ
667:デフォルトの名無しさん
09/01/21 15:28:56
知りもしないで文句だけたれてるクズがうざぃ
668:デフォルトの名無しさん
09/01/21 15:39:57
そのゲームと同じにしたかったら同じ環境で同じように作ればいい
669:デフォルトの名無しさん
09/01/21 15:44:28
その程度のレスなんていらないよぉ
670:デフォルトの名無しさん
09/01/21 16:11:57
Microsoft Visual C++ 2005 再頒布可能パッケージなんだから
Visual C++ 2005以外で作れば入れる必要ない
671:デフォルトの名無しさん
09/01/21 17:02:41
誰か>>643を…
672:デフォルトの名無しさん
09/01/21 17:16:41
>>671
ちょっと待て
673:デフォルトの名無しさん
09/01/21 17:51:52
と思われるウィンドウって他の人が出してるウインドウ?
サイズ変更のメッセージでサイズ調整したりするけど
他から勝手に余計なことされたらどうなるんだ?
674:デフォルトの名無しさん
09/01/21 17:55:57
余計な事は考えないで質問にだけ答えてくださいよ。
675:デフォルトの名無しさん
09/01/21 17:59:02
>>673
ウィンドウシェードが目的なので他のプログラムですね。
コマンドプロンプトなどだと中身が一行見えたり、GIMPだとほとんどウィンドウの中身が見えてしまっていて全く使えません。
もちろん手動でタイトルバーだけにしようと思っても(OnGetMinMaxInfoかなんかで)それ以上小さくならないですし。
676:デフォルトの名無しさん
09/01/21 18:48:54
ウィンドウシェードなんて聞いたことない
知ってるやつが来るまでおとなしく待ってればいいよ
677:デフォルトの名無しさん
09/01/21 19:37:30
>>676
MacやBlackboxなどにあるウィンドウをタイトルバーだけにする機能のことです。
678:デフォルトの名無しさん
09/01/21 19:44:19
explorer.exeを殺して最小化すればいい。
679:デフォルトの名無しさん
09/01/21 20:03:54
>>675
他のシェードツールでは問題なく動作するの?
それなら動かしつつSPYで見てみるとか
680:デフォルトの名無しさん
09/01/21 20:26:41
>>678
互換シェル使っていますのでexplorer.exeはファイラー以外使ってません。
でもシェルを切ればタイトルバーだけになりますね。あまりあれは好きではありませんが。
>>679
Stylerでできた気がするのですが諸事情で確認できません。
681:デフォルトの名無しさん
09/01/21 22:40:49
VS2008(VC9?)で、newしたときに、失敗したときに例外じゃなくてNULLを返させたいです。
でもnew(nothrow)みたいに、既存のソースのnewを一個一個置き換えるのはやなので、一発でなんか無いですか?
682:デフォルトの名無しさん
09/01/21 22:55:40
newを自作
683:デフォルトの名無しさん
09/01/21 22:59:59
なんか方法があるのは憶えてるけど、どうやるかは忘れたな。
ググればでてくるんじゃないか?
684:デフォルトの名無しさん
09/01/21 23:03:43
検索したらmsdnにヒットしたけどオフィシャルとは思えない笑える説明
685:デフォルトの名無しさん
09/01/21 23:08:01
笑える部分をコピペしてやりたいけど、それやると検索で見つかってしまうからやめておこう
686:デフォルトの名無しさん
09/01/21 23:09:37
ダウンロードしたMSDNライブラリを、たとえばfirefoxで閲覧するにはどうすればよいでしょうか
687:デフォルトの名無しさん
09/01/21 23:49:00
>>682-685
えー
教えてください
688:デフォルトの名無しさん
09/01/22 00:24:09
もしかしてnothrownew.objをリンクするってやつ?
689:デフォルトの名無しさん
09/01/22 14:29:19
WindowsのAPI関数をさしてF1キーなどでドキュメント付属のリファレンス見れますけど、
英語のものばっかり表示されるんですが、日本語で表示するにはどうすればいいですか?
オプションで全部日本語を設定してるんですが・・・
690:デフォルトの名無しさん
09/01/22 14:55:16
んな難しい英語使われてないやろ
691:デフォルトの名無しさん
09/01/22 15:00:09
なんで2ちゃんねらーって論点をずらすことばかりするの?
692:デフォルトの名無しさん
09/01/22 15:03:55
そりゃあたくさん人がいるからだよ
693:デフォルトの名無しさん
09/01/22 15:06:28
visual studio使ってる段階でクズだし基地外が好んで使うから
694:デフォルトの名無しさん
09/01/22 15:20:01
>>689
キーワードタブのフィルタ条件を「日本語ドキュメント」にする。
その状態は記憶されるので次からは日本語になる。
695:デフォルトの名無しさん
09/01/22 15:50:57
VC++6.0を使用しています。
メニューバーの項目を一つだけ右端に持って行きたいのですが可能でしょうか?
下のような感じで。
________________________________
|ファイル|編集|表示|___________________|ヘルプ|
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
696:デフォルトの名無しさん
09/01/22 15:58:18
>>695
不可能
697:デフォルトの名無しさん
09/01/22 16:04:28
>>965
無理
698:デフォルトの名無しさん
09/01/22 16:05:12
>>696 >>697
感謝です。
699:デフォルトの名無しさん
09/01/22 16:07:43
>>695
リソースじゃなくて自分でメニューバーのウィンドー作れば可能
700:695
09/01/22 16:15:20
>>699
感謝です。
URLリンク(yokohama.cool.ne.jp)
メニューバーの作り方はここを参考に作れば大丈夫でしょうか?
701:デフォルトの名無しさん
09/01/24 21:59:52
Web制作の経験があるという理由だけで会社でVisual C++の担当になりました。
1から勉強しなければならないのですが、そもそもこのソフトで何ができるようになるのでしょうか?
上司に聞こうにも上手くはぐらかされるだけでストレスになっています。
例えばこういうものが作れるといった具体例があれば教えていただけないでしょうか?
702:デフォルトの名無しさん
09/01/24 22:09:40
この世に存在する自動的に制御されているものはほとんど作れます
703:デフォルトの名無しさん
09/01/24 22:17:49
これはさすがに釣りだろjk
704:デフォルトの名無しさん
09/01/24 22:59:02
>>701
ウインドウズのアプリケーション。
ライブラリ。
DLL。
COM。
ActiveX。
Webアプリケーション。
705:デフォルトの名無しさん
09/01/25 04:26:10
工具箱で何が作れるのか聞いてるようなもんだな。
706:デフォルトの名無しさん
09/01/25 13:11:32
>>701
VCはなんでも作れるらから安心しろ。
707:デフォルトの名無しさん
09/01/25 13:30:49
最初、ヴァーチャルストゥディオって読んでました
708:デフォルトの名無しさん
09/01/25 13:38:02
VirtualStdioか
意味は通らなくもない
709:デフォルトの名無しさん
09/01/25 16:33:42
VisualC++2005EEとVisualC++2008EEの違いって何ですか?
教えてください。
710:デフォルトの名無しさん
09/01/25 16:40:52
VisualC++2008EEのほうが全てに秀でる あと軽い
711:デフォルトの名無しさん
09/01/25 16:49:55
ありがとうございました。
2008インストールしてみます。
712:デフォルトの名無しさん
09/01/25 19:45:42
>>701
会社の業務に関係するシステムを作らされそうなの?
たぶんC#とかVBでやったほうがいいとおもうけど。
713:デフォルトの名無しさん
09/01/26 23:16:58
ダイアログベースアプリで、ウイザードが生成するコードで、
CXXXDlg::OnPaint()
{
if(IsIconic())
{
処理
って奴あるじゃん。
あのIsIconicのときの処理って走りますか?
何時走るの??
ちなみにモーダルやモードレスの子ダイアログの場合、最小化すると走るらしいけど、
メインウインドの場合は?
714:デフォルトの名無しさん
09/01/26 23:28:03
>>713
MSDNには最小化したら0以外が返るって書いてあるけど、
ダイアログ以外のウインドウだと動作が違うの?
715:デフォルトの名無しさん
09/01/26 23:30:19
そもそも最小化しているときにOnPaintが呼ばれるのか?ということだろ。俺も気になる。
716:デフォルトの名無しさん
09/01/26 23:41:09
てか、最近のVCのウィザードはif(IsIconic())なんてコードを吐くの?
717:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/01/26 23:42:49
>>715
そうそう、そんな感じ。
ウィザードがわざわざ生成するくらいだから何とかすれば通るような。
でもブレイクポイント設定して何をやってもブレイクしないし。
719:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/01/26 23:46:38
>>718
Win3.1時代の名残りかな?
そのころは、最小化するとタスクバーじゃなくて、アイコン化されてたし。
721:デフォルトの名無しさん
09/01/26 23:49:23
>>720
最小化なのかアイコン化なのかもちょっと気になる。。
このIsIconic()~のソースってSDIとかなら分かる気がする。
たとえば、親ウインドの中の子ウインドを最小化すると、親画面の左下に小さくなって並ぶじゃん。
あのときに、親ウインドにWM_PAINTが発生すれば、子供にも回ってきて、
子供は自分で自分がアイコンで占有している部分を更新リージョンからくり抜くんでしょ。たぶん。
でもメインウインドのダイアログのOnPaintでIf(IsIconic())って成立するのかな。。
722:デフォルトの名無しさん
09/01/26 23:51:38
__int32と int型ってまったく同一に見られるんですか?
オーバーロードができないんですが。
723:デフォルトの名無しさん
09/01/26 23:54:21
>>721
その場合は、子ウィンドウからしたら、全領域が非クライアント領域のような気がするし、
第一、WS_CLIPCHILDRENを付ければ勝手にやってくれることのような気がする。
724:デフォルトの名無しさん
09/01/26 23:55:14
>>722
そういう仕様。
URLリンク(msdn.microsoft.com)
> ..., and __int32 is synonymous with type int.
なお、ここには載っていないけど、__int64もlong longと同じ。
725:722
09/01/26 23:56:48
すいません、リサーチ不足でした。
ありがとうございます。
726:デフォルトの名無しさん
09/01/26 23:57:18
>>723
ああ。。確かに。
いったいこのコードなんだろう。誰かご存知のかた、ご回答お待ちしてます。
727:デフォルトの名無しさん
09/01/26 23:58:59
>>719
いや、ポインタを使わずに返すには、こうしたらどうか?
……と、思って書いてみたんですけど…やっぱり無理ですよね。
サンクスです。
728:デフォルトの名無しさん
09/01/26 23:59:43
C++なら参照というものがあってだな……。
729:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/01/27 00:12:11
VC+++MFCってコントロール少なすぎじゃないですか?
どう見ても、VC#でやったほうが楽なのに、なんでVC++のほうがメジャーなんですか?
731:デフォルトの名無しさん
09/01/27 00:16:13
そりゃ単純にいままでVC++でやってきた連中からしたら
VC#なんか分からん事だらけだからじゃないの?
なんでVC++で簡単にテキストファイル開けたのに
C#でその方法をぐぐらなくっちゃいけないの?
そこまでして移行してご利益がいっぱいあるの?
MSは好都合かもしれないけど。そんなものみんないやなんです。
732:デフォルトの名無しさん
09/01/27 00:16:36
>>730
C#よりも10年近く先に登場した分、資産・ノウハウが貯まっているところが多い。
733:デフォルトの名無しさん
09/01/27 00:22:46
感覚的には、新規の案件はVCよりC#のほうが多いような気がしたけど、
求人サイトで、C++とC#で検索してみたら、まだC++のほうが多かったな。
734:デフォルトの名無しさん
09/01/27 00:24:43
C++と比較したの?それともVC++と比較したの?
C++だけだと、LinuxとかUnixとか組み込みとかあるよ。
735:デフォルトの名無しさん
09/01/27 00:25:27
C#でもWeb系ってたまにないか?
736:デフォルトの名無しさん
09/01/27 00:29:21
>>735
aspで、イントラ作ろうって案件だと、C#かVBだしな。
737:デフォルトの名無しさん
09/01/27 00:37:49
>>732
その割には使えるコントロールが全くないじゃないですか?
しかも、Viewって一つしかないし・・・
738:デフォルトの名無しさん
09/01/27 00:45:22
>>737
Viewは複数あるじゃん。
739:デフォルトの名無しさん
09/01/27 00:47:41
>>737
コントロールは増えてないってだけでしょ。
MSはVC向けにはわざとそういう便利なライブラリを出さないんだろうね。
おらおらおらおらおらおらおらおらおらおら!!!!!!
さっさとドットネットにいきやがれこんちくしょーーーーーー!!
ってことですね。
おっとつい興奮していつの間にかCapsLockがONになってた
740:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/01/27 00:51:47
>>739
90年代はActiveXの時代だった。
どっちかというと、VBで使うのが主流だったと思うけど。
742:デフォルトの名無しさん
09/01/27 00:52:33
>>740
pair = swap(1, 2);
743:デフォルトの名無しさん
09/01/27 00:55:12
>>741
ここで言っているコントロールってActiveXのことなん?
もしそうならVCでも使えるんじゃね?
744:デフォルトの名無しさん
09/01/27 01:10:28
>>742
サンクスです。構造体に入れるのを忘れるとは…お恥かしい。
面倒な質問だったと思いますが最後まで有難う御座います。
これでひのきのぼうを装備してスライムが倒せそうです。
745:デフォルトの名無しさん
09/01/27 02:32:06
>>743
使えるけど、たしか標準ではメニューに入っていないでしょ。
746:デフォルトの名無しさん
09/01/27 07:43:04
基本的にはWindows標準のものだけ扱うからね。
でも2008SP1でごっそり増えたじゃない、C#にもまだないようなのが。
まあこれらもWindowsに標準で組み込まれる予定だけど。
747:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/01/27 18:39:15
>>747
モードレスダイアログは普通のウィンドウのようにメッセージループが必要。
749:デフォルトの名無しさん
09/01/27 18:43:08
UpdateWindow呼んだあとreturnしちゃってるからな。
750:デフォルトの名無しさん
09/01/27 19:46:16
747です。返信遅れてすみません。
では、WinMainの中に記述してはいけないということでしょうか?
今からいろいろやってみますが、かなりの初心者なので少しヒントを下さい。
お願いします!
751:デフォルトの名無しさん
09/01/27 19:58:16
>>750
メッセージループっていってんだから
メッセージループでググレよウンコ
752:デフォルトの名無しさん
09/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さんどうもありがとうございました。