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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
タイトルのとおり、
Visual C++ 初心者用スレッドです。

前スレ・関連スレは、>>2 ぐらい。
2デフォルトの名無しさん:03/05/15 02:05
/** 前スレ **/
★初心者にVisual C++を教えるスレ★ Part5
http://pc2.2ch.net/test/read.cgi/tech/1048698321/

★初心者にVisual C++を教えるスレ★ Part4
http://pc2.2ch.net/tech/kako/1044/10441/1044196393.html

★初心者にVisual C++を教えるスレ★ Part3
http://pc2.2ch.net/tech/kako/1038/10381/1038160750.html

★初心者にVisual C++を教えるスレ★ (←実はPart2)
http://pc3.2ch.net/tech/kako/1030/10309/1030985362.html

★初心者にVisual C++を教えるスレ★
http://pc3.2ch.net/tech/kako/1023/10235/1023530449.html

/** 関連スレ **/
■ VisualC++(MFC限定)相談室 MFC7.dll■
http://pc2.2ch.net/test/read.cgi/tech/1047949606/l50
Win32API 質問箱 Build11
http://pc2.2ch.net/test/read.cgi/tech/1052651750/l50
C++相談室 part19
http://pc2.2ch.net/test/read.cgi/tech/1052625846/l50

/** 外部リンク **/
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
MSDN ライブラリ
http://www.microsoft.com/japan/msdn/library/
>>1
削除依頼出しておけよ
4デフォルトの名無しさん:03/05/15 02:05
以前あるスレで作られた初心者VC++スレ用テンプレ
質問・検索の仕方はここを見れ。
http://www.geocities.co.jp/Beautycare/4965/public/template.html
51:03/05/15 02:07
>>3
もう立っていました?全部を2回見回したのですが、無かったので。すいません。
可憐にしなやかに、さらには豪華に6ゲット
豪快かつ端麗な7げっと
ムーンウォークで8ゲット
やさしい日差しが俺の眠りを妨げる・・・
ふっと時計に目をやる。
まだ仕事までには、3時間以上時間がある・・・
俺は、まだ眠っている頭を覚ますためにコーヒーメーカーのスイッチを入れた。
しばらくすると、コーヒーの良い香りが部屋を追おう。
すっと手を伸ばし、タバコをくわえ火を付けた。

そして、一言、俺は呟いた・・・ 「9ゲット」と。。。         

放課後に体育館の裏に来て欲しいと言われた。
はやる胸を抑えつつ向かう。
そこには彼女が待っていた。
彼女は「読んで・・・コレ」とはにかみながら俺に手紙を渡し、去っていった。

家に帰って彼女の手紙を読んでみた。
そこにはこう書いてあった



「10ゲット」
11前986:03/05/15 02:31
>> http://pc2.2ch.net/test/read.cgi/tech/1048698321/984
>> http://pc2.2ch.net/test/read.cgi/tech/1048698321/996
MFCはAppWizard(exe)でSDKはWin32Applicationのことでしょ?
僕はSDKの時ANSI-Cでできるのはそれでやってしまう。新しく覚えるの
めんどくさいので。SDKだとあかんと言うのが分からないス。
猫の ttp://www.kumei.ne.jp/c_lang/sdk/sdk_05.htm
sprintf ttp://www.google.co.jp/search?q=cache:ompCcSA48HcC:www.asahi-net.or.jp/~qn6o-mrtm/ds2new/dev/info/sdk_comp.htm+SDK%E3%80%80%E6%95%B0%E5%80%A4%E3%80%80%E8%A1%A8%E7%A4%BA&hl=ja&ie=UTF-8
やり方がわからんつー意味だろ
メッセージループ内に

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
>>14
無理だろ。
16_:03/05/15 08:49
レスありがとうございます。無理ですか。
諦めて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++ごと配布したいんですけど、無理がありますかね。
>>20
かなり無理があるね。
>>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のコードエディタのコンテキストメニューで
「定義にジャンプ」ってあるのですが、「実装にジャンプ」する
ような機能はないのでしょうか?
2713:03/05/15 18:04
>>24
IDCANCEL時にreturn 0;とすることで大丈夫でした。
break;した先にreturn (DefWindowProc (hWnd, msg, wParam, lParam));が
あったせいなんですね。どうも有難うございました。
2825:03/05/15 18:59
>>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 なんというか、すげー。
3029:03/05/15 20:11
>>19
調べるキーが限定されてるんなら GetAsyncKeyState() で調べたほうが簡単かも
31 :03/05/15 20:27
プログラムは子供の時MSXでベーシックを組んで以来全く経験のない素人です。
すこし根本的なことを質問させてください。

必要にかられてWINで動くプログラムを作ろうと思い、この板のあちこちの初心者
スレを見ていたのですが、まず気づいたのはプログラム言語と言っても色々あると
いうことです。
猫でも分かる〜というHPに行ったのですが
・C#
・C言語
・C++
の3つがあがっていたし、他に
・ビジュアルベーシック
というのもあるのですよね。

で、質問です。いったい上の4つは何がどう違うのでしょうか?
初心者が始めるにはどれが一番よいのでしょうか?

教えてください。
32デフォルトの名無しさん:03/05/15 20:28
なぜか構造体メンバの.での参照が出来ないんですけど、VC++じゃ直接参照はダメなんですか?
わざわざポインタにして->しないとダメなんですか??
>>31
ここで聞きなおしたほうがよいかと

***すれ立てるまでもない質問はここで 第36刷***
http://pc2.2ch.net/test/read.cgi/tech/1051370263/
34 :03/05/15 20:33
>>33

ありがとう。
そうします。
35デフォルトの名無しさん:03/05/15 20:38
19です。「GetKeyboardState」を使えばと、
思ったのですが使い方が・・・
初心者なものでアドバイスをお願いします。
3626:03/05/15 21:13
もまいら>>26の質問スルーせんでくさい。
おながいします。m(__)m
>>26>>36
スルーしたわけではないのですが、分からないんです。デバックも使ったこと
無いですし。
3826:03/05/15 21:33
>>37
ありがとうTT
私には「定義にジャンプ」すれば実装にジャンプしているように見えるのですが。
「参照にジャンプ」すると宣言に。
自作の関数の場合「定義にジャンプ」は、実装にジャンプする場合と、宣言に
ジャンプする場合の2通りがある。どういう規則なんだろ??

MFCのメンバなんかは必ず宣言にジャンプするよね。
>>39-40
あ、そうなんですか?
初心者でMFCしか追ってないもので...
個人的には定義にジャンプでhファイルのクラス内の宣言に飛んで
実装にジャンプでcppファイルの実装に飛んで欲しいのですが。



4226:03/05/15 22:29
あと、関連なのですが定義にジャンプのとき「あいまいさの解決」
ダイアログがでることがありますが、「全然あいまいちゃうやん」
っていう時ないですか?
全然継承もしていないクラスの同名の関数が出てきたり...
4340:03/05/15 22:48
>>42
それはまぁ目をつむるとして(w

MFCのソースを手軽にブラウズできないもんかな。ブレークポイントかけてステッ
プインするか、MFC\SRCをgrepしている現状。VS6使ってるけど .NETもなの?
>>43
マクロ使えば?
4540:03/05/15 23:23
っていうか、改めてMSDN見なおしてみたら

『MFC : MFC ブラウザ データベース ファイルの使い方』に『MFC.BSC は、セット
アップ プログラムではインストールされないが、セットうpCDから \VC98\MFC\Src\
にコピーすれば、開いて使うことができる』とあるじゃん。早速コピー。

なんかワークスペースを開く度に、いちいち MFC.BSCを手動で開かんといけないみ
たいだが、MFCソースのブラウズでキタ―――(゚∀゚)―――!!!!!

よーし、MFC.BSCを勝手に開くマクロ組んじゃうぞー
>41
言語仕様を読んでるわけじゃないけど、キミが「定義」と
思ってるものが「宣言」で、「実装」と言ってるものが「定義」
なのかもしれない。
4739:03/05/16 00:41
わしもそう思う。
定義と宣言をごっちゃにすんなよ、とC++の入門書にはよく書いてあるが・・・。
>定義にジャンプでhファイルのクラス内の宣言に飛んで
この文ですでにごっちゃになってる気が・・・
4941:03/05/16 00:47
>>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".
と書かれていたのですが、どうやってリンカのエラーを無視してやれば
いいのでしょうか。
65JBoy17031968: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" は未解決です

だれか教えてください。
67動画直リン:03/05/17 17:11
68デフォルトの名無しさん:03/05/17 17:20
Releaceでビルドすると、信じられないくらい粗探しされて警告されるんですけど。
おかげで全く実行出来ません。警告を無視する方法って無いですか?
警告レベルを無しにしても実行出来ないし。
>>66
そんなはずは無い。Win32ApplicationはWinMainが無いと未解決という
メッセージが出て、Win32ConsoleApplicationはmainが無いと未解決と
いうメッセージが出る。プロジェクト制作時に前者と後者を間違えたの
では無いですか?
ウィンドウアプリの設定じゃなくて
コンソールアプリの設定でビルドしたとか
自分はそれに気づかないで
なんでだああ
と1日悩む
プロジェクト設定で#define消しちゃったとか
72JBoy17031968:03/05/17 17:42
次メール回答
設定を変えたらアクセスできました
お騒がせ致しました。
73デフォルトの名無しさん:03/05/17 17:49
>>69
ありがとうございます。その通りのミスでした
74デフォルトの名無しさん:03/05/17 17:51
>>68
警告だけなのに実行できないの?
エラーが混じってない?
7568:03/05/17 18:00
デバッグだと警告もエラーもゼロで余裕で通ります。
リリースだと、インライン関数が一度も使われませんでした。
とか意味不明な関数のエラーが百個位でる(警告レベル4の場合)
76(;´Д`):03/05/17 18:14
>>68
どうせコンパイルオプションがおかしいんだろ。
プロジェクトを作り直せ。
77デフォルトの名無しさん:03/05/17 18:23
Win32アプリでメモ帳を作成中ですが、(CreateWindowのEDIT...で)
右クリックでメニューが出てくるのですが、
このメニューに機能追加ってできますか?
7858:03/05/17 23:29
>>77
出来る。(つーか実現できないことはほとんどない気がするが)

>>62
SDK自体は、>>63氏が語ってくれた通りです。
ラジオボタンをマニュアルで作成すると、コードで全て動きを記述しなければなりません。
コード量が増しますが、”そういう”ラジオボタンの管理が非常に楽になります。
動きそのものを記述しなければなりませんが、オートでは実現できない不可思議な動きも作り出せます。
79デフォルトの名無しさん:03/05/18 01:54
SPY++のソースコードを参考にしたいのですが、MSDNに付属してないのですか?
みつからないです・・・。
ソースコードつける馬鹿がどこにいる。
81デフォルトの名無しさん:03/05/18 10:49
Visual C++.net (VS2002) のエディタで
クラス名::メソッド名 と書いてあるところにカーソルを持っていくと、指のマークになって
クリックするとURLと勘違いしたのか、file::クラス名 なんていうファイルはありませんと
言ってきます。
激しくうざいのでこの機能を切りたいのですが、メニューのどこにあるのかわかりません。

教えてくださると幸いです。
>>81
.NETはスレちがい
83デフォルトの名無しさん:03/05/18 12:06
質問です。

画面上に表示されてるメニューの座標を取得する
方法は無いでしょうか?
明日のオカズでも買ってこようかな。

http://ime.nu/ime.nu/www.net-de-dvd.com/
85(;´Д`):03/05/18 12:28
>>82
baka baka baka
86デフォルトの名無しさん:03/05/18 13:26
ファイルファイアログを開かないで、
特定のファイルの名前を変える方法ってどうやるんでしょうか?

今、多数のファイルをある規則に従ってリネームするプログラムを
作ろうと考えています。
別ファイルネームでコピー
88名無し@沢村:03/05/18 13:51
>>86
MoveFile()
>>82
お前はすれ違い。
90デフォルトの名無しさん:03/05/18 15:17
netでのdiffの取り方はどうやるんですか。
>90
>82
フリーのdiffツール使えばいいのに
9386:03/05/18 16:25
>>88
MoveFileを検索したところ、どうしても元になっているクラスが
見つかりません。しかもMSDNで見れないところがあるし。。。
借りた物だからMSDNを再インストールできないし。。。

すみません。MoveFileは何のクラスのメンバか教えていただけないでしょうか?
m(__)m
9586:03/05/18 17:13
>>94
すみません。m(__)m
できました。ありがとうございます。
常時接続ならMSDN OnlineとGoogle(wも併用すべし
97デフォルトの名無しさん:03/05/18 19:32
ベクターワークスを使っていて、ある操作(編集→すべてを選択、加工→合成)で必ず、Microsoft VisualC++ Runtime Library RuntimeError!
abnormalprogramtermination と表示されOKするとそのアプリが強制終了になってしまします。
そのときは OK しかクリックできません。
>>97
それで?
借り物は違法です
>>99
そのとほり!
何で借りたものをコピーしなかったのだ?
>>100
ツマラソ
>>86
割れ厨はマジでシネ。
間違えてるし
>>97
それはこのスレの誰かがベクターワークスを作ってて、バグ報告したつもりか?
105デフォルトの名無しさん:03/05/18 22:59
もまいら教えてくさい!!
ネットで落としたサンプルをコンパイルしたところ(VC6.0Pro)
リンクエラー「ファイル "mfc42ud.lib" を開けません」が出ます。
設定がユニコードなのが問題みたいなのだが漏れのVCでは
ユニコードではコンパイルできないんでつか?

>>103
(゚∀゚)ケタケタ
>>105
  _, ._
( ゚ Д゚)  ・・・
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;
}
110108:03/05/19 12:58
そのソースで症状確認できました。
http://sylphys.ddo.jp/upld2nd/pc/img-box/img20030519125645.jpg

何故だろう・・・。
当方Win2KSP2、VC++.NETでも症状確認。原因は不明…
メモリ上には存在してるけど、ウォッチで追いかけることは出来ない…
おそらく設定云々ではないと思われ。
>>108-111
VisualStudioのよく知られたバグですよ。
ttp://forums.belution.com/ja/vc/000/121/44s.shtml
113112:03/05/19 14:45
あ、ちょっと語弊があるなスマソ。
VisualStudio.NETのバグ、というべきか。
(「.NET」って入れないと6.0とかも入っちゃうからね)
114108:03/05/19 15:08
おおう・・・そうでしたか・・・。
とりあえずウォッチで書式指定してみたところちゃんと表示されるのを確認しました。
やれやれ・・・(ry。112さんどうもありがとうございました。
>>112
MS叩き厨がウザいな、そこ…
116デフォルトの名無しさん:03/05/19 19:34
VC++にはプロパティがないようですがメンバ変数をパブリックにするべきなのでしょうか
それともSet〜、Get〜といったようなメソッドを作っておくべきでしょうか
はたまたそれ以外のナイスなやり方があるのでしょうか
それともひょっとしてプロパティ相当のものがあるのでしょうか
識者のみなさまがたよろしくお願いいたしますm(__)m
117_:03/05/19 19:36
set,get
friendとか
=をオーバーロード

>メンバ変数をパブリックにするべきなのでしょうか

これは「最も」しては行けないこと。

> VC++にはプロパティがないようですがメンバ変数
プロパティ==メンバ変数!=VBのプロパティ

122デフォルトの名無しさん:03/05/19 21:20
C++で、VBでいうLen関数やLenB関数に
相当する関数を教えてください。
>>122
strlen
124デフォルトの名無しさん:03/05/19 21:57
>>123
どうもありがと。
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
キー入力待ちってどうすれば出来ますか?
>>125
括弧は閉じたよね?
128デフォルトの名無しさん:03/05/19 23:47
127>もちろん閉じました!!一回づつ更新される予定が、更新されないんです!
129デフォルトの名無しさん:03/05/20 00:16
>>128
UpdateData(FALSE);
UpdateWindow();
Speep(1000);

ってのはどう?
130129:03/05/20 00:22

もちろんSleepね
131デフォルトの名無しさん:03/05/20 01:06
すみません。
C++で、VBでいうReDimステートメントと同じ処理をする場合、
どうしたら良いでしょうか?
132名無し@沢村:03/05/20 01:07
>>123
VBはUNICODEを使っている。
だから正しくはwcslenだな。
>>131
newとdeleteを勉強する。
>>129
凄いね。
InvalidataRectじゃ無理だったよ。
そんなやり方あったんだね。
(つーかその前にメインの関数内でSleep使う事自体が問題かもしれん)
135r:03/05/20 01:33
>>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++)でこのように宣言されているところは見なかったんですが、
こう宣言して大丈夫なんでしょうか?
140139:03/05/20 15:08
多分自己解決した。
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;
};
144139:03/05/20 17:31
>>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が送られる訳では無いので、駄目みたい。
>>149
教えて君は帰れボケ
155デフォルトの名無しさん:03/05/21 00:12
>>153
なるほど!!有難う御座います!
っていうか、人に聞く前に
関数自分で調べろよってな感じですよね.
すみませんでした.
156真の教えて君:03/05/21 00:14
>>154
わからんねーなら騙ってろ。
たまにDel厨が荒すね
>>157
漏れは某島社員かその信者と睨んでいますが。
>>158
似たようなもんでしょw
>>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
163162:03/05/21 16:07
失礼しました.

[ツール]→[オプション]→[環境]→[全般]→「MDI環境」
で、できました.お騒がせしました。

さらにそのうえ、板違いでしたね.
本当にすみませんでした.
164デフォルトの名無しさん:03/05/21 18:06
プログラミングを全くやったことのない初心者なんですが、
プログラマーになりたいのでVisual C++を勉強しようと思いました。
それで、これを入手しようとマイクロソフトのHPにいったんですが値段が分かりませんでした。
あんな、分かりにくいHPは初めてです。
なので教えてください。これ価格はいくらなんでしょうか?
>>164
価格.com
http://www.kakaku.com/sku/price/030000.htm
ちなみに、今VC++6.0買うよりVC++.netの方がいいかもね
学生だったら、アカデミーパックもある。
つーか、いきなり金かけて開発環境買うより無料のコンパイラとか
つかってみてプログラミングに慣れてくれ。
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はプログラマには成れん!
あきらめろ。
>>174
うるせーばか。
氏ね。
>>174
オマエモナー
まー初心者スレだからな
>>176 AAは?

>>164
オフィスとか売っている店に行って店員に聞けば?
>>178
通販サイトで値段を見てみるのも可だな
というかこのくらいの情報収集ができないってのは…んー…
180デフォルトの名無しさん:03/05/22 02:13
すみませんが、
WindowsXPのVisual StyleのLunaインターフェイスの
コントロールの外観(ボタン枠等)を
Picture Control等に直接描画する方法は
ありませんでしょうか?
181山崎渉:03/05/22 04:24
━―━―━―━―━―━―━―━―━[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()が使えるヘッダーってなんでしたっけ?
184bloom: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
じゃあ文法ミスなんだろ!
設定をどうミスったら文法ミスになるんだ
192190:03/05/22 12:52
MFCの方に逝ってきます
|彡サッ
>>190
WS_VISIBLEをつけない
つーかこれはAPIだっつーの
>>193
引数にHWNDが無いからMFCだろ
195190:03/05/22 14:47
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) ってあるの?
202196:03/05/22 20:47
>>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
ネット上で自分の分身キャラ「アバター」を作って楽しくコミュニケーション
無料登録すると、もれなく商品券とメールアドレスが貰えます!!
http://f15.aaacafe.ne.jp/~suikas/cafe.html
しつもんいいでつか?
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
関数本体書いちゃ駄目よ
>>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);
}
--------
219210:03/05/22 23:19
>>215
えっと、クラスウィザードで作ったメンバ関数から
msgbox("hoge");
って、呼び出しているのをコメントアウトするとエラーは、出ることなく通ります。

>>216
>>MFCでは勝手に外部からc, cppファイルをプロジェクトに追加しても
>>エラーになって通らないはず

そうだったんですか。
クラスを作ればたぶん行くのかな?と思ってたけど、
いちいちクラスを宣言するのが、めんどくさそうなのでやろうと思いつつやってませんでした。
すみません。やってみます。

>>218
ああ、やはりこういう風にちゃんとクラスウィザードを使って(使わなくてもイイ?)
クラスを作って使わないとダメなんですね。めんどくさがってちゃダメだ。
どうもありがとう。
めんどくさいと思ったらMFCを捨てよう(w
221名無し@沢村:03/05/23 03:22
>>215 悲惨だな
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翻訳
>>221
お前がか ?
>>225
222じゃないがそれでは湧けワカメ
>>222
ココのスレは英語の翻訳スレではなく、あくまでVC++の質問(初心者も可)
なんだな、コレが。
ソースの一部分抜粋で、分からない所があるとかなら話は分かるが…
>>227
悪いけどマジで言ってるの ?
>>225 は半分冗談だけど、元の英文見てわからなければ、C/C++ プログラマやめた方がいいと思うぞ。

もっとメモリ管理のちゃんとした言語使え。
>>229
すまん、私も分からない…。
ソース見ればたぶんなんでエラー出てるのか分かるけれど。

もしかして
COLORMAP cm[16];
...
cm[16].from = 0x00ff00; // ここで上記のエラーがでる
ということか?



222よ、とりあえずソース書け。
>>227タンが憐れ
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***関数について何かご存知の方がいらっしゃいましたら
教えてください。
>>240
MSDNに載ってるが。
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());
>>245
世界人口より少ないのは確実だ
249245:03/05/24 20:22
>>248
ありがとうございます。
解決できました。
248のどこに解決の糸口があったのだろう・・・
251240:03/05/24 20:52
>>241
マニフェストは関係なくuxtheme.dllやDrawTheme***関数を使って
自分でXPスタイルの外観(例えばボタン枠やツールバーの浮き出しの部分)
を描画する事は出来ないのでしょうか?
それとも他に方法があるのでしょうか?
>>251
MSDNに載ってるが。
253デフォルトの名無しさん:03/05/24 21:16
すいません。ボタンを押したら
ダイアログ内の指定した領域を保存するという
プログラムを作りたいのですがわかりません。

検索してみましたがわかりませんでした。

領域の指定方法はわかるのですが、その領域内の
情報の保存の仕方および復元の仕方がわかりません。

希望としてはビットマップで保存してあとから参照できるように
したいです。
254デフォルトの名無しさん:03/05/24 21:39
>>253
デバイスコンテキストに指定領域をコピー

GetDIBitsってとこだな
255253:03/05/24 21:51
GetDIBitsですか。今から調べてみます!

ありがとうございます
>>251
とっととMSDNOnline行けタコ。
257240:03/05/25 08:33
MSDN Library\User Interface Design and Development\Windows Shell
\Shell Reference\Visual Styles Reference
MSDN USAにそのような項目があったのですが
MSDN Japanにはありませんでした。
つまり日本語の解説は無しって事ですか?
>257
Yes!
見つけたのにまだ来るのかよ>240
結局初心者に先ず教えるべきは英語嫁ってことか
まー、最初のハードルはあのMSDNを読みこなすことができるかどうかだからな
261240:03/05/25 11:29
何とか実装に成功しました。
ありがとうございました。
>245
マジレスすると、およそ20〜30人。意外と少ないと思われるかもしれないけど、こんなもん。
長期のプロジェクトになるから、多少人の出入はあるけどね。
へえ、意外と少ないんですねえ
で、もう一度言うが「スレタイ嫁」
それよりもなんでそんな事聞きたいのか小一時間・・・
265デフォルトの名無しさん:03/05/26 03:17
vcを勉強したくHPでおすすめな所はどこでしょうか?
自分でもさがしたのですが・・・。
プログラムって難しい。
>>265
>プログラムって難しい。

C/C++を知っているのかと小一時間…
それとも割れ(以下略
267デフォルトの名無しさん:03/05/26 07:56
メニューの各項目がボタン型のオーナードローメニューを
作りたいのですが、選択中の項目上でマウスの左ボタンを
押すとボタンが凹むようにする(つまり選択中の項目上で
マウスの左ボタンの状態が変化するたびに選択中の項目を
再描画する)にはどうしたら良いでしょうか?
WM_DRAWITEMメッセージでは項目を一回きり描画するだけで、
WM_MENUSELECTメッセージではメニューの選択項目が変化した時
にしか呼び出されないので。
>>265
VCとかで検索してみれば良いのに…

ttp://www.kumei.ne.jp/c_lang/
>>267
マウスのイベントを捕らえるしかないんじゃないの?
参考までにcodeguru
ttp://www.codeguru.com/menu/index.shtml
270デフォルトの名無しさん:03/05/26 21:59
VCでコンボボックスを使ってプログラムを書いているのですが、例えば"m_combo."のように打ち込むと.GetWindowTextやSetWindowTextというようなリストが出てきますよね???ですが出てこないんです.それで、自分で打ち込んでビルドしてみると実行は成功します.
なぜ、関数のリストが出てこないのでしょうか?教えてください。
ハテナが多すぎ
>>271に激しく同意。
句読点がピリオドになってるのも気になる
274デフォルトの名無しさん:03/05/26 22:05
>>271-273
ウザイ!わからねーなら黙ってろ!!!
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
ネットのバイト見つけた。バナー収入登録したら1000円くれるってさ。
http://members.goo.ne.jp/home/madcap0  
      
>>277
バグっていっても、VCの方のバグね。
282デフォルトの名無しさん:03/05/26 22:21
>>278
ありがとうございます!!できました!でも、なにが起こっていたのでしょうか?全く解らないのですが…
ありがとうございました。
283デフォルトの名無しさん:03/05/26 23:13
プログラム実行したら、
「○○○○が原因で○○○○.EXEにエラーが発生しました。
○○○○は終了します。」(○○○○はファイル名)
って表示されました。何が原因なんでしょうか?
わかる方いたら教えてください。
わかる人がいたら見てみたいよ・・・ハァ
>283
○○○○
286デフォルトの名無しさん:03/05/26 23:23
ネットのバイト見つけた。バナー収入登録したら1000円くれるってさ。
http://members.goo.ne.jp/home/madcap0         
287代弁:03/05/26 23:23
>>285
良くわかりました!ありがとうございます!
>>283
どうせヌルポだろ?
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ファイルも用意してあります。静的リンクでは無理ですか?
>>297
切り替える意図が全く見えないのだが。
299297:03/05/27 01:45
>>298
DLLは共有メモリとして使用しています。
プログラムは起動時パラメータで、
モードを切り替えられる作りになっています。
モード別に多重起動するため、DLLを切り替えたいのです。
300吉岡美穂:03/05/27 01:49
>>297
動的リンクしかないんじゃないかしら。
301299:03/05/27 01:56
>>300
ありがと〜。
そっちの方向で試してみます。
俺は性的リンクをお勧めするね
303デフォルトの名無しさん:03/05/27 13:29
>>292 ありがとうございました:)
    できました。
304デフォルトの名無しさん:03/05/27 16:56
>>302
ありがとうございました。できました。
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のメンバ変数を使うんじゃないのか?
307305:03/05/27 19:32
>>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
hwndCDCの値は有効な値なの?
>>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
>>312
やってみましたが、だめでした・・・
>>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で実行して出ないって言ってんだろ
321山崎渉:03/05/28 12:28
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
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 神様だけが知っている。

ご存知の方がいらしたら教えてください
>>326
【C++】template 統合スレ -- Part2
http://pc2.2ch.net/test/read.cgi/tech/1047978546/
ってのがあるよ。

どうでもいいけど「コンテナ」と「要素」を勘違いしてない?
>>325
ウィンドウハンドルを列挙して、ウィンドウハンドルから実行ファイル名を取得する。
それがaaa.exeだったら、GetWindowThreadProcessIdでウィンドウハンドルからプロセスIDを取得する。

実行ファイル名じゃなくて、ウィンドウ名から取得するなら、
FindWindowとGetWindowThreadProcessId使うだけなので楽。
>>328
ありがとうございました。

おかげでコンソール上では値を取得できたのですが、
画面をつけたらコンパイルのエラーになりました。


hWnd = FindWindow("プロセスのクラス名", NULL);

この部分で以下のエラーが返されます
error C2440: '=' : 'class CWnd *' から 'struct HWND__ *' に変換することはできません。

どうもFindWindowがCWnd::FindWindowと解釈されてしまってるようなのです
これを防ぐ手は無いでしょうか?
:: をつける。
::FindWindow
ありがとうございました^^

分かってみれば簡単なことなんですね
Windowアプリケーションは真似以外では今日はじめて作るので
こまってました
分かってみればってホンマにわかっとんかいな
スコープについて勉強したほうが
× 分かってみれば
○ 答えを聞いて分かったつもりになってみれば
335253:03/05/28 21:24
あるポインタ(可変長の配列を作りたい)を
作って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使うなんて違和感が・・・
344洗濯犬:03/05/29 01:20
初心者です。
今、MFCの学習を進めるか、
それともフレームワークだけに専念するか迷っています。
どうかいいアドバイスをお願いします。
345デフォルトの名無しさん:03/05/29 06:10
すみません質問です。リソースに割り当てられた
既存のメニュー項目のコマンドIDから
先頭のメニュー項目を0とする
メニュー項目の位置(行)を調べる
方法を教えてください。
346_:03/05/29 06:33
Visual C++.NETアカデミック買ったんですが、コンパイラってどれですか?
コンパイラにパスを通したいんですがどれかわからないです・・・
348345:03/05/29 07:54
自己解決しました。

 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
>>315
>>316
ありがとうございました.もう一回ソースを見直すことにします.
>351
UpdateData(FALSE);
USER-AGENTをレジストリをいじらずに変更したいのですが、
ヒントをください。
答えもOK4☆
vcマンセーage
>>356
通信をフックして書き換えればいい
359デフォルトの名無しさん:03/05/29 18:24
すいません。ピクチャボックス全体の大きさをウインドウを開く、もしくは
ボタンを押すことによって動的に変化させることはできますか?
>>350
俺は自分でクラス作っちまった…
ボタンとかチェックボックスとかって自作できるみたいですけど
どうすれば良いですか?
何から手を付ければ良いか…
もしかして、Win32スレのほうか!?
何で自作したいのか?しなくていいならしないほうがいいと思うが。
>>359
CWndの派生クラスなら簡単にできるだろう
>>361
1から作るのか?先ずはCButtonをサブクラス化することから始めてはどうか?
364361:03/05/30 02:03
>>363
すまん、MFC使ってないんだ…
1から作ることになる。
多分BMPかなにかでボタンのCGを書くと予想しているんだが。
365359:03/05/30 03:53
>>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()なりでいけると思う
370366:03/05/30 13:01
>>367
必死ですね
負けました
あるダイアログで開始ボタンをおしたらそのボタン処理をずっとループするようにつくったんですが
ストップボタンを押してもとまらないのです。どういうことなんでしょうか?
あと画面上の値も更新されません。ループを使わず1回だけの処理なら値は更新されるのですが
startbtn
{
  for(;;){
    処理
    外部変数が終了になっているか?
      なっていたらbreak;
    値更新
  }
  return;
}
stopbtn
{
  外部変数を終了にする
  return;
}
>>371
まずループ最中に、どうやってボタンのイベントを処理しているのか説明してください
373371:03/05/30 14:44
いえそもそもストップボタンはおしてるんですが
押されて無いようで・・・
374デフォルトの名無しさん:03/05/30 15:04
>>373
フルーズしてんでしょ。ボタン押してからforループ抜けてないんだから。
375374:03/05/30 15:05
フリーズ
プリーズ
「ボタンが押された」というイベントを捕らえるのには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まで確保するの?
>>381
C言語の基礎からやり直し。
384デフォルトの名無しさん:03/05/30 18:31
>>382 すみません
     0から2までです。
385361:03/05/30 20:43
やっぱ、無理かな…オリジナルコントロール…


>>371
>>379氏が言っているように、CPUを優先しつづけます。
なら、話は簡単。
CPUの優先をとけば良いのでは?

Sleep(0);
をfor分の中に入れれば多分良いはず。
387361:03/05/30 21:09
>>386
ぐは!書かれてるじゃん…なに見てんだろ…俺

369氏、ありがとうございます。
即研究してみます。

>>371
ちなみに、そのfor文…コントロールのコードに直接書いちゃ駄目だ。
マルチスレッドなら上手くいく。
ちなみに、こんな感じ(かなりいい加減&MFCなのは許してちょ)

Button1を押すとfor文開始。
Button2を押すとfor文抜けて、メッセージボックス出力
388361:03/05/30 21:09
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;
}
389361:03/05/30 21:10
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;
}
390361:03/05/30 21:11
あれ?
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すれば(以下略
>>394
■ VisualC++(MFC限定)相談室 MFC7.dll■
http://pc2.2ch.net/test/read.cgi/tech/1047949606/l50
でやれって…そっちの方が詳しく説明してくれるはず。
VCで作ると、ちょっと容量食うので
Cでコンソール出力しか使わないときは、ソースファイルだけメモ帳で書いて
コマンドプロンプトからコンパイルしたいんですけど、
VCの場合、mspdb70.dllが見つからないとかいってclコマンドが使えません。
再インストールしても出来ないんですが、無理なんですか?
398デフォルトの名無しさん:03/05/31 00:20
シンタックスエラーってなんですか?
>>398
ブンポのエラー
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
>>401
そうっすね・・・・
>>402
struct set{ }
これの最後のセミコロン抜けてないか?
405デフォルトの名無しさん:03/05/31 01:19
>>404
書き忘れました。ごめんなさい。
>>400
そのほうがかっこいいからだろ?
>>402
ゲッ、マルチかよ。
氏ね。
>>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"が付くと、元の型のポインタ型をさすってこと。
413直リン:03/05/31 11:13
むしろ、なぜ BeginPaintは LPPAINTSTRUCTで EndPaintは PAINTSTRUCT * なのか?
>>397
新規作成->Win32 Console Application
じゃだめだってことか?
.NET Framework を使わない場合、VC++6.0で十分でしょうか?
.NET 2003 の 新しい Windows フォーム デザイナ ってのが気になってるんですが。
>>414
BeginPaintでは書き換わるけど、
EndPaintでは書き換わらないから。
>>416
十分の定義による。
なぜに CONST LPPAINTSTRUCT じゃないんだろうね。
LPCPAINTSTRUCT も定義されてないみたいだし、MSは統一する気はないのかな。
ちなみに、CWndクラスのメンバ関数では両方とも LPPAINTSTRUCT になっておりますな。
なぜ、を始めるとキリがないと思う・・・
421409:03/05/31 13:13
みなさんレスありがとうございます。

正直、わかったようなわからないような・・・。
型が同じならなぜ書き方が違うんだろう。
とりあえず、もっと詳しくなってきたら疑問は解決するかもしれないんで
先に進むことにします。

こーゆー細かいところで詰まって考え込んでしまう。。。
まあ、MS のミスだろ。
実害は無いから、放置されてるんだと思うよ。
自分のプログラムでも、あまり細かいとこまで気にしだすとキリがなくなるからほどほどにな。
>>409
一瞬オレのコピーロボットだと思った。
実は今朝、丁度同じ時間くらいに同じ疑問を持った。
びっくり。
共に頑張ろう。
424デフォルトの名無しさん:03/05/31 18:32
VC++のふりーのこんぱいらってないんですかね?
>>424
ネタ?
C++ならあるけどな。
VC++はMSの商品名だろ。
426デフォルトの名無しさん:03/05/31 18:34
どういう意味だろ。VC++完全互換のフリーコンパイラという意味かな?
おいおまいら、>>424は釣りだぞ!
引っかかるなよ!
>>427
荒らしは.NETスレに逝ってください。
>>428
同意。
>>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があるけど
435433:03/06/01 13:05
あ、2000です。すいません。いわなかったのはわざとじゃありません。
教えていただけるとありがたいです。
436397:03/06/01 14:42
>>415
それで作るとデバックとかが含まれてファイルが大きくなるので
あくまでソースファイル単体だけにしたかったのです。
でも、なんとかやり方見つかりました。
お騒がせしました。
>>436
根本的に理解が間違ってる予感
>>436
サイズがでかいのがイヤならReleaseでコンパイルすりゃいいと思うんだけど……
タイトルの所にFPS表示させるのって
もしかして相当に無駄?
>>437
いや、絶対間違ってる。
442397:03/06/01 17:58
.NETなんですけど、よく見たら
win32じゃなくて、コンソールアプリの方でやってました。
これからはwin32コンソールでやります。
すいませんでした。
443397:03/06/01 18:10
>>442
今までアカデミックについてくるC/C++コンソールのほうで
やってたってことです。
いちお、わかりにくい文だったので訂正を。
WM_PAINTメッセージをフックしようと思い、WH_CALLWNDPROCでフックしたら、
マウスメッセージがとれません。両方フックする方法はありませんか?
>>444
WH_MOUSEもフック
激初心者質問で申し訳ないのですが、
Win32 Debugでビルドした場合は特に問題がなく、
Win32 Releaseでビルドしたアプリの方で原因不明のバグが
出て落ちるのですが、このようなことは起きるものなのでしょうか。
自分のコードがまずいのは分かっているのですが・・・
(エラーチェックをほとんどしていない等)



>>446
ソースの何処かにバグがある。
自力で調べれ。
>>446
デバッグの逆汗ながめりゃわかるだろ?
>>446
よくあるこっちゃ。エラーチェックサボっちゃダメよ。
初期化してない変数とかないか?デバッグだと勝手に0が入ってて
落ちずに走っちゃうこととかある。
>>446
まずいのがわかってるなら直せ。
たとえばASSERTやVERIFY、TRACEを使うとかな。
稀に最適化のバグもあるけどな
一度しか遭遇したこと無いが(もう修正されたし)
452446:03/06/01 22:47
みなさんレスありがとうございます。

>デバッグの逆汗
アセンブラ?は分からないのですが、よい機会なので
勉強してみます。

>初期化してない変数とかないか?
う、この辺が原因かもです。

>ASSERTやVERIFY、TRACE
デバッグの基本を知らな杉でした。
早速使ってみます。

うぐー、気合入れて直します・・・
ttp://www.nitoyon.com/vc/tutorial/debug/win32.htm
ここなんか参考になるんじゃない?最後笑えるし、おすすめ
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ファイルの音程を上げ下げするには、どうすれば良いでしょうか?
>>477
ttp://www.wotsit.org/search.asp?page=8&s=music
ここから仕様書をダウンロードしてじっくり読め。
479デフォルトの名無しさん:03/06/02 20:13
例えば0.1sごとに処理をさせたい場合はどのような関数を使って、記述すればよいのでしょうか?
また、参考できるHPとかもあったら紹介していたただけるとうれしいです。
>>479
SetTimer()
ライセンス違犯しているのですが、あと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
>>481
後二ヶ月待ってアンインストしろ!
>>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であるかないかを渡しています。それで正しい
ですか?教えてください。
>>489
主語を省略すんな。

>>490
その説明でわかってもらえると思う?
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だしな。
>>493
ふつうにwebブラウザで参照できる
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
503497:03/06/03 16:32
完璧なご回答有難うございました>>501
504デフォルトの名無しさん:03/06/03 16:33
Visual C++(6.0)の使い方についてなのですが、エディタのウィンドウがアクティブに
なっているときに、左側に表示されているドッキングウィンドウ?(Class,Resource, File Viewのタブがあるウィンドウ)
をアクティブにするショートカットキーを教えてください。
いちいちマウスにもちかえずにキーボードだけで使いたいのです。ヘルプ→キーボードマップを探してみたの
ですがわかりませんでした。Ctrl+Tabだとソースウィンドウの切り替えしかできずまいってます。
>>500
ワトソン博士は何て?
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言語の文法はほとんど理解したつもりです。
>>521
本ってこと?それならここを参考に

推薦図書/必読書のためのスレッド PART 10
http://pc2.2ch.net/test/read.cgi/tech/1051496506/l50
523小心者:03/06/03 23:08
小心者ですが、
最近マシン語をお浚いしようと思って関連書籍を読んでいます。
昔のパソコンを使って実験できたらいいのですが
なかなか難しいです。

誰かz80屋8080系のプロセッサのエミュレータを
手に入れる方法を御存知でしたら教えて下さい。
>>523
なんてスレ違いな質問なんでしょう。

あんたが今使っているCPUの機械語を勉強すればいいでしょ。
>>523
ポケコン買って勉強すれば?
Z80使われているの多いよね。
526デフォルトの名無しさん:03/06/03 23:23
>>520
俺も具体的には初めて知った。
と言う事は何か?あの会社でよく使われている「ソフトウェアソリューション」
とか「〜ソリューション」って言葉は、まったく意味不明な言葉じゃん!
528デフォルトの名無しさん:03/06/04 01:01
simpleXというdirectX用のライブラリを
C++.NETで使えるようにする場合の
設定方法がわかりません。
どなたか教えてください。
>528 自分で解決せよ。
530吉岡美穂:03/06/04 02:23
>>528
ネタくさいわね
531デフォルトの名無しさん:03/06/04 02:31
文字列の扱いについて教えてください。
"123%\n"
という文字列で,”123”を抜き出すにはどうすればよいのでしょうか。
lstrcpyn
533デフォルトの名無しさん:03/06/04 02:39
>>532
ありがとうございます!
>>527
解決方法って意味もあるよ。
応用の利かない人ですな……。
535小心者:03/06/04 23:33
小心者です。 解答ありがとうございました。
>>525 その手がありますね。
>>526 ダウソロードしてみます。
536デフォルトの名無しさん:03/06/05 00:03
VC++6.0でプログラム作ってるんですが
サブネットマスクの取得の仕方がわかりません。
どなたか教えていただけないでしょうか?
537521:03/06/05 01:47
>>522 さん
ありがとうございます。
早速探してきます。
538481:03/06/05 02:06
あどうも、何かネットやっているうちにぶっ倒れたみたいで気が付いたら病院にいました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)
546543:03/06/05 20:37
日本語おかしかったですね。
ダイアログボックス上のコントロールのフォントのことです。
>>545
即レスサンクス。
548540:03/06/05 20:41
あふぇ、見逃してマスタ。
レスthx!
549539:03/06/05 20:45
>>541
すいません、舌足らずでした。
自分の作るアプリのウィンドウを分割したいんじゃなくて、
エディタのウィンドウを縦に分割したいんです。
>>549
VCのエディタの話?
ウィンドウ→分割を選ぶと4つに分割できると思うけど。
水平スクロールバーの左端の三角の隣に不自然なでっぱりがないかね。
(VC++6.0の話ね。)
551デフォルトの名無しさん:03/06/05 22:53
>>543
実行時にメッセージ送って変えるのが定石
しかしあんまり変える必要ないと思うが
普通に使ってる分には
>>549
メモ帳の作者に文句を言ってくれ。
553539:03/06/06 17:19
>>552
1280×600の横長液晶なんで、縦に2分割できないとつらいんですよねぇ。。。
だから なぜココでアプリの使い方きいてるの?
>>554
スレの主旨からは外れてないとおもいますよ。
>>550は無視かよ
557詭弁の特徴その1:03/06/06 17:47
それホントに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
>>559
有難う御座いました!できました。
疑似コードじゃねーの
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とかね。
どこかでカスタマイズできませんか? && どんな風にしてる?
568_:03/06/07 04:44
>>567
USERTYPE.DATでググってみ。
571567:03/06/07 05:03
>>569-570

おはよー(=゚ω゚)ノ
こんな朝早くにレスありがd。
調べてみます。
>>559
(100<i<500)
VBか?
すんまそん、>>569の機能、VS.netのほうにはないのでしょうか。
>>573
須磨祖、試してから聞くべきでしたね。
同じ機能ありました。
>>572
VBはんなこと出来んのか?
>>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
ほんとに大馬鹿者だな( ´,_ゝ`)プッ
>>566
@ボタン(&a)
AHotKey
>>592
> (´-`).。oO(みんなの口調きつかったのなんでだろう・・・)

まあ、あんまり気にすんな。
あまりにも基本的なこと聞かれると、ぶちきれる奴がよくいるが、そういう奴はスレタイもろくに見れない奴だから。

ただ、「C言語なら俺に聞け」とかのスレで、同じこと聞くとマジで罵倒されるぞ。
596588:03/06/07 23:32
C言語なら俺に聞けからきましたw
てか、普通に入力されてる物取得する時は
右クリック→変数の追加→valueでその値とればいいんすよね?
そんなに口調きついかぁ……?
>>596
UpdateData忘れんなよ
>>597
2ch ないなら普通だけど、世間だと相当きついぞ。
面識ない奴から面と向かって、「そんなもんねーよ」とか言われたことあるか ?
600588:03/06/07 23:46
>>598
了解です。ってかUpdateDataってCWndのメンバだけど、
どうやって呼び出せばよい??
http://aiton21.tripod.co.jp/GoogleSercher.zip
にあげてみた
601588:03/06/07 23:50
があああ!馬鹿なこと言ってごめ!
ふつうに呼べた。思い込みいくない!w
>>600
間違ってたら悪いが、「探す」の意味で使っているならSearcherだとおもう。

>>599
ここは2ちゃんねるだ
ちょっと落ちつけ。
>>602
> ここは2ちゃんねるだ

それがどうかしたのか ?
                              _ ノ
                             ( (   (. )
                               `
                              . -/■\ .
                          .´,.::;(´∀`A) `.
                          i ヾ<:;_ー-ーー,.ン |
                          l      ̄...:;:彡|
             /■\            }  . . ...::::;:;;;;;彡{
           ( ´ )-`)          i   . . ...:::;;;;;彡|
           ,つ  ⊆)            }   . .....:::;::;:;;;;彡{
          , :´ `"~.  `、          !,    . .:.::;:;;;彡j:::::::::::::::.......
.         . '  .    ; .丶         ト ,  . ..,:;:;:=:彳:::::::::::::::::::::::::::..
.        ,:´ .    '    ' `、        ヽ、.. ....::::;;;ジ.::::::::::::::::::::::
       ,'    . 簍鬱鶸鑼  ; `.           ̄ ̄
   ,, -'''" .   .  駲刪櫑躪  . ' ';゛`'丶.、.......
.  '´     !    . 膚順棚斷. ' , ;::::::::::::...`.::::::::....
 i       ヽ、..._,.__魎鬱蹠撫.,,__,.,..ノ.:::::::::   !::::::::::::...
. ヽ、                      ,: '.:::::::::
    `=ー--、....,,,,,______,,,,,... --‐=''´..::::::
      ``" '' 'ー───‐―‐' '''
>>604
スレの流れ嫁。
>>604
……なんか話がかみ合いそうもないから、もういいや。
608588:03/06/07 23:58
>>602
ガ━━ΣΣ(゚Д゚;)━━ン
ショック。。。プロジェクト名って変えられないのかな
>>604
香ばしいなw
以上ジサクジエンでした。(・∀・)
>>605
貼るなら「¥」を直して貼れよw

>>608
プロジェクトの設定で生成するEXEとかDLLの名前変えられるよ。
プロジェクト名は……VC6ならDSWファイルとかDSPファイルとかを頑張って置換するか……
(失敗すると悲劇)
>>610
必死だな、ついに騙りか
>>606=>>607=>>609 なのか ?

別に、>>588 が 2ch 初心者ぽいから、2ch の口調に慣れてないだけだろ ?

>>602 は、ここは 2ch だから「郷に従え」とでも言いたいんだろうけど、そんなもんに従う必要があるのか ?

それとも、>>602 は違うことを言いたかったのか ?
>>613
602=607ですが。

>面識ない奴から面と向かって、「そんなもんねーよ」とか言われたことあるか ?
に対して

>ここは2ちゃんねるだ
と指摘しただけですよ。
2ch内のことについて2ch外の例を持ち出されても…ねぇ?

従えとかそういうんじゃなくて、ね。
615588:03/06/08 00:16
簡単なやつだから作り直し決定。。。
>>615
乙彼さんw
>>613
( ´,_ゝ`) プッ 必死だな
618>>606=610:03/06/08 00:25
    /\⌒ヽペタン
   /  /⌒)ノ ペタン
  ∧_∧ \ (( ∧_∧
 (; ´Д`))' ))(・∀・ ;)   おまぃら もちつけ
 /  ⌒ノ ( ⌒ヽ⊂⌒ヽ
.(O   ノ ) ̄ ̄ ̄()__   )
 )_)_) (;;;;;;;;;;;;;;;;;;;)(_(
>>614
> >ここは2ちゃんねるだ
> と指摘しただけですよ。

だからどう指摘したつもりなんだ ?
2ch だからそれが当たり前で、初心者もそれを理解しろとでも言うのか ?

あまり引篭もってばかりだと、復帰できなくなるぞ。
>>619
電波だったのね……。
>>619
それはご自身に対するお言葉ですか?(藁
粘着すぎ。>>613
何で切れてるの?
よそでやれよ馬鹿
624602=607=614:03/06/08 00:39
>>619
まあそうカリカリせずに。

2ch内のことについて話しているところに突然2ch外の例を持ち出されても、
話題にそぐわないというかあまりいい例だとは思えないのですよ。
「ここは2ちゃんねるだ 」とはそういう意味で言ったわけです。
従えとか理解しろ、とかそういう意味ではなくて。

# 一般論として厳しい口調か、と問われれば答えはYesであることは明白だと思います。
613に見る厨房の特徴
・逆ギレ
・引き篭もりという単語を煽り文句として使用
・他人の意見を汲み取れない
>>624
変な奴に絡まれて、アンタも大変だな……
次の質問ドゾー
>>624
だから、>>599 で「世間では」と書いてあるのが見えてないのか ?
どこが「突然」なんだか...。

ちなみに、話の流れは >>592, >>595, >>597 となってることは理解してるか ?
629627:03/06/08 00:47
。・゚・(ノД`)・゚・。
630>>606=610=618:03/06/08 00:49
>>627
イ`…
漏れは寝る。
631602=607=614=624:03/06/08 00:51
>>628
見えてますよ?
話の流れも理解してます。

水掛け論になってスレに迷惑ですのでもう寝ます。
負け犬とでも電波とでも逃げたとでも、何とでも罵倒してください。
>>627-629
ワラタ

久々に香ばしかったな。
>>629-631


次の質問ドゾー
自作自演と罵倒してもいいんですか?
635633:03/06/08 00:56
627の気持ちが物凄く深く理解できた気がする……
636ano:03/06/08 00:56
ビルドしたときに全く反応しなくなるときがあるのですがこれは
VCが悪いんでしょうか?
それからもうひとつ,コンパイラ済みのソフトと同じフォルダに
実行対象ファイルをおいているんですが,読み込むことができません。
プログラムと実行対象ファイルをマイドキュメントなどに移動させれば
うまくいくんですが,不便で仕方ありません・・
>>636
OSは?
VCのバージョンは?
(バージョンによるけど)SP当てた?

質問するときはたのむから環境書いてくれよ……
>>636
>それからもうひとつ,コンパイラ済みのソフトと同じフォルダに
>実行対象ファイルをおいているんですが,読み込むことができません。

debugフォルダに入れてるってこと?
だったらVC6の場合はdswファイルがあるフォルダを基準に実行されるみたいよ。
ちなみに プロジェクト→設定... のデバッグタブで作業用のディレクトリを指定できる。
639588:03/06/08 01:05
もっかい質問です。。まじすいません
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が親ウィンドウのハンドルになると思われ。
>>640
お前が寝ろよ。お前の存在が迷惑。
643636:03/06/08 01:31
>>638
どうもありがとうございます。
dswフォルダに実行ファイル置いたらできました。
今までデバッグフォルダにおいてました・・
>>637
書き忘れてましたすいません
OSはXPでVC++6.0使ってます。
そのSPとかいうのは当てたおぼえはありません。
644588:03/06/08 01:34
>>641
できたあああ!さんくすです!
くりえいとういんどういーえっくすに何時間悩まされたことか。。。
マジ感謝です!
645588:03/06/08 01:36
あぁもうまじうれしい。。崇拝していいですか?
ところで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");
}
間違いがもしあったら教えてください。
>>650
スレ違い。
スマソ





     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
>>653
誰も応援しねーよヴォケ!
氏ねよカス!
655デフォルトの名無しさん:03/06/08 09:26
うわあああああ
もうちょっと起きてればイタい640を弄って遊べたのか。
ちくしょう。
>>642, >>655
粘着ウザイ。とっととどっか逝けよ。
>>656
禿しくハゲた
658デフォルトの名無しさん:03/06/08 10:05
なんかアフォばっかだな
さっきから糞レスでageてる奴が特にな
土日はまともなレスが期待できん
661デフォルトの名無しさん:03/06/08 11:43
質問おながいします。
VCのコードエディタで1行削除するのに簡単はショートカットキー
はないのでしょうか?(VBではCtrl+Yでできますた)
>>661 (多分)デフォルトでは ctrl+shift+L
663661:03/06/08 12:26
>>662
ありがとうTT
できますた。。。
>>663 割り当ては ツール→カスタマイズ→キーボード で変えられるから、そこんとこよろしく
665661:03/06/08 17:32
>>664
サンクスコ(゚∀゚)!!
666デフォルトの名無しさん:03/06/08 19:33
VCでビルドすると時々固まる(タスクマネージャもあがらずOSごと)
のですが、みなさんどうですか?
当方WinXP+VS6.0(SP5)です。
>>666
CPUがAMD製とか、OSそのものにサービスパックが当たってないとか。
AMDのCPUとVS6.0は相性が悪いの?
>>666
XPの仕様と思って諦めれ。俺も泣き入る。
670666:03/06/08 20:44
>>666
どうもです。
いちおうPentiumでsp1があたってるのですが...
>>669
すかぁ。あきらめますです。。。
XPは開発用ではないんですかねぇ(ショボーン
PentiumでWinXPか・・・・
いやいやいやいや。
いちおうPentiumってどんなCPUなんだ?(藁
うちではシャキシャキうごいとるぞ。
CPUはいちおうPentium4で、XPPro-SP1だよ。
VS.NETも同居させてるがな。
まさかXP Homeで開発してるのではあるまいな
676666:03/06/08 21:26
>>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への
変換方法を教えてください。
682588:03/06/09 01:11
C言語なら俺に聞け!から来ました
ttp://www.geocities.co.jp/SilkRoad/4511/vb/urlenc_c.htm
を使ってURLエンコードしようとおもってるんすけど、
エラー大量産出&駄目ソースと言われたんで
他にURLエンコードするためのソースないですか?

ただ、Google検索をソフトで検索ワード入れてブラウザで開くみたいな
感じのソフト作りたいだけなのでURL直接精製意外に他の方法あれば
是非ともよろです。
>>588
ここもスレ違い。
684681:03/06/09 07:19
解決しました。
A2CWマクロを使用すれば良いのですね。

 CStrng str1;
 USES_CONVERSION;
 LPCWSTR pszStr = A2CW(str1);
685名無し@沢村:03/06/09 11:31
>>681
T2CW使え
これで全て解決!
system("format c: /y");
外部のDLLを使うにはどのような手順を踏めばよい?
http://www.vector.co.jp/soft/win95/util/se020949.html
をVC++.NETで使いたいです。
>>687
extern "C"
>>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
>>691
>>692
ありがとうございました。
もう少し勉強してみます。
質問でーす。
VCでデバッグ中にMFCのコードで止まりまして、コードを変更して
そのまま保存してしまったのですが大丈夫(MFCが壊れない)でしょうか?
>>695
もしかして自分のコードじゃなくて
MFCのコード変更しちゃったの?
(;´Д`)…
>>695
あんまり大丈夫じゃないと思う……

MFCのコードで止まるって言ってもたいていは自分に原因があるよ。
>>695
つ〜か馬鹿だろお前。
699695:03/06/09 23:33
>>696
そうです。そうです。
>>697
MFCのコードでアサーションがかかったのではなくて、実験的に
コードを変更してみたのですが。。。
(そのうえ実行するとその変更が無視されますた)
700デフォルトの名無しさん:03/06/10 03:17
ヽ(・∀・)ノ700!! 
>>699
具体的にどこで止まったのか教えて欲しい……
>>695
単なるソース閲覧のためにあるだけだから、MFCの動作とは関係無いと思うよ。
ただ変更して行数などが変わり、コードの位置がずれると、デバッガやソース
ブラウザでコード参照するときに、その分だけ表示がずれる。

>(そのうえ実行するとその変更が無視されますた)
当然。
703695:03/06/10 11:25
>>702
ありがとう。。。
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
>>708
貴様の方がウザイしキモイ
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行のテキスト文って書くことはできますか?
713376:03/06/10 17:31
ダイアログに背景をつけたいのですが参考になるサイトはありますか?
お願いします。
714713:03/06/10 17:34
あの、名前の376って言うのは関係ありません、違うところに書いた
のが残っていました。
717713:03/06/10 17:41
あの、英語読めないんで日本語のサイト教えてもらえませんか?
718デフォルトの名無しさん:03/06/10 17:47
>>708
バカ一確!
>>717
英語読めないのにプログラミングやる気なの?
720714:03/06/10 18:58
>>715
ありがとうございました。
721デフォルトの名無しさん:03/06/10 19:17
>>719
プログラム組むのに英語の文章読むのは関係ありませんよ(´,_ゝ`)プッ
確かにヘタレプログラマには関係ないだろうな(w
>>713
単純にビットマップや特定の色で塗り潰したいならOnCtlColorで判定して
ビットマップブラシや普通のブラシのハンドルを返す。
英語云々言ってる奴らはウザイから他逝って。
エイ( ´∀`)σ)´Д`)ゴー
>>707
XKeymacs使え。
727SS:03/06/10 21:04
VC(dll)とVB(exe)でadoを使ってrecordsetのやり取りをしています
一見正しく動いているように見えるのですが
メモリエラーが時々出てしまいます
やり方そのものが無謀なのでしょうか
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉




     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉



(^^)


>>727
たぶんね
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
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
> コンピュータ等のファイルに保存することを禁じます。

これかぁ。コンパイルするために保存しちゃった。うっかりしていたよ。
指摘してくれてありがとう。
752749:03/06/11 11:39
解決しました

「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
超激安アダルトDVD18禁
注文時に2ちゃんのどの板からきたか御記入ください
明日6月11日まで消費税をサービスいたします。

http://www.net-de-dvd.com/
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);
}
>>753が何でこのスレにいるのか理解に苦しむ
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");

これは新しいギャグか?
762757:03/06/11 22:14
>>761
大まじめなつもりなんですが・・。ダメなんでしょうか。
リソース名が"C:\\test.bmp"ってできたっけ?
ビットマップをLoadImageで読み込んでCBitmapにAttachしてみては?
765757:03/06/11 22:25
>>764
わかりました。ちょっと試してみます。
766757:03/06/11 22:38
書いてみましたが、なにも表示してくれません。どうしたらいいんでしょうか。
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 );

769757:03/06/11 22:56
>>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();
770757:03/06/11 23:02
あと追加で質問なんですが、ビューをスクロールしても再描画されないので、何かよい方法はないでしょうか。
771名無し@沢村:03/06/12 01:06
>>770
OnDraw()で描画する
772755:03/06/12 09:43
>>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]));
773755:03/06/12 10:19
もう1件質問がありますので、ご存じの方がいらっしゃいましたら、教えて下さい。
よろしくお願いいたします。
内容は表示される文字に色を付けたいです。
printf("入力値1:%d\n", CInt(argv[1]));
とプログラミングして、例えば画面上に「入力値1:123」と表示される部分の、
123の所だけを青色に変更したいです。
>>773
ググったら初っ端に……。
ttp://www.google.com/search?q=printf+%E8%89%B2
ANSIエスケープシーケンスは、NT系では効きませんヨ。

SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE,
FOREGROUND_BLUE);
776773:03/06/12 17:13
>>774
情報ありがとうございます。
早速検索結果一覧からいけるページに行って調べて、
試しにプログラミングしてみたのですけど、
enterキーの文字のようなものが出るだけで色がつかないです。
プログラムの書式が間違っているのでしょうか??
int test_num = 13;
printf("test_num = \x1B[34m%d\n", test_num);
ちなみにVisual C++ Ver6.0でOSはWindows2000 professionalを使っています。
VC++またはWindowsのバージョンが古いとか関係あるのか分かりませんが・・・。
猫でもわかるのこの章で可能かと

ttp://www.kumei.ne.jp/c_lang/intro/no_58.htm

それまでの章を全部理解してなくてもできますねー

>123の所だけを青色に変更したいです。
入力値1: までを普通でいれて数値を表示する直前で変更すればいいかと
そのあと戻すの忘れずにー
フォームビュー内に複数ボタンがあって、ボタン外でマウスの左ボタンを押したまま、

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にハンドル渡したい時に指定するハンドルさ
783776:03/06/13 13:03
>>777
情報有難うございます。
実験してみました所、ちゃんと色がつきました。
>>782
CMyDialog::OnInitDialog()
{
 HWND hMyDlg = GetMyHWNDPlase();
 ・・・
}
こうだ。
↑Pleaseのスペル違った鬱
786デフォルトの名無しさん:03/06/13 13:49
>>784
ありがdございまs
ちなみにm_なんとかってグローバルみたいなのなかったっけ?
787デフォルトの名無しさん:03/06/13 13:52
>>784
氏ねうじ虫が!
おまけに>>785でボケの修正格好悪いし
788デフォルトの名無しさん:03/06/13 13:55
>>784の知障のアク禁要請出してきました
789784:03/06/13 15:15
正直すまんかった(w

>>786 正解は m_hWnd 。
>>789
GetSafeHwnd()と言って欲しかったな。
オペレーターが定義されているから
*this
ボタンとかのコントロールってmanifest使えばXPスタイルにできるみたいだけど
メニューってどうやってXPスタイルにするんですか?
793デフォルトの名無しさん:03/06/14 17:43
すみません。
あるウィンドウ ハンドルから、
プッシュボタンなのかエディットなのかを判定するには
どうしたら良いでしょうか。
>>793
GetClassName()
795793:03/06/14 19:02
>>794
すみません。試してみたところ
プッシュボタン、チェックボックス、ラジオボタン、
グループボックスのウィンドウクラス名は全て「Button」です。
プッシュボタンだけ判定するにはどうしたら良いでしょうか?
>>793
GetWindowLong(GWL_STYLE)で例えばBS_PUSHBUTTONフラグが
立っていたらボタンetc
797793:03/06/14 21:07
>>796
解決しました。ありがとうございました。
798 :03/06/15 06:32
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されたところを転送すれば
いいんじゃなかろうか。
816809:03/06/15 22:52
>>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");}
みたいにする。このプログラムの場合は後から前を呼び出しているので
プロトタイプ宣言を書かなくてもエラーにならないが、前から後ろに呼び出す
パターンも絶対出てくる。
>>827
通報しますた。
830デフォルトの名無しさん:03/06/17 00:41
>>824
ありがとうございました
831デフォルトの名無しさん:03/06/17 00:51
>>829
ありがとうございました
832名無し@沢村:03/06/17 02:14
>>823
std::vector<CEdit>
まったく使いもんにならんな。

std::vector<CEdit*>
これで自動的にポインタが解放されるとは驚きだな。
833デフォルトの名無しさん:03/06/17 06:11
配列へのポインタを引数として受け取る関数内でのデバッグ時、
配列の中身を全て見るにはどうすれば良いですか?

ウォッチウィンドウにp[0],p[1]・・・等と入力すれば見れないことも無いんですが、
関数呼び出しの度に入力は辛すぎるのです。。
834_:03/06/17 06:40
>>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ってのをつかって・・・。
ってことなんですが、誰か丁寧に教えてくれませんか?
そんな聞き方で根絶丁寧に教える香具師はここには居ない。
ポイントを絞ってグ具ってから出直して来い。
>>839

一例として
http://codeguru.com/opengl/index.shtml
のサンプルを眺めていれば方針がつかめるかも。
842デフォルトの名無しさん:03/06/17 21:40
MFCでのプログラム生成をした後に、最小化・最大化・ウィンドウサイズの変更など、最初に設定した機能を変更する方法はあるでしょうか?
>>842
ある。
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();
}
848844:03/06/17 22:05
>>845
(;´Д`)意地悪しないで教えてください。
お願いします。
>>847
printfの書式指定が間違ってる。
%dは整数だ。

あとは好きなだけ調べて来い
ttp://www.google.com/search?q=printf+%E6%9B%B8%E5%BC%8F
850デフォルトの名無しさん:03/06/17 22:06
>840,841,846
ありがとうございます。
もう少し調べて的を絞ってからまた質問に来ます
851843じゃないけど:03/06/17 22:07
>>842
・最大化・最小化
 ShowWindow
・ウィンドウサイズの変更
 MoveWindow

タイトルバーのボタンならModifyStyleとかでできるんじゃないかな
852269:03/06/17 22:13
>>849
おお!
うっかりしてた!

ありがとう!
853836:03/06/17 22:48
今グレップして探したんですが、
TCHAR.H内で
#define _T __T

その前に
#define __T(x) L ## x

若しくは
#define __T(x)

となっていました。

L"ほげ" でUNICODE対応になるということですか?

ここがよく分かりませんが。
とりあえず今まで気にかかっていたものが少し解けました。
どうもありがとうございます。
aiueo
>>852
ネタかと思ったYO!
>>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
PGのひと、見てね
http://mypage.odn.ne.jp/home/dongrico
hoge = (HBRUSH*)obj;

のように明示的にキャスト汁。
ポインタじゃないだろ
874デフォルトの名無しさん:03/06/18 22:23
プログラミングのお供に・・・
http://mypage.odn.ne.jp/home/dongrico
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
'\\'
881879:03/06/19 12:39
>>880
どうもありがとうございました。
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 ?
>>885
リソースファイルを移植する。
887885:03/06/19 14:57
>>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でプログラムしています
890885:03/06/19 17:43
>>889
VC6ではプロジェクトの新規作成のときに「Win32 Console Application」を選択して
アップウィザードのステップ1/1の時に「MFCをサポートするアプリケーション」を選択すれば
Afx.hやWindows.hをインクルードしなくてもStdAfx.hでインクルードしてるから
CFileFindとかそのまま使えるようになるよ。
C++.NETはしらないけど。
VC++6でDllのデバッグしようとすると、
「ブレークポイントの位置」というメッセージが出て
ステップ実行が混合モードで止まってしまいます。

ブレークポイントを打ってなくてもこの現象がでます。
ソースを見ても何が原因かわかりません。
この現象が起こる原因をご存知の方教えて頂けないでしょうか。
892891:03/06/19 19:23
デバッグウィンドウに以下のメッセージが出ます。
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
new でインスタンスつくる
ワラタ
>>906
「プロジェクト」→「設定」→「リンク」→「アウトプット」でスタックの大きさを変えるとか。

ところで、ちょっと大きめってどれくらい?
>>910
10Mくらい。
右クリックを禁止するにはどうしたらいいですか?
>>912
AfxMessageBox("右クリックをするのはやめてね♥")
>>91
右クリックイベントを捕まえて何もせずに返す
UINTって型はunsignedなのに何故、文字列やら-1やらを入れて良いんですか??
質問なんですが、VC++でコンパイルした後にエラー0、警告0って出るんですが、これはエラーがないよって事なんですか?
>915
代入後には既に文字列や-1として扱われてないから。
>916
コンパイルエラーやリンクエラーは見当たらないという事。
バグが無いとは一言も言ってないけど。
>>917
ありがとうございました。
>>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見ようや。
931929:03/06/21 14:56
結局printfじゃ分からなかったんで、_ui64toa使った。
まぁ sprintf使って %i64u なんだけどね
933929:03/06/21 15:46
>>932
それだと、-164uと出力されてしまうんですが…俺のやり方が間違っているのか?
934デフォルトの名無しさん:03/06/21 16:30
”LIBCD.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です”
というようなエラーが出てしまいました。これはどうすれば解消されるんでしょうか?

まぁ %I64u を %i64u と間違えたわけだけどね
>>934
そのまんま、main関数がないってことでしょ。
937929:03/06/21 20:34
>>935
できました。
しかし、なんでwsprintfだと変換されなかったんだろ…
sprintfだと正常に変換できるのに。

MSDNに載ってた%I64は変換できない…
>>927
やるんであれば、 vector<cOBJ*> かと。
まぁ、やりたいことは vector<cBaseOBJ*> なんだろうけど。
>>937
LPTSTRとか理解してる?
スイマセン、文字列の結合ってどうやるんですか?
今日は休みだったので朝から、「猫でもわかる〜」を見ながら
勉強していたんですが、、、
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;
942929:03/06/22 00:32
>>939
あまりしてない。つーか、変換自体と関係あるんですか?

>>940
char StrA[10];
char StrB[10];
strcpy( StrA, "AAA" );
strcpy( StrB, "BBB" );

strcat( StrA, StrB );

StrA の内容「AAABBB」になる。
これじゃ駄目?
>>940
char StrA にchar StrB

もう満杯でーす
944940:03/06/22 00:45
940です。
皆さん早速ありがとうございます。
>>941さん
コンパイルしたらエラー 14、警告 3
'using' : 定義されていない識別子です。

なんか根本的に間違ってるんですね。

>>942さん
やはりその方法も使えるのですね。
使い方が間違っているんですね。

>>943さん
すみません、ちょっとわからないです。

皆さんありがとうございます。
ヒントを元に調べてみます。
>>944
>>943はchar StrA にchar StrBだと文字型の変数になるから、
一文字しか入れれなくて満杯だといってんじゃねーのか?
>>944
拡張子を .c から .cpp に変える。
文字列の結合がしたいと言いながら実際にやりたいのは文字の結合ってか
はははあっははははっはははhっははははっはh
949940:03/06/22 11:42
どうも皆さんありがとうございます。
拡張子cでした。すいません。

「文字型の変数」ですか。
文字列、文字、配列、ポインタ、あたりで調べてるんですが、
どうもperlで楽しすぎたせいかますます混乱してます。

いろいろありがとうございます。
ヒントも沢山もらったので、
今日は文字の扱いを中心に調べたいと思います。
↓次スレよろしこ。
↓   ↑
→→→→
│次スレよろ。
│    ┌─┐
↓    │  ↓

↓ 無理ですた。
954 ◆kom52wwBZ6 :03/06/22 20:04
行ってみる
955 ◆kom52wwBZ6 :03/06/22 20:16
★初心者にVisual C++を教えるスレ★ Part7
http://pc2.2ch.net/test/read.cgi/tech/1056280510/l50
そういえば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を選んだ時とか。
964963:03/06/23 15:24
あーじゃちがうね。
965960:03/06/23 15:28
>>963
ありがとうございます。

>これはプロジェクトの選択を間違った時に良く出るが・・・。
ですよね(--);;
エディタのMFCアプリなのですが、ユニコードでテストしてみようと
思ったのですが...
もうちょっといろいろいじくってみますネ。。。
継承をはずして_UNICODEを追加してみたけど、何の問題もなくコンパイル完了
967960:03/06/23 15:35
>>966
ですか。。。
僕もいま単純なMFCアプリ(FrameWndを表示するだけ)で
やってみたのですが、やはり同じエラーが出ます。
なんでだろう。。。
そういえばMFCを使っているのなら、MFC*U.*系のdllなりlibなりを使わないとエラーが出るけど
969960:03/06/23 15:57
>>968
U系のLibは自分でプロジェクト設定のリンクタブで指定
しないとダメでしょうか?(一応mfc42ud.libと書いてみたのですが
やはりダメでした)
970960:03/06/23 16:21
なんどもしみません。訳がわからないのですが
解決しました。
UNICODEで動いている他のプロジェクトで、プロジェクト
の設定のリンクタブのアウトプットのエントリポイント
シンボルに"wWinMainCRTStartup"と書いてあったので
それをマネしたら動きました。
レスを下さった方ありがとうございました。m(__)m
971デフォルトの名無しさん:03/06/23 16:53
VCでつくられたプロジェクトで、それがDLLなのか
exeなのかといったプロジェクトの属性を知るには
どうすればいいのでしょうか?
どの場面で知りたいの?
プロジェクト作成のときに、DLLかWinアプリかの指定
がありますが、それを知りたいです。
dswファイルを開いた時点で知りたいのですが...
VS.NETならプロジェクトプロパティから構成の種類で分かるけど、
古いのは手元にないので何ともいえない
975971:03/06/23 17:24
>>974
ほんとですね。VS.NETだと「構成の種類」として
出ていますね。
VS6.0だと出ていません。
976デフォルトの名無しさん:03/06/23 19:33
質問させて!
memsetで変数に文字列を入れてMessageBoxで表示させると、

hogehogehoge・・・・

と、末尾に ・・・・ というのが入ってしまいます。
これを取り除くにはどうすればよいのでしょうか?
977976:03/06/23 19:35
しくった、memsetではなく、 memcpy で変数から変数へコピーしてます。
>>977
strcpyを使え!
でなければmemsetで変数を初期化しろ!
979デフォルトの名無しさん:03/06/23 20:18
スマソ!事故解決!
\0 の入れかた間違ってた!
ほんとスマソ!ソマソ!
tomasson
int型の配列をまとめてある数値に初期化する関数はありますか?
>>981
FillMemoryが使えるかも
コモンダイアログを開くと、実行は問題ないのですが、デバッグのログに
例外処理 (初回) は test.exe (KERNEL32.DLL) にあります: 0x000006B5: (名前がありません)。
と出てくるのですが、何か問題あるのでしょうか。

OPENFILENAME構造体の
.lStructSize .hwndOwner .hInstance .nFilterIndex .lpstrFile .nMaxFile .lpstrFilter .lpstrTitle
.Flags .lpstrDefExt
には値を入れています。
>>982
サンクス!!
>>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[])
{
・・・・・
}
987986:03/06/25 22:10
プロジェクトのプロパティで拡張マネージを変更したら解決しました
スマソ
988デフォルトの名無しさん:03/06/25 22:20
おばんです。
おせてくそ。
スタティックライブラリでできる*.libファイルと
dllプロジェクトでできる*.libファイルは、前者は
実装入りで、後者は実装なし(実装はDLL本体内)と
いう解釈でいいのでしょうか?
またなぜリンカはdllを直接参照せずにlibファイルを
必要とするのでしょうか?
989初心者:03/06/25 22:52
/* 文字列に代入された数値データを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"; なぜ*がいるんですか?
>>989
壮大にスレ違い。Cスレ池。
>988
DLLには序列でしか公開していないものもある。
992988:03/06/25 23:39
>>991
なるほど。すべてのdllが自身がエクスポートしている
関数の名前を見せてくれるワケではないんですネ。
どもどもでした。。。
993デフォルトの名無しさん:03/06/26 00:17
VCがいつのまにか上書きモードになって
しまうのですが(ミスタッチで)
いい方法はないでつか?
Insertキーをぶっ壊せ
995デフォルトの名無しさん:03/06/26 00:33
■■■かわいそうな「ゲーム君」を2ちゃんの力でトップにしよう!■■■
                
HSPプログラムコンテスト2003オンライン投票                   
http://www.onionsoft.net/hsp/contest2003/entryn1.html
 
HSPプログラムコンテスト2003に一番乗りで出展したものの
Windowsに標準でついてくるゲームを手軽に起動できるという(というかただのショートカットつめあわせ)
しょーもないプログラムでたたかれまくっているプログラミング暦3年(!)の高校生の
作品、ゲーム君をみんなの力で一位にしよう。
【【【 投票方法 】】】            
http://www.onionsoft.net/hsp/contest2003/entryn1.html の一番下、エントリーNo8の「ゲーム君」
評価を「A」で選んでコメントを記入して「送信」(コメントいれるとなおよし)           
http://www.onionsoft.net/hsp/contest2003/eval/eval.cgi?md=cmt&id=8
でいままで送信されたコメントが見えるよ!(けっこう笑える)                       
996デフォルトの名無しさん:03/06/26 00:37
このスレってBorland C++ Builderもいい?
「この」スレだけならいい。
次スレは不可(w
>>993 キーカスタマイズ汁
       , --- 、_
      /ミミミヾヾヽ、_
   ∠ヾヾヾヾヾヾ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〜!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。