07/02/08 11:50:13
VisualStudio2005C++ExpressEditionにて
#include "stdafx.h"
#include"stdio.h"
int _tmain(int argc, _TCHAR* argv[])
{
FILE *fp=fopen("d:/test.txt","rw");
というコードを書きました。
FILE文付近で「~Expression:(Invalid file open mode",0)~」
というダイアログボックスがでます。
CRTセキュリティ強化されたためということですが、このセキュリティを
弱くしたいと思います。どのようにすればよいですか?
370:デフォルトの名無しさん
07/02/08 11:50:39
WinSockのAPIを使ってphpから文字列を取得することはできますか?
371:デフォルトの名無しさん
07/02/08 12:12:23
>>369
セキュリティ強化用の関数が追加されたけど
標準関数の仕様はかわらないのでは?
372:デフォルトの名無しさん
07/02/08 12:18:22
>>370
プロトコル次第
373:デフォルトの名無しさん
07/02/08 12:20:17
>>372
httpなんですが
あとサーバーに送る文字列の改行コードは\nで大丈夫でしょうか?
374:デフォルトの名無しさん
07/02/08 13:09:22
>>371
標準関数の仕様はかわらないのでは?
たぶんそうだと思うのですがうまくいかないです。
375:デフォルトの名無しさん
07/02/08 13:18:46
エラー通り"rw"が悪い
376:デフォルトの名無しさん
07/02/08 14:04:09
>>275
VisualStudio2003だとうまくいくのですが、
構文的にrwなんてつけたらだめなのですか?
377:デフォルトの名無しさん
07/02/08 15:05:50
unicodeかなんかじゃないの?
378:デフォルトの名無しさん
07/02/08 15:56:14
"rw" なんてのは無い
379:デフォルトの名無しさん
07/02/08 16:37:09
MSDNこういう例ものってるし "rw" もあるだろ
URLリンク(msdn2.microsoft.com)(VS.80).aspx
fopen("newfile.txt", "rw, ccs=<encoding>");
380:デフォルトの名無しさん
07/02/08 17:11:52
多分すごい有名な
「新VisualC++6.0入門ビギナー編 林春比古署 ソフトバンク社」
を使って今勉強中なんですが、
241ページのサンプルプログラムで、
CPenクラスのオブジェクトのポインタ、’oldPen’ってゆうのを、
’旧ペン’と銘打って保存って書いてありますが、
これをする意味がわかりません。
わざわざポインタでなぜ確保しているのでしょうか?
pDC->SelectObject(&CPen型Object)で選択して書くだけなのに、
別に’旧ペン’を保存しておく必要があるのでしょうか?
私が簡単に確認した程度では、
oldPen 自体設定しなくても実行可能でしたし、
最後に’旧ブラシに戻す’ってゆう作業もなくても問題ありませんでした。
他にもいろいろ記述してoldPenの有用な使い方を検証しましたが、
やればやるほど意味がないのではという考えに傾きます。
大変限定的な質問ですが、
よければ本を持ってる方、もしくはよく知ってらっしゃる方でわかる方がいれば
教えていただけないでしょうか?
381:デフォルトの名無しさん
07/02/08 17:21:08
MSDNのサンプルだとこんな感じだね
void CMyView::OnDraw( CDC* pDC )
{
CPen penBlack; // Construct it, then initialize
if( newPen.CreatePen( PS_SOLID, 2, RGB(0,0,0) ) )
{
// Select it into the device context
// Save the old pen at the same time
CPen* pOldPen = pDC->SelectObject( &penBlack );
// Draw with the pen
pDC->MoveTo(...);
pDC->LineTo(...);
// Restore the old pen to the device context
pDC->SelectObject( pOldPen );
}
else
{
// Alert the user that resources are low
}
}
382:デフォルトの名無しさん
07/02/08 17:24:47
URLリンク(forums.belution.com)
メモリ上のDCは元に戻すべきか?
383:デフォルトの名無しさん
07/02/08 17:24:47
>>380
URLリンク(msdn2.microsoft.com)
>An application should always replace a new object with the original, default object after it has finished drawing with the new object.
384:デフォルトの名無しさん
07/02/08 17:28:50
げ、マルチか
385:デフォルトの名無しさん
07/02/08 18:10:14
だな
スレリンク(tech板:200-番)
386:デフォルトの名無しさん
07/02/08 18:56:26
>>379
VS2005でソースみてみな
387:デフォルトの名無しさん
07/02/08 20:16:15
プログラムからtabindexの設定をするには?
388:デフォルトの名無しさん
07/02/08 20:20:28
>>369>>379
C/C++の標準規格としては"rw"なんてありません。
標準で認められているのは"r", "w", "a", "r+", "w+", "a+"及び
それにバイナリモードのbを2-3文字目(+とは順不同)に入れたもののみです。
勿論Visual C++はViusal C++で色々と独自に拡張はしていますが。
389:デフォルトの名無しさん
07/02/10 17:51:19
WinSockでhttpsを扱えますか?
390:デフォルトの名無しさん
07/02/10 18:07:09
扱えるかどうかと言えば扱える
ソケットとプロトコルは関係ない
要はアプリケーションがWinSockを使ってSSL通信できるように作ればいい
391:デフォルトの名無しさん
07/02/10 18:49:44
>>390
ありがとうございます少し調べてみます
392:デフォルトの名無しさん
07/02/11 01:39:25
【初心者歓迎】C/C++室 Ver.34【環境依存OK】
で聞いたらスレ違いという事でここでオナガイシマス
VC6ですCtrl + Fで検索ダイアログを開いた時過去に検索した文字が出せますが
便利ですが間違えた検索単語を間違えたときの文字も残っています
一度まっさらにするにはどうしたら良いですか?
393:デフォルトの名無しさん
07/02/11 06:19:07
パソコン初心者だろうか?
394:デフォルトの名無しさん
07/02/11 09:42:36
WinFormsのTextBoxで、
テキストの行がコントロールからはみ出たら最終行がきちんと見えるように
オートスクロールさせたいのですが
デザイナ内にもそれらしき設定はなさそうですし、
マニュアルでプロパティを調べてもそれっぽいものが見当たりません。
どうしたらいいでしょうか?
AutoScrollOffsetってのがそうですか?
なんかPointでスクロール先を指定するみたいですが、
もしこれがそうなら使い方が良く分からないので教えてください。
395:394
07/02/11 10:10:49
とりあえず格好悪いですが
textBox->SelectAll();
textBox->ScrollToCaret();
でできました。
396:デフォルトの名無しさん
07/02/11 12:27:54
ヒント
・オートスクロールが有効になっている場合、自動的にキャレットのある位置が表示されるようにスクロールされる
・TextBox::SelectionStartが現在のキャレットの位置
397:デフォルトの名無しさん
07/02/11 14:46:27
392ですがどうしたら消せる?
398:デフォルトの名無しさん
07/02/11 15:02:24
レジストリ辺りにでも保存されてるんじゃねーかな。
もしくは再インストール。
399:デフォルトの名無しさん
07/02/11 23:32:04
Lap[Count - 1] + Step >
(Lap[Count] = GetTickCount())
);/* case 2: の timeGetTime の部分*/
Stepが0以外だとStepに関わらず、このループを抜けるのに15ms以上もかかってしまいます。(Lap配列の数値を見て)
最初のtimeGetTimeの10万回ループは47msで遅いわけでもないですし、そもそもtimeGetTimeだとうまく動くのです。
どうしたらよいのでしょうか。
400:デフォルトの名無しさん
07/02/11 23:43:08
いったいそれのどのあたりがループなんだ?
401:399
07/02/11 23:50:06
>>400
ソースはってませんでした。
URLリンク(deaikei.biz)
pass:cpp
#pragma comment(lib, "winmm.lib")を追加したら、
timeGetTime()とGetTickCount()の両方でうまく時間が出てこなくなってしまいました。
元に戻してもダメなので、ビルドする度に違うのかもしれません…
402:デフォルトの名無しさん
07/02/12 00:07:11
まず、ビジーループ氏ね
それに、timeGetTimeのNTでの規定精度は「5ms以上」
ついでに、強制コンテキストスイッチの間隔もある。
403:399
07/02/12 00:29:54
>>402
試しに比較したかっただけなので、ループの方は勘弁してください。
timeBeginPeriodで精度を1msに調整しても結局GetTickCountで同様の症状になってしまいます。
コンテキストスイッチの待ち時間は10msを超えるようなものでしたっけ?
404:デフォルトの名無しさん
07/02/12 02:17:41
GetTickCountのヘルプ読んだか?
家のPCだと100ns単位で156250、約16ms程度の解像度だぞ。
405:デフォルトの名無しさん
07/02/12 08:24:06
普通1/60秒だからそんなもんだね。
406:399
07/02/12 19:24:33
>>404-405
ようやく理解できました。
Sleep(0)ループのようにタイマー割り込みを待つのですね…
GetSystemTimeAdjustmentで測ってみたら15.625msでした。
407:デフォルトの名無しさん
07/02/13 12:47:54
CString型のメンバ変数strに文字列をいれていたのに
突然中身がなくなるというかデバッグ時にみると不適切なptr
となってアドレスは0を指しているようでした
関数から関数を呼び出してさらに関数をよびだしていきどんどん奥にいくと
この現象が起きたのですが
これはスタックオーバーフローというものですか?
解決策を教えてください
408:デフォルトの名無しさん
07/02/13 12:49:09
>>407
関数一個ずつ丹念にデバッガで追っていくのが無難かな。
スタックオーバーフローにしろ領域破壊にしろ、どっかで誰かがなんかやってるだろうから。
409:デフォルトの名無しさん
07/02/13 13:00:34
>>408
ありがとうございます!!
strncpyで領域破壊を起こしていました
すごく助かりました!!
410:デフォルトの名無しさん
07/02/13 14:14:12
私はもともとC++Builder出身なのですが
VB6で、あるアプリを作成しています。
このアプリは、主処理のほとんどが
MS.NET Framework1.1 VC++.NET
で生成されたDLLで行われています。
このDLLをステップ実行やインスペクタでデバグしたいのです
が、親アプリがVBなので、どうやってデバグしたら良いやら
困り果ててます。
どなたかVC++のDLLのデバグ方法を伝授してください…
できれば簡単なやつで。
411:デフォルトの名無しさん
07/02/13 14:50:21
ソースとデバッグ版DLLとpdbファイルがあればおk
412:デフォルトの名無しさん
07/02/13 14:54:59
ソース、デバッグ版DLL、pdbファイルあります!
もちょっとだけ具体的に教えてもらえないでしょうか…
413:デフォルトの名無しさん
07/02/13 15:32:24
それって開発環境そのまま?
途中で止めてアタッチする手もあるが、環境あるなら
DLLのデバッグ開始すると、実行時にEXE指定しろって言ってくるから
それでそのEXE指定すればいいと思う。
デバッグしたいとこはブレークポイント設定しておけばいいし。
414:デフォルトの名無しさん
07/02/13 15:35:06
もしVB側もデバッグしてるのなら、関数呼び出し時にステップインで
DLLとPDBが同じとこにあればソースの場所聞いてくると思うので
そこでソース選べば追えると思うけど、、、
VB呼び出しはもしかしたら違うかもしれん、、、
C/C++からの呼び出ししかやったことないんで。
もしだめなら試すから言ってくれ
415:デフォルトの名無しさん
07/02/13 18:25:23
>>413-414
丁寧なご回答ありがとうございます。
でもまだちょっと分かってないです…
DLLですが、メイク時に実行すると
「ActiveXコントロールテストコンテナ」というのが
出ます。
これかのことか!?と思ったのですが、EXE指定はできないっぽいです。
>>414さんの方法は今がんがってる最中です…
416:デフォルトの名無しさん
07/02/13 20:56:40
質問です。
学校で使っている描画のプログラム(?)をVC++6.0で使いたいと思い、
ヘッダーファイルとライブラリファイルを
Microsoft Visual Studio\VC98 のIncludeフォルダとLibフォルダにそれぞれ入れ、
プログラムをコンパイルしたのですが、
warning LNK4003: ライブラリの形式が無効です; ライブラリは無視されます
とエラーになってしまいます。
これと同様のことをBCC5.5でしても問題ありませんでした。
何か間違っているところがあれば是非教えてください。
417:デフォルトの名無しさん
07/02/13 21:01:20
ライブラリがBCC用なんだろ。
418:418
07/02/13 21:40:29
>>417
Win32 Static Libraryでプロジェクトを作りそこにライブラリソースを追加しビルドしました。
そしてできたライブラリファイルで再び試してみると、
ライブラリの形式が無効です このエラーはでなくなりましたが、
LNK2001 :外部シンボル"関数名"は未解決です このエラーは消えませんでした。
ライブラリファイルの作り方もよくわからなかったのですが合っているでしょうか?
419:デフォルトの名無しさん
07/02/13 21:41:53
"関数名"が、そのライブラリに入っているべきものなら、
どっか、あってないんだろ。
420:デフォルトの名無しさん
07/02/13 22:36:39
.NETでダイアログベースで作ってます。
CRectとGetWindowRectを使用して自身の座標を得ることはできたのですが
自身と関係ないWindowの座標を得る場合にはどうしたらいいんでしょうか?
421:デフォルトの名無しさん
07/02/14 00:22:20
GetWindowRectだな。
必要とするウィンドウのハンドルを取得するべし。。
.NET Frameworks だけじゃ無理な気がしたので、WinAPI を使いましょう。
422:デフォルトの名無しさん
07/02/14 12:19:22
エディットコントロールにintの中身を表示させるにはどうしたらいいんですか?
文字列は"”でできました。
変数だけ書いたらエラーでました。
423:デフォルトの名無しさん
07/02/14 12:33:45
釣れますか?
424:デフォルトの名無しさん
07/02/14 14:47:48
編集制御->文字列 = 文字列にな~れ(数値);
425:デフォルトの名無しさん
07/02/14 16:27:57
>>420
なぜ.NETでCRectとGetWindowRectが出てくる?
426:デフォルトの名無しさん
07/02/14 17:05:59
VC6.0でベースがDIALOGか、SDIで出力結果をDOS窓に出す方法はあるんですか。
はじめからDOS窓アプリにしないとだめですか?
427:デフォルトの名無しさん
07/02/14 17:13:21
AllocConsole?
428:デフォルトの名無しさん
07/02/14 17:18:42
VC++プログラマーちょっとこい!!
スレリンク(news4vip板)
429:デフォルトの名無しさん
07/02/14 17:31:05
CTypedPtrList<CObList, VALUE*>のSeqValueListを
CTypedPtrList<CObArray, VALUE*>にする時ってどうすればいいんでしょうか?
下のがソースなんですが、やり方が良くわからない。。。orz
CItemInfo::~CItemInfo(){
int iCount;
POSITION pos;
VALUE *pValue;
m_pValueList = &m_SeqValueList;
iCount = (int)m_pValueList->GetCount( );
pos = m_pValueList->GetHeadPosition( );
for( int i=0; i<iCount; i++ ){
pValue = m_pValueList->GetNext( pos );
delete pValue;
}
m_pValueList->RemoveAll();
m_pValueList = &m_ParValueList;
iCount = (int)m_pValueList->GetCount( );
pos = m_pValueList->GetHeadPosition( );
for( int i=0; i<iCount; i++ ){
pValue = m_pValueList->GetNext( pos );
delete pValue;
}
m_pValueList->RemoveAll();
}
430:426
07/02/14 17:36:11
AllocConsole();
freopen("con", "w", stdout);
printf("hello console\r\n");
//FreeConsole();
でできました。すみません。
431:デフォルトの名無しさん
07/02/14 17:54:01
エディタの背景を黒にカスタマイズしたいのですが、どこにもそんな項目がありません
ちなみにヴァージョン6.0です
432:デフォルトの名無しさん
07/02/14 18:57:23
エディター?IDEのかな?
ツールのオプションの書式の背景でない?
433:420
07/02/14 21:14:12
void CMyDlg::OnMouseMove(UINT nFlags, CPoint point)
ってところでpointに入っててrectはサイズを知りたくて使ってただけでした、すみません。
クライアント座標はpointに入ってたのですがスクリーン座標を知るにはどうしたらいいんでしょうか?
SetCapture()でクライアント領域外の座標は得れたんですがクライアントが中心になってしまっています。
よろしくお願いします。
434:デフォルトの名無しさん
07/02/14 21:20:59
ClientToScreen
435:420
07/02/14 22:51:21
>>434
できました、
436:420
07/02/14 22:56:32
できました、ありがとうございます!
437:デフォルトの名無しさん
07/02/14 23:09:02
>>433
それどうみても.NETでない。
438:デフォルトの名無しさん
07/02/14 23:33:46
俺たちはとんでもない勘違いをしていたようだ
.NETとは、Visual Studio .Net 2003の省略形だったんだよ!
439:デフォルトの名無しさん
07/02/15 00:04:24
2002 のことも忘れないで上げてください。
440:420
07/02/15 00:06:40
まさしくVisualStudio.Net2003の事です。
.NETとは違ったんでしょうか・・・すみません;
441:デフォルトの名無しさん
07/02/15 00:09:27
な……なんだってー!!
……職場にもいるけどな、そういうヒト。
さらにVisual Studio 2005のことも「ドットネット」って呼んでくれるから、
毎回頭の中で翻訳するのが大変。
例「C++でデバッグしていてドットネットが落ちるんだよな~」「???」
442:デフォルトの名無しさん
07/02/15 00:41:29
>>440
.NETと言ったら普通.NET Frameworkのことを指す。
新規プロジェクトの中に.NETとか書かれたテンプレートがあるだろ。
それが.NET Frameworkを使うプロジェクトを作るのに使うテンプレート。
.NET Frameworkには大量のクラスライブラリが含まれているし、
Visual Studioではフォームエディタも使え、作るほうとしては充実しているが、
利用者に.NET Frameworkをインストールしてもらわないといけないのが、
一般的なアプリケーション開発ではネック。
XP SP2あたりから漏れなくインストールされるようになってきているけどね。
443:デフォルトの名無しさん
07/02/15 10:44:29
Vistaで、インストールされているWindowsコンポーネントを確認すると
.NET Frameworkっていうのがあった。
言い方が良くわからないけど、つまり.NETというのは単なる1つのAPI
ってことで、開発環境を指しているのではない、ということ?
444:デフォルトの名無しさん
07/02/15 10:57:02
>>443
.NETの環境向けに開発できるのが、VS .NET
445:デフォルトの名無しさん
07/02/15 11:04:02
初心者の場合は自分勝手な略語を使わないできちんと書けばいい
ハードディスクのことをハードと呼ぶやつとか
本人はどういうつもりか知らんけど馬鹿にしか見えない。
446:デフォルトの名無しさん
07/02/15 11:05:21
なるほど…。
Visual Studio .NETというのは、.NET Frameworkがインストールされている
端末向けの開発環境、ということか。
Windows Vistaには標準で.NET Frameworkがインストールされているけど、
XPはSP2を入れないと.NET Frameworkが入っていないから、
そういう端末を対象とするなら.NET Frameworkが入っているかいないかを
確認しなければならないということか。
447:デフォルトの名無しさん
07/02/15 11:10:29
Visual Studio .NETという名前だと .net専用と間違える人が多すぎるから
Visual Studio .NETという名前は使われなくなった。
448:デフォルトの名無しさん
07/02/15 11:15:08
あ、俺も以前、ずっと勘違いしてたw
.NETというくらいだからネットワーク=インターネット専用なんだろうな、俺には
関係ないなと…w
449:デフォルトの名無しさん
07/02/15 14:39:24
逆にVisual Basicは2005でも.NETを付けておけば良かったのにと思う。
「Visual Basic .NET」 2005という具合にさ。
450:デフォルトの名無しさん
07/02/15 22:37:51
Visual Stadio2005 をインストールして
VS2005 C++で
#include <stdio.h>
main()
{
int a;
}
をコンパイルすると
error C4430: 型指定子がありません - int と仮定しました
が出ます
今まではいけてたんですが、わかる方お願いします。
451:デフォルトの名無しさん
07/02/15 22:55:09
int main(){
}
452:デフォルトの名無しさん
07/02/16 01:11:53
関数の戻り値の型を省略できるのはCだけ。
たぶん拡張子をcにしたり、コンパイルオプションから/TPを外したりすれば、
(int抜きの)main()でも行けると思う。
453:デフォルトの名無しさん
07/02/16 03:40:09
stringをintにするにはどうすれば?
454:デフォルトの名無しさん
07/02/16 03:47:10
>>453
cli::String なのか std::string なのかはっきりしろ。
455:デフォルトの名無しさん
07/02/16 03:55:21
std::string
456:デフォルトの名無しさん
07/02/16 04:03:33
>>455
std::string s("123");
int i = atoi(s.c_str());
457:デフォルトの名無しさん
07/02/16 04:07:03
>>456
それができないんですよ
エラーがでます
458:デフォルトの名無しさん
07/02/16 04:08:59
エラーが出ますじゃないでしょ。
どんなエラーが出るのか言いなさいよ。
459:デフォルトの名無しさん
07/02/16 04:09:06
>>457
どんなエラーか書け
460:デフォルトの名無しさん
07/02/16 04:16:54
>>457
そんなんだから成長しないんですよ。
461:デフォルトの名無しさん
07/02/16 04:18:10
>>457
とっとと書けよ。あんぽんたん。
462:デフォルトの名無しさん
07/02/16 04:19:58
同じ奴みたいだな。夜釣りの常習犯か。
スレリンク(tech板:877番)
463:デフォルトの名無しさん
07/02/16 12:45:22
設計でUMLを使ってる人いますか?
マルチスレッドとかUMLで設計できますか?
464:デフォルトの名無しさん
07/02/16 13:17:43
UMLは詳しく知らん身だけど
アクティビティ図使えば表現できるんじゃねーかとは思う
が、とりあえずスレ違いだ。
465:デフォルトの名無しさん
07/02/17 01:16:40
VC++でゲームを作ろうと考えてるんですが、オススメの入門書等ありませんか?
何件か書店回ってパラパラと立ち読みしてみたんですがどういうのが良いのか分からなくて困ってます。
やはり実用例があるC++でゲームを作るみたいな本が良いんでしょうか。
既出、スレ違いだったらすみませんorz
466:デフォルトの名無しさん
07/02/17 11:41:49
ゲ製作技術
URLリンク(pc10.2ch.net)
板違いやな
ゲーム製作はC++だけと考えない方がいい。
どの程度の規模で何やりたいかによって、利用する言語は変わると思う。
ミニゲームであれば、HSP/Flashでも創れるし。
467:デフォルトの名無しさん
07/02/17 12:34:10
そもそもゲームって時点で入門を超えてる
468:デフォルトの名無しさん
07/02/17 12:41:30
初等教育 算数
教養課程 数学 物理 C/C++
専門課程 ゲーム製作
469:デフォルトの名無しさん
07/02/17 16:22:37
今、Visual C++ の入門書を探しています。
Cの文法は一通り理解しています。
本格的にWindowsプログラミングができるようになりたいので、
これから勉強を始めるつもりです。
数年前、ある先生から、
「Winアプリケーションを作れるようになるためには、
まずはWinAPIを理解→オブジェクト指向を理解→MFCを使ったプログラミング」
というような段階を踏んで勉強していくといい、と聞きました。
勧められた本が、山本信雄の「はじめてのプログラミング」(全3巻)で、
ほぼ上記の説明通りの構成で書かれている本らしいのですが、アマゾンで見てみたら
残念なことにこの本はVisualC++5.0/6.0向けらしいです。
現行のVC++2005は、6.0から「かなり変わった」と聞いているので、別の本を
買うしかないと思っています。
「2005になって、.NetFrameWorkのクラスを利用するプログラミングに変わって..」
と聞いても、私にはまだよくわからないのですが、前記の「API→オブジェクト指向→MFC」
という学習の進め方自体も、2005になってだいぶ変わったのでしょうか。
多少時間がかかっても構わないので、なるべく体系だった学習ができるような
入門書がいいのですが....
ちなみに最終的に作りたいものは、周辺機器のデバイスドライバのたぐいです。
もし色々な本を読んでいる方がおられましたら、よろしくお願いします。
470:デフォルトの名無しさん
07/02/17 17:09:09
Winアプリとデバイスドライバだとあんまり関連性ないよ
471:469
07/02/17 17:36:27
>470
すみません。「デバイスドライバ」という書き方では不十分でした。
周辺機器は、光学センサや超音波センサで空間把握をするための装置です。
通信されてきたデータをPC画面上でグラフィカルにモニターするためのWinアプリを
作りたいと思っています。そして、ドライバ周りも一緒にC++でコーディングできればと
考えています。
472:デフォルトの名無しさん
07/02/17 18:01:43
VisualC++2005なら5.0/6.0でできてた事はできるよ。
2005で「API→オブジェクト指向→MFC」という学習の進め方もできる。
かなり変わったというよりは、かなり機能が追加された。
473:465
07/02/17 18:34:36
>>466
少し探したのですが見つからなかったので助かりました。
そちらの方で聞いてみます。誘導ありがとうございました。
474:デフォルトの名無しさん
07/02/17 18:36:05
expressでapiの場合は
リソースエディタやクラスウィザードとか使わないだろうし
2005の本にこだわる意味はないだろうね
475:デフォルトの名無しさん
07/02/17 19:20:02
VCは初心者向きじゃないから嫌ならVBやC#を使えということだな
476:デフォルトの名無しさん
07/02/17 19:43:12
>>469
COMポートで繋ぐ程度ならデバイスドライバは要らない。
独自のカード経由&そのカードが仕様書しか無い、って話なら別だけど。
で、一つ言っておくなら「オブジェクト指向とMFCは一切関係が無い」。
MFCはWinAPIを手を抜いて使うためのラッパ。
あと、VC6のソースが2005で動かない病に良く効く呪文。
プロジェクト - プロパティ - 構成プロパティ - 文字セット - マルチバイト文字セットを使用する
477:デフォルトの名無しさん
07/02/17 21:47:28
VC++.NET2003 でWindowsフォームアプリケーションを作っています。
以前コンソールアプリケーションで作成した、Mysqlのクライアントプログラムを
利用したいと考えていますが、mysql.hを追加すると下記のエラーが出ます。
mysql.hは利用できますか?
Open.cpp
WINVER not defined. Defaulting to 0x0501 (Windows XP and Windows .NET Server)
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\mysql\mysql_com.h(188) : error C2146: 構文エラー : ';' が、識別子 'fd' の前に必要です。
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\mysql\mysql_com.h(188) : error C2501: 'st_net::SOCKET' : 識別名を宣言するのに、型が指定されていません。
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\mysql\mysql_com.h(188) : error C2501: 'st_net::fd' : 識別名を宣言するのに、型が指定されていません。
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\mysql\mysql_com.h(358) : error C2065: 'SOCKET' : 定義されていない識別子です。
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\mysql\mysql_com.h(358) : error C2146: 構文エラー : ')' が、識別子 's' の前に必要です。
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\mysql\mysql_com.h(359) : error C2059: 構文エラー : ')'
478:デフォルトの名無しさん
07/02/18 03:29:49
C++builder5.0で、なんかの画像コンポーネントに、今手元にある
無毛でくっきり縦線・超美少女小学生のヌード写真(jpg)を貼り付
けたいのですがどうすればいいのかわかりません。
ウインドウの大きさと同期して画像のサイズも変わるようにしたい
です。誰か教えてください。
479:デフォルトの名無しさん
07/02/18 03:45:06
>>478
まず、その素敵な性癖を直せ。
話はそれからだ。
480:デフォルトの名無しさん
07/02/18 07:36:09
まず、その素敵な写真をうpれ。
話はそれからだ。
481:ぶいしー
07/02/18 16:39:58
DLLのリソースIDについて質問させてください。
拡張DLL、レギュラーDLLともに、
呼び出すクライアントとのリソースIDの重複は気にするのでしょうか?
あるサイトだと、拡張DLLはリソースIDの管理はMFCがやってくれる
みたいなことがかかれていたので・・
どなたかご教授ください。
482:デフォルトの名無しさん
07/02/18 17:41:31
>>477
#include <mysql.h>の前に、#include <winsock.h>。もれはこれで
3ヶ月ほど悩んだ。
483:デフォルトの名無しさん
07/02/18 20:57:18
Visual Studio 2005なんですけど
SystemParametersInfo(SPI_SETDESKWALLPAPER,NULL,"c:\\a.bmp",0);
でコンパイルはいけるんですが、ソリューションのビルドで
エラーになります
"c:\a.bmp"でもだめです
Vistaでもいけますよね?
解る方お願いします
484:デフォルトの名無しさん
07/02/18 20:59:14
>■質問するにあたって
>・エラーや警告のときはエラーメッセージを書きましょう。
485:デフォルトの名無しさん
07/02/18 21:21:25
>>483 です
エラーが多いんで伏せてました
リンクしています...
aaa_ch.obj : error LNK2028: 未解決のトークン (0A000022) "extern "C" int __stdcall
SystemParametersInfoW
(unsigned int,unsigned int,void *,unsigned int)"
(?SystemParametersInfoW@@$$J216YGHIIPAXI@Z) が関数 "
int __cdecl main(void)" (?main@@$$HYAHXZ) で参照されました。
aaa_ch.obj : error LNK2019: 未解決の外部シンボル "extern "C"
int __stdcall SystemParametersInfoW
(unsigned int,unsigned int,void *,unsigned int)"
(?SystemParametersInfoW@@$$J216YGHIIPAXI@Z)
が関数 "int __cdecl main(void)" (?main@@$$HYAHXZ) で参照されました。
E:\C++\aaach\Debug\aaach.exe : fatal error LNK1120: 外部参照 2 が未解決です。
以上です、お願いします。
486:デフォルトの名無しさん
07/02/19 11:11:35
超初歩的な質問なのですが、
MS Visual C++ .NET で、IntToStr関数を使えないので他の方法を調べてます。
値を文字列に変換するにはどうしたら良いのでしょうか?
487:デフォルトの名無しさん
07/02/19 11:15:20
マネージプログラムならメソッドのToString
そうでなければ、boost::lexical_cast、std::(basic_)ostringstream、std::sprintf (_stprintf)と続く
488:デフォルトの名無しさん
07/02/19 11:24:28
>>487
下の方法でできました!親切な回答ありがとうございます。
int a=100;
label1->Text = a.ToString();
489:デフォルトの名無しさん
07/02/19 15:21:20
連続で申し訳ないのですが、また質問があります。
別の人が作ったソースで下のようにオーバーロードされた関数があるのですが、
この2つの違いって何なんでしょうか?
CRect hoge(CRect & r) const
{
:
:
}
CRect hoge(CRect const & r) const
{
:
:
}
490:デフォルトの名無しさん
07/02/19 15:39:02
>>485
必要なライブラリリンクしてないんじゃね
491:デフォルトの名無しさん
07/02/19 15:40:04
>>489
中味は同じでもかまわない
コンパイラが区別できればそれでいい
492:デフォルトの名無しさん
07/02/19 15:42:38
>>489
constの有無。
特にconstな参照は右辺値を受け取れるので、
実質的にその多重定義は右辺値か左辺値かで振り分けられる。
493:デフォルトの名無しさん
07/02/19 16:11:30
>>492
右辺値、左辺値とは何を指していますか?
この例だと引数は「r」1つだけなので右辺・左辺関係ないように思えます。
あと & についてですが、& をつけると、変数の値を変更すると
呼び出し元のスコープでもそれが変更される、という風に単純に考えています。
これに const が付くということに矛盾も感じます。
const とは、「この引数は変更不可です」という宣言だと思うのですが、
だとすれば、引数を & で渡す意味がないことになります。
このソース、バグ持ちでしょうか?
494:デフォルトの名無しさん
07/02/19 16:25:50
ここはC++相談室じゃないし
くだらない質問は遠慮してほしいな
495:デフォルトの名無しさん
07/02/19 16:34:28
>>493
お前が馬鹿なだけだからVCやるまえにC++勉強してこい
496:デフォルトの名無しさん
07/02/19 17:03:54
>>494-495
わかりました…
ありがとうございます
497:デフォルトの名無しさん
07/02/19 18:35:13
そもそも右辺値、左辺値はC言語の初歩
498:デフォルトの名無しさん
07/02/19 19:53:10
>>496
あきらめるなな。最初は分かんないことばかりなんだから。
499:デフォルトの名無しさん
07/02/20 22:01:04
すみません。
プロジェクトのプロパティで、
ランタイムライブラリについての設定周りで質問なのですが、
今/MDでビルドすると上手く行くいき、/MTにしたところ
ヒープの破壊が発生するといった状況になりました。
プロジェクトには自前のDLLを使ってます。
URLリンク(support.microsoft.com)
ここにあるとおり、CRTオブジェクトの操作の不備が原因であると
分かりました。
それで質問なのですが、
多くの場合の開発では/MTと/MDどちらを使用するのでしょうか、
/MDの方が、容量が小さくなるし、CRTobjも共有できるようですが、
Cランタイム等がインストールされている必要があります。
/MTだと、ランタイムがインストールされていなくても動作
するようですが、容量が大きく、CRTobjが共有できないようです。
どっちもどっちなのですが、やはり/MDが主流なのでしょうか?
500:デフォルトの名無しさん
07/02/20 22:13:29
何の目的か知らないけど、とくに必要感じなかったらデフォのままで
あとここは初心者スレだし
501:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/02/20 22:30:08
int *p;
testFunc(p);
void testFunc (int *p)
{ int tmp=1; p=&tmp; }
503:499
07/02/20 22:48:00
あ、スレ違いすみません。
他スレに投げてきます。
504:501
07/02/20 22:50:22
>>502
すいません。勘違いしていました。
その通りですね。
505:デフォルトの名無しさん
07/02/20 22:52:04
上のやつもあんまり見ない使い方だな
受けたい場合はこういう風に使うのが普通
void GetWindowText( CString& rString ) const;
506:デフォルトの名無しさん
07/02/20 22:56:30
素直にCString返せよ。
507:デフォルトの名無しさん
07/02/21 00:08:53
それはどうよ。
んまぁ今のCPUじゃ一瞬だろうけどな…
508:デフォルトの名無しさん
07/02/21 01:33:29
CStringは参照カウント使ってるから、大したオーバーヘッドじゃないよ。
509:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/02/21 09:41:27
CStringのコピーは、ポインタコピー + αくらいのオーバーヘッドでしょ。
511:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/02/21 16:48:36
>>511
1) コントロールに割り当てると、うまく壊すタイミングがないからGCに任せるといい。
2) 読み取り専用プロパティだから無理。
513:511
07/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:デフォルトの名無しさん
07/02/21 19:33:37
言語が違うからだろう。
Visual Studio .NET 2002 / 2003
-> Managed C++
Visual Studio 2005
-> C++/CLI
おそらく2003あたりなんだろうけど、
開発環境は "MS Visual C++ .NET" なんて略さず、確り書くべき。
515:デフォルトの名無しさん
07/02/21 19:46:08
マネージドC++ではマネージクラスをnewすると漏れなくGCの管理下に置かれる。
それはともかくこのほうがいいと思う。
FontStyle fontStyle;
if (dlg.IsBold()) fontStyle |= FontStyle::Bold;
if (dlg.IsItalic()) fontStyle |= FontStyle::Italic;
516:デフォルトの名無しさん
07/02/21 22:37:04
.NET 2003でWinsockを使いたい場合どうすればいいのでしょうか?
プロジェクトを作る場合にチェックボックスで指定出来るのは後から
知ったのですが、これを忘れた場合どうすればよいのでしょうか?
ws2_32.lib のリンクなどが必要だと思うのですが、VC++6.0とは
リンクの仕方が変わっているようで分かりませんでした。
517:デフォルトの名無しさん
07/02/21 22:50:37
プロジェクトを作る場合にチェックボックスで指定した場合
プロジェクトを作る場合にチェックボックスで指定しなかった場合
2種類つくってどこが違うか比較
518:デフォルトの名無しさん
07/02/21 22:58:45
/LIBPATH
をmsdnで調べましょう
519:デフォルトの名無しさん
07/02/21 23:12:26
>>482
有難うございます、解決できました。
520:デフォルトの名無しさん
07/02/22 10:56:24
>>514-515
ありがとうございます。
おかげさまで疑問点は解決できました。
521:デフォルトの名無しさん
07/02/22 11:05:08
どうでもいい質問かもしれないのですが、
textBox1->Font = new Font("MSゴシック", 10);
と、プログラムからフォント指定する場合、
textBox1コンポーネントに元々あったはずのフォント情報を保存するためのメモリ領域は
どこへ行っちゃうのでしょうか…?
522:デフォルトの名無しさん
07/02/22 12:43:15
.NETではその内ガベージコレクタによって回収される。
だからメモリリークの心配は要らない。
523:デフォルトの名無しさん
07/02/22 14:03:58
>>522
.NETすげー。
サンクスコ。
524:デフォルトの名無しさん
07/02/22 20:22:07
今後C++は廃れますか
525:デフォルトの名無しさん
07/02/22 20:29:21
仕様の汚さでC++を凌駕する言語が現れるまでは安泰です
526:デフォルトの名無しさん
07/02/22 23:16:23
既に現れていると思うが。Dとか。
527:デフォルトの名無しさん
07/02/23 00:03:53
C言語の次だからD言語?
だとしたらA言語とかB言語もあるってこと?
528:デフォルトの名無しさん
07/02/23 00:05:27
Bはあるよ
529:デフォルトの名無しさん
07/02/23 00:31:38
でもBはAの次ということではなく、BCPLの頭文字が由来。
ついでに言うとCの由来はBの後継ということでBCPLの2文字目。
530:デフォルトの名無しさん
07/02/23 00:51:51
えーっと
ユニコードの設定では
CStdioFile::WriteStringで日本語が出力されないんですが
いったい如何すればいいんでしょうか?
531:530
07/02/23 00:52:51
VC2005のMFCでございます。
532:デフォルトの名無しさん
07/02/23 07:03:23
>>531
既定ではCロケールになっているので、Unicode/MBCS変換時に日本語は無視されてしまう。
以下の一行をInitInstance辺りにでも入れておくと、OSの設定に従うようになる。
_tsetlocale(LC_ALL, _T(""));
533:530
07/02/23 07:41:53
>>532
<locale.h>をインクルードしてできました。
助かりましたありがとうございます。
534:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/02/23 18:51:51
フォント色コンポーネント
536:デフォルトの名無しさん
07/02/23 20:07:16
>>534
WM_CTLCOLORをハンドル。
親が処理するか、メッセージ返送を使ってCEditの派生で処理させるか好きな方を。
残念ながら、背景色はSetBkColorだけではうまくいかない。でも調べるの('A`)マンドクセ
537:デフォルトの名無しさん
07/02/23 21:06:59
>>536
ありがとうございます。
ググるための重要なキーワードです。ただ…訳の分からないエラーが出たり
基本を分かってなかったりで死にそうです。
ちょっと首吊ってきます…。
538:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/02/23 22:28:05
↑ Visual Script
541:デフォルトの名無しさん
07/02/23 22:30:18
サンプル動作例
URLリンク(g-s.s7.xrea.com)
542:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/02/24 00:30:16
一般にC++と言う場合、それがVisual C++をさしている確率は低いんでしょうか?
544:デフォルトの名無しさん
07/02/24 01:00:47
Visual C++のデバッグモードは便利ですね
プログラムを組んでも、必ずといっていいほど最初はとんでもないことしてるので、デバッグモードで動かすと
すぐ修正できて便利です。
ただ、ファイルを開いてなんかするプログラムだと、デバッグモードではファイルを開くことができません。
これは仕方ないのでしょうか
545:デフォルトの名無しさん
07/02/24 01:10:40
ファイルを開くときの共有モードをどうにかすればいい。
546:デフォルトの名無しさん
07/02/24 06:13:43
デバッグモードでも普通にファイル開けるだろ
何を言ってるのか理解できない
547:デフォルトの名無しさん
07/02/24 10:25:10
>>543
C++はプログラミング言語で、VisualC++はMicrosoftのプログラム開発ソフト。
意味が全く違う。
548:デフォルトの名無しさん
07/02/24 13:14:08
特定の時刻になったら知らせる方法を教えてください
549:デフォルトの名無しさん
07/02/24 13:26:35
つ[タスク]
550:デフォルトの名無しさん
07/02/24 13:33:44
どういうように使うのですか?
551:デフォルトの名無しさん
07/02/24 13:56:37
CLSID_CTaskSchedulerでCoCreateInstanceして
IID_ITaskSchedulerを介してアクセス。
552:デフォルトの名無しさん
07/02/24 14:02:35
WaitableTimer作って、WaitFor...で待つとか。
553:デフォルトの名無しさん
07/02/26 11:45:16
2003年の本で勉強したらもう古いらしくて損したよー
新しい本買わなきゃ ・゚・(ノД`)・゚・。ウワーン
554:デフォルトの名無しさん
07/02/26 12:21:38
あんたばか?
555:デフォルトの名無しさん
07/02/26 15:02:31
>>547
>>543がそんな意図で聞いてるんじゃないことは明白だと思うんだが
556:デフォルトの名無しさん
07/02/26 15:27:10
気に入らなかったら説明してやれば?
557:デフォルトの名無しさん
07/02/26 15:59:46
C++って言ったら、やはりプログラミング言語って言うしかないんじゃない?
gccなのかVisualC++なのかC++Builderなのか.NETなのか判断できないし。
558:デフォルトの名無しさん
07/02/26 20:59:28
>>543
そういうのって無意味だよな。
VCが使えない分野でなら確実にVCのことではない。
559:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/02/26 23:26:59
更にプロジェクトのプロパティのリンカの中のどこかに、
追加の入力ファイルという項目があるから、そこにws2_32.libと書く。
そうしてはじめてリンク時にws2_32.libが使われる。
561:デフォルトの名無しさん
07/02/26 23:33:39
まだやってたのか
差分とって調べりゃ5分で済んだろうにアホだな
562:516
07/02/26 23:46:01
>>560
ありがとうございます。
確認してみます。
>>561
差分ってどうやってだすんですか?
テキストであればツールで簡単に確認できますが、リンカの設定などは
バイナリデータに入ってそうなんですが。
563:デフォルトの名無しさん
07/02/26 23:50:44
しかしファイル名はテキストのまま書き込まれている
564:デフォルトの名無しさん
07/02/27 01:30:39
大丈夫、VisualStudio2003ならその辺の設定は全部テキストだ。
565:デフォルトの名無しさん
07/02/27 04:45:26
*.vcproj をメモ帳で開いて見れ。
さすれば、幸せを手に入れることが出来るだろう。
566:デフォルトの名無しさん
07/02/27 10:26:29
>>561
アホとか言うのは控えろよ
ここ初心者スレだぞ
カスが
567:デフォルトの名無しさん
07/02/27 11:02:54
MFCダイアログベースで、ヘッダ情報に頼らずにファイルの容量を取得するにはどうすればいいでしょうか。
568:デフォルトの名無しさん
07/02/27 11:09:10
GetFileSize()
569:デフォルトの名無しさん
07/02/27 11:40:03
唐突にヘッダ情報って?
570:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/02/27 17:11:38
別に問題ないと思うけど
あとは簡単なテストプログラム作って試すぐらいだから自分でやってみれば?
572:デフォルトの名無しさん
07/02/27 17:14:50
追加したダイアロクじゃなくて
新しく簡単なサンプル作ってやってみれば?ということね
573:デフォルトの名無しさん
07/02/27 18:02:36
m_bt1は有効だった?NULLだったりしないか?
574:デフォルトの名無しさん
07/02/27 18:03:29
つか、メンバのほうか
m_bt1.m_hWndは有効な値だった?
575:570
07/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:デフォルトの名無しさん
07/02/27 18:43:02
んじゃIDがおかしいとかかな。
変数定義もっかいやりなおしてみたら。
何回やってもダメならその手順書いてみな
577:デフォルトの名無しさん
07/02/27 18:44:27
メンバ変数の登録がちゃんとできてない。
もう一度やり直してみるといい。
対象のボタンを右クリックして「メンバ変数の追加」、
んでコントロール変数として適当なのを追加。
578:570
07/02/27 18:52:14
>>576
>>577
了解しました。
もう一度見直してみます。
579:デフォルトの名無しさん
07/02/27 19:50:05
roopoutには確実にFALSEがはいっているのに
if(roopout==FALSE)
break;
else
....
が機能しませんが環境によってそういうことがあるのですか?
デバッグしながら確実に中にはいってるものを確かめましたがelseのほうにいきます
580:デフォルトの名無しさん
07/02/27 19:56:06
FALSEとfalseは違うんじゃなかったっけ
if (!roopout) とか書いた方が安全
581:デフォルトの名無しさん
07/02/27 19:57:12
それかifの後ろのどっかに変なセミコロンが紛れ込んでいて
条件式が真の場合にただの空行を実行してるとか
582:デフォルトの名無しさん
07/02/27 19:57:24
やってみます
583:デフォルトの名無しさん
07/02/27 20:03:07
ifとelseの間がbreakだけなので、ステップ実行で確認したときあたかも素通りしたように
見えるだけなんじゃない?
584:デフォルトの名無しさん
07/02/27 20:06:22
ではなぜelseの処理に
585:デフォルトの名無しさん
07/02/27 20:06:35
2005から始めた初心者はかなりきつい状態だろうな
本もサイトも全然ないもんな……
586:デフォルトの名無しさん
07/02/27 20:21:12
実は
if(roopout=FALSE)
と書いていた。
587:デフォルトの名無しさん
07/02/27 20:23:05
それに気付かなくてえらい苦労をした経験から、
条件文は必ず定数を先に書くことにしてる
if(200 == myIQ) みたいな
588:デフォルトの名無しさん
07/02/27 20:29:16
今時それくらいは警告を出すから、わざわざナンセンスな書き方をする必要など無い。
589:デフォルトの名無しさん
07/02/27 20:39:44
そんな書き方してません
再起動したりしたら動きました
590:516
07/02/27 21:44:56
ありがとうございました。
テキストファイルを見比べてみて同じようにすれば出来ました。
VC++6.0のSDKのときはライブラリをリンクして winsock2.h をインクルードして
たんですが、今回、2003のMFCの場合、ヘッダをインクルードして後はちょこちょこっと
関数を呼び出しているだけでライブラリのリンクは特にしていないように思えました。
良く分からなかったのですが、とにかく出来ました。
591:デフォルトの名無しさん
07/02/28 01:23:13
>>588
VCだと警告されない罠。
gccでは文句言われるので、そっちに合わせた書き方してるけど。
592:デフォルトの名無しさん
07/02/28 01:51:43
warning C4706: 条件式の比較値は、代入の結果になっています。
593:591
07/02/28 02:46:30
ありゃ、見逃してた。ひゃくにんいっちゅの所為かorz
安全性考えると、pragmaか/wオプションでレベル下げとくのもありかなあ。
594:デフォルトの名無しさん
07/02/28 14:56:39
if(FALSE == flag)
みたいに定数を先に書くソースを見ると身震いするほど嫌悪感を抱くのは俺だけ?
595:デフォルトの名無しさん
07/02/28 15:09:53
一度精神科を受診することをオススメする。
596:デフォルトの名無しさん
07/02/28 15:43:04
>>594
初めて見た。
597:デフォルトの名無しさん
07/02/28 17:00:54
>>594
オレも。
598:594
07/02/28 17:09:35
>>595
ちょっと受診してくるから良い病院を紹介してくれ
599:デフォルトの名無しさん
07/02/28 23:18:59
URLリンク(www.kouno.jp)
600:デフォルトの名無しさん
07/03/01 00:39:08
打ちそこねで=を一つ落とすことはあっても
うっかりしてリテラルと変数を逆に書くなんてことはない。
601:デフォルトの名無しさん
07/03/01 08:11:35
>>600
そりゃいないだろ
わざと逆にやってんだから
602:デフォルトの名無しさん
07/03/01 10:24:23
プログラムを文章として読むと、それが気持ち悪いんだよね。
文章のように読めるプログラムを理想としてるのがわるいのかなあ。
603:デフォルトの名無しさん
07/03/01 11:20:23
>>602
そうそう。たとえば、
if( a == 100 )
だと、頭の中で「a は 100 か」と読める。
でも
if( 100 == a )
だと、「100 は a か」と読んでしまう。
主題が a ではなくなってしまい、思考が後戻りしてしまう感覚が
あってなんかイラッとする。
604:デフォルトの名無しさん
07/03/01 11:27:04
デバッグの停止ボタンを押すとデバッグ中のプログラムは停止しますが
解放処理等はちゃんと行われているのでしょうか?
605:デフォルトの名無しさん
07/03/01 12:04:11
>>604
行なわれるものと行なわれないものがある。
606:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/03/01 12:10:41
そのままできるのがC++の強み
608:デフォルトの名無しさん
07/03/01 12:16:52
正しくは#include <cstdio>
609:デフォルトの名無しさん
07/03/01 12:18:10
>>607
そうなんですか~ ありがとうございます。
はじめたばかりの初心者ですみません。
610:デフォルトの名無しさん
07/03/01 12:21:24
#include <cstdio> ですか。間違えました。
611:デフォルトの名無しさん
07/03/01 12:42:34
<cstdio>を使うならprintfではなく、std::printfと書かなければいけないぞ。
612:デフォルトの名無しさん
07/03/01 13:01:53
C++だからといって、cin,coutに拘る必要は無い。
とか思う俺は年寄りなんだろうな……
613:デフォルトの名無しさん
07/03/01 13:15:26
すみません。もうひとつ。
#include <stdio.h>
int main(void)
{
printf("こんにちは\n");
return 0;
}
マイクロソフトのVisual C++でやってみたところ
画面が一瞬出てからすぐ消えちゃうんですがどうすればいいでしょうか?
614:デフォルトの名無しさん
07/03/01 13:16:41
こんにちは→helloに変更します。
615:デフォルトの名無しさん
07/03/01 13:22:56
>>613
Visual Studioのバージョンによるが「デバッグなしで開始」するか、
コマンドプロンプトを開いてそこから実行する。
616:デフォルトの名無しさん
07/03/01 14:15:45
>>613
何回も何回も出るな、その質問。
>>615でいいけど、デバッグしたいなら
rerturn にブレークポイント置くか、その前に getchar(); でも入れとけば。
617:デフォルトの名無しさん
07/03/01 14:23:07
>>615-616
ありがとうございます。
618:デフォルトの名無しさん
07/03/01 15:07:29
C++をCコンパイラとして使うのはやめた方が良くないか?
それは強みというより、自分の首を自分で絞めているようなもののような気がする。
stdioなんて使わずに、がんばってC++のライブラリを使用すべきなんじゃないか。
論じる次元が違うかもだけど、構造化プログラミングというパラダイムとオブジェクト
指向というパラダイムを同時に使っているような気がして、なんか嫌だ。
C++がますます煙たがれ、衰退するような気がする。
619:デフォルトの名無しさん
07/03/01 16:19:30
>>618
話が飛躍しすぎ
620:デフォルトの名無しさん
07/03/01 16:32:13
>>618
C++はそういう複数のパラダイムを使えることが強みだと
C++の作者Stroustrupも自著D&Eで言っている。
621:デフォルトの名無しさん
07/03/01 16:37:20
質問があります。
afxwin.hをインクルードしているのにも関わらず、CWndを使うと
error C2061: 構文エラー : 識別子 'CWnd'
というのが出ます。
CWndを使用するためにはafxwin.hをインクルードするだけでは足りないのでしょうか?
622:デフォルトの名無しさん
07/03/01 18:44:42
そのエラーの行を、前後数行含めてコピペしてみ
623:デフォルトの名無しさん
07/03/01 19:24:24
>>622
返答ありがとうございます。
この行が先頭に出て、他にエラーは出ません。
624:デフォルトの名無しさん
07/03/01 21:06:01
afxwin.hがあればいい
625:デフォルトの名無しさん
07/03/01 21:14:14
つまりそれ以外の原因を疑えということ
626:デフォルトの名無しさん
07/03/01 22:31:17
俺としてはcinとかcoutってそんなにいいものなのかねって思う。
C言語に変なもの持ち込んでC++を作りやがってとすら思っている。
627:デフォルトの名無しさん
07/03/02 03:05:26
> 俺としてはcinとかcoutってそんなにいいものなのかねって思う
実に便利だと思う。STLと絡めると特に。
628:デフォルトの名無しさん
07/03/02 08:40:14
ユーザ定義型を組込型と同じように入出力できるのはいいと思う。
629:デフォルトの名無しさん
07/03/02 08:46:27
VCじゃなくてC/C++の話になると書き込みが増えるのは
VCの話には参加できなくてROMってる初心者が多いということか
630:デフォルトの名無しさん
07/03/02 08:56:49
俺もストリームだけは便利さがいまだに分からん。
まあテキスト入出力自体あまりしないからかもしれん、
作るのは GUI アプリばっかだからコンソールは使わないし、
、データ保存はもっぱらバイナリだし、
設定ファイルは WritePrivateProfileString だからなあ
631:デフォルトの名無しさん
07/03/02 12:18:27
>>629
C/C++の話の方がdeepな感じがするが
632:デフォルトの名無しさん
07/03/02 13:25:30
VC6使ってる初心者が多いしVCは万年初心者が多いのか?
C/C++のベテランでも挫折するという話だし
633:デフォルトの名無しさん
07/03/02 17:22:29
いつまでたっても初心者だ
634:デフォルトの名無しさん
07/03/03 19:53:59
完全VCオンリーで語ることなんかあるのか?
635:デフォルトの名無しさん
07/03/03 20:27:38
VC固有の動作、CRTの独自拡張、MFCやATLとか
636:デフォルトの名無しさん
07/03/03 21:55:11
VCという道具について語るのが目的か?
VCという道具を使ってWindowsプログラミングをするのが目的だろ
637:デフォルトの名無しさん
07/03/03 22:58:37
API直打ちしている人はC言語のfgetsみたいにファイルから
テキストを一行取得するようなことをしたい場合は
ReadFileとかで適当なバイト数読み出して
行末を見つけて抜き出す、のようにやっているんですか?
638:デフォルトの名無しさん
07/03/03 23:38:21
人によるだろう
639:デフォルトの名無しさん
07/03/04 01:38:18
>>637
そうだよ。SDKだけでやるならね。
640:デフォルトの名無しさん
07/03/04 05:34:28
ちなみに CRT は内部で
>>637 が言ってることをやってるよ。
641:デフォルトの名無しさん
07/03/04 09:13:46
SDKオンリーだろうかCランタイムだろうがVBランタイムだろうが
自前でやるか、呼び出す関数・メソッドが内部でやるか
ただそれだけのことでしかないわな
642:デフォルトの名無しさん
07/03/04 11:49:44
641って馬鹿?意味を全く理解してないw
643:デフォルトの名無しさん
07/03/04 13:59:09
たぶんCでべたに書くのが一番効率がいい。
けど安全性とか汎用性とかもあるから既存のライブラリを使う場合もある。
どれが一番いいのか?といわれたら
自分で何種類か書いて実際試してみるしかないだろうな
自分で試さずに人に聞いたり脳内でやってるやつは使いものにならない。
644:デフォルトの名無しさん
07/03/04 18:20:21
質問です。
プロパティウィンドウからコントロールのフォントや色を変えたいのですが、
それらしい項目が見つかりません。
使っているVCのバージョンは2005なのですが、昔のバージョンは
それっぽいのがあったと思ったのですが・・・
どうやったら変更できますでしょうか?
645:デフォルトの名無しさん
07/03/04 18:30:45
もともとネェヨ
646:デフォルトの名無しさん
07/03/04 18:32:59
いちばん肝心な情報が抜けてるから
647:デフォルトの名無しさん
07/03/04 23:49:02
>>644
それはVBだ
648:デフォルトの名無しさん
07/03/06 08:50:44
VC++ やっと2003から2005に上げられたんですけど
メニューのイベント・ハンドラが変・・・・
2003ではメニューのアイテムから
イベントハンドラの追加を選ぶと、
『追加して編集』と『コードを編集』ってボタンがあって
すでにイベントハンドラがある場合は、
『コードを編集』を押すと、
ソースのその関数に飛んでくれたんだけど
2005では『追加して編集』しかないんです
これって使用なんですか?
『コードを編集』はなくなって、自分で関数を探すしかないんでしょうか?
649:デフォルトの名無しさん
07/03/06 10:19:47
「コードを編集」はある。見えないだけだろう
タブで進めてリターン押してみ
IEのバージョンは?
650:デフォルトの名無しさん
07/03/06 10:23:51
確かにIE7だと見えない。
>>649 の言うように、タブで移動して押すしかないな。
651:デフォルトの名無しさん
07/03/06 12:37:22
>>649
>>650
確かにIE7です
『追加して編集』と『キャンセル』の間が開いてて
タブで移動していって適当なところでリターンしたら『コード編集』できました
とりあえず、ありがとうございます
だけど、コード編集ボタンを直接見たり、押すことはできないんですか?
IEのバージョンを6とかに戻せばいいんでしょうか?
(戻せるのかどうかわかりませんが・・・・)
652:デフォルトの名無しさん
07/03/06 12:45:29
>>644を見て思ったんだけど
unixのmotifなんかだとあらゆるコンポーネントにほとんど同一のメンバを追加することができる。
windowsのgui開発言語もそうなればいいのに。
653:デフォルトの名無しさん
07/03/06 13:42:57
windowsのgui開発といってもVCに限定してもいろいろあるし
654:デフォルトの名無しさん
07/03/06 13:55:30
リソースエディタはリソースを編集するエディタだから、
リソースの仕様に含まれていない以上、できなくて当然とも言えるな。
655:デフォルトの名無しさん
07/03/06 14:16:21
すいません、質問があります。
MS VC++.NET2003なのですが、
画面をキャプチャする方法をどなたかご存知でしょうか。
画面全体でなくてもいいのですが、
(マウスカーソルの部分の1ドットだけでいいんですが)、
キャプチャしてそこからマウスカーソルの部分の色情報を取得したいと考えています。
よろしくお願いします。
656:デフォルトの名無しさん
07/03/06 14:27:16
マウスのイベントかなんかで
指定された座標のピクセルの RGB (赤、緑、青) 値を取得
657:デフォルトの名無しさん
07/03/06 14:38:18
デスクトップのDC取得してGetPixel
658:デフォルトの名無しさん
07/03/06 16:31:25
どうしてもうまくいかんので質問すま。
URLリンク(wwwdoi.elec.nara-k.ac.jp)
のソースを参考にDirector用のXtraを作成中なのです。
んで、ソース中の
BITMAPINFO BitmapInfo;
をヘッダに書くとその直後のCopyMemoryの箇所で落ちるのです。
何故?
ちなみに開発環境はWindowsXP+VC6.0です。
659:デフォルトの名無しさん
07/03/06 17:20:03
> 何故?
コードがおかしいから
660:デフォルトの名無しさん
07/03/06 17:30:33
ドコガオカシインダロウ・・・(;´д`)
661:658=660
07/03/06 17:32:11
ID出ないの忘れてた。
662:デフォルトの名無しさん
07/03/06 17:35:36
落ちるコードを見せろ
つーか、Copyで落ちるならサイズ間違ってんだろ
663:658
07/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:デフォルトの名無しさん
07/03/06 17:38:56
(中略)部分は658リンク先のコードのコピペ。
665:658
07/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:デフォルトの名無しさん
07/03/06 17:43:19
コンピュータ名の取得の仕方を教えてください
667:デフォルトの名無しさん
07/03/06 17:43:24
// ビットマップ情報の取得
pGrab -> GetConnectedMediaType( &amt );
// ビデオ ヘッダーへのポインタを獲得する。
VIDEOINFOHEADER *pVideoHeader = (VIDEOINFOHEADER*)amt.pbFormat;
ちゃんと取れてるんだろうな。
エラーチェックぐらいは当然やってるよな?
668:デフォルトの名無しさん
07/03/06 17:43:59
>>666
ぐぐれ
669:デフォルトの名無しさん
07/03/06 17:46:00
>>667
いかんせんデバッグモードみたいなのがないのですよ。orz
これがXtra開発の嫌なところで(ry
>>658のサンプルをコンパイルして実行したら普通に動くのでたぶん取れてるはず。
670:655
07/03/06 17:46:59
>>656-657
まだ確認はとれていないのですが、やってみます。
ご回答ありがとうございます。
671:デフォルトの名無しさん
07/03/06 17:54:40
せめてASSERTくらい入れとけ
672:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/03/06 18:10:50
>>672
違いがわからんぞ
BITMAPINFO BitmapInfo; の場所だけか?
674:デフォルトの名無しさん
07/03/06 18:16:49
>>673
そうなのです。
675:デフォルトの名無しさん
07/03/06 18:17:22
Xtraって知らないけど663のCopy前で
BITMAPINFO tmp;
if( tmp.bmiHeader.biSize != BitmapInfo.bmiHeader.biSize)
MessageBox(0,"勘弁してよ",0,0);
ってやったらどうなる?
676:デフォルトの名無しさん
07/03/06 18:20:27
グローバル変数なのかよ。
本来BitmapInfoは可変サイズだからそのまま宣言することは
あまりないんだが、、まあヘッダだけ欲しいならいいのか・・・
まずは、BitmapInfoのアドレスと、sizeof(BitmapInfo)を出してみ
677:デフォルトの名無しさん
07/03/06 18:21:03
あ、だめだ675は忘れて
678:デフォルトの名無しさん
07/03/06 18:21:10
>>675
「勘弁してよ!」って言われた!
・・・つまりどういうこと?(;´д`)
679:デフォルトの名無しさん
07/03/06 18:21:39
>>675
初期化してないbiSizeに意味が?
680:デフォルトの名無しさん
07/03/06 18:25:18
sizeof(BitmapInfo)を出そうとしたら落ちる・・・orz
681:デフォルトの名無しさん
07/03/06 18:26:42
BitmapInfoって名前がよくないw
何かとぶつかってんじゃないのか
682:デフォルトの名無しさん
07/03/06 18:29:52
MessageBox(0,(const char *)&BitmapInfo,0,0);
なんてのを加えたら空ダイアログが出たけどこれ壮大に間違ってますよねorz
683:デフォルトの名無しさん
07/03/06 18:34:05
正直、全体的にツッコミどころ満載。
684:デフォルトの名無しさん
07/03/06 18:35:02
そういうのは、
sprintf(str, "%X", &BitmapInfo);
とかやるもんだ
685:658
07/03/06 18:38:57
>>684
stdioは使えないのですよ。
コンソールとか開きませんし。
686:デフォルトの名無しさん
07/03/06 18:41:41
あ、使えるか。orz
687:デフォルトの名無しさん
07/03/06 18:43:51
アドレス:1000E380
sizeof(BitmapInfo):44
と出ました。
688:デフォルトの名無しさん
07/03/06 18:55:13
で、ZeroMemoryで落ちなくて
CopyMemoryで落ちるのか?
ローカルでBITMAPINFO を作ってそっからコピーしては。
とにかく、オオボケかましてる率98%だからな
689:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/03/06 19:14:01
初心者スレだから言うけれど
落ちるにも色々あるんだ。
落ちた時のエラーメッセージを貼り付けるとよいかと
691:デフォルトの名無しさん
07/03/06 19:14:22
BInfo = BitmapInfo;
で落ちるのか?
落ちるというのは、その行で落ちるのか?
BInfo.bmiHeader.bfType とか、各メンバにはアクセスできるのか?
692:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/03/06 19:20:18
>>691
その行で落ちるので以降アクセスできるかどうかもわかりません。
694:デフォルトの名無しさん
07/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
07/03/06 20:32:33
似たプログラムが手元にあるんですけどそっちは普通に動くんですよね・・・。orz
とりあえず、もうちょい一人であれこれ考えてみます。
696:デフォルトの名無しさん
07/03/07 00:09:09
どっかでスタック壊してそうな
こっちで再現できるだけのコードが無いともうわからん
697:デフォルトの名無しさん
07/03/07 09:12:52
SendInput、INPUT構造体、KEYBDINPUT構造体を使おうとしたのですが
ビルドかけると「定義されてません」とコンパイラに怒られます
windows.hはstdafx.h内でインクルードしてあり、stdafx.hもちゃんとインクルードしてます
_WIN32_WINNTの値も問題なく、#ifディレクティブの条件にも合ってます
特に定義がスキップされる要素は無いのになぜ定義されてないと出るのかサッパリわかりません・・・
何か、原因とか手がかりとかわかる方いらっしゃいませんか
698:デフォルトの名無しさん
07/03/07 10:39:38
NOUSER定義してました、とかなら殴る。
問題無いと言っている_WIN32_WINNTの値は、具体的には何だ?
stdafx.hをupした方が早いかもしれんな。
あと、とりあえずVCのバージョンは書いとけ。
699:デフォルトの名無しさん
07/03/07 10:56:52
_WIN32_WINNTだけではなくWINVERも指定しておけよ。
700:デフォルトの名無しさん
07/03/07 11:28:21
バージョンはVC++7.0です
_WIN32_WINNTは0x0500となってました
(winuser.hのSendInput周辺を囲ってる#ifは_WIN32_WINNT > 0x0400でした)
WINVERの方は覚えてないです・・・
701:デフォルトの名無しさん
07/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
07/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:デフォルトの名無しさん
07/03/07 18:56:45
localtime関数はマルチスレッドで使う場合
スレッドセーフではないと聞きました
VC++2002ですが解決策を教えてください
704:デフォルトの名無しさん
07/03/07 19:01:54
>>703
マルチスレッドは良くない。
705:デフォルトの名無しさん
07/03/07 19:02:36
マルチかよ
706:デフォルトの名無しさん
07/03/07 19:03:16
>>702
label_sp->Location = Point(X, Y); // ここ重要
Location.Xは、返された一時オブジェクトに対しての操作なので、
ラベルには反映されなかった。
707:702
07/03/07 19:27:56
>>706
あ、いえ、あれで実際動いてますよ?
ラベルのドラックができてます。
まだ、マウスカーソルのサイズ分のズレがありますが、それは調整中です。
回答ありがとうございます。
708:デフォルトの名無しさん
07/03/07 19:31:11
>>703
スレッドセーフでないものをスレッドセーフにするには、
ラップすれば良いと何かの本で…
私ごときでは具体例は出せませんが
709:デフォルトの名無しさん
07/03/07 19:52:02
>>703
VC++2002がどんな設定だったか覚えていないが
設定でマルチスレッド対応のランタイムライブラリを選べばOK。
(推測)
それとスレッドの作成に
Win32APIのCreateThreadではなく
C言語用かMFC用のを使えばいいんじゃない。
710:706
07/03/07 20:04:20
>>707
>>701が動かない理由な。判りにくくてすまそ。
711:デフォルトの名無しさん
07/03/07 20:07:53
>>703
マルチってほんとに便利ですね。いらないスレッドはポイですよ。
【初心者歓迎】C/C++室 Ver.35【環境依存OK】
スレリンク(tech板:331番)
712:デフォルトの名無しさん
07/03/08 10:59:55
質問に合うスレッドに書き換えただけですがなにか?
713:デフォルトの名無しさん
07/03/08 11:17:00
そもそも、何でスレッドセーフではないのか?
を考えたことあるか?
714:デフォルトの名無しさん
07/03/08 11:58:24
内部の静的な領域を使い回しするからですよね
715:デフォルトの名無しさん
07/03/08 13:16:21
「~ですけど、何か?」ってすっかり一般的になってるなw
もともとこの言い回し、WhiteAlbumってゲームに出てきたジャーマネの口癖を
パクッたやつだって知ってるヤツはあまりいまい…
716:デフォルトの名無しさん
07/03/08 13:35:25
数年前にはやった
717:デフォルトの名無しさん
07/03/08 14:00:28
6年来の葉鍵板住人だけど初耳だった
718:デフォルトの名無しさん
07/03/08 18:04:21
>>717
だったら「~ですが何か?PART.XX」ってスレ、何度も目撃してるはずだが…
たしか名前は弥生さんだった
スレ違いスマソ
719:デフォルトの名無しさん
07/03/08 19:49:01
C++で委譲しまくってたら処理を振り分ける部分が恐ろしく複雑で忙しそうになってしまった
最初のうちは入門書に載ってるみたいに色んな機能を併せ持った奴作っていくようにした方がいいんでしょうか?
720:デフォルトの名無しさん
07/03/08 22:56:09
教えてください。
VC .NET 2003 でMFCを使ってプログラムを使うと、他の2003、2000の
環境で「MFC70.DLLがない」というエラーで実行できませんでした。
DLLを入れれば動くのは分かりますが、VCのコンパイルオプションなどで
通常の2000などの環境でも動くように出来ないのでしょうか?
「プロパティ-全般-MFCの使用」でスタティックにすれば実行できましたが、
スタティックにしたために実行ファイルのサイズが大きくなり格好が悪いです。
もっとスマートな方法はないでしょうか?
721:720
07/03/08 22:56:50
> VC .NET 2003 でMFCを使ってプログラムを使うと
VC .NET 2003 でMFCを使ってプログラムを作ると
の間違いでした。
722:デフォルトの名無しさん
07/03/08 23:16:42
寝言?
723:デフォルトの名無しさん
07/03/08 23:56:13
実行ファイルが数MBあったところで、ガタガタ抜かす奴は今時いないから気にするな。
724:デフォルトの名無しさん
07/03/09 00:00:24
>>720
EXEにMFC70.DLLを同梱
スタティックリンク
MFCを使わない
さあどれでも好きなものを選べ。
725:デフォルトの名無しさん
07/03/09 00:04:10
ネットで配布されてるフリーのライブラリを複数併用してると
実行ファイルが凄いことになるよな
併用できるように(試行錯誤で)改造することは出来ても不要なコンポーネントを削ることまでは出来ないから
結局10MbytesのExeとかになっちゃう
そんなのでも一から自分で組むよりはパフォーマンスが良いって言うのが悲しいというか情けないところなんだけど・・・orz
726:720
07/03/09 00:04:15
.NETでMFCを使う以上、仕方がないということですね。
ありがとうございました。
727:デフォルトの名無しさん
07/03/09 00:19:34
>>725
ならんよ。デバッグのままなんじゃないのか
728:デフォルトの名無しさん
07/03/09 14:54:28
10Mのexeはすごいなぁw
どんだけ超大作なんだろうか
729:デフォルトの名無しさん
07/03/09 15:35:37
10MBの実行コードってソースコードにしてどのぐらいだろうね
きっと、いろんな人のコードがいっぱい詰まってるんだね
730:デフォルトの名無しさん
07/03/09 19:57:12
Perlのコードがそのまリテラルとして入ってるんだろ。
731:デフォルトの名無しさん
07/03/10 12:51:17
要らん.lib削ったら5分の1になりますた
ライブラリの機能実験のため一杯詰め込んでたの忘れてましたすいません><
732:デフォルトの名無しさん
07/03/10 13:24:53
質問です。
複数のコントロールをcreateで作成するときに、
リソースIDを割り当てることに困っているのですが、
割り当てようとしているID値が他で使われていないか、
または使われていないID値を返すような関数はありますでしょうか?
よろしくお願いします。
733:デフォルトの名無しさん
07/03/10 17:29:04
自分で管理してないと使いものにならないと思うんだが気のせいか?
使う予定がないんだったら全部staticにしとけばいいし
734:デフォルトの名無しさん
07/03/10 19:25:05
>>732
VC2005ならリソースを選択した状態で編集メニューのリソースシンボル。
新規作成で追加し、そのIDを使うようにすれば管理は多少楽かも。
でも使い勝手は良くないな...
735:658
07/03/10 20:10:15
スレリンク(tech板:268-280番)
というやりとりを経て戻ってきました。
&BitmapInfo.bmiHeaderの値がおかしい気がするんですが・・・。
736:デフォルトの名無しさん
07/03/10 20:30:23
1. もう一度最初から組みなおす
2. デバッガを上手く使う
3. 諦める
少なからず、デバッガについて機能を調べ上手に利用して
原因を特定していくとかいう根性がないようであれば、
VCとは相性が悪かったと思って別の言語に移った方がいい。
VC(というか、C/C++)は結構面倒だ。
Visual Studio でのデバッグ
URLリンク(msdn2.microsoft.com)(VS.80).aspx
C# なんかメモリなんかあんまり考えなくて済むから割とオススメだぞ。
737:デフォルトの名無しさん
07/03/10 20:39:09
実は付近のメモリ破壊していて
そのとばっちりを受けている場合は直すの大変だよね。
まず原因を探すのが大変。
738:デフォルトの名無しさん
07/03/10 20:41:04
>>736
C#使いたいんですがXtraがC++しか対応してないんですよ。orz
739:658
07/03/10 20:49:45
あと、デバッガ使えるなら使ってるんですよ。
いかんせん組み上げてあとは動くかどうか神頼みみないな検証しかできないので困ってます。orz
740:デフォルトの名無しさん
07/03/10 20:57:54
> いかんせん組み上げてあとは動くかどうか神頼みみないな検証しかできないので困ってます。orz
良く解らんけど、何故に VC のデバッガが利用できない?
プラグインとして動作するしかないからか?
もしそれならデバッガのアタッチ機能を使え。プロセスに侵入するんだ。
(とはいえ、Mcromedia製の云々っぽいからデバッガに関連する何かはありそうだが…)
それと、デバッガの機能としての
「特定のメモリアドレスにアクセスした場合にブレーク」
も併用するとよいと思うぞ。
741:デフォルトの名無しさん
07/03/11 02:19:13
createで作ったStatic Controに画像(jpg)を表示する処理を入れたのですが、
ソース上では先にcreateしているのに、
実行時には「画像描画」→「createしたStatic Controlの表示」の順になっているためか、
画像の上にstaticがでてしまいます。
どうにかならないでしょうか・・・よろしくお願いします。
742:デフォルトの名無しさん
07/03/11 08:31:18
Staticつかう意味があるんだろうか?
743:741
07/03/11 08:53:50
>>742
当方、Staticじゃないと表示させられないという認識でおりました。
他のコントロールでも表示できるのであればそちらでよいと思ってます・・・
744:デフォルトの名無しさん
07/03/11 09:24:02
staticが表示するのと別のものを自分で表示するんだったら
static使う意味がないんじゃないかということ
745:743
07/03/11 09:43:50
>>744
説明がちょっとわかりづらくなっていました。すみません・・・
Static Controlの枠の上にjpgを乗せるということをやりたかったんですが、
どういうわけか画像がStatic Controlの下に隠れてしまうんです。。。
Static Controlの属性が悪いのかなあ・・・
746:デフォルトの名無しさん
07/03/11 11:21:22
Static Controlのウィンドウスタイルだろ
オレもSTATIC並べて枠と座標だけ利用することはたまにやる
747:743
07/03/11 11:26:02
>>746
回答ありがとうございます。
そのときのStatic Controlのウィンドウスタイルは
どのようになっていますでしょうか?
私は
SS_BITMAP | SS_WHITERECT | WS_BORDER | WS_VISIBLE
でやっているのですが、なにか足りないものがあるでしょうか・・・
よろしくお願いします。
748:デフォルトの名無しさん
07/03/11 12:14:23
ビットマップも表示するんだ
749:デフォルトの名無しさん
07/03/11 12:17:05
SS_BITMAPは自分で中も描いちゃうから消えるだろ
750:743
07/03/11 12:48:39
>>748-749
SS_BITMAPを消してみましたがまだ駄目みたいです・・・
泣きそう・・・
751:デフォルトの名無しさん
07/03/11 13:07:36
SS_WHITERECT も中を描画するだろw
枠だけとかあるだろ
752:743
07/03/11 14:00:30
>>751
SS_WHITERECTを消して、
SetBkModeでTRASPARENTにしてみても変わらないです。。。
753:デフォルトの名無しさん
07/03/11 14:07:00
SS_WHITEFRAMEとかSS_BLACKFRAMEとかあるだろう
754:743
07/03/11 14:18:25
>>753
GODと呼ばせてください・・・ できました・・・
今日中に作成しないといけないものだったので、
昨日から胃が痛くてしょうがない状態でした。
ありがとう、本当にありがとうございました!
755:デフォルトの名無しさん
07/03/13 18:36:23
「胃が痛くてしょうがない状態」
あああ…。悲しいなそれは。
756:デフォルトの名無しさん
07/03/15 15:56:25
質問があります。
MS VC++.NET 2003 なのですが、以下のソースで三角を描画しました。
Pen * pen = new Pen(Color::Black);
Point poly[] = { p1, p2, p3 };
g->DrawPolygon(pen, poly);
これは成功しました。
今度はこれを塗りつぶしたいのですが、どうすれば良いのでしょうか?
ここでのBrushの使い方がいまいち分かりません。
よろしくお願いします。
757:デフォルトの名無しさん
07/03/15 16:18:34
FillPolygon
758:デフォルトの名無しさん
07/03/15 16:20:18
中を塗り潰すのはFill~と命名されている。
FillPolygonはDrawでPenを引数に取っていた代わりにBrushを引数に取る。
単色に塗り潰すブラシはBrushの派生の1つSolidBrush、ほかにも何種類かブラシがある。
だから結局こうなる。
Brush* brush = new Brush(Color::Black);
Point poly[] = {p1, p2, p3};
g->FillPolygon(brush, poly);
759:デフォルトの名無しさん
07/03/15 17:03:50
w= *((ULONG *)( &iv->rbuf[iv->rbufq] ));
既設のvc++のソースを調査しています。
上記、処理の実行結果(w)には何が設定されるかわかりません。
*((ULONG *) ってどういう意味ですか?
ご存知の方、ご教授願います。
760:デフォルトの名無しさん
07/03/15 17:05:36
unsigned long のポインタにキャストして、そのアドレスが指してる値を取り出してる
761:デフォルトの名無しさん
07/03/15 17:09:22
>>760 ご教授に感謝
762:デフォルトの名無しさん
07/03/15 19:05:02
テキストファイルのダンプ(16進)を表示したい。VC++のツールにありますか?
・メモ帳でunicode形式で保存したファイルを CStdioFile::ReadString()した時
意図しない動作をするので unicode形式のファイルの中身をコードで確認したい
Visual C++ standard editionです。
ヘルプで検索するとデバッグ時のメモリダンプばかりヒットしてしまいます。
よろしくお願いします。
763:デフォルトの名無しさん
07/03/15 19:08:56
vectorあたりでバイナリファイルエディタ探すのが早いんじゃ
764:デフォルトの名無しさん
07/03/15 19:13:42
>>762
どのバージョンかわからんのであれだが、
ファイルメニュー - 開く - ファイル で出たダイアログで
ファイルを選択し、開くボタンの右の矢印を押して
ファイルを開くアプリケーションの選択からバイナリエディタを選べばいける
バージョンによって開き方が違うかも
765:デフォルトの名無しさん
07/03/15 19:23:39
>>764
VC++2005 でバイナリエディタ開けました! ありがとうございます。
>>763
レス ㌧。
766:658
07/03/21 14:10:17
向こうでも書きましたが、動きますた。
ご迷惑をおかけしました。
迷惑ついでにもうひとつ質問が。
コンパイル時にLNK 4006のwarningが大量発生するのです。
strmbase.lib(strmiids.obj) : warning LNK4006: _IID_IRegFilterInfo は wcamregister.obj で定義されています; 2 つ目以降の定義は無視されます
strmbase.lib(strmiids.obj) : warning LNK4006: _IID_IFilterInfo は wcamregister.obj で定義されています; 2 つ目以降の定義は無視されます
strmbase.lib(strmiids.obj) : warning LNK4006: _CLSID_FilgraphManager は wcamregister.obj で定義されています; 2 つ目以降の定義は無視されます
strmbase.lib(strmiids.obj) : warning LNK4006: _IID_IQueueCommand は wcamregister.obj で定義されています; 2 つ目以降の定義は無視されます
strmbase.lib(strmiids.obj) : warning LNK4006: _IID_IDeferredCommand は wcamregister.obj で定義されています; 2 つ目以降の定義は無視されます
といった感じのが1000近く出ます。
動くので問題はないんですが、コンパイル時にウザいので解決したいなーと思った次第です。
どなたか解決方法をご存知の方はいらっしゃいますでしょうか?
767:デフォルトの名無しさん
07/03/21 14:53:35
#pragma warning(disable: 4006)
768:デフォルトの名無しさん
07/03/21 14:58:28
リンクのワーニングにそれ使えるの?
>>766
リンク指定してるライブラリを調べてみて。重複してないか?
769:658
07/03/21 15:09:23
>>767
効かないようです。
>>768
winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib
shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib strmbasd.lib
以上がリンクしているライブラリですね。
770:658
07/03/21 15:26:06
ついでに書くと、strmbasd.libとstrmbase.libをプロジェクトのディレクトリにコピーして使ってます。
それがまずいんでしょうか?
771:658
07/03/21 15:45:25
strmbase.libがResource Filesに入っていたので外しました。
数が700くらいまで減りましたがまだ大量に発生中です。
URLリンク(www.users.gr.jp)
これズバリだと思ってこのとおりに試してもダメでした。
リンク先のmsdnサイトのやり方も試してみましたがダメです。orz.......
772:デフォルトの名無しさん
07/03/21 16:34:06
>>769
それはデフォルトライブラリの使用をありにしたうえで別に指定しているのか?
773:658
07/03/21 16:43:51
>>772
今出先なんで確認できないんですが、多分デフォルトありにしてます。
帰ったら早速調べてみます。
774:デフォルトの名無しさん
07/03/21 17:02:25
>> 658
> 向こうでも書きましたが、動きますた
原因と問題解決方法と書いておけ。
将来的に同じような所で躓くヤツも居るだろう。
775:658
07/03/21 18:13:52
>>772
「デフォルトライブラリをすべて無視」にチェック入れても同じ状態(というかリンクエラーが追加される)ですた。
>>774
原因:DVSD形式でデータが流れてくるためDIB形式に変換しようとしたら失敗する。
対処:
AM_MEDIA_TYPE amt;
ZeroMemory(&amt, sizeof(AM_MEDIA_TYPE));
amt.majortype = MEDIATYPE_Video;
amt.subtype = MEDIASUBTYPE_RGB24;
amt.formattype = FORMAT_VideoInfo;
pGrab -> SetMediaType( &amt );
といった感じで一度RGB24形式に指定してあげた後
pGrab -> GetConnectedMediaType( &amt );
で再度取得する。
というかリンク先のソースをコピペでも動くます。
URLリンク(wwwdoi.elec.nara-k.ac.jp)
CopyMemoryで落ちるとか、ヘッダに書くと動かないってのは謎のままです。orz
776:デフォルトの名無しさん
07/03/21 18:43:00
まとめ
拾って来たソース適当にコピペしたら動きました。
でもワーニング出まくりです。
777:デフォルトの名無しさん
07/03/21 18:52:44
たしか、#defineの具合によって、UUIDが実体化されることがあったはず。
だから、どこでも#defineせずにlibを含めるか、どこか1つの翻訳単位で
実体化させて、UUIDの含まれたlibはリンクしないか、どちから。
778:658
07/03/21 20:27:07
>>776
まあそれで正解です。w
>>777
ちょっと時間ないんで明日にでも試してみます。
777オメ。