★初心者にVisual C++を教えるスレ★ Part6
1 :
デフォルトの名無しさん:
タイトルのとおり、
Visual C++ 初心者用スレッドです。
前スレ・関連スレは、
>>2 ぐらい。
2 :
デフォルトの名無しさん:03/05/15 02:05
4 :
デフォルトの名無しさん:03/05/15 02:05
>>3 もう立っていました?全部を2回見回したのですが、無かったので。すいません。
可憐にしなやかに、さらには豪華に6ゲット
豪快かつ端麗な7げっと
ムーンウォークで8ゲット
やさしい日差しが俺の眠りを妨げる・・・
ふっと時計に目をやる。
まだ仕事までには、3時間以上時間がある・・・
俺は、まだ眠っている頭を覚ますためにコーヒーメーカーのスイッチを入れた。
しばらくすると、コーヒーの良い香りが部屋を追おう。
すっと手を伸ばし、タバコをくわえ火を付けた。
そして、一言、俺は呟いた・・・ 「9ゲット」と。。。
放課後に体育館の裏に来て欲しいと言われた。
はやる胸を抑えつつ向かう。
そこには彼女が待っていた。
彼女は「読んで・・・コレ」とはにかみながら俺に手紙を渡し、去っていった。
家に帰って彼女の手紙を読んでみた。
そこにはこう書いてあった
「10ゲット」
やり方がわからんつー意味だろ
メッセージループ内に
case WM_CLOSE:
if (MessageBox(hWnd,"","",MB_OKCANCEL) == IDOK) DestroyWindow (hWnd);
break;
と書いたのですが、キャンセルしてもウインドウが破棄されてプログラムが終了してしまいます。
なぜなのでしょう?
VC7で作ったものがクリーンインストールしたw2kで動きません。
曰く「ダイナミックリンクライブラリMSVCR71D.dllが指定された
パスhogeに見つかりませんでした。」だそうです。
dllを入れるかVC6でコンパイルしなおすしかないんでしょうか。
できればexeだけで配布したいんですが。
15 :
デフォルトの名無しさん:03/05/15 08:32
レスありがとうございます。無理ですか。
諦めてVC6.0にします。ありがとうございますた。
18 :
デフォルトの名無しさん:03/05/15 10:35
やったああああああ
sprintfじゃなくて
wsprintfにしたら、計算した値がウィンドウにでたあああああ!!!
でも、なんでsprintfだどエラーなんだ
BCC5.5
LRESULT CALLBACK WinProc(HWND hwnd, UINT msg,WPARAM wP, LPARAM lP)
{
HDC hdc;
int i=10,j=20,x;char str[256];
x=i+j;
wsprintf(str,"%d",x);
PAINTSTRUCT ps;
switch(msg){
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
TextOut(hdc,100,100,str,strlen(str));
EndPaint(hwnd,&ps);
break;
19 :
デフォルトの名無しさん:03/05/15 10:36
Win32APIを使用してキーが、
同時(2個以上)押され場合に、
すべてのキーコードを取得する方法を、
教えて頂けますでしょうか。
よろしくお願いします。
なんかよくわからないので、VC++ごと配布したいんですけど、無理がありますかね。
>>17 exeを配布する時はReleaseビルドで配布するんだぞ。
>17
「スタティックライブラリでMFCを使用する」でいけない?
24 :
名無し@沢村:03/05/15 12:40
>>13 ヌヒよ、breakをreturnに置き換えてみたらどうだ。
>>19 ReadConsoleInput、PeekConsoleInput等でキーコードは得れる。
しかし、2つ得るなどの細かい指定は自作する必要がありそう。
26 :
デフォルトの名無しさん:03/05/15 16:04
>>1 新スレ乙です。m(__)m
質問なのですが、VCのコードエディタのコンテキストメニューで
「定義にジャンプ」ってあるのですが、「実装にジャンプ」する
ような機能はないのでしょうか?
>>24 IDCANCEL時にreturn 0;とすることで大丈夫でした。
break;した先にreturn (DefWindowProc (hWnd, msg, wParam, lParam));が
あったせいなんですね。どうも有難うございました。
>>19 もしかしてウインアプリの方?なら
+-を50ミリ秒以内で連続で押すと音が鳴る。擬似同時押し。
LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
static long bT=0;//beforeTime
switch(msg)
{
case WM_CHAR:
if(wParam=='+'||wParam=='-')
if(bT>=GetTickCount()-50) Beep(0,0);
else bT=GetTickCount();
break;
}
>>19 TranslateMessageが呼ばれる前(PreTranslateMessage)に WM_KEYDOWN
捕まえて GetKeyboardState() でいけるんではないか。
>>25 なんというか、すげー。
>>19 調べるキーが限定されてるんなら GetAsyncKeyState() で調べたほうが簡単かも
プログラムは子供の時MSXでベーシックを組んで以来全く経験のない素人です。
すこし根本的なことを質問させてください。
必要にかられてWINで動くプログラムを作ろうと思い、この板のあちこちの初心者
スレを見ていたのですが、まず気づいたのはプログラム言語と言っても色々あると
いうことです。
猫でも分かる〜というHPに行ったのですが
・C#
・C言語
・C++
の3つがあがっていたし、他に
・ビジュアルベーシック
というのもあるのですよね。
で、質問です。いったい上の4つは何がどう違うのでしょうか?
初心者が始めるにはどれが一番よいのでしょうか?
教えてください。
32 :
デフォルトの名無しさん:03/05/15 20:28
なぜか構造体メンバの.での参照が出来ないんですけど、VC++じゃ直接参照はダメなんですか?
わざわざポインタにして->しないとダメなんですか??
35 :
デフォルトの名無しさん:03/05/15 20:38
19です。「GetKeyboardState」を使えばと、
思ったのですが使い方が・・・
初心者なものでアドバイスをお願いします。
もまいら
>>26の質問スルーせんでくさい。
おながいします。m(__)m
>>26>>36 スルーしたわけではないのですが、分からないんです。デバックも使ったこと
無いですし。
私には「定義にジャンプ」すれば実装にジャンプしているように見えるのですが。
「参照にジャンプ」すると宣言に。
自作の関数の場合「定義にジャンプ」は、実装にジャンプする場合と、宣言に
ジャンプする場合の2通りがある。どういう規則なんだろ??
MFCのメンバなんかは必ず宣言にジャンプするよね。
>>39-40 あ、そうなんですか?
初心者でMFCしか追ってないもので...
個人的には定義にジャンプでhファイルのクラス内の宣言に飛んで
実装にジャンプでcppファイルの実装に飛んで欲しいのですが。
あと、関連なのですが定義にジャンプのとき「あいまいさの解決」
ダイアログがでることがありますが、「全然あいまいちゃうやん」
っていう時ないですか?
全然継承もしていないクラスの同名の関数が出てきたり...
>>42 それはまぁ目をつむるとして(w
MFCのソースを手軽にブラウズできないもんかな。ブレークポイントかけてステッ
プインするか、MFC\SRCをgrepしている現状。VS6使ってるけど .NETもなの?
っていうか、改めてMSDN見なおしてみたら
『MFC : MFC ブラウザ データベース ファイルの使い方』に『MFC.BSC は、セット
アップ プログラムではインストールされないが、セットうpCDから \VC98\MFC\Src\
にコピーすれば、開いて使うことができる』とあるじゃん。早速コピー。
なんかワークスペースを開く度に、いちいち MFC.BSCを手動で開かんといけないみ
たいだが、MFCソースのブラウズでキタ―――(゚∀゚)―――!!!!!
よーし、MFC.BSCを勝手に開くマクロ組んじゃうぞー
>41
言語仕様を読んでるわけじゃないけど、キミが「定義」と
思ってるものが「宣言」で、「実装」と言ってるものが「定義」
なのかもしれない。
わしもそう思う。
定義と宣言をごっちゃにすんなよ、とC++の入門書にはよく書いてあるが・・・。
>定義にジャンプでhファイルのクラス内の宣言に飛んで
この文ですでにごっちゃになってる気が・・・
>>46-39 そうかもしれないです。
定義、宣言、参照いろんな言葉が入り乱れて
ワケわからんです...
VC++で、純粋にMS-DOS(PC-98)で動かせるプログラム
ってプロジェクトとか設定するのかな?
プラットフォームがWin32しか選べない…DOS/V機じゃ無理なのかな?
16bitプログラムが作れるのはVC++1.5まで
なんかずいぶん懐かしい話だな
53 :
デフォルトの名無しさん:03/05/16 20:24
VisualC++.NETで「新しいプロジェクトの作成」→「win32アプリ」→「windowsアプリ」で
プロジェクトを作成した場合のexeファイルのアイコンの変え方を教えていただけないでしょうか?
「空のプロジェクト」からの作成でしたらできたのですが、上記のやりかたでは
アプリケーションのアイコン、バージョン情報のアイコンだけしか変えられませんでした。
exeファイルのアイコンに使われるらしい ファイル名.ico をいじっても無駄でしたし、
それをいじるとicoファイル自体おかしくなってしまいます。
どなたかご教授お願いいたします。
InvalidateRectで更新領域を指定してOnPaint内でGetUpdateRectで更新領域を取得して
描画更新する場合、2つ以上のスレッドでInvalidateRectを呼び出したりするとまずいですか?
55 :
デフォルトの名無しさん:03/05/16 22:53
質問があります。
画像を表示したいのですが、
ある画素のRGB値を配列に格納して
それを表示する関数を作っています。
その画素を座標(x,y)に表示したいので
pDC->SetPixel( x, y, RGB(Red, Green, Blue) );
と記述しました。Red,Green,Blueは画素(x,y)の
RGB値です。
しかし、このように記述しても黒でしか現れず、困っています。
Red,Green,Blueにはちゃんと値は入っています。
なぜ表示できないのでしょうか?
56 :
デフォルトの名無しさん:03/05/17 00:38
ラジオボタンを6つ作成してそれらは排他的に
なっていました。つまり、どれかボタンを押すと
どれかはチェックが外れるということです。
それからこのラジオボタンでの種類を増やしたくて
さらにラジオボタンを増やしました。合計9個にしました。
これを全て排他的にしたいのですが、なぜか新しく作った
3つのラジオボタンと以前に作ったラジオボタンに同時に
チェックが入ってしまいます。
過去ログを見ましたがグループにすればいいと思っていますが、
プロパティのグループにチェックを入れても何もなりません。
いったいどうすれば全て排他的になるのでしょうか?
>>51 ぐっ…VCでは、諦めますか…
いまさらTurbo C++でもやりますか…(苦笑
それとも、無料でなんかあるかな?
レスサンクス!
>>53 そのプロジェクトに「新規作成」「ファイル」タブの「リソース スクリプト」を追加。
VC++内の左のタブ「ClassView」「FileView」に「ResourceView」が追加されたはず。
ResourceViewタブを開くと内部にディレクトリらしきものがあるはずなので、マウスで
右クリックして、メニューを開き「挿入」。
「リソースの挿入」というタイトルが現れるので「インポート」で使いたいアイコンを選択。
最後に「ビルド」で構築すると、上で選択したアイコンがexeのアイコンになっているはず。
>>56 参考になるか分からんし、説明しにくいので勝手に判断してくれ。
Radio1 <- グループチェック有り
Radio2 <- グループチェック無し
Radio3 <- グループチェック有り
Radio4 <- グループチェック無し
Radio5 <- グループチェック無し
とすると、1-2、3-5のグループになる。
例えば「1と3」とか「2と5」は両方選べるが、「3と4」または「3と5」は排他。
つまり、グループの「最初」となるラジオボタンにグループにチェックを入れる。
俺は、面倒臭いのでSDKでマニュアルのラジオボタン作ってコード上で切り替えちまうが。
>>53 すまん。
>>57 の追加。
これVC++6.0のやり方だったは…。.NETで出来るか知らない。
60 :
デフォルトの名無しさん:03/05/17 01:37
ダイアログ上のタブコントロールの上にイメージを描画したいんだけど、
更新がうまくいきません。
void
CMyDialog::OnPaint()
{
CPaintDC dc(this);
DrawImage(dc);
}
こうすると、タブコントロールで上書きされてイメージが見えない、
void
CMyDialog::OnPaint()
{
CPaintDC dc(m_TabCtrl);
DrawImage(dc);
}
こうすると、更新を繰り返して、しばらくすると落ちる。
こんな感じで、なやんでいます。
こういう場合の常套手段というのは何かあるんでしょうか?
>>60 MFCは得意じゃないって言うか、SDKなので使ってないのだが…
なので資料そのまま書きます。
// ダイアログクラスのコンストラクタ
CFooDialog::CFooDialog( CWnd* pParent /*=NULL*/ )
: CDialog( CFooDialog::IDD, pParent )
{
// スタティック用ブラシを作成
m_brStatic.CreateSolidBrush( RGB( 0, 255, 0 ) );
}
////////////////////////////////////////////////////////////////////
// クラスウィザードより追加された WM_CTLCOLOR ハンドラ
HBRUSH CFooDialog::OnCtlColor( CDC* pDC, CWnd* pWnd, UINT nCtlColor )
{
if( nCtlColor == CTLCOLOR_STATIC ) // スタティックコントロールの場合
{
// ここで全てのスタティックコントロールについて
// 同じ背景を指定するので pWnd の区別をしない
return m_brStatic;
// m_brStatic はあらかじめ作成された CBrush
// オブジェクト
}
return CDialog::OnCtlColor( pDC, pWnd, nCtlColor );
}
by:「VC++によるWin32プログラミングTips」技術評論社
62 :
デフォルトの名無しさん:03/05/17 02:20
>>58 ありがとうございます!できました!見事に排他的になりました!
具体的な例だったので非常にわかりやすかったです
でも確かにこれはめんどくさいというかタブオーダーを使う必要がありますね。
58さんはSDKでやるとおっしゃいましたがどういう方法でやっているのでしょうか?
SDKというのもあまりというかほとんどわからないのですがこれからのためにも
勉強しようと思いまして。
具体的に教えていただけるとありがたいです。
>>62 たぶん。
MFC:MFCAppWizard(exe) VBとSDKの間
SDK:Win32Application Win32Api、ANSI-C等を組み合わせて自作する。
64 :
デフォルトの名無しさん:03/05/17 11:52
リンク時に__imp__MessageBoxA@16という外部シンボルが解決
できないとかいうエラーが出ました。マニュアルにNTでコンパイル
するときは
Ignore linker errors: "unresolved external symbol __imp__MessageBoxA@16".
と書かれていたのですが、どうやってリンカのエラーを無視してやれば
いいのでしょうか。
65 :
JBoy17031968:03/05/17 15:02
始めまして、現在VisualC++にてプログラムを作成しておりまして、
機能上できるか否かこちらで質問させて頂きたいと思い書込み致します。
質問の内容はVisualC++でメモリを分ける方法、あるアドレスはRAM領域
として、またある領域はROM領域としてメモリアクセスする方法なのですが
何処かでそのようなメモリの設定が出来ましたでしょうか。
使用しているOSはWindows2000Pro、VCは6.0を使用しております。
また、べたべたのCなのでMFCやAPIは使用していません。
以上です。
66 :
デフォルトの名無しさん:03/05/17 17:08
VC++6のWin32 Application作成でこんなコード書いてビルドしたのですが
エラーが出ます。
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nShowCmd)
{
return 0;
}
エラー
LIBCD.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です
だれか教えてください。
68 :
デフォルトの名無しさん:03/05/17 17:20
Releaceでビルドすると、信じられないくらい粗探しされて警告されるんですけど。
おかげで全く実行出来ません。警告を無視する方法って無いですか?
警告レベルを無しにしても実行出来ないし。
>>66 そんなはずは無い。Win32ApplicationはWinMainが無いと未解決という
メッセージが出て、Win32ConsoleApplicationはmainが無いと未解決と
いうメッセージが出る。プロジェクト制作時に前者と後者を間違えたの
では無いですか?
ウィンドウアプリの設定じゃなくて
コンソールアプリの設定でビルドしたとか
自分はそれに気づかないで
なんでだああ
と1日悩む
プロジェクト設定で#define消しちゃったとか
72 :
JBoy17031968:03/05/17 17:42
次メール回答
設定を変えたらアクセスできました
お騒がせ致しました。
73 :
デフォルトの名無しさん:03/05/17 17:49
>>69 ありがとうございます。その通りのミスでした
74 :
デフォルトの名無しさん:03/05/17 17:51
>>68 警告だけなのに実行できないの?
エラーが混じってない?
デバッグだと警告もエラーもゼロで余裕で通ります。
リリースだと、インライン関数が一度も使われませんでした。
とか意味不明な関数のエラーが百個位でる(警告レベル4の場合)
>>68 どうせコンパイルオプションがおかしいんだろ。
プロジェクトを作り直せ。
77 :
デフォルトの名無しさん:03/05/17 18:23
Win32アプリでメモ帳を作成中ですが、(CreateWindowのEDIT...で)
右クリックでメニューが出てくるのですが、
このメニューに機能追加ってできますか?
>>77 出来る。(つーか実現できないことはほとんどない気がするが)
>>62 SDK自体は、
>>63氏が語ってくれた通りです。
ラジオボタンをマニュアルで作成すると、コードで全て動きを記述しなければなりません。
コード量が増しますが、”そういう”ラジオボタンの管理が非常に楽になります。
動きそのものを記述しなければなりませんが、オートでは実現できない不可思議な動きも作り出せます。
79 :
デフォルトの名無しさん:03/05/18 01:54
SPY++のソースコードを参考にしたいのですが、MSDNに付属してないのですか?
みつからないです・・・。
ソースコードつける馬鹿がどこにいる。
81 :
デフォルトの名無しさん:03/05/18 10:49
Visual C++.net (VS2002) のエディタで
クラス名::メソッド名 と書いてあるところにカーソルを持っていくと、指のマークになって
クリックするとURLと勘違いしたのか、file::クラス名 なんていうファイルはありませんと
言ってきます。
激しくうざいのでこの機能を切りたいのですが、メニューのどこにあるのかわかりません。
教えてくださると幸いです。
83 :
デフォルトの名無しさん:03/05/18 12:06
質問です。
画面上に表示されてるメニューの座標を取得する
方法は無いでしょうか?
86 :
デフォルトの名無しさん:03/05/18 13:26
ファイルファイアログを開かないで、
特定のファイルの名前を変える方法ってどうやるんでしょうか?
今、多数のファイルをある規則に従ってリネームするプログラムを
作ろうと考えています。
別ファイルネームでコピー
88 :
名無し@沢村:03/05/18 13:51
90 :
デフォルトの名無しさん:03/05/18 15:17
netでのdiffの取り方はどうやるんですか。
>90
>82
フリーのdiffツール使えばいいのに
>>88 MoveFileを検索したところ、どうしても元になっているクラスが
見つかりません。しかもMSDNで見れないところがあるし。。。
借りた物だからMSDNを再インストールできないし。。。
すみません。MoveFileは何のクラスのメンバか教えていただけないでしょうか?
m(__)m
>>94 すみません。m(__)m
できました。ありがとうございます。
常時接続ならMSDN OnlineとGoogle(wも併用すべし
97 :
デフォルトの名無しさん:03/05/18 19:32
ベクターワークスを使っていて、ある操作(編集→すべてを選択、加工→合成)で必ず、Microsoft VisualC++ Runtime Library RuntimeError!
abnormalprogramtermination と表示されOKするとそのアプリが強制終了になってしまします。
そのときは OK しかクリックできません。
借り物は違法です
>>99 そのとほり!
何で借りたものをコピーしなかったのだ?
間違えてるし
>>97 それはこのスレの誰かがベクターワークスを作ってて、バグ報告したつもりか?
105 :
デフォルトの名無しさん:03/05/18 22:59
もまいら教えてくさい!!
ネットで落としたサンプルをコンパイルしたところ(VC6.0Pro)
リンクエラー「ファイル "mfc42ud.lib" を開けません」が出ます。
設定がユニコードなのが問題みたいなのだが漏れのVCでは
ユニコードではコンパイルできないんでつか?
unsigned charに数値を代入してるのをデバッカで追っていたのですが
特定の数値でデバッカ上で見かけ0になってしまうようなのです。
ためしに実際にunsigned charの変数に256回インクリメントして
ファイルに吐かせてみたのですが問題は無いようなのです。(VC++.netとBCC55で確認)
VC++のデバッカを追ってみるとどうも128(0x80)ぐらいから怪しくなってきて
160(0xA0)でまた普通に表示されるように225(0xE1)あたりでまた表示
されないように253(0xFD)でまた表示されるようになってるようなのですが・・・。
当方S-JISの判定の為にデバッカで試しに文字列のビットを追ってたところで
気が付いたのですがこれはVCの設定などがおかしい所があるのでしょうか?
環境はWindowsXPSP1とVC++.netです。
>>108 デバッグウィンドウの「変数」「ウォッチ」で確認できず。
Windows2000SP3 VC++6.0SP5
// test code
int main()
{
unsigned char uc = 0;
for( int i = 0; i < 256; i++ )
{
uc++; // set break-point here
}
return 0;
}
当方Win2KSP2、VC++.NETでも症状確認。原因は不明…
メモリ上には存在してるけど、ウォッチで追いかけることは出来ない…
おそらく設定云々ではないと思われ。
あ、ちょっと語弊があるなスマソ。
VisualStudio.NETのバグ、というべきか。
(「.NET」って入れないと6.0とかも入っちゃうからね)
おおう・・・そうでしたか・・・。
とりあえずウォッチで書式指定してみたところちゃんと表示されるのを確認しました。
やれやれ・・・(ry。112さんどうもありがとうございました。
116 :
デフォルトの名無しさん:03/05/19 19:34
VC++にはプロパティがないようですがメンバ変数をパブリックにするべきなのでしょうか
それともSet〜、Get〜といったようなメソッドを作っておくべきでしょうか
はたまたそれ以外のナイスなやり方があるのでしょうか
それともひょっとしてプロパティ相当のものがあるのでしょうか
識者のみなさまがたよろしくお願いいたしますm(__)m
set,get
friendとか
=をオーバーロード
>メンバ変数をパブリックにするべきなのでしょうか
これは「最も」しては行けないこと。
> VC++にはプロパティがないようですがメンバ変数
プロパティ==メンバ変数!=VBのプロパティ
122 :
デフォルトの名無しさん:03/05/19 21:20
C++で、VBでいうLen関数やLenB関数に
相当する関数を教えてください。
124 :
デフォルトの名無しさん:03/05/19 21:57
125 :
デフォルトの名無しさん:03/05/19 23:26
たとえば、1秒ごと20までの数字をカウントしてエディットボックスに表示させる
プログラムを作る場合以下のように作ってみました。でも うまくいきませんでした。
原因は何でしょうか?だれか教えてください!
for(i=0;i<20;i++){
m_edit1=i;
UpdateData(false);
Sleep(1000);
126 :
デフォルトの名無しさん:03/05/19 23:29
キー入力待ちってどうすれば出来ますか?
128 :
デフォルトの名無しさん:03/05/19 23:47
127>もちろん閉じました!!一回づつ更新される予定が、更新されないんです!
129 :
デフォルトの名無しさん:03/05/20 00:16
>>128 UpdateData(FALSE);
UpdateWindow();
Speep(1000);
ってのはどう?
↑
もちろんSleepね
131 :
デフォルトの名無しさん:03/05/20 01:06
すみません。
C++で、VBでいうReDimステートメントと同じ処理をする場合、
どうしたら良いでしょうか?
132 :
名無し@沢村:03/05/20 01:07
>>123 VBはUNICODEを使っている。
だから正しくはwcslenだな。
>>129 凄いね。
InvalidataRectじゃ無理だったよ。
そんなやり方あったんだね。
(つーかその前にメインの関数内でSleep使う事自体が問題かもしれん)
>>131 std::vectorとresizeかな。
136 :
デフォルトの名無しさん:03/05/20 07:22
エディットボックス(edit1)に、00 1A CA 8D
の様に、ファイルのバイナリを表示させ、
もう一つのエディットボックス(edit2)に
8DCA1A00 hex
の十進数になおした整数を表示させたいのですが、
HANDLE afile;
BYTE buff[4];
CString buf;
CString path;
DWORD dw;
m_edit3.GetWindowText(path); ←これはパス所得用エディットボックスです。
afile = CreateFile(path,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(afile == INVALID_HANDLE_VALUE){
MessageBox("ファイルがオープンできません", "ファイルのオープンの失敗", MB_OK);
}
SetFilePointer(afile, 0, NULL, FILE_BEGIN);
memset(buff, 0, sizeof(buff));
ReadFile(afile, &buff, sizeof(buff),&dw,NULL);
ここの処理がわかりません…
m_edit1.SetWindowText(なにか);
m_edit2.SetWindowText(なにか);
どうしたらいいでしょうか…
>>136 Cstring::Formatとか使えば?
138 :
デフォルトの名無しさん:03/05/20 12:08
visualc++.netでエディタを外部エディタにする方法教えて下さい。
ツール→オプション→テキストエディタ見たけど外部エディタにする
項目なかった。notepadしか使わせないのがMSの方針なんですか?
139 :
デフォルトの名無しさん:03/05/20 13:34
VC++.netで書いてるんですが、
class AとBの宣言をa.hとb.hに分けて書いて、
#include "b.h"
class A{
private:
B *b;
}
と書くと
error C2143: 構文エラー : ';' が '*' の前にありません。
と出ます。
#include "b.h"
class A{
private:
class B *b;
}
の場合大丈夫でした。
手元の本(独習C++)でこのように宣言されているところは見なかったんですが、
こう宣言して大丈夫なんでしょうか?
多分自己解決した。
class Aでclass Bのポインタのメンバのほかに
class Bでclass Aのポインタを引数とするメソッドを作ってた。
これってどうにかできない?
} の後ろに ; が無い
>>139 似たような方法で
//a.h
class B;
class A
{
private:
B *b;
};
と宣言しておいて、cppファイルで
#include "a.h" // classAの宣言
#include "b.h" // classBの宣言
:
:
その場で必ずクラスを定義する必要はないのよ。
-------------------
#include "b.h"
class A{
private:
B *b;
};
--------------------
class A;
class B{
private:
A *a;
};
>>141 スマソ、それは単純にコピーし忘れだった。
>>142,
>>143 そんな方法があるのね。
とりあえずclass A,Bの両側でもう片方の宣言を書きますた。
ありがとう。
145 :
デフォルトの名無しさん:03/05/20 19:53
>>137 buf.Format(CString(buff));
a = atoi(buf);
m_edit1.SetWindowText(CString(a));
これだとなにも表示されず、
m_edit2.SetWindowText(CString(buff));
これだとへんな文字列が表示されてしまいます…
SetWindowTextはCStringでしか使えないのがいけないのでしょうか?…
_edit2.SetWindowText(CString(buff));
も
m_edit1.SetWindowText(CString(a));
も、
CString(a)やCString(buff)の実体が無いため。
int a=12;
CString tmp;
tmp.Format("%d",a);
m_edit.SetWindowText(tmp); //m_edit.SetWindowText(&tmp)かも。どっちか忘れた。
とか書けば、わかるかな?
148 :
デフォルトの名無しさん:03/05/20 20:54
MSDNってダウンロードできないんですか?
>>147 大変参考になります^^
えっとそのint a =12
をあるファイルのバイナリ
12 2c a1 5a としますよね、
その 122ca15a hex を、整数にしたものをint a としたいのですが…
どのように変更したらよいでしょうか??
>>149 シフトしながらORすれば良いんじゃない?
151 :
デフォルトの名無しさん:03/05/20 22:48
>>129 どうも有難う御座います!!出来ました。しかし何ゆえ、UpdateWindow();
だと、できるんでしょうか??
>>151 ようわからんけどウィンドウの更新してるからじゃなかろうか?
UpdateData()後に他のウィンドウで隠してもう再度表示させると表示が更新されたり。
>>151 まず、エディットボックスの値は確かに変わっていたけど、
再描画がforループ中に行われないので、1秒毎に表示されなかった。
forループが終了した時点で、やっと再描画されるので、いきなり20の表示・・・
で、1秒毎に強制的に再描画させれば良い訳で、
UpdateWindow()はその場で再描画を強制する(直接WM_PAINTメッセージを送る)関数。
VBで言うRefreshメソッドみたいなもの。
ちなみにInvalidateRectだと、その場でWM_PAINTが送られる訳では無いので、駄目みたい。
155 :
デフォルトの名無しさん:03/05/21 00:12
>>153 なるほど!!有難う御座います!
っていうか、人に聞く前に
関数自分で調べろよってな感じですよね.
すみませんでした.
たまにDel厨が荒すね
>>157 漏れは某島社員かその信者と睨んでいますが。
>>150 いろいろ考えてみたんですが…、
BYTE buff[4];
ReadFile(afile, &buff, sizeof(buff),&dw,NULL);
ここの時点で間違ってるような気がしてきました、、
WORDとかいろんなものに換えてみたんですが、
つまってしまいました…。
バイナリを読みこむにはどの宣言でバッファをとるのが最適でしょうか…?
>>160 粘着教えて君キタ━━━━━(゚∀゚)━━━━━ !!!
いい加減Cスレにでも逝ったら?(プ
162 :
デフォルトの名無しさん:03/05/21 14:32
つかぬ事をお伺いいたします.
先日初めてVC++.NETを導入したのですが、6.0のころと
えらく変わっているので難儀しています.
そこで、ウィンドウを複数、並べて表示できるようになるような
設定などありましたら教えてください.
全画面表示もしくは2画面分割というのはどうも見ずらいんで。
おねがいいたしますm(__)m
失礼しました.
[ツール]→[オプション]→[環境]→[全般]→「MDI環境」
で、できました.お騒がせしました。
さらにそのうえ、板違いでしたね.
本当にすみませんでした.
164 :
デフォルトの名無しさん:03/05/21 18:06
プログラミングを全くやったことのない初心者なんですが、
プログラマーになりたいのでVisual C++を勉強しようと思いました。
それで、これを入手しようとマイクロソフトのHPにいったんですが値段が分かりませんでした。
あんな、分かりにくいHPは初めてです。
なので教えてください。これ価格はいくらなんでしょうか?
166 :
デフォルトの名無しさん:03/05/21 19:57
>>165 ありがとうございます。
Visual C++の無料のコンパイラなんてあるんですか?
>>165 VisialC++のは無くて、ボーランドとかGCCなどのC/C++コンパイラ等。
>>164 Windowsアプリ作るんならその「分かりにくいHP」とつきあわなきゃならん。
まぁ、がんばってくれ
170 :
デフォルトの名無しさん:03/05/21 20:30
>>169 ありがとうございます。
それ入れてみました。
このスレにはお世話になりそうなので今後もよろしくお願いします。
オープン価格なら書いてなくて当然だと思うが
>>170 このスレVisual C++だから、お世話できないよ。
>>171 製品情報ページに推定価格が書いてあったと思うが…
つーか、
>>164はプログラマには成れん!
あきらめろ。
まー初心者スレだからな
>>178 通販サイトで値段を見てみるのも可だな
というかこのくらいの情報収集ができないってのは…んー…
180 :
デフォルトの名無しさん:03/05/22 02:13
すみませんが、
WindowsXPのVisual StyleのLunaインターフェイスの
コントロールの外観(ボタン枠等)を
Picture Control等に直接描画する方法は
ありませんでしょうか?
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
182 :
デフォルトの名無しさん:03/05/22 05:58
今回、MFCを使わずに自作でブラウザを作成しているのですが、新しいウィンドウが
立ち上がるようなリンクをクリックしたときに新規でウィンドウが立ち上がるのでは
なく、自信のウィンドウに開きたいのですが、どうすれば良いでしょうか?
あと一歩だと思うのですが、URLが正しく取得できないみたいなのです。
足りない処理でもあるのでしょうか?
// ppDispからIWebBrowser2オブジェクト取得
CComQIPtr<IWebBrowser2> spNewWB;
CComPtr<IUnknown> punkIE;
AtlAxGetControl(hwndIE, &punkIE);
spNewWB = punkIE;
spNewWB->get_Application(ppDisp);
BSTR bstrURL;
// URLを取得
spNewWB->get_LocationURL(&bstrURL);
CComVariant vempty, vUrl(bstrURL);
// 自身のウィンドウにURLを送信し直す
pWB2->Navigate2 (&vUrl, &vempty, &vempty, &vempty, &vempty );
// BSTR 用のメモリの解放
::SysFreeString(bstrURL);
183 :
デフォルトの名無しさん:03/05/22 06:57
getcher()が使えるヘッダーってなんでしたっけ?
184 :
bloom:03/05/22 07:11
185 :
デフォルトの名無しさん:03/05/22 07:14
女子高校生監禁コンクリート詰め事件!!!!
共産党幹部宅で行われた鬼畜行為(裁判で明らかになってます)(監禁41日間の内容)
・オイルを両大腿、膝、すねにたらして着火する
・熱がって火を消そうとすると手にもオイルをかけて着火、火が消えるとまた点火する
・性器に異物を入れて弄ぶ
・自分の尿を飲ます
・性器にライターを入れて着火する(この行為によって何度も気絶し、髪の毛が抜けていったという)
・性器を灰皿代わりにする
・性器にオロナミンCの瓶を入れる
・お尻の穴に花火を突っ込む
・性器に強引に直径3Cmの鉄の棒を突っ込んだり抜いたりして性器を破壊する
・頬が鼻の高さを超えるまで腫れ上がり、目の位置が陥没して分からないほどになるまで暴行
・歌謡曲を流して、歌詞にあわせて脇腹に思いっきりパンチをいれる
・痛さをこらえるので口が変なふうに歪むのを見て面白がる
・犯人2人の真ん中に立たせ、左右から肩や顔に回し蹴りを数発入れる
・顔にろうそくをたらす
・眉間に短くなった火のついたろうそくを立てる
・6kgの鉄アレイを腹に落とす
・鉄アレイで大腿や顔面を殴る
・逃げないようにガムテープで全身をぐるぐるまきにする
コンクリート詰め事件で検索すればわかります。
アンチが騒いでます(w
http://qb.2ch.net/test/read.cgi/accuse/1052793624/l50
186 :
デフォルトの名無しさん:03/05/22 07:28
simpleXというライブラリで
#include<simpleX.h>
void StartUp()
{
}
void MainLoop()
{
Clear();
Text(0,0,"Hello World");
}
というプログラムを書いてみたんですが
ライブラリの方にエラーが50個ぐらいでちゃって困ってます
どうしてですか?
>>186 エ ラ ー メ ッ セ ー ジ く ら い 自 分 で 嫁 !
188 :
デフォルトの名無しさん:03/05/22 09:26
>>187 でもエラーはsimpleX.hのほうだけで
"="の前に")"がないとかそういう感じの
文法ミス的なエラーばっかりなんですけど
俺c++.net初心者だから設定ミスってるのかも?
どうしたらいいんですか?
>>188 どんなエラーメッセージが出てるか分からんのに答えられるはずがないだろボケ
ダイアログベースのアプリで
ShowWindow(SW_HIDE)したときのような
ウィンドウを表示しない状態で起動させるには
どうすればよいのでしょうか
>>188 じゃあ文法ミスなんだろ!
設定をどうミスったら文法ミスになるんだ
MFCの方に逝ってきます
|彡サッ
>>190 WS_VISIBLEをつけない
つーかこれはAPIだっつーの
MFCなので専用スレの方に書こうと思ってたのですが
なぜか間違えてしまいました(´へ`)
しつれいしました
196 :
デフォルトの名無しさん:03/05/22 19:15
関数で printf( と入力すると、どんな引数が必要か型がでますが、
pow等は複数タイプがありますよね。powはdouble(double,double)と
int(int,int)と、後分からないのがひとつあります。どのタイプであるか
を指定するにはどうすればよいのですか?教えてください。
powってのは俺は知らんけどさ、ヘルプ見れば載ってるんじゃないですか?
>>196 どのタイプって、引数の型を合わせればいいんでない?
>>196 それでよければよいのですが。一応全てにキャストを与えています。
>>197 ちょっと見てみたけど、doubleの鹿乗ってないです。もうちょっと調べてみます。
double(double,double)以外はSTLでしょう。
int(int,int) ってあるの?
>>201 もう一度見てみるとありませんでした。見間違えたのだと思います。
また、3パターンではなく、6パターンありました。atoi,atofみたいに
名前を変えてくれればいいのに。以下のでintで使えそうなのを教えてください。
int pow(const int (__cdecl *_CMPLX)(_Ty))
int pow(const _Ty &_X, const int(__cdecl *_CMPLX)(_Ty))
valarray <_Ty> pow(const _Ty &_X, const valarray <_Ty> &_Y)
valarray <_Ty> pow(const valarray <_Ty> &_X, const _Ty &_Y)
valarray <_Ty> pow(const valarray <_Ty> &_X, const valarray <_Ty> &_Y)
double pow(double,double)
203 :
デフォルトの名無しさん:03/05/22 20:47
しつもんいいでつか?
VC6でMFCです。ちょくちょく使う関数を2、3個書いたヘッダファイルを使おうと思って
stdafxにインクルードしたら、
1つ以上の複数回定義されているシンボルが見つかりました
ってエラーでうまく行きません。
直接使うcppファイルでインクルードすれば良いんだけど
「・・・かつあまり変更されないプロジェクト専用のインクルード ファイルを記述します。」
とかstdafxに書いているんで、ここにインクルードしたいんですが無理ですか?
>>204 ヘッダファイルに↓のを記述しる
例 sample.hの場合
------------------------------
#ifndef _sample_h_
#define _sample_h_
#pragma once
... // ここにコードを記述
#endif
------------------------------
>>205 どうもです。でもやっぱりダメですた。
ファイルの内容は、これだけにしました。
common.h
#ifndef _COMMON_H_
#define _COMMON_H_
#pragma once
extern void msgbox(const char *fmt,...);
void msgbox(const char *fmt,...)
{
char buf[1024];
va_list args;
va_start(args, fmt);
vsprintf(buf, fmt, args);
va_end(args);
MessageBox(NULL, buf, "Message", MB_OK | MB_TASKMODAL | MB_TOPMOST);
}
#endif
何ででしょう?
>>206 お前そのヘッダファイルを複数のソースファイルでインクルードしてないか ?
もしそうなら、msgbox() が複数できちゃうから怒られて当然だぞ。
> common.h
> #ifndef _COMMON_H_
> #define _COMMON_H_
> #pragma once
> extern void msgbox(const char *fmt,...);
> #endif
だけにして、
> void msgbox(const char *fmt,...)
> {
> char buf[1024];
> va_list args;
> va_start(args, fmt);
> vsprintf(buf, fmt, args);
> va_end(args);
> MessageBox(NULL, buf, "Message", MB_OK | MB_TASKMODAL | MB_TOPMOST);
> }
は、どっかのソースファイルに入れとけ。(もしくは common.c とかを作れ。)
>196
>atoi,atofみたいに名前を変えてくれればいいのに
そういう使い分けにいちいち気を回さなくていいように
多重定義してあるのだと思われ。
あたえられた引数をみて仕分けるのはコンパイラのお仕事。
で、標準ライブラリ的にはdouble pow(double,dounle)だけなんで
通常の用途ならキャストしながらこれを使う方向でどうか。
>>208 はい。今全く同じようにしてやってみた所でした。
作ってる物は、練習用に小さなダイアログベースです。
実際の呼び出しをコメントアウトすればエラーは出ません。問題なく動いています。
もちろんほかのファイルからはインクルードしていません。
common.h
#ifndef _COMMON_H_
#define _COMMON_H_
#pragma once
extern void msgbox(const char *fmt,...);
#endif
--------
common.cpp
#include "common.h"
void msgbox(const char *fmt,...)
{
char buf[1024];
va_list args;
va_start(args, fmt);
vsprintf(buf, fmt, args);
va_end(args);
MessageBox(NULL, buf, "Message", MB_OK | MB_TASKMODAL | MB_TOPMOST);
}
こういう風にしてみましたが、ダメでした。
211 :
デフォルトの名無しさん:03/05/22 22:40
すみません。
CDC cdcTarget;
HBITMAP hBitmap; // 仮に既にビットマップ ハンドルが設定されてるとします
HBITMAP hBitmap2; // CDCから取得されたビットマップ ハンドル
// CDCにビットマップを設定
CBitmap* cBitmap = CBitmap::FromHandle( hBitmap );
cdcTarget.CreateCompatibleDC( NULL );
cdcTarget.SelectObject( &cbmpTarget );
// CDCからビットマップ ハンドルを取得
hBitmap2 = (HBITMAP)cdcTarget.GetCurrentBitmap();
HBITMAPをデバイス コンテキスト(CDC)に描画して、
再びHBITMAPとして受け取ろうとしたいのですが
うまくいきません。どうしたら良いでしょうか?
>>211 (補足)
すみません。10行目のcbmpTargetは
cBitmap です。
>>209 分かりました。ありがとうございました。
>>210 Cスレ池。っと言いたいがマジレス。
ヘッダーファイルの extern はいらない。
非常にお勧めできないが、
// common.h
inline void msgbox(const char *fmt,...)
{
char buf[1024];
va_list args;
va_start(args, fmt);
vsprintf(buf, fmt, args);
va_end(args);
MessageBox(NULL, buf, "Message", MB_OK | MB_TASKMODAL | MB_TOPMOST);
}
とすればコンパイルは通ると思われ。
>>210 > 実際の呼び出しをコメントアウトすればエラーは出ません。
??? わけわからんのだが...。
呼び出し側も晒してくれ。
>>214 アフォですか ? それやるなら...
static void msgbox()
だろ。もちろんお勧めしないけど。
>>210 ああ、あれだ、MFCでしょ?
MFCでは勝手に外部からc, cppファイルをプロジェクトに追加しても
エラーになって通らないはず
(おそらく通す方法はあるだろうけれど・・・)
で、方法だがワークスペースウィンドウの下に
Class View, Resource View, File Viewのボタンがあるだろう?
そこでClass Viewを押すと
XXX クラス(XXXはプロジェクト名)というのがあるから
そこを右クリックして
『クラスの新規作成』を押してh, cppファイルを作成する
・クラスの種類を『Generic』にして作成すること
・クラス名は好きなもので
そんでOKボタンを押すとh, cppが作成されるから
そのファイルにさっきのコードを記述する
>>214 通りました!どうもありがとう。
でも、オススメされてないので、釈然としないです・・(´・ω・`)
MFCやるならC++でやる方がいいかも
h, cppには自動的にそれぞれ
#ifndef _COMMON_H_
#define _COMMON_H_
#pragma once
と
#include "common.h"
がついてるからこれらは記述しなくていいと思う
--------
common.h
extern void msgbox(const char *fmt,...);
--------
common.cpp
void msgbox(const char *fmt,...)
{
char buf[1024];
va_list args;
va_start(args, fmt);
vsprintf(buf, fmt, args);
va_end(args);
MessageBox(NULL, buf, "Message", MB_OK | MB_TASKMODAL | MB_TOPMOST);
}
--------
>>215 えっと、クラスウィザードで作ったメンバ関数から
msgbox("hoge");
って、呼び出しているのをコメントアウトするとエラーは、出ることなく通ります。
>>216 >>MFCでは勝手に外部からc, cppファイルをプロジェクトに追加しても
>>エラーになって通らないはず
そうだったんですか。
クラスを作ればたぶん行くのかな?と思ってたけど、
いちいちクラスを宣言するのが、めんどくさそうなのでやろうと思いつつやってませんでした。
すみません。やってみます。
>>218 ああ、やはりこういう風にちゃんとクラスウィザードを使って(使わなくてもイイ?)
クラスを作って使わないとダメなんですね。めんどくさがってちゃダメだ。
どうもありがとう。
めんどくさいと思ったらMFCを捨てよう(w
221 :
名無し@沢村:03/05/23 03:22
222 :
デフォルトの名無しさん:03/05/23 07:05
すみません。
COLORMAP構造体などを配列で宣言すると
実行中に、
「Run-Time Check Failure #2 - Stack around the variable 'cmpX' was corrupted.」
というエラー メッセージが表示されて中断してしまいます。
このメッセージの意味と解決策を
教えていただけないでしょうか?
スタックが不足しているのでしょうか?
223 :
デフォルトの名無しさん:03/05/23 12:05
ウインドウの指定した領域をBITMAPとして保存したいのですが
できるのでしょうか?
>>223 検索くらい汁!
一発で出てきたぞヴォケ
>>222 英語勉強しろ。
それすらできないなら、インターネット翻訳とか使え。
「Runはチェック失敗#2の時間を計ります。可変「cmpX」のまわりのスタックは悪くなりました。」
ということだ by Excite翻訳
>>222 ココのスレは英語の翻訳スレではなく、あくまでVC++の質問(初心者も可)
なんだな、コレが。
ソースの一部分抜粋で、分からない所があるとかなら話は分かるが…
>>227 悪いけどマジで言ってるの ?
>>225 は半分冗談だけど、元の英文見てわからなければ、C/C++ プログラマやめた方がいいと思うぞ。
もっとメモリ管理のちゃんとした言語使え。
>>229 すまん、私も分からない…。
ソース見ればたぶんなんでエラー出てるのか分かるけれど。
もしかして
COLORMAP cm[16];
...
cm[16].from = 0x00ff00; // ここで上記のエラーがでる
ということか?
222よ、とりあえずソース書け。
232 :
デフォルトの名無しさん:03/05/24 14:57
CString の初期化の方法を教えてください!!
VCだとクラスの宣言内で定義をしますが、例えば
CString cs_name[];
とか。
でも、ここで初期化をしようとすると
CString cs_name[]={"hana","bara","himawari"};
このようにするとエラーが出てしまいます。
どうすればよいでしょうか?
教えていただけるとうれしいです。
>>1-1000 なにお前らガベージコレクトしてんだよ。
ガベージコレクトすんなよ。
CString cs_name[]={"hana","bara","himawari"};
今VC++でやってみたが普通に通りますが何か?
ver 6 sp5ね
ああ、クラス内ね
CTest{
CTest(){ cs_name[0] = "hana"; cs_name[1] = "bara"; cs_name[2] = "himawari"; }
...
CString cs_name[3];
};
じゃ駄目か?
236 :
デフォルトの名無しさん:03/05/24 15:42
234>>
publicとかの場所で宣言するとエラーがでるんですけど。。。
class CALT_1Dlg : public CDialog
{
// 構築
public:
CALT_1Dlg();
CALT_1Dlg(CWnd* pParent = NULL);// 標準のコンストラクタ
CString cs_setthreshold[]={"10%","20%","30%"};
};
こんな感じで宣言したらなんかエラーが出てしまったんですよ ↓こんな感じです。
ALT_1Dlg.cpp
c:\windows\デスクトップ\コピー (2) 〜 alt copy 5.10\alt_1dlg.h(27) : error C2059: 構文エラー : '{'
c:\windows\デスクトップ\コピー (2) 〜 alt copy 5.10\alt_1dlg.h(27) : error C2334: '{' の前に予期しないトークンがありました。関数の本体は無視されます
c:\windows\デスクトップ\コピー (2) 〜 alt copy 5.10\alt_1dlg.h(78) : warning C4520: 'CALT_1Dlg' : 複数のデフォルトのコンストラクタが指定されています。
cl.exe の実行エラー
ALT_1.exe - エラー 2、警告 1
何故なんでしょう????
宣言で[]は使えないはず・・・。
const char* const str[] = {
"abc", "def", "ghi",
};
const int strcount = sizeof(str) / sizeof(*str);
CTest{
CTest(){
for(int i = 0; i < strcount; ++i){
cs[i] = str[i];
}
}
CString cs[strcount];
}
これで逝くと思うがどうか・・・。
動的にcs拡張したいならvectorを使うべし
238 :
デフォルトの名無しさん:03/05/24 15:54
有難う御座います!とりあえず試してみます!!
239 :
デフォルトの名無しさん:03/05/24 16:11
おい!天才ども!!
scanf で数値の入力(1〜100までの)をするときに、
文字を入力したときのエラーを出したいのだけども、
どーしたらいいか教えて下さい!雑魚ども!!
240 :
デフォルトの名無しさん:03/05/24 16:14
すみません質問です。
WindowsXPスタイルを持つコントロールの外観(例えばボタン枠)を
Picture Controlなどに描画したいのですが、どうやら
DrawTheme***関数がそれらしきものだと
思ったのですが、その関数はVC++では使えませんでした。
それどころかリファレンスにも載っていませんでした。
それとも何かのヘッダーをインクルードすれば良いのでしょうか?
DrawTheme***関数について何かご存知の方がいらっしゃいましたら
教えてください。
242 :
デフォルトの名無しさん:03/05/24 16:25
235>> 有難う御座います!出来ましたvv
これって、もしかして、最初に定義しておいてコンストラクタで、初期化とかを行なった方が良いのでしょうか...?
243 :
名無し@沢村:03/05/24 16:29
>>239 AfxMessageBox(_T("ヌヒよ、1から100までの数値を入力しろ"));
244 :
デフォルトの名無しさん:03/05/24 18:55
RECT構造体を返す関数
RECT foo();を
RECT構造体のポインタを引数とする関数bar()に引数として与えたら
bar(&foo());
「'&' に左辺値がありません」とエラーが出ました。
bccだとコンパイルできたのですが、VCだとなぜだめなのでつか?
もしご存知の方がいたら教えてほしいんですが、
MicrosoftのWindows Windows XP Home/Professional
を開発したプロジェクトチームは、何人で構成されてたんでしょうか。
( ゚д゚)ポカーン
245よ、たのむから今一度スレタイをよんでみてくれ。
>>244 仕様です
使いたかったら↓
bar(&(RECT)foo());
>>248 ありがとうございます。
解決できました。
248のどこに解決の糸口があったのだろう・・・
>>241 マニフェストは関係なくuxtheme.dllやDrawTheme***関数を使って
自分でXPスタイルの外観(例えばボタン枠やツールバーの浮き出しの部分)
を描画する事は出来ないのでしょうか?
それとも他に方法があるのでしょうか?
253 :
デフォルトの名無しさん:03/05/24 21:16
すいません。ボタンを押したら
ダイアログ内の指定した領域を保存するという
プログラムを作りたいのですがわかりません。
検索してみましたがわかりませんでした。
領域の指定方法はわかるのですが、その領域内の
情報の保存の仕方および復元の仕方がわかりません。
希望としてはビットマップで保存してあとから参照できるように
したいです。
254 :
デフォルトの名無しさん:03/05/24 21:39
>>253 デバイスコンテキストに指定領域をコピー
↓
GetDIBitsってとこだな
GetDIBitsですか。今から調べてみます!
ありがとうございます
>>251 とっととMSDNOnline行けタコ。
MSDN Library\User Interface Design and Development\Windows Shell
\Shell Reference\Visual Styles Reference
MSDN USAにそのような項目があったのですが
MSDN Japanにはありませんでした。
つまり日本語の解説は無しって事ですか?
>257
Yes!
見つけたのにまだ来るのかよ>240
結局初心者に先ず教えるべきは英語嫁ってことか
まー、最初のハードルはあのMSDNを読みこなすことができるかどうかだからな
何とか実装に成功しました。
ありがとうございました。
>245
マジレスすると、およそ20〜30人。意外と少ないと思われるかもしれないけど、こんなもん。
長期のプロジェクトになるから、多少人の出入はあるけどね。
へえ、意外と少ないんですねえ
で、もう一度言うが「スレタイ嫁」
それよりもなんでそんな事聞きたいのか小一時間・・・
265 :
デフォルトの名無しさん:03/05/26 03:17
vcを勉強したくHPでおすすめな所はどこでしょうか?
自分でもさがしたのですが・・・。
プログラムって難しい。
>>265 >プログラムって難しい。
C/C++を知っているのかと小一時間…
それとも割れ(以下略
267 :
デフォルトの名無しさん:03/05/26 07:56
メニューの各項目がボタン型のオーナードローメニューを
作りたいのですが、選択中の項目上でマウスの左ボタンを
押すとボタンが凹むようにする(つまり選択中の項目上で
マウスの左ボタンの状態が変化するたびに選択中の項目を
再描画する)にはどうしたら良いでしょうか?
WM_DRAWITEMメッセージでは項目を一回きり描画するだけで、
WM_MENUSELECTメッセージではメニューの選択項目が変化した時
にしか呼び出されないので。
270 :
デフォルトの名無しさん:03/05/26 21:59
VCでコンボボックスを使ってプログラムを書いているのですが、例えば"m_combo."のように打ち込むと.GetWindowTextやSetWindowTextというようなリストが出てきますよね???ですが出てこないんです.それで、自分で打ち込んでビルドしてみると実行は成功します.
なぜ、関数のリストが出てこないのでしょうか?教えてください。
ハテナが多すぎ
句読点がピリオドになってるのも気になる
274 :
デフォルトの名無しさん:03/05/26 22:05
275 :
デフォルトの名無しさん:03/05/26 22:07
>>271 >>273 >>272 すみません。ちなみに”m_conbo."です。もし”.”を気になさっている人がいたならちゃんと“.”で書いてあります。
>>275 VC6?バグじゃないの?
起動しなおせば?
277 :
デフォルトの名無しさん:03/05/26 22:10
起動しなおしてもダメなんですよね。もしバグだったら、実行した時にエラーが出ると思うのですが実行は成功しています。
>>270 該当するクラスのヘッダファイルを開いて上書き保存
または、
VC終了→ncbファイル削除→VC起動
279 :
デフォルトの名無しさん:03/05/26 22:12
すみません。ncbファイルってなんですか?
280 :
デフォルトの名無しさん:03/05/26 22:12
282 :
デフォルトの名無しさん:03/05/26 22:21
>>278 ありがとうございます!!できました!でも、なにが起こっていたのでしょうか?全く解らないのですが…
ありがとうございました。
283 :
デフォルトの名無しさん:03/05/26 23:13
プログラム実行したら、
「○○○○が原因で○○○○.EXEにエラーが発生しました。
○○○○は終了します。」(○○○○はファイル名)
って表示されました。何が原因なんでしょうか?
わかる方いたら教えてください。
わかる人がいたら見てみたいよ・・・ハァ
>283
○○○○
286 :
デフォルトの名無しさん:03/05/26 23:23
>>285 良くわかりました!ありがとうございます!
289 :
デフォルトの名無しさん:03/05/26 23:50
VCについて質問です。
ボタンをDlgで作成したのですが普通、ボタンを作成し関数を作成し、その後、右クリックclassviewを表示しようとしると
Parsing error:改行が必要です。インプットライン....というようなエラーが出てしまいました。
何が原因なのでしょうか。
FTP通信のやりかた教えてください。
291 :
デフォルトの名無しさん:03/05/26 23:55
CFTPなんたらっていうMFCのクラスがあったと思われ。
簡単な処理ならそれで足りる。
>>289 適当に改行してから保存(Ctrl+S)すれば直ると思うが
293 :
デフォルトの名無しさん:03/05/27 00:17
C++ではコントロールの配置などはマウスで行うんですか?
単純な質問ですみません
>>293 「行う」のではなく、「行える」。
ニュアンスの違い。
295 :
デフォルトの名無しさん:03/05/27 00:32
>>294行えるということは無理に行わなくても
良いということですか?
>>294 無理にマウスで配置してもよろしい。
色々ある方法の内で「配置はマウスでも行える」と言う意味。
297 :
デフォルトの名無しさん :03/05/27 01:30
中身は全く同じで、名前だけ違うA.DLLとB.DLLがあったとします。
実行ファイルの起動時パラメータでA.DLLを参照するか、B.DLLを参照するか、
切り替えたいのですがどのようにコーデイングすればよろしいでしょうか?
DLLは.libファイルも用意してあります。静的リンクでは無理ですか?
>>298 DLLは共有メモリとして使用しています。
プログラムは起動時パラメータで、
モードを切り替えられる作りになっています。
モード別に多重起動するため、DLLを切り替えたいのです。
>>300 ありがと〜。
そっちの方向で試してみます。
俺は性的リンクをお勧めするね
303 :
デフォルトの名無しさん:03/05/27 13:29
>>292 ありがとうございました:)
できました。
304 :
デフォルトの名無しさん:03/05/27 16:56
305 :
デフォルトの名無しさん:03/05/27 18:28
あるデバイスコンテキストを割り当てているウィンドウの
画面左上端(0,0)とした長方形の座標(RECT)を求めたいのですが
void CXX::YY( CDC *pDC )
{
HWND hwndCDC;
RECT rectCDC;
hwndCDC = pDC->GetWindow()->GetSafeHwnd();
GetWindowRect(hwndCDC, &rectCDC);
}
とすると、rectCDCにはいつも-858993460という意味不明で
不正確な数値が返ってきてしまいます。
どうか正確な座標の求め方を教えてください。
>>305 rectCDCのメンバ変数を使うんじゃないのか?
>>306 left、top、right、bottomすべて-858993460という
数値が返ってきてしまいます。
>>307 漏れの環境では正常に取得できました。
CDC *pDC = GetDC();
RECT rect;
try {
pDC->GetWindow()->GetWindowRect(&rect);
}
catch(...)
{
;
}
TRACE("%d / %d / %d / %d\n", rect.top, rect.left, rect.right, rect.bottom);
ReleaseDC(pDC);
--
299 / 282 / 671 / 616
>>305 > どうか正確な座標の求め方を教えてください。
きちんとプログラムする。
とりあえず、GetLastError() ぐらい覚えろよ。
311 :
デフォルトの名無しさん:03/05/27 23:21
CString cs;
m_combo1.GetWindowText(cs);
という記述をOnButton関数内で行ない、デバックしてみるとcsに関して以下のような
CXX0017: Error: シンボル "cs" が見つかりません
というようなコメントがでて、コンボボックス内に表示している文字を読み取ることができませんでした。
何故なのでしょうか。だれか教えてください。
>>311 リビルドしてみれ。
たまにそんなことがある。
313 :
デフォルトの名無しさん:03/05/27 23:26
>>313 ポインタが有効か?
&csとか0xfdfdfdだったりして。んなこたなかったら
TRACE()でみてみれ。
315 :
デフォルトの名無しさん:03/05/28 00:23
例外処理についての質問です。
例外処理 (初回) は test1.exe (MFC42D.DLL) にあります: 0xC0000005: Access Violation。
例外処理 (初回) は test1.exe (KERNEL32.DLL) にあります: 0xC0000027: (名前がありません)。
例外処理 (初回) は test1.exe にあります: 0xC0000005: Access Violation。
このような例外処理が出てしまうのは何故なのでしょうか?
どのような対策をほどこせばいいのですか?
教えていただけると幸いです。
>>315 再起動せよ。
マジで言うなら「ソースさらせ」。対処のしようがねーんですが。
>>315 アクセス違反とかかな。
落ちたときにデバッガのコンテキスト見てみるとか、ステップ実行で落ちる瞬間を
つきとめるとかして。
318 :
デフォルトの名無しさん:03/05/28 07:33
すみません。TRACEマクロを使用しても出力ウィンドウに
値が出力されない(出力された気配も無い)のですが
どうしてなのでしょうか?
>>318 まさかとは思うが、Releaseビルドじゃないよな?
どうせF5じゃなくてCtrl+F5で実行して出ないって言ってんだろ
∧_∧
ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
322 :
デフォルトの名無しさん:03/05/28 13:58
age
323 :
デフォルトの名無しさん:03/05/28 14:13
C++ Builder初心者なのですが
Edit1やEdit2など数字の部分を変数等でLoop処理(移動)することは出来ないでしょうか?
例:int i;
AnsiString s[10];
for(i=1;i<=10;i++)
s=Edit(i)->Caption;
ッてこんな感じにiの部分でEditを変える方法です
>323
ここはVC++スレなわけだが。
すれ違いって教えてもらったのでここに来ました
>あるWindowsで動いてるプロセスの指定したメモリアドレスの値を取得したい場合は
>どうしたらいいのでしょうか?
>たとえば起動しているaaa.exeのメモリ0x41000の値を10進数で表示したいという感じです
という質問をしまして、そこでReadProcessMemoryを使えといわれました。
その後調べてみて
ReadProcessMemoryの前にOpenProcessをすればよさそうだということはわかったのですが
OpenProcessの第3パラメータのプロセス識別子をaaa.exeから取得する方法が分かりません
知っている方がいたらおしえてください
C++共通の質問ですが、コンパイラによって動作が違うかもしれないので、
(VCにて作業しているので)ここに書かせてもらいます。
STL のdeque や vectorにおいて resize();で配列数を増やして
/* vector に入れるコンテナのタイプは適当なクラス*/
v[3].m=value;
このようにアクセスできますが、たとえば
v.resize(5);//要素数5
v[4].m=100;//コンテナの最後にアクセス これは問題なし
i=v[4].m;//iには100が入る
v.pop_front():;先頭のコンテナ除去
i=v[4].m;//iには何が入る?????
v[4].m=value;//<-koko
についていったいどういうことがおきるのでしょうか?
1 メモリ保護エラー
2 削除したのは先頭だけどINDEXとのリンクは保持してるから
iには100がはいるし読み出しもOK
3 resizeによって多めにメモリを確保しているので、メモリ保護エラーには
ならないが、不可思議なことがおこる。
4 神様だけが知っている。
ご存知の方がいらしたら教えてください
>>325 ウィンドウハンドルを列挙して、ウィンドウハンドルから実行ファイル名を取得する。
それがaaa.exeだったら、GetWindowThreadProcessIdでウィンドウハンドルからプロセスIDを取得する。
実行ファイル名じゃなくて、ウィンドウ名から取得するなら、
FindWindowとGetWindowThreadProcessId使うだけなので楽。
>>328 ありがとうございました。
おかげでコンソール上では値を取得できたのですが、
画面をつけたらコンパイルのエラーになりました。
hWnd = FindWindow("プロセスのクラス名", NULL);
この部分で以下のエラーが返されます
error C2440: '=' : 'class CWnd *' から 'struct HWND__ *' に変換することはできません。
どうもFindWindowがCWnd::FindWindowと解釈されてしまってるようなのです
これを防ぐ手は無いでしょうか?
:: をつける。
::FindWindow
ありがとうございました^^
分かってみれば簡単なことなんですね
Windowアプリケーションは真似以外では今日はじめて作るので
こまってました
分かってみればってホンマにわかっとんかいな
スコープについて勉強したほうが
× 分かってみれば
○ 答えを聞いて分かったつもりになってみれば
あるポインタ(可変長の配列を作りたい)を
作ってfor文のなかで
malloc関数を使って長さを指定しました。
そしてfor文で一回ループをした後、
配列の長さを変えたい為にまたmalloc
関数を使って長さを指定します。
1ループ前に作った配列のメモリを
開放するために以下の記述をしました
if(hairetu != NULL)
free(hairetu);
そうするとhairetuはNULLではないので
条件を満たすのですがfreeをすると
エラーになってしまいます
for文の中でメモリ開放はできないのでしょうか?
一つの変数に一度しかfreeはできないのでしょうか?
-1.4208909612724965e+005
みたいな数字をファイルから入力する場合、
fscanfの中の % 以降はどんなのつければいいんですか?
%eじゃうまくいきませんでした。
337 :
デフォルトの名無しさん:03/05/28 22:03
あげ
>>335 ぐちゃぐちゃ説明せんと、コード晒せや。
それから、if(hairetu != NULL) free(hairetu); なんてやってると、知ったかに叩かれるから、free(hairetu); だけにしときな。
>>336 double d;
fscanf(..., "%le", &d);
>>335 std::vectorかstd::list使へ。
その前にnewとdelete使えと思ったんですが・・・ダメ?
>>340 いや、俺もそうは思ってたんだが…
結局使う人がそれを使うと言うとその条件で考えるしかない。
realloc使っとけ
だってmalloc使ってる人がstd::vector使うなんて違和感が・・・
初心者です。
今、MFCの学習を進めるか、
それともフレームワークだけに専念するか迷っています。
どうかいいアドバイスをお願いします。
345 :
デフォルトの名無しさん:03/05/29 06:10
すみません質問です。リソースに割り当てられた
既存のメニュー項目のコマンドIDから
先頭のメニュー項目を0とする
メニュー項目の位置(行)を調べる
方法を教えてください。
Visual C++.NETアカデミック買ったんですが、コンパイラってどれですか?
コンパイラにパスを通したいんですがどれかわからないです・・・
自己解決しました。
UINT C**::GetMenuItemIndex( HMENU hMenu, _ItemIDType ItemID )
{
// 変数の宣言
UINT unitMenuItemIndex; // 戻り値
int intCountI; // カウンタ
int intMenuItemCount; // メニュー項目の個数
intMenuItemCount = GetMenuItemCount(hMenu);
for (intCountI = 0; intCountI <= intMenuItemCount - 1; intCountI++)
{
if ( ItemID == GetMenuItemID(hMenu, intCountI) ) // 見つかった場合
{
return intCountI; // メニュー項目の位置を返す
break;
}
}
return -1; // 見つからなかった場合、負の値を返す
}
という構文を作ったら、無事取得できました。
>>344 MFCってSDKの知識がないと使えないと思うよ。
Windowsのプログラミング作法を学ぶという意味でもまずはSDKをさらりと勉強してはいかがだろうか。
>349
ちなみに俺はそのように(MFCの前にSDKやれば〜)教わってSDKから
始めたが、より薄いラッパーのATL/WTLに進んでしまった(w
351 :
デフォルトの名無しさん:03/05/29 11:00
あるダイアログアプリケーションをつくったのですが
値の変更がダイアログ上のエディットボックスに反映されません
ダイアログにはボタン1つとエディットボックスが1つで
エディットボックスにはメンバ変数としてint型の変数が割り当てています。
そしてボタンをおしたら関数が走り
その関数の最後でそのm_data1 = 計算後の値;
という感じでデータを代入しているのですがエディットボックスの中身は0のままです
どうしたら価が変更されてくれるのでしょうか?
352 :
デフォルトの名無しさん:03/05/29 11:09
エディットボックスにm_data1をいれる
353 :
デフォルトの名無しさん:03/05/29 11:20
すいません言葉がたりませんでした
>エディットボックスにはメンバ変数としてint型の変数が割り当てています。
これがm_data1なんですが、これがすでにエディットボックスに値を入れてる
とおもっていたのですが違うのでしょうか?
354 :
デフォルトの名無しさん:03/05/29 12:38
>351
UpdateData(FALSE);
USER-AGENTをレジストリをいじらずに変更したいのですが、
ヒントをください。
答えもOK4☆
vcマンセーage
359 :
デフォルトの名無しさん:03/05/29 18:24
すいません。ピクチャボックス全体の大きさをウインドウを開く、もしくは
ボタンを押すことによって動的に変化させることはできますか?
ボタンとかチェックボックスとかって自作できるみたいですけど
どうすれば良いですか?
何から手を付ければ良いか…
もしかして、Win32スレのほうか!?
何で自作したいのか?しなくていいならしないほうがいいと思うが。
>>359 CWndの派生クラスなら簡単にできるだろう
>>361 1から作るのか?先ずはCButtonをサブクラス化することから始めてはどうか?
>>363 すまん、MFC使ってないんだ…
1から作ることになる。
多分BMPかなにかでボタンのCGを書くと予想しているんだが。
>>363 ありがとうございます。たぶんSetWindowPos関数だと思うのですが。
今のところ動的に変わらなくてちょっと困ってます。
記述の仕方がよくわかりません。
Rect rect;
CWnd * Wnd;
Wnd = GetDlgItem(IDC_PICTURE);
Wnd->GetclientRect(&rect);
として元のピクチャボックスの情報を手に入れた後
状況に応じてrect.topの位置を可変にしたいのです。
どうしていいかイマイチわかりませn
>>361 カスタムコントロールはMFC使わないと作れないんじゃないの
よくしらんけど
>>366 よくしらんのなら、いい加減な嘘を口走るな
何故知りもしないくせに、平気で間違ったことを書き込めるのだろう
だいたいMFCでしか作れないのなら、
ソースコードが存在するMFCそのものが作れず存在しないことになる
そんな矛盾くらい少し考えれば分かるだろう
366の云う「カスタムコントロール」にはActiveX臭さを感じる
>>361 例えば CodeGuruの Other Controls -> Customized Check Boxes とか。SDKの
サンプルあるよ。普通のボタンなら Button Controls にいっぱいあると思う。
>>365 (コントロールのCWnd*)->GetWindowRect(rect);
(親ウィンドウのCWnd*)->ScreenToClient(rect);
みたいにコントロールの、親ウィンドウ座標系での位置を知れば、あとは
SetWindowPos()なりMoveWindow()なりでいけると思う
あるダイアログで開始ボタンをおしたらそのボタン処理をずっとループするようにつくったんですが
ストップボタンを押してもとまらないのです。どういうことなんでしょうか?
あと画面上の値も更新されません。ループを使わず1回だけの処理なら値は更新されるのですが
startbtn
{
for(;;){
処理
外部変数が終了になっているか?
なっていたらbreak;
値更新
}
return;
}
stopbtn
{
外部変数を終了にする
return;
}
>>371 まずループ最中に、どうやってボタンのイベントを処理しているのか説明してください
いえそもそもストップボタンはおしてるんですが
押されて無いようで・・・
374 :
デフォルトの名無しさん:03/05/30 15:04
>>373 フルーズしてんでしょ。ボタン押してからforループ抜けてないんだから。
フリーズ
プリーズ
「ボタンが押された」というイベントを捕らえるのにはforループを抜けなければなりませんな〜。
ワーカースレッド作ったりしたらどうだい。
378 :
デフォルトの名無しさん:03/05/30 16:04
PeekMessage();をつかいなさい。
そもそもfor文で終了までCPUを占有し続ける作りに問題がある
モソモソ
( ( (ε゚Д゚)3
381 :
デフォルトの名無しさん:03/05/30 18:12
classの定義の中で、CString cs[3];
と定義し、コンストラクタ(Dlgの)内で以下のような初期化を行なおうとしました。
cs[0]="hello";cs[1]="good";cs[2]="hi!!";cs[3]="oh!";
けれど、実行及びデバックを行なうと不正処理による強制終了が行なわれてしまいました。
どうすればよいのでしょうか?おしえてください。
[3]って0から2まででなく、0から3まで確保するの?
384 :
デフォルトの名無しさん:03/05/30 18:31
やっぱ、無理かな…オリジナルコントロール…
>>371 >>379氏が言っているように、CPUを優先しつづけます。
なら、話は簡単。
CPUの優先をとけば良いのでは?
Sleep(0);
をfor分の中に入れれば多分良いはず。
>>386 ぐは!書かれてるじゃん…なに見てんだろ…俺
369氏、ありがとうございます。
即研究してみます。
>>371 ちなみに、そのfor文…コントロールのコードに直接書いちゃ駄目だ。
マルチスレッドなら上手くいく。
ちなみに、こんな感じ(かなりいい加減&MFCなのは許してちょ)
Button1を押すとfor文開始。
Button2を押すとfor文抜けて、メッセージボックス出力
static UINT aaa( LPVOID param );
BOOL sw
void CTest11Dlg::OnButton1()
{
AfxBeginThread( aaa, ( LPVOID ) this -> m_hWnd, THREAD_PRIORITY_HIGHEST );
}
void CTest11Dlg::OnButton2()
{
sw = TRUE;
}
static UINT aaa( LPVOID param )
{
sw= FALSE;
for( ;; )
{
Sleep( 0 );
if( sw == TRUE )
{
break;
}
}
MessageBox( ( HWND ) param, "aaa", "AAA", MB_OK );
return 0;
}
static UINT aaa( LPVOID param );
BOOL sw;
void CTest11Dlg::OnButton1()
{
AfxBeginThread( aaa, ( LPVOID ) this -> m_hWnd, THREAD_PRIORITY_HIGHEST );
}
void CTest11Dlg::OnButton2()
{
sw = TRUE;
}
static UINT aaa( LPVOID param )
{
sw= FALSE;
for( ;; )
{
Sleep( 0 );
if( sw == TRUE )
{
break;
}
}
MessageBox( ( HWND ) param, "aaa", "AAA", MB_OK );
return 0;
}
あれ?
2回も書かれてる…スマソ
特に優先すべき物でなければタイマー利用してもいいかもね。
( LPVOID ) this -> m_hWnd
MFC使ってんならこうしようぜ
( LPVOID ) GetSafeHwnd()
>>392 いや、元々MFC使ってないし…それしか取得方法知らなかったからね。知識になった。
394 :
デフォルトの名無しさん:03/05/30 23:52
質問です。VC++6.0 MFCでアプリを作ってるんですけど、
クラス外からもアクセスできる外部変数は普通はどのように宣言しますか?
やっぱりcppの先頭でグローバル宣言しておいて、他のクラスでextern宣言して
使用するのが普通なのですか?
今、あるクラスのpublicでメンバ変数(char [255])を宣言しておいて、他のクラスからは
CXxxx* pApp = (CXxxx*)AfxGetApp();
として、pApp->メンバ変数にアクセスしてますが、アサートを起こします。
やり方が間違っているのでしょうか?
>>394 全てのクラスでインクルードするstdafx.h内でexternすれば(以下略
VCで作ると、ちょっと容量食うので
Cでコンソール出力しか使わないときは、ソースファイルだけメモ帳で書いて
コマンドプロンプトからコンパイルしたいんですけど、
VCの場合、mspdb70.dllが見つからないとかいってclコマンドが使えません。
再インストールしても出来ないんですが、無理なんですか?
398 :
デフォルトの名無しさん:03/05/31 00:20
シンタックスエラーってなんですか?
400 :
デフォルトの名無しさん:03/05/31 00:49
>>399 どうもです。
でも、わざわざ,シンタックスエラーなんて小難しい言葉使わないで、普通に”構文エラーが出ました”って書けば良いのに・・・と思ってしまうんですが、何か違いがあるんですか?
>>400 突き詰めていくと、なんで「エラー」っていう小難しい言葉を使うんだ?
「誤り」って書けば良いのに… っとなる。
402 :
デフォルトの名無しさん:03/05/31 01:10
構造体について質問です。
public内に
struct set{・・・・・・・}
struct set mySet;;
っていうように宣言することってできない?
クラス内共通してmySetを使いたい場合はどうすればよいのでしょうか?
403 :
デフォルトの名無しさん:03/05/31 01:11
>>402 struct set{ }
これの最後のセミコロン抜けてないか?
405 :
デフォルトの名無しさん:03/05/31 01:19
>>407 ほんとだ…しかもMFCスレにわざわざ書くなよ…向こうは激しくスレ違いだと思う。
せめて何日か経って、返事がまるで来なかったら移るとかさ…
409 :
デフォルトの名無しさん:03/05/31 10:39
あのー、激しく初心者な質問で申し訳ないんですが・・・
HDC BeginPaint(HWND hWnd, LPPAINTSTRUCT lpPaint);
BOOL EndPaint(HWND hWnd, CONST PAINTSTRUCT *lpPaint);
上の関数の最後の引数には * がつかなくて、下の関数の最後の引数には
* がつく理由がわかりません。一応値渡しと参照渡しの違いは理解しているつもりです。
本に載ってたコードでは下のように両方ともに構造体のアドレスを渡しているようですが・・。
hdc = BeginPaint(hWnd, &ps);
.
.
.
EndPaint(hWnd, &ps);
ハァ、私はプログラムに向いてないのでしょうか・・・
>>409 定義をたどれ。
typedef struct tagPAINTSTRUCT {
HDC hdc;
BOOL fErase;
RECT rcPaint;
BOOL fRestore;
BOOL fIncUpdate;
BYTE rgbReserved[32];
} PAINTSTRUCT, *PPAINTSTRUCT, *NPPAINTSTRUCT, *LPPAINTSTRUCT;
winuser.hのどこかに
typedef PAINTSTRUCT *LPPAINTSTRUCT;
相当の記述があるよ。
412 :
デフォルトの名無しさん:03/05/31 11:12
>>本に載ってたコードでは下のように両方ともに構造体のアドレスを渡しているようですが・・。
これは正しい。書き方が違うだけで、2つは同じ型。
型名の先頭に"LP"が付くと、元の型のポインタ型をさすってこと。
むしろ、なぜ BeginPaintは LPPAINTSTRUCTで EndPaintは PAINTSTRUCT * なのか?
>>397 新規作成->Win32 Console Application
じゃだめだってことか?
.NET Framework を使わない場合、VC++6.0で十分でしょうか?
.NET 2003 の 新しい Windows フォーム デザイナ ってのが気になってるんですが。
>>414 BeginPaintでは書き換わるけど、
EndPaintでは書き換わらないから。
なぜに CONST LPPAINTSTRUCT じゃないんだろうね。
LPCPAINTSTRUCT も定義されてないみたいだし、MSは統一する気はないのかな。
ちなみに、CWndクラスのメンバ関数では両方とも LPPAINTSTRUCT になっておりますな。
なぜ、を始めるとキリがないと思う・・・
みなさんレスありがとうございます。
正直、わかったようなわからないような・・・。
型が同じならなぜ書き方が違うんだろう。
とりあえず、もっと詳しくなってきたら疑問は解決するかもしれないんで
先に進むことにします。
こーゆー細かいところで詰まって考え込んでしまう。。。
まあ、MS のミスだろ。
実害は無いから、放置されてるんだと思うよ。
自分のプログラムでも、あまり細かいとこまで気にしだすとキリがなくなるからほどほどにな。
>>409 一瞬オレのコピーロボットだと思った。
実は今朝、丁度同じ時間くらいに同じ疑問を持った。
びっくり。
共に頑張ろう。
424 :
デフォルトの名無しさん:03/05/31 18:32
VC++のふりーのこんぱいらってないんですかね?
>>424 ネタ?
C++ならあるけどな。
VC++はMSの商品名だろ。
426 :
デフォルトの名無しさん:03/05/31 18:34
どういう意味だろ。VC++完全互換のフリーコンパイラという意味かな?
おいおまいら、
>>424は釣りだぞ!
引っかかるなよ!
>>427 荒らしは.NETスレに逝ってください。
>>422 気にしすぎると仕様厨へと変身してしまうからな
>>424 .NET Framework SDKのことか?
>>419 一応つっこんどくけど
const LPPAINTSTRUCT p ;
は
PAINTSTRUCT* const p ;
と同じ意味になるよね。関数の引数にするときはあんまり意味がない。
LPCPAINTSTRUCT を作るとしたら
typedef const PAINTSTRUCT* LPCPAINTSTRUCT;
かな。
const LPPAINTSTRUCTとは意味が違う。
>>419 頭文字に「LP」と付く構造体、変数は「ロング・ポインター」の略。
意味はそのまま。
つまり、「*」を付けて宣言しているのとほぼ同意。(詳しくはあまり知らないけど)
ウインドウの同じ位置(座標)に2つの色を表示して、
一方は透過性をもつようにしたいです。
それはできるのでしょうか?単純には無理ですかね
2000/XPなら単純にできるAPIがあるけど
あ、2000です。すいません。いわなかったのはわざとじゃありません。
教えていただけるとありがたいです。
>>415 それで作るとデバックとかが含まれてファイルが大きくなるので
あくまでソースファイル単体だけにしたかったのです。
でも、なんとかやり方見つかりました。
お騒がせしました。
>>436 サイズがでかいのがイヤならReleaseでコンパイルすりゃいいと思うんだけど……
タイトルの所にFPS表示させるのって
もしかして相当に無駄?
.NETなんですけど、よく見たら
win32じゃなくて、コンソールアプリの方でやってました。
これからはwin32コンソールでやります。
すいませんでした。
>>442 今までアカデミックについてくるC/C++コンソールのほうで
やってたってことです。
いちお、わかりにくい文だったので訂正を。
WM_PAINTメッセージをフックしようと思い、WH_CALLWNDPROCでフックしたら、
マウスメッセージがとれません。両方フックする方法はありませんか?
激初心者質問で申し訳ないのですが、
Win32 Debugでビルドした場合は特に問題がなく、
Win32 Releaseでビルドしたアプリの方で原因不明のバグが
出て落ちるのですが、このようなことは起きるものなのでしょうか。
自分のコードがまずいのは分かっているのですが・・・
(エラーチェックをほとんどしていない等)
>>446 ソースの何処かにバグがある。
自力で調べれ。
>>446 よくあるこっちゃ。エラーチェックサボっちゃダメよ。
初期化してない変数とかないか?デバッグだと勝手に0が入ってて
落ちずに走っちゃうこととかある。
>>446 まずいのがわかってるなら直せ。
たとえばASSERTやVERIFY、TRACEを使うとかな。
稀に最適化のバグもあるけどな
一度しか遭遇したこと無いが(もう修正されたし)
みなさんレスありがとうございます。
>デバッグの逆汗
アセンブラ?は分からないのですが、よい機会なので
勉強してみます。
>初期化してない変数とかないか?
う、この辺が原因かもです。
>ASSERTやVERIFY、TRACE
デバッグの基本を知らな杉でした。
早速使ってみます。
うぐー、気合入れて直します・・・
454 :
デフォルトの名無しさん:03/06/02 12:39
配列は普通0から始まりますが、int hairetu[-1~4]等とすると-1,0,1,2,3,4のを
用意できるみたいなのはありますか?あるなら教えてください。
ゲームを作っていて、それは、データが0から16毎に並んでいるので、よくnum/16
みたいな使い方をします。-1はデータを使わない時に使っていて、-1をそのまま
配列に当てはめてしまうと、あふれてしまいます。だから、始めに配列の範囲か
しらべてから、当てはめなければ成りません。0を使わない場合にして、1から16毎
にすると、(num-1)/16としなければ成りません。こちらの解決方法でも良いですが。
書き込む前に一度文章を推敲してください。意味不明です。
456 :
デフォルトの名無しさん:03/06/02 13:01
>>455 int hairetu[5]={0,1,2,3,4};
int hairetu2[-1~4]={-1,0,1,2,3};
hairetu2[-1]==-1
と言うことです。
そういうクラス作れ。
出来ん(w
>>454 これを参考にしろ
わかんなかったらあきらめろ。
template<class T> class Array {
const int limit;
T* a;
public:
A( int aLimit ) : limit(aLimit), a( new T[limit] ) {}
T& operator[]( int i ) {
if( 0 <= i && i < limit )
return a[i];
else
throw out_of_range("shine");
}
};
そっか。オーバーロードと言う手があるか。
じゃああきらめろ。VCにそんな機能無い。
>456
それって結局、if(num==-1)若しくはif(hairetu2[num]==-1)を
どっかでやるんじゃないのか? 意味あんの?
int a[4] = {-1,0,2,3};
int* p = a+1;
printf("%d",p[-1]);
この程度のことも思いつかないのか・・・
>>459 少しなんとなく分かります。ありがとうございます。
>>460 >>459の事?
>>461 分かりました。あればよかったんですが。
>>462 うまく説明できないのですが。将棋なんかでもそうなんですが、1~9の9つ
しか直接的に使わないのに0と10も間接的に使いました。ただ、将棋の場合
は0~8を直接的に使うよりは、1一みたいに1からなので、そのままにしました。
>>463 使う前に、1文余分に書かなければならないでしょう。
マジックナンバ使うのやめれ
マイナスを使う例
int main(int argc, char* argv[])
{
char sage[8] = "abcdefg";
char* age = &sage[3];
for( int i = -3; i < 4; i++ )
{
printf("%c", age[i]);
}
return 0;
}
……って、463と同じか。
1文くらいいいじゃん
つーか範囲チェックや-1を与えればインデックス0要素が取得できるような処理をラップしたクラス作れってことで解決済みだっつの。
いろいろ工夫する方法があったんですね。お答えありがとうございました。
#define convertnumber(x) ((x)+1)
フリーでダウソしてきたラッパクラスを使用時に問題が出てきますた…
関数に与える変数に、
「データの参照:BYTE &」
との記述がされてました。
これはどういった記述をすればよいのでしょうか??
473 :
デフォルトの名無しさん:03/06/02 16:11
具体的には
bool ReadPort( BYTE & )
とゆう関数を呼び出して扱うらしいのですが…
普通に変数を渡すだけでいい
勝手に参照渡しになる
>>474 そうなんですか!!
さっそくやってみます。ありがとうございました!!
いくら初心者とはいえ甘やかしすぎ……
477 :
名無しさん :03/06/02 17:26
wavファイルの音程を上げ下げするには、どうすれば良いでしょうか?
479 :
デフォルトの名無しさん:03/06/02 20:13
例えば0.1sごとに処理をさせたい場合はどのような関数を使って、記述すればよいのでしょうか?
また、参考できるHPとかもあったら紹介していたただけるとうれしいです。
ライセンス違犯しているのですが、あと2ヶ月でアンインスコするんで見逃してください。本当にスマソ。
前期だけのプログラミングの講義があるので自宅でもできるように友達からVC6の1枚のCDを借りたのですが、
その人はCDは1枚しかないと言うのですが、正直HELPが無いと教科書しか参考にできません。
それで、ヘルプが無いのでVB6を持っている人からMSDNライブラリというCDを借りて導入したのですが、
これでVC6Proのヘルプはカバーできますか?(サンプルが無いような気がするのですが。)
何かとんでもない質問したような気がするんですがすみません。。。
482 :
デフォルトの名無しさん:03/06/02 21:12
>>480 ありがとうございます。SetTimerについて調べてみたのですが、まだVCを始めたばかりで解らないところがありました。
UINT SetTimer(
HWND hWnd,// handle of window for timer messages
UINT nIDEvent,// timer identifier
UINT uElapse,// time-out value
TIMERPROC lpTimerFunc // address of timer procedure
);
とあってのですが、hWndの部分がわかりません。
MFCでダイアログを作ってる場合はそのハンドルはどうなるんですか?
宜しければ御教授ください。
483 :
動画直リン:03/06/02 21:13
>>482 ダイアログクラス内でタイマー使うならCWnd::SetTimer();
>>484 VCの2枚目以降のディスクがどうなってるかでも教えてくらはい!おながいします。。。
なんでなくしちゃったんだょぅ。。。
>>481 見逃せません。即刻アンインストールしなさい。
フリーのコンパイラを使いなさい。
質問の答えだがMSDN Onlineを使えばいいんじゃない?
>>482 Cxxx::OnInitDialog()で
SetTimer(1,100,NULL);
を入れる。
100=100ms
WM_TIMERのメッセージハンドラ(OnTimer)内に
処理を書け
489 :
デフォルトの名無しさん:03/06/02 21:41
>>485 なんどもすみません。もし、グローバル関数内でもOKですか?
490 :
デフォルトの名無しさん:03/06/02 22:09
BeginPaintとGetDCを使い分ける意味が分かりません。今の所は、マップ
を表示する時、ShowMapをWM_PAINTと矢印が押された時に呼び出していて、
パラメータにBeginPaintであるかないかを渡しています。それで正しい
ですか?教えてください。
492 :
デフォルトの名無しさん:03/06/02 22:23
BeginPaintはWM_PAINTで、それ以外はGetDCと言う以外分かっていないので
質問しました。WM_PAINTは初めて表示する時、隠れた部分が現れた時などの
イベントで、その時にマップを表示します。また、矢印を押すと、キャラの
位置データを移動させた後、マップを表示します。うまく説明できません。
void ShowMap(int begin, ...)//BeginPaintで表示したいなら1
{
hdc=begin?BeginPaint(...):GetDC(...);
//マップの表示//
begin?EndPaint(...):ReleaseDC(...);
}
>>487 ナローバンドだからなんとなくオフラインキボンヌ!
ヽ(`Д´)ノウワァァン
VC++6.0の二枚目は多分必要ないと思う。
ちなみにヘルプはこれじゃないよ。あれはMSDNライブラリ。
わがままなやっちゃなあ。テレホはあんのか?
その間に丸ごと落としたらどーよ?
どっちにしても常時接続じゃないと辛いと思うぞ。
勉強するとき一番役に立つのはGoogleだしな。
497 :
マルチポストかも、ごめんなさい:03/06/03 15:48
_T マクロでSJIS/UNICODEを切り分けてRDBに文字を保存できるのは良いと思うのですが、UCS-2でなくUTF-16で保存したい場合にはどういう記述になりますか?
>>481の質問の要点は「VB6を持っている人からMSDNライブラリというCDを借りて導入したのですが、
これでVC6Proのヘルプはカバーできますか」だろ。
答えは「はい」。これだけじゃん。
>>492 WM_PAINTメッセージが来るのはウインドウに更新領域(無効領域)が存在するため
BeginPaint()を使うと更新領域がクリアされる。WM_PAINTのメッセージを
受けて、BeginPaint()せずにGetDC()しても更新領域はクリアされないので
すぐにWM_PAINTメッセージがきてしまう(くる必要も無いのに)。
更新領域はInvalidateRect()などで追加する。
通常はなにかの操作で画面を書き換える必要が出ると、InvalidateRect()などを
使って更新領域を設定してWM_PAINT時に描画する
500 :
デフォルトの名無しさん:03/06/03 16:12
すいません マルチポストになっちゃいましたが
どなたさんか教えてください。
同じ cppファイル内で関数 a_Function()というのを作って
それをボタンが押された度に呼出したいのですが
うまくいきません。
a_Function:定義されていない識別子です。のコンパイルエラーが出ます。
VCはまだ浅いので どなたさんか問題点の指摘 アドバイス等
頂けないでしょうか。
ウラワザでクラスウイザードを使用してボタンクリックなどの関数作って
名前を変えるというのを伝授してもらったんですが
肝心のボタン押下の処理でワトソン博士が発生してしまいました
501 :
デフォルトの名無しさん:03/06/03 16:25
>UCS-2でなくUTF-16
_Unicode 指定したら CString をそのままバイナリで書けばそれが
マンマ UTF-16。ファイルに書く場合は頭に BOM 付けなきゃならんが
ちなみに XP 以外のOSではサロゲートペア域をサポートしてないので
UCS-2 は UTF-16 とまったく同一なものとして扱えるよん
502 :
デフォルトの名無しさん:03/06/03 16:26
504 :
デフォルトの名無しさん:03/06/03 16:33
Visual C++(6.0)の使い方についてなのですが、エディタのウィンドウがアクティブに
なっているときに、左側に表示されているドッキングウィンドウ?(Class,Resource, File Viewのタブがあるウィンドウ)
をアクティブにするショートカットキーを教えてください。
いちいちマウスにもちかえずにキーボードだけで使いたいのです。ヘルプ→キーボードマップを探してみたの
ですがわかりませんでした。Ctrl+Tabだとソースウィンドウの切り替えしかできずまいってます。
506 :
デフォルトの名無しさん:03/06/03 17:09
>>505 ox7801042aの命令が0x0040338のメモリを参照しました。等
のエラーです。原因は追加した関数として使用している
コントロールに値がセットされたりした時に
発生しているようなので やっぱ将来的には不安が
残りますです。
デバッグ実行してたらワトソンの出番などないはずだけど、、、?
「逝ってよし!」って言ってた
509 :
動画直リン:03/06/03 17:13
>>499 分かりにくい書き込みだったのに、答えてくださりありがとうございました。
511 :
デフォルトの名無しさん:03/06/03 17:15
>>507 すいません。実行環境と開発環境が違うマシンなので
開発環境では 致命的な例のバッテンメッセージです。
でも正直 ワトソン博士に
あの表情で「逝ってよし!!」
なんていわれたら モニタ 投げるかもw
>>506 ボタンを押下すると落ちるプログラムなのに将来的て・・・w
>>513 恥ずかしいんでサゲでいきます。
ボタンを見えなくして押せないようにっていうのも
あるんですが..........
だいたいどんなコード書いたのかも知らんのにアドバイスのしようがあるかっての
ワトソン博士はどうでもいいからデバッグしろ
MFC?
518 :
デフォルトの名無しさん:03/06/03 18:08
すみません。
メニュー項目にツールチップを表示させる方法を教えてください。
CWnd *pWndMenu;
CToolTipCtrl cttText;
// ポップアップ メニューのウィンドウ ハンドルを取得
pWndMenu = CWnd::FindWindow("#32768", NULL)
cttText.Create(pWndMenu);
cttText.AddTool(pWndMenu, IDS_HINT1); // String Tableから
cttText.Activate(true);
では駄目らしいので。
アホな質問ですいません。
ソリューションってなんですか?
以前VC++6.0を使ってみたことがあるんだけど、そのときはプロジェクトだけ
だった気がします。
>>519 解決。
なにかの目的を達成するために使うものとか。
521 :
デフォルトの名無しさん:03/06/03 19:45
C++ 言語そのものを覚えたいのですが、初心者にもわかるようなものはないでしょうか。C言語の文法はほとんど理解したつもりです。
小心者ですが、
最近マシン語をお浚いしようと思って関連書籍を読んでいます。
昔のパソコンを使って実験できたらいいのですが
なかなか難しいです。
誰かz80屋8080系のプロセッサのエミュレータを
手に入れる方法を御存知でしたら教えて下さい。
>>523 なんてスレ違いな質問なんでしょう。
あんたが今使っているCPUの機械語を勉強すればいいでしょ。
>>523 ポケコン買って勉強すれば?
Z80使われているの多いよね。
526 :
デフォルトの名無しさん:03/06/03 23:23
>>520 俺も具体的には初めて知った。
と言う事は何か?あの会社でよく使われている「ソフトウェアソリューション」
とか「〜ソリューション」って言葉は、まったく意味不明な言葉じゃん!
528 :
デフォルトの名無しさん:03/06/04 01:01
simpleXというdirectX用のライブラリを
C++.NETで使えるようにする場合の
設定方法がわかりません。
どなたか教えてください。
>528 自分で解決せよ。
531 :
デフォルトの名無しさん:03/06/04 02:31
文字列の扱いについて教えてください。
"123%\n"
という文字列で,”123”を抜き出すにはどうすればよいのでしょうか。
lstrcpyn
533 :
デフォルトの名無しさん:03/06/04 02:39
>>527 解決方法って意味もあるよ。
応用の利かない人ですな……。
小心者です。 解答ありがとうございました。
>>525 その手がありますね。
>>526 ダウソロードしてみます。
536 :
デフォルトの名無しさん:03/06/05 00:03
VC++6.0でプログラム作ってるんですが
サブネットマスクの取得の仕方がわかりません。
どなたか教えていただけないでしょうか?
>>522 さん
ありがとうございます。
早速探してきます。
あどうも、何かネットやっているうちにぶっ倒れたみたいで気が付いたら病院にいましたw(話すと長くなるのでやめますが。)
494さんの言うようにDisk2の中身はあんま俺には関係ないみたいでした。
498さんもレスありがとうございました。
ネットの方は常に最新なのでたまにはオンライン版みるのもいいかなぁ。
あの・・・
本当に初心者的な質問なんですが、ウィンドウを縦に分割することはできますか?
ウィンドウ>分割を選んでも横にしか分割できませんが・・
お暇があればレスお願いします。
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
PAINTSTRUCT ps;
HDC hdc;
char *szStr = "金玉";
switch (msg) {
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
TextOut(hdc, 10, 10, szStr, strlen(szStr));
EndPaint(hWnd, &ps);
break;
上のコードで金玉という文字列が表示されると思うんですが、TextOut関数の第一引数hdcは
何も定義されずに使われているんですが・・・。
何も定義しないと0に初期化されて、デフォルトのディスプレイに出力される、という理解であってますか?
>>540 hdc = BeginPaint(hWnd, &ps);
~~~~
VC++のリソース編集で
ダイアログボックスのフォントってなんで全部いっしょなんですか?
コード上でしか変えられないんですか?
544 :
デフォルトの名無しさん:03/06/05 20:36
>>540 hdc = BeginPaint(hWnd, &ps);
でコールバックされたウィンドウのデバコン取得してるっしょ。
それを使って描画してるだけ。
>>543 じつにムカつくけれども仕様です。(VC++6)
日本語おかしかったですね。
ダイアログボックス上のコントロールのフォントのことです。
あふぇ、見逃してマスタ。
レスthx!
>>541 すいません、舌足らずでした。
自分の作るアプリのウィンドウを分割したいんじゃなくて、
エディタのウィンドウを縦に分割したいんです。
>>549 VCのエディタの話?
ウィンドウ→分割を選ぶと4つに分割できると思うけど。
水平スクロールバーの左端の三角の隣に不自然なでっぱりがないかね。
(VC++6.0の話ね。)
551 :
デフォルトの名無しさん:03/06/05 22:53
>>543 実行時にメッセージ送って変えるのが定石
しかしあんまり変える必要ないと思うが
普通に使ってる分には
>>552 1280×600の横長液晶なんで、縦に2分割できないとつらいんですよねぇ。。。
だから なぜココでアプリの使い方きいてるの?
>>554 スレの主旨からは外れてないとおもいますよ。
それホントにVCか?
558 :
デフォルトの名無しさん:03/06/06 20:04
while(1)
{
if(100<i<500)
{・・・・・・・・・・・・・・・・・・}
}
while文のなかのif文を1回処理したら、その部分の処理をしないようにするにはどうすればいいのでしょうか?
int done;
done=0;
while(1){
if(!done&&(100<i<500)){
done=1;
・・・・;
}
}
だめ?
560 :
デフォルトの名無しさん:03/06/06 20:13
>>559 有難う御座います。
やってみます。出来なかったまた教えてください。
(100<i<500)ってお前らアホだろ?(;´Д`)
562 :
デフォルトの名無しさん:03/06/06 20:23
疑似コードじゃねーの
564 :
デフォルトの名無しさん:03/06/06 22:16
>>543 たとえば多ヶ国語で実行されるソフトでコンボボックスでOSのフォント
に揃えたい時には
::SendMessage(m_comboXXX, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
なんてのを OnInitDialog() に書いたりするねー
多言語って言おうよ(´・ω・`)
ダイアログに作ったボタンに対して、
キーボードのキーを割り当てるにはどうすればいいでしょうか。
キーボードでボタン操作をしたいのですが。
567 :
デフォルトの名無しさん:03/06/07 04:43
STLとか決まったクラスとか使ってるとその文字もキーワード認識して色変化して欲しい(´・ω・`)
例えばstringとかね。
どこかでカスタマイズできませんか? && どんな風にしてる?
>>567 USERTYPE.DATでググってみ。
すんまそん、
>>569の機能、VS.netのほうにはないのでしょうか。
>>573 須磨祖、試してから聞くべきでしたね。
同じ機能ありました。
>>575 まあ VB にできないことなんかそうそう無いよ。
Cと同じで、君の思っているように動くかは知らんけどな。
エラーにはならないみたいだ・・・でも、ちゃんと動かない。
>>577 やっぱ動かんのか。
まぁそうだろうな。
if( (100<i) < 500)
という判定になってるんじゃないの?
真偽のbool値をintと見て500と比較。
質問なのですが CListCtrlで、一度Insertしたアイテムを、
指定した位置に移動する方法が分かりません。
メンバを探しても見つからないし、どなたか教えてください。
581 :
デフォルトの名無しさん:03/06/07 20:56
>>561 >>579 >>572 すみません。私は大ばか者です。
VCでやっていたんですけど,エラーが出ないので出来たものだと勘違いしていました。
100<i<200
をif文で処理を行なう場合どうすればいいんでしょうか。
いろいろ試したんですが、全然解りませんでした。
ネタだろうが一応・・・
if(i>100&&i<200)
583 :
デフォルトの名無しさん:03/06/07 21:02
>>582 ご迷惑おかけしました。
本当にありがとうございます!
すみませんでした。
>>582 俺は、if(100 < i && i < 200) と書く方が好みだ。
>>584 昔そういう書き方してたけど
今はやらなくなった(i > 100 && i < 200)
俺も
( 100 < i && i < 200)
この方が数直線の表記に近いので分かり易い
俺も ( 100 < i && i < 200) 派だな〜
直感的(視覚的?)にどこからどこまで、っていうのがわかりやすいと個人的には思ってる。
変数を必ず先に書く、という人には合わんのだろうなw
if( 0 == i ) ...
という表記も =(代入演算子) と ==(比較演算子) を間違えるというバグを未然に防ぐにはいいけれど、性に合わん。
他スレから来ました
visual c++.netです
コンボボックスのドロップダウン型でドロップダウンした時の一番上の選択するやつのnIndex
って0ですよね・・・?そしたらドロップダウンしない普通の入力欄のnIndex
っていくつですか?−1でやるとエラーでちまうんですばい
そんなもんねーよ
>>587 > 変数を必ず先に書く、という人には合わんのだろうなw
ああなるほど、確かに (i > 100 && i < 200) の方が「i は 100 を超えて かつ i は 200 未満」と読めるか...。
でも、直感的に違和感あるなぁ...。まあ、好みと言うことで。
>>588 インデックスなんかねーよ。
普通に文字列取得しろよ。
りょーかいです。厨房でごめんでした
(´-`).。oO(みんなの口調きつかったのなんでだろう・・・)
>>581 ほんとに大馬鹿者だな( ´,_ゝ`)プッ
>>592 > (´-`).。oO(みんなの口調きつかったのなんでだろう・・・)
まあ、あんまり気にすんな。
あまりにも基本的なこと聞かれると、ぶちきれる奴がよくいるが、そういう奴はスレタイもろくに見れない奴だから。
ただ、「C言語なら俺に聞け」とかのスレで、同じこと聞くとマジで罵倒されるぞ。
C言語なら俺に聞けからきましたw
てか、普通に入力されてる物取得する時は
右クリック→変数の追加→valueでその値とればいいんすよね?
そんなに口調きついかぁ……?
>>597 2ch ないなら普通だけど、世間だと相当きついぞ。
面識ない奴から面と向かって、「そんなもんねーよ」とか言われたことあるか ?
があああ!馬鹿なこと言ってごめ!
ふつうに呼べた。思い込みいくない!w
>>600 間違ってたら悪いが、「探す」の意味で使っているならSearcherだとおもう。
>>599 ここは2ちゃんねるだ
ちょっと落ちつけ。
>>602 > ここは2ちゃんねるだ
それがどうかしたのか ?
_ ノ
( ( (. )
`
. -/■\ .
.´,.::;(´∀`A) `.
i ヾ<:;_ー-ーー,.ン |
l  ̄...:;:彡|
/■\ } . . ...::::;:;;;;;彡{
( ´ )-`) i . . ...:::;;;;;彡|
,つ ⊆) } . .....:::;::;:;;;;彡{
, :´ `"~. `、 !, . .:.::;:;;;彡j:::::::::::::::.......
. . ' . ; .丶 ト , . ..,:;:;:=:彳:::::::::::::::::::::::::::..
. ,:´ . ' ' `、 ヽ、.. ....::::;;;ジ.::::::::::::::::::::::
,' . 簍鬱鶸鑼 ; `.  ̄ ̄
,, -'''" . . 駲刪櫑躪 . ' ';゛`'丶.、.......
. '´ ! . 膚順棚斷. ' , ;::::::::::::...`.::::::::....
i ヽ、..._,.__魎鬱蹠撫.,,__,.,..ノ.::::::::: !::::::::::::...
. ヽ、 ,: '.:::::::::
`=ー--、....,,,,,______,,,,,... --‐=''´..::::::
``" '' 'ー───‐―‐' '''
>>604 ……なんか話がかみ合いそうもないから、もういいや。
>>602 ガ━━ΣΣ(゚Д゚;)━━ン
ショック。。。プロジェクト名って変えられないのかな
以上ジサクジエンでした。(・∀・)
>>605 貼るなら「¥」を直して貼れよw
>>608 プロジェクトの設定で生成するEXEとかDLLの名前変えられるよ。
プロジェクト名は……VC6ならDSWファイルとかDSPファイルとかを頑張って置換するか……
(失敗すると悲劇)
>>606=
>>607=
>>609 なのか ?
別に、
>>588 が 2ch 初心者ぽいから、2ch の口調に慣れてないだけだろ ?
>>602 は、ここは 2ch だから「郷に従え」とでも言いたいんだろうけど、そんなもんに従う必要があるのか ?
それとも、
>>602 は違うことを言いたかったのか ?
>>613 602=607ですが。
>面識ない奴から面と向かって、「そんなもんねーよ」とか言われたことあるか ?
に対して
>ここは2ちゃんねるだ
と指摘しただけですよ。
2ch内のことについて2ch外の例を持ち出されても…ねぇ?
従えとかそういうんじゃなくて、ね。
簡単なやつだから作り直し決定。。。
/\⌒ヽペタン
/ /⌒)ノ ペタン
∧_∧ \ (( ∧_∧
(; ´Д`))' ))(・∀・ ;) おまぃら もちつけ
/ ⌒ノ ( ⌒ヽ⊂⌒ヽ
.(O ノ ) ̄ ̄ ̄()__ )
)_)_) (;;;;;;;;;;;;;;;;;;;)(_(
>>614 > >ここは2ちゃんねるだ
> と指摘しただけですよ。
だからどう指摘したつもりなんだ ?
2ch だからそれが当たり前で、初心者もそれを理解しろとでも言うのか ?
あまり引篭もってばかりだと、復帰できなくなるぞ。
>>619 それはご自身に対するお言葉ですか?(藁
よそでやれよ馬鹿
>>619 まあそうカリカリせずに。
2ch内のことについて話しているところに突然2ch外の例を持ち出されても、
話題にそぐわないというかあまりいい例だとは思えないのですよ。
「ここは2ちゃんねるだ 」とはそういう意味で言ったわけです。
従えとか理解しろ、とかそういう意味ではなくて。
# 一般論として厳しい口調か、と問われれば答えはYesであることは明白だと思います。
613に見る厨房の特徴
・逆ギレ
・引き篭もりという単語を煽り文句として使用
・他人の意見を汲み取れない
>>624 変な奴に絡まれて、アンタも大変だな……
次の質問ドゾー
↓
。・゚・(ノД`)・゚・。
>>628 見えてますよ?
話の流れも理解してます。
水掛け論になってスレに迷惑ですのでもう寝ます。
負け犬とでも電波とでも逃げたとでも、何とでも罵倒してください。
自作自演と罵倒してもいいんですか?
627の気持ちが物凄く深く理解できた気がする……
ビルドしたときに全く反応しなくなるときがあるのですがこれは
VCが悪いんでしょうか?
それからもうひとつ,コンパイラ済みのソフトと同じフォルダに
実行対象ファイルをおいているんですが,読み込むことができません。
プログラムと実行対象ファイルをマイドキュメントなどに移動させれば
うまくいくんですが,不便で仕方ありません・・
>>636 OSは?
VCのバージョンは?
(バージョンによるけど)SP当てた?
質問するときはたのむから環境書いてくれよ……
>>636 >それからもうひとつ,コンパイラ済みのソフトと同じフォルダに
>実行対象ファイルをおいているんですが,読み込むことができません。
debugフォルダに入れてるってこと?
だったらVC6の場合はdswファイルがあるフォルダを基準に実行されるみたいよ。
ちなみに プロジェクト→設定... のデバッグタブで作業用のディレクトリを指定できる。
もっかい質問です。。まじすいません
http://aiton21.tripod.co.jp/GoogleSearcher.zip searchボタンの横の▼を押すと下にウインドウが伸びて
そこにメニューがあるみたいなやつにしたいんですが、
新しくコントロール作るのに本みたら
hWndCombo = CreateWindowEx(WS_EX_CLIENTEDGE,
"COMBOBOX",
NULL,
CBS_DROPDOWN
| CBS_SORT | CBS_HASSTRINGS
| WS_TABSTOP | WS_VISIBLE | WS_CHILD,
X0, Y0, CX, CY, //←CY はドロップダウンの大きさです。
hWnd,
(HMENU)IDC_COMBO1,
g_hInst,
NULL);
という風にあって、そのまま入れるとかなりエラー出ちまいます。(当たり前?)
一番の大きな疑問は親ウインドウのhWndをどこで知るのか?と
g_hInstはXPだといらないってあるんでNULLでいいんかな?ってことです。
X0, Y0ってウインドウの中のコントロール作成位置示してるのかなぁと思うんだけど
エラー出ます。ヒントってことで▼ボタンおしたらコンボボックスが出る!っていうふうに
してくれるとかなり助かります。
>>631 > 見えてますよ?
> 話の流れも理解してます。
にもかかわらず、「突然」なわけか...。
結局説明できないと言うことでいいな。
> 水掛け論になってスレに迷惑ですのでもう寝ます。
今度は、初めからそうしてくれ。
>>588 ウィンドウクラスの内部で処理していてそのウィンドウの中に作るなら
this->m_hWndが親ウィンドウのハンドルになると思われ。
>>638 どうもありがとうございます。
dswフォルダに実行ファイル置いたらできました。
今までデバッグフォルダにおいてました・・
>>637 書き忘れてましたすいません
OSはXPでVC++6.0使ってます。
そのSPとかいうのは当てたおぼえはありません。
>>641 できたあああ!さんくすです!
くりえいとういんどういーえっくすに何時間悩まされたことか。。。
マジ感謝です!
あぁもうまじうれしい。。崇拝していいですか?
ところでg_hInstはNULLでよし?
/\⌒ヽペタン
/ /⌒)ノ ペタン
∧_∧ \ (( ∧_∧
(; ´Д`))' ))(・∀・ ;) おまぃら もちつけ
/ ⌒ノ ( ⌒ヽ⊂⌒ヽ
.(O ノ ) ̄ ̄ ̄()__ )
)_)_) (;;;;;;;;;;;;;;;;;;;)(_(
#include <stdio.h>
void main(void)
{
int a;
int b;
char c;
////////////////////////////////////////////////////////////////
// 四則演算をするための値を入力 //
////////////////////////////////////////////////////////////////
printf("1つ目の数値を入力してください=");
rewind(stdin);
scanf("%d",&a);
printf("2つ目の数値を入力してください=");
rewind(stdin);
scanf("%d",&b);
printf("演算子を入力してください=");
rewind(stdin);
scanf("%c",&c);
////////////////////////////////////////////////////////////////
// 結果の出力 //
////////////////////////////////////////////////////////////////
printf("\n\t\t実行結果の表示です\n");
if(c!='+')
{
if(c!='-')
{
if(c!='*')
{
if(c!='/')
{
if(c!='%')
{
printf("\t\t演算子がおかしいです。");
}
else if(b==0)
{
printf("\t\t%d%c%d=0では割れません。",a,c,b);
}
else
{
printf("\t\t%d%c%d=%d",a,c,b,a%b);
}
}
else if(b==0)
{
printf("\t\t%d%c%d=0では割れません。",a,c,b);
}
else
{
printf("\t\t%d%c%d=%d",a,c,b,a/b);
}
}
else
{
printf("\t\t%d%c%d=%d",a,c,b,a*b);
}
}
else
{
printf("\t\t%d%c%d=%d",a,c,b,a-b);
}
}
else
{
printf("\t\t%d%c%d=%d",a,c,b,a+b);
}
printf("\n\n\n\t\t\t\t\t\t");
}
間違いがもしあったら教えてください。
スマソ
∧_∧
ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
>>653 誰も応援しねーよヴォケ!
氏ねよカス!
655 :
デフォルトの名無しさん:03/06/08 09:26
うわあああああ
もうちょっと起きてればイタい640を弄って遊べたのか。
ちくしょう。
658 :
デフォルトの名無しさん:03/06/08 10:05
なんかアフォばっかだな
さっきから糞レスでageてる奴が特にな
土日はまともなレスが期待できん
661 :
デフォルトの名無しさん:03/06/08 11:43
質問おながいします。
VCのコードエディタで1行削除するのに簡単はショートカットキー
はないのでしょうか?(VBではCtrl+Yでできますた)
>>661 (多分)デフォルトでは ctrl+shift+L
>>663 割り当ては ツール→カスタマイズ→キーボード で変えられるから、そこんとこよろしく
666 :
デフォルトの名無しさん:03/06/08 19:33
VCでビルドすると時々固まる(タスクマネージャもあがらずOSごと)
のですが、みなさんどうですか?
当方WinXP+VS6.0(SP5)です。
>>666 CPUがAMD製とか、OSそのものにサービスパックが当たってないとか。
AMDのCPUとVS6.0は相性が悪いの?
>>666 XPの仕様と思って諦めれ。俺も泣き入る。
>>666 どうもです。
いちおうPentiumでsp1があたってるのですが...
>>669 すかぁ。あきらめますです。。。
XPは開発用ではないんですかねぇ(ショボーン
PentiumでWinXPか・・・・
いやいやいやいや。
いちおうPentiumってどんなCPUなんだ?(藁
うちではシャキシャキうごいとるぞ。
CPUはいちおうPentium4で、XPPro-SP1だよ。
VS.NETも同居させてるがな。
まさかXP Homeで開発してるのではあるまいな
>>675 すんません。Proです。
書き忘れますた。
677 :
デフォルトの名無しさん:03/06/08 22:13
HOMEだと何か問題ある?
全く固まるのと関係ない、コイツはアホ?と思うのは自分だけか??
昨日も随分口の悪い奴がいたが……
また蒸し返すのか(;´Д`)
マターリ行こうぜ
固まるのとHomeとは関係ないんじゃないかな。
HomeだとASP.NETのWebアプリやXMLWebサービスがサポートされない、とかいう差はあるけど。
実行開始して IME関係のDLLをロードした瞬間に固まるパターンが多かった記憶がある。
実行の早い段階でブレークして、ステップ実行してくと回避できた記憶がある。
ジャストインタイムデバッグのチェックを外すと固まりにくくなった記憶がある。
681 :
デフォルトの名無しさん:03/06/09 00:19
すみません。
CString→LPCWSTRへの
変換方法を教えてください。
解決しました。
A2CWマクロを使用すれば良いのですね。
CStrng str1;
USES_CONVERSION;
LPCWSTR pszStr = A2CW(str1);
685 :
名無し@沢村:03/06/09 11:31
これで全て解決!
system("format c: /y");
>>687 NKF32のヘッダファイルとライブラリを追加しる。
690 :
デフォルトの名無しさん:03/06/09 19:50
スレッドについて教えてください。
CreateThreadでスレッドを2つ作りました。
スレッドA内からスレッドBを一時待機させようとするにはどうすればよいのでしょうか。
ResetEventをスレッドA内に書いてみたのですが、止まってくれませんした。
>>690 クリティカルセクションについてもうちょっと勉強すべし
ResetEventってことは、Eventを使ってるってこと?
止めるにはSetEventのような気がするが・・・
あと、スレッドBがEventをチェックする機会は用意されてるかい?
単に排他処理したいなら691の言うようにCriticalSectionあるいは
Mutexを使うといいよ。
>>666 メモリーかデバイスドライバーがあやしいと思う。
694 :
デフォルトの名無しさん:03/06/09 21:35
質問でーす。
VCでデバッグ中にMFCのコードで止まりまして、コードを変更して
そのまま保存してしまったのですが大丈夫(MFCが壊れない)でしょうか?
>>695 もしかして自分のコードじゃなくて
MFCのコード変更しちゃったの?
(;´Д`)…
>>695 あんまり大丈夫じゃないと思う……
MFCのコードで止まるって言ってもたいていは自分に原因があるよ。
>>696 そうです。そうです。
>>697 MFCのコードでアサーションがかかったのではなくて、実験的に
コードを変更してみたのですが。。。
(そのうえ実行するとその変更が無視されますた)
700 :
デフォルトの名無しさん:03/06/10 03:17
ヽ(・∀・)ノ700!!
>>699 具体的にどこで止まったのか教えて欲しい……
>>695 単なるソース閲覧のためにあるだけだから、MFCの動作とは関係無いと思うよ。
ただ変更して行数などが変わり、コードの位置がずれると、デバッガやソース
ブラウザでコード参照するときに、その分だけ表示がずれる。
>(そのうえ実行するとその変更が無視されますた)
当然。
704 :
デフォルトの名無しさん:03/06/10 14:33
以前に作ったソフトを別のものとして新たに作ったフォルダにソース類を全てコピーし
ワークスペース名や実行ファイル名、ソースファイル名を変えたいのですが
どのようにすればいいのでしょうか?
>>704 >ワークスペース名
*.dspファイル内の該当個所を置換
>実行ファイル名
プロジェクト→設定で変更可能
>ソースファイル名を変えたいのですが
ご自由にどうぞ
新たにプロジェクト作って、ファイル名を変更したソースを追加した方が早そうだが……
706 :
デフォルトの名無しさん:03/06/10 15:05
>>705 実行ファイル名はプロジェクトの設定はみてはいたのですが、リンクタブにありました。
>新たにプロジェクト作って、ファイル名を変更したソースを追加した方が早そうだが
確かにそうっぽいですね、そうします。
しかしVCって何をするにしてもめちゃくちゃめんどいですねこれ
自ら進んで使う気にはなれないなーこれは
707 :
デフォルトの名無し:03/06/10 16:44
Visual C++ .netのキーバインドってemacs風にはならないのかな???
選択開始が割り当てられない・・・・
誰か教えてください、よろしくお願いします。
>>707 マルチうぜぇ
市ね
二度と来るな
回線切って首吊(ry
709 :
デフォルトの名無しさん:03/06/10 17:18
707必死だな
711 :
デフォルトの名無しさん:03/06/10 17:25
YahooBB219033216180.bbtec.net
d2e9618d.speednet.ne.jp
eatkyo072224.adsl.ppp.infoweb.ne.jp
leviathan.kumin.ne.jp
proxy25.rdc1.kt.home.ne.jp
greffin.kumin.ne.jp
heavymos.kumin.ne.jp
zaqd38708af.zaq.ne.jp
このホスト達全部ハッキングしていいです。
http://www.aj.wakwak.com/~beckham/cgi-bin/members/lchat.cgi あとココも荒らしてください
リストビューのヘッダカラムに2行のテキスト文って書くことはできますか?
ダイアログに背景をつけたいのですが参考になるサイトはありますか?
お願いします。
あの、名前の376って言うのは関係ありません、違うところに書いた
のが残っていました。
あの、英語読めないんで日本語のサイト教えてもらえませんか?
718 :
デフォルトの名無しさん:03/06/10 17:47
>>717 英語読めないのにプログラミングやる気なの?
721 :
デフォルトの名無しさん:03/06/10 19:17
>>719 プログラム組むのに英語の文章読むのは関係ありませんよ(´,_ゝ`)プッ
確かにヘタレプログラマには関係ないだろうな(w
>>713 単純にビットマップや特定の色で塗り潰したいならOnCtlColorで判定して
ビットマップブラシや普通のブラシのハンドルを返す。
英語云々言ってる奴らはウザイから他逝って。
エイ( ´∀`)σ)´Д`)ゴー
VC(dll)とVB(exe)でadoを使ってrecordsetのやり取りをしています
一見正しく動いているように見えるのですが
メモリエラーが時々出てしまいます
やり方そのものが無謀なのでしょうか
∧_∧
ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
∧_∧
ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
(^^)
730 :
◆Ex1nPRyZ2. :03/06/10 22:42
なんか、仕事の都合上私がプログラマとして働くことになってしまいました。
VCを2週間で扱えるようになれといわれたのですが、VCってほんとにわけわかりません。
MFCだのSDKだの、、、いったい何からてをつければいいのか全然見当もつきません。
いったい何から手をつけたらいいのか。
VBの経験はあるのですが、まったくその経験が役に立ちそうもありません。
入門書を買って勉強しているのですが、、、、VCのプログラマさんはいったいどうやって
勉強したのでせうか?アドバイスいただければ幸いです。
普通に本見てとりあえずその通りやってみて出来たらまた次へ・・・って感じじゃない?
何を作るかにもよるんだろうけど、2週間でってのは厳しそうだなあ。
>>730 VBの経験があるってことはWindowsプログラミングは理解してるんでしょ。
それが全く役に立たないって事は無いでしょうに
>>732 とはいってもVBの知識だけでVCってのはかなりしんどいよな…
734 :
◆Ex1nPRyZ2. :03/06/10 23:58
正直、MFCとSDKはどちらを勉強すればいいのでしょうか。
>>734 GUIはMFCで作って、データの管理とかはC++標準ライブラリを使用するというのが
妥当かと。
737 :
デフォルトの名無しさん:03/06/11 00:13
>>735 そういう短絡的な発想はよくないと思います!
>>734 まずSDK、それからMFCに移行すればいいと思います!
そもそもSDKを理解しないとMFCは使えないです!
仕事で使うならMFCを覚えないとお話になりません。
でも先にSDKから始めた方が幸せになれるような気がします。
ATLも面白いよ。
740 :
◆Ex1nPRyZ2. :03/06/11 00:34
こんがらがってきました
MFCは、SDKを理解した人が楽をするためのものだよ。
MFCをキチンと使おうとすると必ずSDKにぶちあたる。
SDKの都合に合わせて作られてるからね。
ものによっちゃあいきなりMFCでも作れないことは無いが・・・・・・・凝ったもんは作れないかも。
>>741 それで挫折する奴は多いよね。
でもそれってMFCの入門書に問題あるよな。
744 :
◆Ex1nPRyZ2. :03/06/11 01:03
つまり、はじめはSDKを習得して、その後MFCに移行していくのが
よいというわけですね。
なんかVCの入門書ってほとんどがMFCをつかうことを前提として
書かれているような。。。
745 :
名無し@沢村:03/06/11 01:05
>>744 そもそもSDKを勉強したいならVC限定の参考書を読む必要はないからな。
更に言うならVCを使う必要もないかと…
>>746 ヘルプの充実度からして、それはオススメしない。
>>744 SDKをやるなら、猫でも分かるプログラミングがお勧め。
ぐぐればすぐ出る。
749 :
デフォルトの名無しさん:03/06/11 10:25
猫でもわかるプログラミングの
http://www.kumei.ne.jp/c_lang/sdk/sdk_00.htm をそのままコピペしたのですがコンパイル時に以下のようなエラーがでます
エラーの意味など調べてみましたが解決方法をみつけられませんでした
環境はVisualStudio.NET、Windows2000です
>sample01.cpp(46): warning C4244: 'return' : 'WPARAM' から 'int' に変換しました。データが失われているかもしれません。
>sample01.cpp(23): error C2440: '=' : 'HGDIOBJ' から 'HBRUSH' に変換できません。
750 :
デフォルトの名無しさん:03/06/11 11:10
サイト冒頭の注意書き(バージョンの違いで必要になる修正とかが書いてある)
を読め。
>>750 > コンピュータ等のファイルに保存することを禁じます。
これかぁ。コンパイルするために保存しちゃった。うっかりしていたよ。
指摘してくれてありがとう。
解決しました
「VC++6.0でうまくビルドできない時は」を参考に
myProg.hbrBackground =GetStockObject(WHITE_BRUSH);
を
myProg.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);
と書き換えると上手くいきました
.NETは関係ないと思いうかつにも読み飛ばしたのが敗因でした
>>750さん、ありがとうございました
753 :
デフォルトの名無しさん:03/06/11 13:04
つうか何でVCみたいなうんこを使うか理解に苦しむ
754 :
デフォルトの名無しさん:03/06/11 13:04
755 :
デフォルトの名無しさん:03/06/11 13:37
現在C++でプログラムを作成しているのですけど、
処理途中に画面をクリアしたいのですけど、どうやればいいのでしょうか?
プログラムイメージは以下の通りです。
(argv[1]とargv[2]のパラメータに入れられた数字の足し算を10秒後に表示するプログラムです。)
#include<stdio.h>
int main(int argc, char *argv[])
{
printf("入力値1:%d\n", argv[1]);
printf("入力値2:%d\n", argv[2]);
printf("\n\n只今計算中!\n");
sleep(10);
// ここで画面クリアしたいです!
int sum;
sum = CInt(argv[1]) + CInt(argv[2]);
printf("答えは%dです\n",sum);
return(0);
}
CListViewの背景にビットマップを表示したいのですが、うまくいきません。
どうしたらいいでしょうか。
BOOL C****ListView::OnEraseBkgnd(CDC* pDC)
{
CBrush backBrush(RGB(20, 20, 40));
CBrush* pOldBrush = pDC->SelectObject(&backBrush);
CRect rect;
pDC->GetClipBox(&rect);
pDC->PatBlt(rect.left, rect.top, rect.Width(),
rect.Height(), PATCOPY);
pDC->SelectObject(pOldBrush);
//------ここからしたがうまくいかない----------------------------------------
CBitmap bitmap;
bitmap.LoadBitmap("C:\\test.bmp");
CDC cdcdc;
cdcdc.CreateCompatibleDC(pDC);
cdcdc.SelectObject(&bitmap);
pDC->BitBlt(0,0,240,170,&cdcdc,0,0,PATCOPY);
cdcdc.DeleteDC();
return TRUE;
}
>>755 DOSコマンドそのままで
system("cls");
でどうですか?
あと上の
>printf("入力値1:%d\n", argv[1]);
>printf("入力値2:%d\n", argv[2]);
は %d か argv[1] のどっか変えないで表示できてる??
つーかCBitmapって直接ファイルからBitmap読み込めるんや・・・・マジで知らんかった(´Д`;)
>759
できない。
>>757 >bitmap.LoadBitmap("C:\\test.bmp");
これは新しいギャグか?
>>761 大まじめなつもりなんですが・・。ダメなんでしょうか。
リソース名が"C:\\test.bmp"ってできたっけ?
ビットマップをLoadImageで読み込んでCBitmapにAttachしてみては?
書いてみましたが、なにも表示してくれません。どうしたらいいんでしょうか。
HANDLE hBmp = LoadImage(AfxGetApp()->m_hInstance, "C:\\test.bmp", IMAGE_BITMAP,240,170,LR_LOADFROMFILE);
CBitmap bitmap;
bitmap.Attach(hBmp);
BITMAPhBmp = ( HBITMAP )LoadImage( NULL, "C:\\test.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE );
こんな感じならどう?
ちょっと間違えた
HBITMAP hBmp = ( HBITMAP )LoadImage( NULL, "C:\\test.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE );
>>767 767氏のコードとPATCOPYをSRCCOPYにかえる事でできました。ご親切にありがとうございました。
HBITMAP hBmp = ( HBITMAP )LoadImage( NULL, "C:\\test.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE );
CBitmap bitmap;
bitmap.Attach(hBmp);
CBitmap* pMemBmp = cdcdc.SelectObject(&bitmap);
pDC->BitBlt(0,0,240,170,&cdcdc,0,0,SRCCOPY);
cdcdc.SelectObject(pMemBmp);
cdcdc.DeleteDC();
あと追加で質問なんですが、ビューをスクロールしても再描画されないので、何かよい方法はないでしょうか。
771 :
名無し@沢村:03/06/12 01:06
>>758 情報ありがとうございます。
(亀レスになってしまい申し訳ありませんでした。)
system関数で画面のクリア出来ました。
>printf("入力値1:%d\n", argv[1]);
>printf("入力値2:%d\n", argv[2]);
の件ですが、私が書き間違えました。
正しくは以下の通りCIntで数値変換したものを表示させています。
掲載ミスで申し訳ありませんでした。
printf("入力値1:%d\n", CInt(argv[1]));
printf("入力値2:%d\n", CInt(argv[2]));
もう1件質問がありますので、ご存じの方がいらっしゃいましたら、教えて下さい。
よろしくお願いいたします。
内容は表示される文字に色を付けたいです。
printf("入力値1:%d\n", CInt(argv[1]));
とプログラミングして、例えば画面上に「入力値1:123」と表示される部分の、
123の所だけを青色に変更したいです。
ANSIエスケープシーケンスは、NT系では効きませんヨ。
SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE,
FOREGROUND_BLUE);
>>774 情報ありがとうございます。
早速検索結果一覧からいけるページに行って調べて、
試しにプログラミングしてみたのですけど、
enterキーの文字のようなものが出るだけで色がつかないです。
プログラムの書式が間違っているのでしょうか??
int test_num = 13;
printf("test_num = \x1B[34m%d\n", test_num);
ちなみにVisual C++ Ver6.0でOSはWindows2000 professionalを使っています。
VC++またはWindowsのバージョンが古いとか関係あるのか分かりませんが・・・。
フォームビュー内に複数ボタンがあって、ボタン外でマウスの左ボタンを押したまま、
1.あるボタンの上にマウスカーソル移動→そのボタン押下状態にする、
2.そのままボタン外にカーソル移動→そのボタン通常状態に戻す、
3.1の状態でボタン上にてマウスの左ボタンを離す→そのボタンをクリックしたのと同じ動作をする、
4.2の状態から他のボタンへ移動→移動先のボタンを押下状態にする(1の状態)
といった動作をさせたいのですが、どのイベントで判断すれば良いのかわかりません・・・。
どうか教えてください。フォームビューに配置しているボタンはCButtonからの派生クラスで
定義しています。
BUTTONDOWN
BUTTONUP
MOUSEMOVE
780 :
デフォルトの名無しさん:03/06/13 10:19
ダイアログで自分自身のハンドルでどうやって取得するんですか?
何のダイアログの話だ?
まずそれを明確にしろ
782 :
デフォルトの名無しさん:03/06/13 11:29
何のってダイアログ作るじゃん自分でフォームよ
なんつの、IDD_DIALOGつうの?
APIにハンドル渡したい時に指定するハンドルさ
>>777 情報有難うございます。
実験してみました所、ちゃんと色がつきました。
>>782 CMyDialog::OnInitDialog()
{
HWND hMyDlg = GetMyHWNDPlase();
・・・
}
こうだ。
↑Pleaseのスペル違った鬱
786 :
デフォルトの名無しさん:03/06/13 13:49
>>784 ありがdございまs
ちなみにm_なんとかってグローバルみたいなのなかったっけ?
787 :
デフォルトの名無しさん:03/06/13 13:52
788 :
デフォルトの名無しさん:03/06/13 13:55
正直すまんかった(w
>>786 正解は m_hWnd 。
>>789 GetSafeHwnd()と言って欲しかったな。
オペレーターが定義されているから
*this
ボタンとかのコントロールってmanifest使えばXPスタイルにできるみたいだけど
メニューってどうやってXPスタイルにするんですか?
793 :
デフォルトの名無しさん:03/06/14 17:43
すみません。
あるウィンドウ ハンドルから、
プッシュボタンなのかエディットなのかを判定するには
どうしたら良いでしょうか。
>>794 すみません。試してみたところ
プッシュボタン、チェックボックス、ラジオボタン、
グループボックスのウィンドウクラス名は全て「Button」です。
プッシュボタンだけ判定するにはどうしたら良いでしょうか?
>>793 GetWindowLong(GWL_STYLE)で例えばBS_PUSHBUTTONフラグが
立っていたらボタンetc
>>796 解決しました。ありがとうございました。
ExitWindowsEx(EWX_REBOOT,0);
この関数使ってPCをリブートできますが、たまに何かのプログラムが
「このプログラムは応答してません」というダイアログがでてそこで
リブートの工程が止まってしまい結局何時までたってもリブートでき
ません。
何か確実にリブートできる方法はないでしょうか。
(VC6.0 SP5 / WIN-Xp(HE)
現在DOSを起動して
"実行元パス・ファイル名 解凍元パス・ファイル名 解凍先パス・フォルダ名"
(間隔は半角スペース)
と打ち込んで解凍処理をしているのですがファイル名やフォルダ名にスペースが含まれている場合うまく認識してくれません
どうやったら認識してくれるんでしょうか?
[ ]を使うと認識するらしいのですがうまくいきません・・
解決策がありましたらよろしくお願いします
scanfを使ってる以上駄目なんでしょうかね?
int o, size = 0;
for (o = 1; o < argc; o++)
size += int(strlen(argv[o]) + 1);
char *command_line = new char[size + 1];
command_line[0] = '\0';
for (o = 1; o < argc; o++)
{
strcat(command_line, argv[o]);
strcat(command_line, " ");
}
sprintf(sourceStr, "%s",argv[1]);
sprintf(distStr, "%s",argv[2]);
C++.NET/WinXP(Pro)
>>799 普通は
HOGE.exe ARG1 "ARG 2" ARG3
見たいに、スペースを含むものにはダブルクオーテーションで
括って実行するんでないかい?
>>800 そうなんですか?
DOSプログラムが初めてなもので知りませんでした・・
入力する時にスペースがある場合はダブルクオーテーションで区切るのが普通なんですね・・
ありがとうございました
>>799 "C:\Program Files\2ch\test.txt"
のように"で囲むのでは?
一歩遅かった鬱
あ!すいません入力する時は
実行元パス・ファイル名 解凍元パス・ファイル名 解凍先パス・フォルダ名
(間隔は半角スペース)
という風にダブルクオーテーションは使いません・・・スマソ
これでもあまり変わらないけど・・・
>>802 回答ありがとうございます
>>798 ExitWindowsEx(EWX_FORCE | EWX_REBOOT, 0);
じゃ、だめなのか?
806 :
デフォルトの名無しさん:03/06/15 20:49
すみません。エディットコントロールにて
選択中の文字列を取得するには
どうしたら良いでしょうか。
>>806 SendMessage()でEM_GETSELを指定
808 :
デフォルトの名無しさん:03/06/15 21:28
>805
ありがとうございます。EWX_FORCEIFHUNGも追加してみます。
いろいろパラメータがあったんですね。
809 :
デフォルトの名無しさん:03/06/15 22:22
CStringオブジェクト内の文字数を取得したいのですが
GetLengthメソッドだと1つの全角文字を2としたバイト数が
返ってきて「"あa"→"3"」となってしまいます。
バイト数ではなく、「"あa"→"2"」のように1つの全角半角文字を
共に1として文字数を取得するにはどのようにすればよろしいでしょうか?
>>809 CStringのUNICODE版(WCStringか?)か、std::wstringに直す。
もしくは、一字一字判別。
すまん。思いっきり嘘ついた。
#define _UNICODE
でCStringが全てユニコードになる模様。
812 :
デフォルトの名無しさん:03/06/15 22:40
WM_PAINTは、再描画が必要な時の物ですが、ウインアプリは再描画の時に表示する
物を常に用意しておかないといけないと言うことですか?
そうです
>>813 なら、コンソールアプリみたいにウィンドウに焼き付けることは
出来ますか?出来るなら教えてください。
常にメモリDCに描画して、invalidateされたところを転送すれば
いいんじゃなかろうか。
>>810=811
ありがとうございました。
CStringWを使えば良かったのですね。
>>815 ありがとうございました。勉強してみます。
818 :
デフォルトの名無しさん:03/06/16 18:15
質問:
複数のソースファイルからなるプログラムをビルドするとき、
順番によっては 「○○ が定義されていません / 再定義されています」 みたいな
エラーが出るんですけど、コンパイルの順番を変えるにはどうすればいいんですか?
>>818 それはソースファイルの構成に問題があるような。
宣言と定義を.hファイルと.c(.cpp)ファイルに分けましょう。
他のソースファイルで定義されている変数はexternで参照するとか。
820 :
デフォルトの名無しさん:03/06/16 18:28
シューティングゲームを作ろうと思うんですが
一般的に、時機キャラとか敵キャラとかのクラスってヘッダーファイルに
書いたほうがいいんですか?
それともソースファイルですか?
どなたか教えてください。
・・初心者な質問ですいません。
821 :
デフォルトの名無しさん:03/06/16 18:30
VBやC#なら見つかったのですがプログラム中でコントロールを任意に
追加する方法はVCで無いでしょうか?
例えばボタンを押すとエディットボックスが1つ増えるといった具合に
CEdit* edit = new CEdit();
edit->Create();
こんな雰囲気
>>822 そしてdeleteを忘れる罠
ポインタの配列とかを用意して覚えておかないとね。
CPtrArrayやSTLのvectorクラスあたりを使ったりしてね。
>>820 すぐ上のレスくらい見ようよ・・・
宣言はヘッダファイル、定義(実装部分)はcppファイルをお勧めする。
ヘッダファイルに全部書いても問題はないけれど、デバッグしづらいと思う。
>>820 ヘッダに全部インラインで書け。これ最凶。
※こういうヤシがマジできますた。
>>818 呼び出され関数が呼び出し元より前に無いとそうなる。プロトタイプ宣言をすれば
後に書いても大丈夫。
#include <stdio.h>
void sub(void){puts("sub");}
int main(void){sub();return 0;}
or
#include <stdio.h>
void sub(void);
int main(void){sub();return 0;}
void sub(void){puts("sub");}
VC6スタンダードエディションだと最適化オプションで実行速度優先等
を選べないけど、 何か方法ないですか(レジストリをいじるとか、パッチあてるとか)
>>826の続き
Main.c Heddah1.h Heddah2.h とあるなら、
//Main.c
#include <stdio.h>
void Heddah1Sub(void);
void Heddah2Sub(void);
#include "Heddah1.h"
#include "Heddah2.h"
int main(void){Heddah1Sub();Heddah2Sub();return 0;}
//Heddah1.h
void Heddah1Sub(void){puts("1");}
//Heddah2.h
void Heddah2Sub(void){puts("2");}
みたいにする。このプログラムの場合は後から前を呼び出しているので
プロトタイプ宣言を書かなくてもエラーにならないが、前から後ろに呼び出す
パターンも絶対出てくる。
830 :
デフォルトの名無しさん:03/06/17 00:41
831 :
デフォルトの名無しさん:03/06/17 00:51
832 :
名無し@沢村:03/06/17 02:14
>>823 std::vector<CEdit>
まったく使いもんにならんな。
std::vector<CEdit*>
これで自動的にポインタが解放されるとは驚きだな。
833 :
デフォルトの名無しさん:03/06/17 06:11
配列へのポインタを引数として受け取る関数内でのデバッグ時、
配列の中身を全て見るにはどうすれば良いですか?
ウォッチウィンドウにp[0],p[1]・・・等と入力すれば見れないことも無いんですが、
関数呼び出しの度に入力は辛すぎるのです。。
>>833 一例としては以下のようなコードを埋め込んでおく(MFCの場合)
#ifdef _DEBUG
{
for ( int i=0 ; i < 3 ; ++ i) {
TRACE1(_T("%d "), p[i]);
TRACE(_T("\r\n"));
}
}
#endif
836 :
デフォルトの名無しさん:03/06/17 19:46
VCPP初心者です、まじで分かりません
_T とは何なんですか?
Cではでてこないと思うのですが。
>>836 _Tの上にマウスポインタを合わせると_Tの中身が表示されそう
>>836 UNICODEに対応させるマクロ。
F12を押せば定義位置が見つかりそう
839 :
デフォルトの名無しさん:03/06/17 20:42
研究でC++を使って3次元グラフィックスを扱いたいのですが、
どうしたらいいでしょうか。
色々検索した結果OpenGLってのをつかって・・・。
ってことなんですが、誰か丁寧に教えてくれませんか?
そんな聞き方で根絶丁寧に教える香具師はここには居ない。
ポイントを絞ってグ具ってから出直して来い。
842 :
デフォルトの名無しさん:03/06/17 21:40
MFCでのプログラム生成をした後に、最小化・最大化・ウィンドウサイズの変更など、最初に設定した機能を変更する方法はあるでしょうか?
844 :
デフォルトの名無しさん:03/06/17 21:55
(;´Д`)あ、あの、、、その方法を教えてください。
845 :
デフォルトの名無しさん:03/06/17 21:58
知りたいか?
846 :
デフォルトの名無しさん:03/06/17 21:59
>>839 一般的にはダイレクトXってのをつかってるよ
でも最初はむずかしいからライブラリをつかってやろうね
ライブラリはいろんな人が作ってくれてるからネットで探してみようね
847 :
デフォルトの名無しさん:03/06/17 22:02
角度が60度のときのコサインの値を求めるプログラムを
作ったのですがなぜか実行結果が-1690193024とかいう
わけわからん数値になってしまいました
なぜなんでしょうか?
#include<stdio.h>
#include<math.h>
void main(void){
printf("%d",cos(60*3.14159/180));
getchar();
}
>>845 (;´Д`)意地悪しないで教えてください。
お願いします。
850 :
デフォルトの名無しさん:03/06/17 22:06
>840,841,846
ありがとうございます。
もう少し調べて的を絞ってからまた質問に来ます
>>842 ・最大化・最小化
ShowWindow
・ウィンドウサイズの変更
MoveWindow
タイトルバーのボタンならModifyStyleとかでできるんじゃないかな
>>849 おお!
うっかりしてた!
ありがとう!
今グレップして探したんですが、
TCHAR.H内で
#define _T __T
その前に
#define __T(x) L ## x
若しくは
#define __T(x)
となっていました。
L"ほげ" でUNICODE対応になるということですか?
ここがよく分かりませんが。
とりあえず今まで気にかかっていたものが少し解けました。
どうもありがとうございます。
aiueo
>>827 釣りかな?
Professional EditionとStandard Editionの違いの一つだからねえ。普通に考えて無理だろう。
NT系OSも、Workstation版をServer版にしてしまうようなワザはなくなってるっぽいし
>>840 一撃で根絶させてくるのにはまいるよな
857 :
デフォルトの名無しさん:03/06/18 01:45
VisualC++6で、現在PCで流れている音量を読み取って
音量がある一定のレベルにたっしているときだけ
ある変数がTRUEまたは1などに変わるというプログラムは
作成可能でしょうか?
それともPC以外に音響設備が必要でしょうか?
どんな事するのか知らないけれどオーディオに関する基礎知識とプログラミング
を知ってないとかなり難しいかも。
859 :
デフォルトの名無しさん:03/06/18 14:40
そうなんですか・・・
数ヶ月で実現するにはちょっと厳しいですかね・・
VisualC++のいろんな本を見ていますが、なかなか載っていません・・
DirectSound?などを勉強したりするんでしょうか・・・
それとは別にそれではWAVEファイルを読み取って
上のようなことは作成可能でしょうか?
>>859 それなら可能。
WAVEファイルのフォーマットを調べてみよう。
861 :
デフォルトの名無しさん:03/06/18 18:56
保存しようとすると、
○○ を保存できません。他のアプリケーションで使用されている可能性があります。
ってのがやたらに多く出るんですが、これって異常じゃないですか?
どこからも開かれてないはずなんですが。。。
862 :
デフォルトの名無しさん:03/06/18 19:01
MFCを使ってプログラムを書いています。
たとえば1秒後とカウントした値をエディットボックスに表示するにはどうすればよいのでしょうか。
クラスは基本クラスがないクラスを作ってその中でソースを書いています。
{
int i;
int j;
for(i;i<10;i++){
j=i;
sleep(1000);
}
}
jに格納した値をエディットボックスに表示するにはどうすればよいのか教えていただけるとうれしいです。
>>862 すまないがネタとしか思えない。
初心者用の教本をまず買ってくることをお勧めする。
864 :
デフォルトの名無しさん:03/06/18 19:37
>>862 です
UpdateData(false)
とかやってもできないんです!ボタンを押したら表示するっというのはできるんですけど
ボタンを押さずに処理するのってどうすれば良いのかなぁと思ったんですけど・・・・
すいません。簡単なことがわからなくて・・・
>>864 >>863 MSDNさえも見ようとしないのか。
>>861 俺もよく出る。
VC++内で何かやってるんじゃないのかな。
気にせずもう一度保存すると大抵保存できる。
>>861 俺もかなりの確率で出てくる。
ウイルスチェックが関係ありそうだという話を
聞いたことがあるが、効果ある奴とない奴と居るらしい。
だれかほんとの理由知らないか?
やらないか?
868 :
デフォルトの名無しさん:03/06/18 22:13
猫でも分かる・・・のSDK編のイントロダクションを
コピぺしてビルドしたら以下のエラーがでます。
error C2440: '=' : 'void *' から 'struct HBRUSH__ *' に変換することはできません。(新しい動作 ; ヘルプを参照)
'void*' から非 'void' 型への変換には明示的なキャストが必要です。
cl.exe の実行エラー
原因が良く分かりません。ちなみにVisualC++6.0です。
どなたか教えてくださいまし。
VC++6.0でうまくビルドできない時は をミロ。
870 :
デフォルトの名無しさん:03/06/18 22:18
いや、やってもうまくいかないんですよ。
プロジェクトは毎回ちゃんと作ってますし。
871 :
デフォルトの名無しさん:03/06/18 22:20
hoge = (HBRUSH*)obj;
のように明示的にキャスト汁。
ポインタじゃないだろ
874 :
デフォルトの名無しさん:03/06/18 22:23
myProg.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);
こんな感じでいいんですよね?なんで通らない・・・。
ごめんなさい。できました。
いろいろいじってて、MFCの設定が間違ってたみたいです。
MFCを使用しないにしたら一発でいけました・・・。
872さん、873さんありがとうございました。
勉強になりました。
877 :
デフォルトの名無しさん:03/06/18 23:00
windows xpではRaw socketを完全サポートってあるんですが。
IPアドレスを偽造することはできるって書いてあったんですが、
ポート番号やTCPの制御フラグ(rst,syn..)とかも自分で作れるんですか?
>>876 猫のSDK講座はプロジェクト作るとき MFCApplicationじゃなくてWin32 Applicationでやらんとあかんよ。
879 :
デフォルトの名無しさん:03/06/19 12:26
すみません。
「\」を文字として扱うにはどのようにすれば良いでしょうか?
880 :
デフォルトの名無しさん:03/06/19 12:32
'\\'
882 :
デフォルトの名無しさん:03/06/19 13:04
(´Д`;)
883 :
デフォルトの名無しさん:03/06/19 14:12
ファイル名から検索してヒットしたファイルのパスを表示しようと思っていますが
afx.hをインクルードしただけで
path.cpp
WINVER not defined. Defaulting to 0x0501 (Windows XP and Windows .NET Server)
リンクしています...
nafxcwd.lib(thrdcore.obj) : error LNK2019: 未解決の外部シンボル
__endthreadex が関数 "void __stdcall AfxEndThread(unsigned int,int)" (?AfxEndThread@@YGXIH@Z) で参照されました。
nafxcwd.lib(thrdcore.obj) : error LNK2019: 未解決の外部シンボル
__beginthreadex が関数 "public: int __thiscall CWinThread::CreateThread(unsigned long,unsigned int,struct _SECURITY_ATTRIBUTES *)" (?CreateThread@CWinThread@@QAEHKIPAU_SECURITY_ATTRIBUTES@@@Z) で参照されました。
Debug/path.exe : fatal error LNK1120: 外部参照 2 が未解決です。
というエラーが出ます、windows.hをインクルードすればエラーが消えるのですが
今度は「windows.hはインクルードされているのでwindows.hをインクルードしないで」
というエラーが出てしまいます
あとcout・endlを定義してくださいというエラーが出るのですが
これはどんな型で定義すればいいのでしょう?
解決策がありましたらよろしくお願いします
884 :
デフォルトの名無しさん:03/06/19 14:12
// path.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//
#include "stdafx.h"
#include <windows.h>
#include <afx.h>
int _tmain(int argc, _TCHAR* argv[])
{
CFileFind finder;
BOOL bWorking = finder.FindFile("test.lzh");
while (bWorking)
{
bWorking = finder.FindNextFile();
//cout << (LPCTSTR) finder.GetFilePath() << endl;
//printf("%s",finder.GetFilePath());
}
finder.Close();
return 0;
}
885 :
デフォルトの名無しさん:03/06/19 14:39
VC6使ってるんですけどダイアログリソースのエクスポートってできないですよね。
作ったダイアログを他のプロジェクトで再利用するにはどのような方法がありますか?
>>883 プロジェクトの新規作成のときに何を選択したの? Win32Application ?
>>886 .rcファイル内の必要なダイアログリソースだけコピペして、
resource.hの #defineコピペして、番号割り振って
_APS_NEXT_RESOURCE_VALUEとかいじるしかないですか?
888 :
デフォルトの名無しさん:03/06/19 15:33
デバッグモードに関して質問です。
デバッグしている時、何か操作をすると毎回デバッグウィンドウに
「'C:\WINNT\MUI\fallback\0411\msctf.dll.mui' をロードしました…」
と言った旨のメッセージが出ますが、コード内で自分でTRACEした部分だけ見れれば良いので、
これら(ロードしました)のメッセージだけ非表示にしたいのですが可能でしょうか?
また、その方法など教えて頂けると有難いです。
889 :
デフォルトの名無しさん:03/06/19 17:29
>>885 Win32コンソールプロジェクトです
C++.NETでプログラムしています
>>889 VC6ではプロジェクトの新規作成のときに「Win32 Console Application」を選択して
アップウィザードのステップ1/1の時に「MFCをサポートするアプリケーション」を選択すれば
Afx.hやWindows.hをインクルードしなくてもStdAfx.hでインクルードしてるから
CFileFindとかそのまま使えるようになるよ。
C++.NETはしらないけど。
VC++6でDllのデバッグしようとすると、
「ブレークポイントの位置」というメッセージが出て
ステップ実行が混合モードで止まってしまいます。
ブレークポイントを打ってなくてもこの現象がでます。
ソースを見ても何が原因かわかりません。
この現象が起こる原因をご存知の方教えて頂けないでしょうか。
デバッグウィンドウに以下のメッセージが出ます。
Second Change Assertion Failed : File dbgheap.c Line 1044.
該当ソースを見てもさっぱりわかりません。
バグが出てると思われるコードが分かりました。
vector0, vector1 はint型のvectorで、
i0, i1 はそれぞれのイテレータです。
for(i0 = vector0.begin(); i0 != vector0.end(); ++i0)
{
for(i1 = vector1.begin(); i1 != vector1.end(); ++i1)
{
if(*i0 != *i1)
{
vector0.erace(i0);
break;
}
}
}
イテレータの使い方の間違いでしょうか。もう少し調べてみます。
893 :
デフォルトの名無しさん:03/06/19 20:41
ちょっと漠然とした質問ですが、おききください。
VC++6.0、SDKで勉強中です。
テキストファイルから1行ずつデータを読み込みたい場合、
1回ReadFileにて一回全データをバッファに読み込んでから、
改行コードでバラバラにする、 という方法でよろしいのでしょうか?
それかもっとスマートな方法はあるのでしょうか?
fgetsの使い方から覚えたほうがいいんじゃなかろうか。
C++標準クラスのfstream とstringを使ったほうがスマートかもね。
遅くなりそうだけど。
896 :
デフォルトの名無しさん:03/06/19 21:03
さっそくのレスありがとうございます。
正直fgetsが使えるとは思わなかったです。dqnですた!
ではfgetsでいってみます。ありがとでした!
897 :
デフォルトの名無しさん:03/06/19 21:07
質問おながいします。
VC++6.0Proを使っているのですが、UNICODEでコンパイルすると
LINK : fatal error LNK1104: ファイル "mfc42ud.lib" を開けません。
というメッセージが出てコンパイルできません。
なにか考えられる原因はありますでしょうか。
898 :
ランランラン:03/06/19 21:18
たくさんあるので1つづつ書かせて頂きます。
6個とも何を計算するプログラムかを教えてください
@void main()
{
int a,b,x,y,s=0;
scanf("%d",&x),scanf("%d",&y);
for(a=0;a<x;a++) {
for(b=0;b<y;b++)
s+=b;
}
printf("%d\n",s);
}
899 :
ランランラン:03/06/19 21:19
Avoid main()
{
int a,b,x,s=0;
scanf("%d",&x);
for(a=0;a<x;a++) {
for(b=0;b<y;b++)
s+=b;
}
printf("%d\n",s);
}
900 :
ランランラン:03/06/19 21:19
Bvoid main()
{
int a,x,s=0;
scanf("%d",&x);
while (x--) {
s+=x;
}
printf("%d %d\n",x,s);
}
>>897 mfc42ud.libをプロジェクトでリンクするように指定する。
902 :
ランランラン:03/06/19 21:20
Cvoid main()
{
int x,y=0;
x=0;
while (y<=200) {
x++;y+=x;
}
printf("%d\n",x);
}
903 :
ランランラン:03/06/19 21:20
Dvoid main()
{
int x,y=0,a;
x=0;
scanf("%d",&a);
while (y<=a) {
x++;y+=x;
}
printf("%d\n",x);
}
904 :
ランランラン:03/06/19 21:21
Evoid main()
{
int x,y=0,a,w;
x=0;
scanf("%d",&a);
while (y<=a) {
x++;
for(w=1;w<=x;w++)
y+=w;
}
printf("%d\n",x);
}
以上です。お手数ですがお願いします
>>ランランラン
スレ違い。
ちょっと大きめな構造体を定義すると実行するとスタックオーバーフローですっ飛ぶんですが
どうにかなるもんなんでしょうか?
907 :
ランランラン:03/06/19 21:30
すいません!!
間違えました
ワラタ
>>906 「プロジェクト」→「設定」→「リンク」→「アウトプット」でスタックの大きさを変えるとか。
ところで、ちょっと大きめってどれくらい?
右クリックを禁止するにはどうしたらいいですか?
>>912 AfxMessageBox("右クリックをするのはやめてね♥")
>>91 右クリックイベントを捕まえて何もせずに返す
UINTって型はunsignedなのに何故、文字列やら-1やらを入れて良いんですか??
質問なんですが、VC++でコンパイルした後にエラー0、警告0って出るんですが、これはエラーがないよって事なんですか?
>915
代入後には既に文字列や-1として扱われてないから。
>916
コンパイルエラーやリンクエラーは見当たらないという事。
バグが無いとは一言も言ってないけど。
>>890 プロパティでMFCの設定を変えたらエラーがなくなりました
ありがとうございました
>>917 渡された方でなにやら行って正の数値として扱っているという事ですか。
それともある文字もしくは-1が場合によっては特別に正の数値として扱えるのかな?
ん〜便利のためなんだろうけど紛らわしい。
ありがとうございました。
>>920 16bitならshort -32767〜32768、unsigned short 0〜65535
-1を渡す言う事はFFFF、shortなら-1、unsigned shortなら65535になる。
>920
むしろ逆というか、unsignedでないほうのintなどは
最上位のビットを数値でなく符号として特別に扱っている。
unsignedはそこも数値とみなす。
923 :
デフォルトの名無しさん:03/06/21 10:48
すいません、ものすごいアホな質問なんですが、VC++はどうやって起動するんでしょうか。
インストールして何度か使ってはいたんですが、まちがってプログラムメニューから消されてしまって復帰できません。
Dドライブにインストールしたので多分
D:\Program Files\Microsoft Visual Studio\VC98\Bin以下にあると思ったんですが、
特定できないんです。
VB6なんかはD:\Program Files\Microsoft Visual Studio\VB98にVB6.EXEがあるんでわかりやすいんですが。VC++はそれっぽい名前のファイルがないもので。
片っ端からやればいいんでしょうがそれも怖くて……。
どうかお願いします。
924 :
デフォルトの名無しさん:03/06/21 10:52
>>923 D:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\MSDEV.EXE
Microsoft Developer Studio
>>924 ありがとうございます!!
ちゃんと全部のフォルダをのぞいていれば見つかったのですね。わざわざすいません。
アイコンも同じだし……。
VC98以下にあると思いこんでいたのが良くなかったか。
どうもありがとうございました。
(´-`).。oO(こんな恥ずかしい質問したなんて、一生誰にも言えない……)
926 :
デフォルトの名無しさん:03/06/21 11:09
多分VBだけだ。IDEも言語名のついたフォルダ以下にあるのは。
VJ++もVIDもIDEはCommon以下にある。
927 :
デフォルトの名無しさん:03/06/21 11:44
STLについて質問です
STLのfor_eachにおいてコンテナのメンバ仮想関数はよびだせないのでしょうか?
class cBaseOBJ{
virtual void _Dec(){;}
}
class cOBJ :pulic cBase{
void _Dec(){/* 軟化の処理*/;}
}
std::vector<cOBJ> OBJS;
std::for_each(OBJS.begin(), OBJS.end(),std::mem_fun(&cOBJ::_Dec));
error C2064: 関数ポインタとして評価されない式を使って、関数を呼び出そうとしました。
boost が必要なのかな?
それとも根本的に間違ってますか?
訂正
誤 class cOBJ :pulic cBase{
正 class cOBJ :pulic cBaseOBJ{
上ごみが書き込まれてたらごめんなさい
どうすれば、ULONGLONG 型や、__int64 の数字を文字で表示できますか?
ULONGLONG ull;
char s1[50];
ull = ( ULONGLONG ) ~0;
wsprint( s1, "%u", ull );
で変換すると、s1 は「4294967295」で、UINT 型の最大値が表示されてしまいます。
デバッグで見ると、ull はちゃんと ULONGLONG 値の最大値が入っている…
どなたか知っている方、お願いいたします。
もちろん sizeof( ULONGLONG ) の値は 8 です。
ヘルプでprintf見ようや。
結局printfじゃ分からなかったんで、_ui64toa使った。
まぁ sprintf使って %i64u なんだけどね
>>932 それだと、-164uと出力されてしまうんですが…俺のやり方が間違っているのか?
934 :
デフォルトの名無しさん:03/06/21 16:30
”LIBCD.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です”
というようなエラーが出てしまいました。これはどうすれば解消されるんでしょうか?
まぁ %I64u を %i64u と間違えたわけだけどね
>>934 そのまんま、main関数がないってことでしょ。
>>935 できました。
しかし、なんでwsprintfだと変換されなかったんだろ…
sprintfだと正常に変換できるのに。
MSDNに載ってた%I64は変換できない…
>>927 やるんであれば、 vector<cOBJ*> かと。
まぁ、やりたいことは vector<cBaseOBJ*> なんだろうけど。
スイマセン、文字列の結合ってどうやるんですか?
今日は休みだったので朝から、「猫でもわかる〜」を見ながら
勉強していたんですが、、、
char StrA にchar StrBを追加したいんですが、
strcat(StrA, StrB)とやってもStrAはそのままでした。
「猫でもわかる〜」でも少しかかれていましたが、
いまいち文字列、文字の配列?、ポインタがわかっていないです。
perlだったらStrA . StrBってたったのそれだけのことで丸一日...
教えてください、お願いします。
>>940 #include <iostream>
#include <string>
// 関数内で…
using namespace std;
string a = "abc";
string b = "def";
string c = a + b;
cout << c << endl;
>>939 あまりしてない。つーか、変換自体と関係あるんですか?
>>940 char StrA[10];
char StrB[10];
strcpy( StrA, "AAA" );
strcpy( StrB, "BBB" );
strcat( StrA, StrB );
StrA の内容「AAABBB」になる。
これじゃ駄目?
>>940 char StrA にchar StrB
もう満杯でーす
940です。
皆さん早速ありがとうございます。
>>941さん
コンパイルしたらエラー 14、警告 3
'using' : 定義されていない識別子です。
なんか根本的に間違ってるんですね。
>>942さん
やはりその方法も使えるのですね。
使い方が間違っているんですね。
>>943さん
すみません、ちょっとわからないです。
皆さんありがとうございます。
ヒントを元に調べてみます。
>>944 >>943はchar StrA にchar StrBだと文字型の変数になるから、
一文字しか入れれなくて満杯だといってんじゃねーのか?
>>944 拡張子を .c から .cpp に変える。
文字列の結合がしたいと言いながら実際にやりたいのは文字の結合ってか
はははあっははははっはははhっははははっはh
どうも皆さんありがとうございます。
拡張子cでした。すいません。
「文字型の変数」ですか。
文字列、文字、配列、ポインタ、あたりで調べてるんですが、
どうもperlで楽しすぎたせいかますます混乱してます。
いろいろありがとうございます。
ヒントも沢山もらったので、
今日は文字の扱いを中心に調べたいと思います。
↓次スレよろしこ。
↓ ↑
→→→→
│次スレよろ。
│ ┌─┐
↓ │ ↓
↓
↓ 無理ですた。
↓
行ってみる
そういえばVS6.0をインストールすると、何かアプリが飛ぶとダイアログが出るよね。
"0xXXXXXXXX"の命令が"0xYYYYYYYY"のメモリを参照しました。メモリが"written"になることはできませんでした。
プログラムを終了するには[OK]をクリックしてください
プログラムをデバックするには[キャンセル]をクリックしてください
ってやつ。あれキャンセル押したらVSが起動してそのあとハングアップするんだけど、
何か回避方法は無いかな?
以前はキャンセルを押しても普通に動いたんだけど、
OSを再インストールしたあとから動かなくなったなぁ。
957 :
名無し@沢村:03/06/22 22:59
>>939 ヌヒよ、sprintfのUNICODE板はswprintfだと言う事実を知らないようだな。 (´゚c_,゚` ) プッ
wsprintf のUNICODE版は wsprintfW
sprintf のUNICODE版は swprintf
すいません。
C++でRound 処理したい場合どうすればいいのでしょうか?
何をインクルードすればいいのかわかりません。
あほな質問ですいません
960 :
デフォルトの名無しさん:03/06/23 15:19
質問おながいします。
プロジェクトをUNICODE版でビルドしようと思い、
プリプロセッサに_UNICODEを追加したのですが、
msvcrtd.lib(crtexew.obj) : error LNK2001: 外部シンボル "_WinMain@16" は未解決です
Debug/Edit.exe : fatal error LNK1120: 外部参照 1 が未解決です。
というメッセージが出てビルドできません。
考えられる問題はありますでしょうか?
追加しないでビルドしたらどうなりますか?
>>961 _MBCSだと普通にビルドできます。
_MBCSを削除して、_UNICODEを追加すると上記のメッセージが
でます。。。
>>msvcrtd.lib(crtexew.obj) : error LNK2001: 外部シンボル "_WinMain@16" は未解決です
これはプロジェクトの選択を間違った時に良く出るが・・・。
コンソールアプリをつくるのにWin32Applicationを選んだ時とか。
あーじゃちがうね。
>>963 ありがとうございます。
>これはプロジェクトの選択を間違った時に良く出るが・・・。
ですよね(--);;
エディタのMFCアプリなのですが、ユニコードでテストしてみようと
思ったのですが...
もうちょっといろいろいじくってみますネ。。。
継承をはずして_UNICODEを追加してみたけど、何の問題もなくコンパイル完了
>>966 ですか。。。
僕もいま単純なMFCアプリ(FrameWndを表示するだけ)で
やってみたのですが、やはり同じエラーが出ます。
なんでだろう。。。
そういえばMFCを使っているのなら、MFC*U.*系のdllなりlibなりを使わないとエラーが出るけど
>>968 U系のLibは自分でプロジェクト設定のリンクタブで指定
しないとダメでしょうか?(一応mfc42ud.libと書いてみたのですが
やはりダメでした)
なんどもしみません。訳がわからないのですが
解決しました。
UNICODEで動いている他のプロジェクトで、プロジェクト
の設定のリンクタブのアウトプットのエントリポイント
シンボルに"wWinMainCRTStartup"と書いてあったので
それをマネしたら動きました。
レスを下さった方ありがとうございました。m(__)m
971 :
デフォルトの名無しさん:03/06/23 16:53
VCでつくられたプロジェクトで、それがDLLなのか
exeなのかといったプロジェクトの属性を知るには
どうすればいいのでしょうか?
どの場面で知りたいの?
プロジェクト作成のときに、DLLかWinアプリかの指定
がありますが、それを知りたいです。
dswファイルを開いた時点で知りたいのですが...
VS.NETならプロジェクトプロパティから構成の種類で分かるけど、
古いのは手元にないので何ともいえない
>>974 ほんとですね。VS.NETだと「構成の種類」として
出ていますね。
VS6.0だと出ていません。
976 :
デフォルトの名無しさん:03/06/23 19:33
質問させて!
memsetで変数に文字列を入れてMessageBoxで表示させると、
hogehogehoge・・・・
と、末尾に ・・・・ というのが入ってしまいます。
これを取り除くにはどうすればよいのでしょうか?
しくった、memsetではなく、 memcpy で変数から変数へコピーしてます。
>>977 strcpyを使え!
でなければmemsetで変数を初期化しろ!
979 :
デフォルトの名無しさん:03/06/23 20:18
スマソ!事故解決!
\0 の入れかた間違ってた!
ほんとスマソ!ソマソ!
tomasson
int型の配列をまとめてある数値に初期化する関数はありますか?
コモンダイアログを開くと、実行は問題ないのですが、デバッグのログに
例外処理 (初回) は test.exe (KERNEL32.DLL) にあります: 0x000006B5: (名前がありません)。
と出てくるのですが、何か問題あるのでしょうか。
OPENFILENAME構造体の
.lStructSize .hwndOwner .hInstance .nFilterIndex .lpstrFile .nMaxFile .lpstrFilter .lpstrTitle
.Flags .lpstrDefExt
には値を入れています。
>>983 ちょっとちがうかもしれないけど、
IEコンポーネントを貼り付けてリサイズすると鬼のように例外が発生していますが動作には問題ないです。
内部的に処理済みの例外かと。
986 :
デフォルトの名無しさん:03/06/25 18:15
指定したフォルダ内のサブディレクトリ名とファイル名を表示したいと思い
Directory.GetFileSystemEntriesを使おうと思ったのですが
インクルードの下に
#using <mscorlib.dll>
といれると
fatal error C1190: マネージ対象コードには '#using <mscorlib.dll>' と '/clr' が必要です。
というエラーが出てしまいます解決策がありましたらよろしくお願いします
#include "stdafx.h"
#include <afx.h>
#include <windows.h>
#using <mscorlib.dll>
//using namespace System;
int _tmain(int argc, _TCHAR* argv[])
{
・・・・・
}
プロジェクトのプロパティで拡張マネージを変更したら解決しました
スマソ
988 :
デフォルトの名無しさん:03/06/25 22:20
おばんです。
おせてくそ。
スタティックライブラリでできる*.libファイルと
dllプロジェクトでできる*.libファイルは、前者は
実装入りで、後者は実装なし(実装はDLL本体内)と
いう解釈でいいのでしょうか?
またなぜリンカはdllを直接参照せずにlibファイルを
必要とするのでしょうか?
/* 文字列に代入された数値データをint型に変換する */
#include <stdlib.h>
#include <stdio.h>
int main()
{
char *text = "352";
int integer = atoi(text);
printf( "integer = %d\n" , integer );
return 0;
}
char *text = "352"; なぜ*がいるんですか?
>988
DLLには序列でしか公開していないものもある。
>>991 なるほど。すべてのdllが自身がエクスポートしている
関数の名前を見せてくれるワケではないんですネ。
どもどもでした。。。
993 :
デフォルトの名無しさん:03/06/26 00:17
VCがいつのまにか上書きモードになって
しまうのですが(ミスタッチで)
いい方法はないでつか?
Insertキーをぶっ壊せ
995 :
デフォルトの名無しさん:03/06/26 00:33
996 :
デフォルトの名無しさん:03/06/26 00:37
このスレってBorland C++ Builderもいい?
「この」スレだけならいい。
次スレは不可(w
, --- 、_
/ミミミヾヾヽ、_
∠ヾヾヾヾヾヾjj┴彡ニヽ
/ , -ー‐'"´´´ ヾ.三ヽ
,' / ヾ三ヽ
j | / }ミ i
| | / /ミ !
} | r、 l ゙iミ __」
|]ムヽ、_ __∠二、__,ィ|/ ィ }
|  ̄`ミl==r'´ / |lぅ lj
「!ヽ、_____j ヽ、_ -' レ'r'/
`! j ヽ j_ノ
', ヽァ_ '┘ ,i
ヽ ___'...__ i ハ__
ヽ ゙二二 ` ,' // 八
ヽ /'´ / ヽ
|ヽ、__, '´ / / \
1000は君にやろう、アンダーソン君...
1000 :
デフォルトの名無しさん:03/06/26 01:18
1000 GET〜!
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。