★初心者にVisual C++を教えるスレ★ Part23
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/02/24(金) 01:24:53Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。
■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう。
・できるだけ具体的に。
質問の仕方については次のページが大変参考になります。
http://www.hyuki.com/writing/techask.html
http://www.geocities.co.jp/Beautycare/4965/public/template.html
http://myu.daa.jp/osiete/
■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
(MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。
過去スレ、関連スレなどは>>2-5。
0002デフォルトの名無しさん
2006/02/24(金) 01:25:47Part22 ttp://pc8.2ch.net/test/read.cgi/tech/1131443284/
Part21 ttp://pc8.2ch.net/test/read.cgi/tech/1124806288/
Part20 ttp://pc8.2ch.net/test/read.cgi/tech/1120222322/
Part19 ttp://pc8.2ch.net/test/read.cgi/tech/1116209988/
Part18 ttp://pc8.2ch.net/test/read.cgi/tech/1113539594/
Part17 ttp://pc8.2ch.net/test/read.cgi/tech/1107926989/
Part16 ttp://pc8.2ch.net/test/read.cgi/tech/1101022051/
Part15 ttp://pc5.2ch.net/test/read.cgi/tech/1097880265/
Part14 ttp://pc5.2ch.net/test/read.cgi/tech/1093672937/
Part13 ttp://pc5.2ch.net/test/read.cgi/tech/1089011118/
Part12 ttp://pc5.2ch.net/test/read.cgi/tech/1083585833/
Part11 ttp://pc5.2ch.net/test/read.cgi/tech/1077965179/
Part10 ttp://pc5.2ch.net/test/read.cgi/tech/1074933908/ ※
Part09 ttp://pc5.2ch.net/test/read.cgi/tech/1068983609/ ※
Part08 ttp://pc5.2ch.net/tech/kako/1063/10630/1063029371.html
Part07 ttp://pc5.2ch.net/tech/kako/1056/10562/1056280510.html
Part06 ttp://pc5.2ch.net/tech/kako/1052/10529/1052931903.html
Part05 ttp://pc5.2ch.net/tech/kako/1048/10486/1048698321.html
Part04 ttp://pc5.2ch.net/tech/kako/1044/10441/1044196393.html
Part03 ttp://pc5.2ch.net/tech/kako/1038/10381/1038160750.html
Part02 ttp://pc3.2ch.net/tech/kako/1030/10309/1030985362.html
Part01 ttp://pc3.2ch.net/tech/kako/1023/10235/1023530449.html
0003デフォルトの名無しさん
2006/02/24(金) 01:29:12■MFC相談室 mfc15d.dll■
http://pc8.2ch.net/test/read.cgi/tech/1131958904/
Win32API質問箱 Build40
http://pc8.2ch.net/test/read.cgi/tech/1138893959/
鬱だ氏のう DirectX (Part 16)
http://pc8.2ch.net/test/read.cgi/tech/1133007002/
C言語なら俺に聞け! Part 122
http://pc8.2ch.net/test/read.cgi/tech/1139570025/
C++相談室 part47
http://pc8.2ch.net/test/read.cgi/tech/1139931895/
C/C++の宿題を片付けます 61代目
http://pc8.2ch.net/test/read.cgi/tech/1140039002/
【初心者歓迎】C/C++室 Ver.24【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1135828083/
【関連サイト】
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
MSDN ライブラリ ※変更された
http://msdn.microsoft.com/library/ja/
Platform SDK Update ※変更された
http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
http://www.google.co.jp/
0004デフォルトの名無しさん
2006/02/24(金) 01:30:19part 1 ttp://piza.2ch.net/tech/kako/970/970607517.html
part 2 ttp://piza.2ch.net/tech/kako/981/981630730.html
part 3 ttp://piza2.2ch.net/tech/kako/993/993186053.html
part 4 ttp://pc.2ch.net/tech/kako/1002/10021/1002165477.html
part 5 ttp://pc.2ch.net/tech/kako/1006/10068/1006834463.html
part 6 ttp://pc.2ch.net/tech/kako/1011/10116/1011615035.html
part 7 ttp://pc.2ch.net/tech/kako/1017/10178/1017843192.html
part 8 ttp://pc.2ch.net/tech/kako/1022/10224/1022499000.html
part 9 ttp://pc5.2ch.net/tech/kako/1036/10368/1036897197.html
0005デフォルトの名無しさん
2006/02/24(金) 11:16:240006デフォルトの名無しさん
2006/02/24(金) 20:30:21VC++.net2003です
0007デフォルトの名無しさん
2006/02/24(金) 20:30:520008デフォルトの名無しさん
2006/02/24(金) 20:40:20プロジェクトのプロパティからリンカの入力の追加の依存ファイルのところ。
構成に気を付けて設定すること。
0009デフォルトの名無しさん
2006/02/24(金) 20:56:09gdi;pus.libを追加したらうまくいきました。構成に気をつけるっていうのは
何を気にするんですか?
0010デフォルトの名無しさん
2006/02/24(金) 21:05:58デバッグ構成だけにlibを追加していてリリース時にエラーになって騒いだり、
デバッグとリリースで別libファイルなのに両方ともデバッグ版を指定してエラーになって騒いだりという人がいる。
0011デフォルトの名無しさん
2006/02/24(金) 21:14:46public __gc class Form1 : public System::Windows::Forms::Form
{ public: CString test;
.....
}
で、error C3633: マネージ '<不明>' のメンバとして '<不明>' を定義できません。変換には reinterpret_cast が必要です。
と出るのですが、どうすればいいのでしょうか?
VisualC++ 2003です。
0012デフォルトの名無しさん
2006/02/24(金) 21:31:41gcクラスはアンマネージドクラスを持てないはず。
0013デフォルトの名無しさん
2006/02/24(金) 21:36:36ではこの中でCStringは使えないのでしょうか?
0014デフォルトの名無しさん
2006/02/24(金) 21:51:400015デフォルトの名無しさん
2006/02/24(金) 21:54:28ライブラリをリンクしないと使えないヘッダファイルは、
#pragma comment(lib, "hogehoge")
を書いておいてほしいよね。
0016デフォルトの名無しさん
2006/02/24(金) 21:57:210017デフォルトの名無しさん
2006/02/24(金) 23:24:56CStringはMFC/ATLです
>>11はどう見ても.NETです、本当に(ry
0018デフォルトの名無しさん
2006/02/25(土) 03:09:09戻り値(文字列型)の取得方法について教えてください。
int型などは以下で戻り値を取得できたのですが
jint iRtn = jni_env->CallStaticIntMethod( j_class, j_methodId );
以下のようなString[][]を返すJava関数を呼んだ時は
VC++側でどのように取得すればよいのでしょうか?
jobjectなどでいろいろ試したのですが行き詰まりました。。
static string[][] getStringTest() {
String[][] str = { {"aa","bb"}, {"cc","dd"}, {"ee","ff"} };
return str;
}
0019デフォルトの名無しさん
2006/02/25(土) 10:10:26Javaスレで訊いた方がいいんで内科医?
002011
2006/02/25(土) 10:15:12ありがとうございました。
0021デフォルトの名無しさん
2006/02/25(土) 18:29:58CLRからWindowsフォームアプリケーションを選択してプログラムの
学習をしています
外観はFormに、buttonとtextboxを一個ずつ貼り付けた形です
やりたいことは、テキストボックスに文字を入力して、ボタンを押したら
input.txtというファイルに入力した文字を書き込みたいのですが
どの様に書いたらいいでしょうか、よろしくお願いします
0022input.txtに書き出すように書けばいい
2006/02/25(土) 18:35:23まずは本でも買って勉強しろ
0023デフォルトの名無しさん
2006/02/25(土) 18:52:42くだすれに池
0024デフォルトの名無しさん
2006/02/26(日) 00:37:52VC++2005 Express Edition落としてC++のプログラム始めようとしてるんですが、
買った初心者向けの本(VS2003用)や、ネットのサイトは基本的に最初はMFCを使ったプログラムです。
ExpressにはMFCは同梱されていないようで、のっけからつまづいてる状況です。
ExpressにMFCを追加するのは可能ですか?Standard買えって話でしょうか。
0025デフォルトの名無しさん
2006/02/26(日) 00:40:230026デフォルトの名無しさん
2006/02/26(日) 00:53:56或いはMFCを使わないWindowsプログラムの本を買うと言う手もある。
0027デフォルトの名無しさん
2006/02/26(日) 01:00:46ども。どっちか買ってきます。
0028デフォルトの名無しさん
2006/02/26(日) 08:43:04読み込んでバイナリーで表示したいのですが。
0029デフォルトの名無しさん
2006/02/26(日) 09:15:10ですがなんでしょうか。
0030デフォルトの名無しさん
2006/02/26(日) 09:34:250031デフォルトの名無しさん
2006/02/26(日) 15:13:47+Rootディレクトリ //ルートのディレクトリ
+コンポーネントディレクトリ //コンポーネントなくラスが入ってるディレクトリ
+ネットワークディレクトリ //ネットワーク用のクラスが入ってるディレクトリ
+ベースディレクトリ //ネットワークの基本的なクラスが入っているry
このようにクラスのファイルをフォルダ分けして整理したいのですが、
ベースディレクトリに入っているファイルから、コンポーネントディレクトリに入ってるファイルをインクルードしたいときに
#include "./../コンポーネントディレクトリ/Component1.h"
と書くのではなく
#include "Rootディレクトリ/コンポーネントディレクトリ/Component1.h"
とは書けないのでしょうか?
0032デフォルトの名無しさん
2006/02/26(日) 15:20:17書けます。そりゃもう、好きなように書けますとも。
それ相応のMakefileかプロジェクトの設定をする手間を厭わなければ。
0033843
2006/02/26(日) 15:53:59>>それ相応のMakefileかプロジェクトの設定をする手間を厭わなければ
ということは皆さんはこのようにフォルダ分けをしていない方が多いのでしょうか?
つーか、しないのが普通?
0034デフォルトの名無しさん
2006/02/26(日) 17:27:130035デフォルトの名無しさん
2006/02/26(日) 18:28:570036デフォルトの名無しさん
2006/02/28(火) 09:25:53親を選んだら、即座に子を選択したいのですが、
例えば、ABCをクリックしたらDEFが選択される・・・
ABC
DEF
GHI
JKL
MNO
丁度VS2003のオプション画面の様な動きをさせたいのです。
なにか良い方法はありますでしょうか?
(シングルクリックで子が開く様、Single ExpandはTrueにしてあります)
0037デフォルトの名無しさん
2006/02/28(火) 09:33:270038デフォルトの名無しさん
2006/02/28(火) 09:37:06っ[TreeView_Select]
003936
2006/02/28(火) 09:44:44もしかしたら、プロパティにそういう設定があるのかと思いまして・・・
コーディングでがんばります
0040デフォルトの名無しさん
2006/02/28(火) 15:56:10DropDownListスタイルでComboBoxを使っているのですが、初期値を上手く設定できません。
SelectedIndexを使っても、デザイン画面とコード画面を切り替えたりしている間にいつの間にか消えてしまいます。
どうすれば上手く設定できるのでしょうか。
0041デフォルトの名無しさん
2006/03/01(水) 21:43:440042デフォルトの名無しさん
2006/03/01(水) 22:01:07見えないボタン(下のピクチャーが表示できるように)を設置する方法ってありますか?
visibleをFalseにするとボタンの存在自体がなくなってしまうので・・・。
0043デフォルトの名無しさん
2006/03/01(水) 22:16:410044デフォルトの名無しさん
2006/03/01(水) 22:17:060045デフォルトの名無しさん
2006/03/01(水) 22:24:45ていうか邪魔
0046デフォルトの名無しさん
2006/03/01(水) 22:25:06自分でファイルいじって書き換える
0047デフォルトの名無しさん
2006/03/01(水) 22:27:21フラットにして絵を貼れば
0048デフォルトの名無しさん
2006/03/01(水) 22:49:15それやってみたんですが、やりかたまずかったらしくてプロジェクトが開けなくなってしまったんですが。
具体的にどのファイルのどこを書き換えればいいかわかりますか?
0049デフォルトの名無しさん
2006/03/01(水) 22:55:460050デフォルトの名無しさん
2006/03/01(水) 23:21:51ぜひ教えてください!お願いします。
0051デフォルトの名無しさん
2006/03/01(水) 23:24:320052デフォルトの名無しさん
2006/03/01(水) 23:27:56005342
2006/03/01(水) 23:35:44TransParentで目的が達成できることが分かりました。
>>43
見えないボタンという表現が良くありませんでした。失礼しました。
ボタン等を透明にする方法を知りたかったのです。
>>45
ピクチャーの一部をクリックするとイベントが起こるようなプログラムに
したいと思っています。別にボタンじゃなくてもいいです・・・。
>>47
そうするとジグゾーパズルみたいになるので、透明の方法を探してました。
駄レス失礼しました。
0054デフォルトの名無しさん
2006/03/01(水) 23:36:170055デフォルトの名無しさん
2006/03/01(水) 23:59:42クラス名のほうがソースとヘッダをいじるだけだからはるかに簡単だと思うんですが。
0056デフォルトの名無しさん
2006/03/02(木) 01:07:28プロジェクトファイル書き換えるだけだが。
0057デフォルトの名無しさん
2006/03/02(木) 01:07:45どこら辺にマルチされてるん?マルチっぽかったら答えるのやめよと思うんだけど。
0058デフォルトの名無しさん
2006/03/02(木) 01:13:08OKWave
0059デフォルトの名無しさん
2006/03/02(木) 01:21:17情報ありがとー!本当だ。スルーします。
0060デフォルトの名無しさん
2006/03/05(日) 21:43:09OPENFILENAME構造体のlpstrFileが
LPTSTR型からLPWSTR型に変わっているみたいで困っています。
どなたか解決法をご存じないでしょうか?
0061デフォルトの名無しさん
2006/03/05(日) 21:48:320062デフォルトの名無しさん
2006/03/05(日) 21:52:09#undef UNICODE
0063デフォルトの名無しさん
2006/03/05(日) 21:53:552005でもLPTSTRだよ。
設定次第でLPSTRにもLPWSTRにもなるのがLP*T*STR。
プロジェクトの設定でマルチバイトを使用するようするのは一時的な回避手段だと心得ておくべき。
0064デフォルトの名無しさん
2006/03/05(日) 22:08:29レスどうもありがとうございます。
マルチバイト文字セットを使うようにしたらコンパイル通りました。
今までVS2003を使っていた時は普通にコンパイル通っていて、
型の意味などは特に意識しておらず、どうしたらよいか全然分かりませんでした。
みなさん本当にどうもありがとうございました。
0065デフォルトの名無しさん
2006/03/05(日) 22:44:08VS2005はデフォルトがUNICODE(typedef LPTSTR LPWSTR)
ただそれだけのお話
0066デフォルトの名無しさん
2006/03/06(月) 08:31:22プロジェクト作るたびにいろんな設定 OFF にしまくり・・・
デフォルトの設定自体をいじることってできたっけ?
006765
2006/03/06(月) 09:10:590068デフォルトの名無しさん
2006/03/06(月) 11:16:07MFC ActiveX ControlWizardの「このプロジェクトのコントロールにランタイム ライセンスをつけますか?」
のところを「ランタイムライセンスなし」で作成してしまいました。
あとになってつける必要ができたのでつけたいのですが、この場合、プロジェクトを再度
作成するしかないのでしょうか?どこかに設定があるのでしょうか?
0069デフォルトの名無しさん
2006/03/06(月) 11:18:33変数名や関数名にマウスのポインタを当ててポプアップするヒントがありますよね。
あれが、特定の関数の、特定の行から出なくなっちゃったんですけど、
なんでですか?
0070デフォルトの名無しさん
2006/03/06(月) 13:12:372005になって慌てているほうが間抜け。
どーんと構えていれば問題ない。
0071デフォルトの名無しさん
2006/03/06(月) 13:25:15その行の前にミスがあったりすると出なくなる事があるような気がする。
0072デフォルトの名無しさん
2006/03/06(月) 15:19:07ビルドも通ってるから明らかなミスは無いんですけどね、
2行前の変数宣言を1行から2行に分けて書いたら治った。
分けが分からん。
0073デフォルトの名無しさん
2006/03/06(月) 15:23:09まぁ、MSの作るIDEはどうも変な動作が多いからな
_TEXT("")構文使って日本語入力するとクイックヒントが戻らなくなったりな
0074デフォルトの名無しさん
2006/03/06(月) 17:22:360075デフォルトの名無しさん
2006/03/06(月) 19:34:55「Visual Studio 6.0」とWebアプリケーション開発ツール「Visual InterDev 6.0」本体に、
バッファオーバーフローの脆弱性が存在する。パッチは存在しない。
http://www.itmedia.co.jp/enterprise/articles/0603/06/news039.html
0076デフォルトの名無しさん
2006/03/06(月) 20:39:24しばらく固まったままになってしまうのです。大体30秒から1分ほどすると
何事も無かったようにようやくデバッグが動き出すんです。
いったいなぜ?
0077デフォルトの名無しさん
2006/03/06(月) 22:12:360078デフォルトの名無しさん
2006/03/07(火) 00:02:420079デフォルトの名無しさん
2006/03/07(火) 00:04:571MBじゃなくて、1GB確保しててワロタことがあったな
008076
2006/03/07(火) 00:19:06ひょっとして既出の問題なのかなと思ったけど、うち固有の問題みたいですね。
マシンのメモリは1G積んでて、P4 2.4GHzなんです。
セカンドマシンの、P3 800MHz 128M ではなんとも無いんですこれが。
プロジェクトに関係なく固まるのでプログラムのバグじゃないです。
ノートンか、それともVC2003再インスコしてみよう。
0081デフォルトの名無しさん
2006/03/07(火) 01:12:50プロジェクトを作る時【Win32 プロジェクト】っていうの選んで作っています
いまコモンコントロールのリストビューをCreateWindowで作る途中なんですが
プロジェクト作るときの自動生成されるコードについて質問があります
コモンコントロールを使うための
【#include<commctrl.h>】【#pragma comment(lib, "comctl32.lib")】
などの文を【stdafx.hまたはcpp】(自動生成された)に書かず、
【プロジェクト名.cpp】に直接書くとエラーが発生してLV_COLUMN構造体などが
定義されていないとでます、これはなぜなんでしょうか?
それと自動生成されたコードのWinMainは【int APIENTRY _tWinMain(..】
のようになっています、これはなんなんでしょうか?
もしわかる方がいたら、答えてもらえるとサイワイです!
自分の知識レベルは猫でもわかるWindowsプログラミングを読めるくらいです。
0082デフォルトの名無しさん
2006/03/07(火) 01:40:240083デフォルトの名無しさん
2006/03/07(火) 01:42:47ダイアログベースのMFCです。
ワーカースレッドなるもので、とある処理をさせています。
ここまでは無事完成したのです。
そしてその処理結果をエディットボックスに表示させたいのですが、
ワーカースレッド中の処理の終わりに、エディットボックスに割り当てたDDX変数に文字列を代入して
UpdateData(FALSE);するとそこでアサートしてしまいます。
wincore.cpp の 889行目、ASSERT((CWnd*)p == this); // must be us
だそうです。うん、よく分からない。
そこでワーカースレッドが処理を終わった頃を見計らって、
ワーカースレッドの外でUpdateData(FALSE)すればいいんじゃないか
と思ったのですが、いつワーカースレッドが終わったのか、どうやって知ればいいのかが分かりません。
SPY++で見ていてもそれらしきメッセージも見当たりませんでした。
ど、どうすれば・・・
0084デフォルトの名無しさん
2006/03/07(火) 01:47:57008583
2006/03/07(火) 01:59:36>>84
それもいいですね。ありがとう、気づかんかった。酒飲み過ぎた
0086デフォルトの名無しさん
2006/03/07(火) 03:27:25スレッドハンドルはイベントオブジェクトだから、ハンドルがあれば終了チェックが出来る。
Win32 APIだよ。わかる? わかんなかったら自分で調べてね。
0087デフォルトの名無しさん
2006/03/07(火) 07:51:56APIENTRYはWINAPIと同じ意味。
_tWinMainは3番目の引数に対してWinAPIと同じようにTCHARを使うようにしたもの。
008883
2006/03/07(火) 10:57:49に>>84と同じヒントが書いてあった。ごめん。
>>86これまた情報ありがとう。調べてみる。
0089デフォルトの名無しさん
2006/03/07(火) 13:30:26誰 で も 読 め ま す
0090デフォルトの名無しさん
2006/03/07(火) 14:17:140091デフォルトの名無しさん
2006/03/07(火) 14:23:440092デフォルトの名無しさん
2006/03/07(火) 15:04:460093デフォルトの名無しさん
2006/03/07(火) 19:50:580094デフォルトの名無しさん
2006/03/07(火) 22:25:24その位置や大きさを数値で直接指定できませんか?
リソースを直接編集やコーディング以外で。
0095デフォルトの名無しさん
2006/03/07(火) 22:28:160096デフォルトの名無しさん
2006/03/07(火) 23:34:53構成設定ファイルなかったかなあ?なんか昔客に尋ねられて調べたような
しらべてないような。
0097デフォルトの名無しさん
2006/03/08(水) 09:03:570098デフォルトの名無しさん
2006/03/08(水) 09:53:540099デフォルトの名無しさん
2006/03/08(水) 10:14:45プロパティで座標が指定できそうな気がするけど
VC6使ってるからよくわからん。
0100デフォルトの名無しさん
2006/03/08(水) 12:43:340101デフォルトの名無しさん
2006/03/08(水) 12:56:47高さ方向の位置、微妙に合わないので嫌になります
010294
2006/03/08(水) 12:57:23適当に配置してコーディングで位置決めするから。
でもウィンドウ固定のアプリやダイアログで、みんなどうやって大きさ決めてるんですか?
リソースエディタで適当に配置?やっぱり大きさは切りのいい数値じゃないと気持ち悪いんですが。
VS7.1のリソースエディタじゃ正方形のボタンを配置するだけでも苦労する。
0103デフォルトの名無しさん
2006/03/08(水) 13:02:530104デフォルトの名無しさん
2006/03/08(水) 13:03:400105デフォルトの名無しさん
2006/03/08(水) 13:54:02ld:Undefined symbols:
_answer_check
というエラーが出るのですがこの原因がよくわかりません。
マックでemacsでやっています。
どなたかわかりましたら教えていただきたいです。
よろしくお願いします
0106デフォルトの名無しさん
2006/03/08(水) 13:56:17一度なんて堅いこと言わずに、300回ほど死んだら?
0107デフォルトの名無しさん
2006/03/08(水) 14:35:010108デフォルトの名無しさん
2006/03/08(水) 14:40:040109デフォルトの名無しさん
2006/03/08(水) 18:59:170110デフォルトの名無しさん
2006/03/10(金) 11:42:29という文字列を対象に
CString a, b ,c にそれぞれ
a = "111", b = "222", c = "333" と格納したい場合は、どうすれば良いですか?
_stscanfを使いたいんですが、使い方がいまいち分かりまへん。
0111デフォルトの名無しさん
2006/03/10(金) 11:55:46CStringT::Tokenize
0112デフォルトの名無しさん
2006/03/10(金) 12:02:47でも、ぐるぐる回すのではなく、一発で出来ないものでしょうか。
_stscanf(items, _T("%s %s %s"), a, b, c);
どうもこれだと、うまく取れないのですが
0113デフォルトの名無しさん
2006/03/10(金) 12:20:390114112
2006/03/10(金) 13:05:04有難うございました。TCHARの配列で受け取ることにします。
0115デフォルトの名無しさん
2006/03/10(金) 18:39:431>リンクしています...
1>マニフェストを埋め込んでいます...
1>プロジェクト : error PRJ0002 : エラーの結果 1 が 'C:\WINDOWS\system32\cmd.exe' より返されました。
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========
VC2005でビルドするとこんなかんじでエラーします。
VC6では動いていたんですが・・・
どうすれば、ビルドできますか?
0116デフォルトの名無しさん
2006/03/10(金) 18:48:030117デフォルトの名無しさん
2006/03/10(金) 18:58:470118デフォルトの名無しさん
2006/03/10(金) 19:50:57つ正露丸
0119デフォルトの名無しさん
2006/03/11(土) 00:50:00マニフェストを埋め込んだ後エラーになっているのだから、
まずはマニフェストの埋め込みで何かが起こっていると考えるべきだ。
しかもVC6にマニフェストなんて無かった。
だからVC6では上手くいくのも説明が付きそうな気がするだろ。
0120デフォルトの名無しさん
2006/03/11(土) 02:24:36したいのですが、動作させるマシンにより、動くマシンと動かないマシンが
出てきてしまいました。
・ActiveXはウィザードで作成し、そのままビルドしたもの。なのでメソッドはAboutBox()しかありません。
・HTMLはこんな感じです
<html>
<object id="hoge"
codebase="http://サーバURL/hoge.cab#version=1,0,0,1
classid="CLSID:クラスID>
</object>
<body onload=hogehoge()>
<sctipt language="javascript">
function hogehoge()
{
hoge.AboutBox();
}
</script>
</body>
</html>
0121120
2006/03/11(土) 02:25:07動かないマシンだとランタイムエラー
「オブジェクトにてサポートされていないプロパティまたはメソッドです
コード:0」
が出力されてしまいます。
環境が違っているのかと思い、OSやIEのバージョン等調査したのですが、
どちらも同じでした。
ほかに問題があるとすると、どのあたりに原因があるのでしょうか?
教えてください。
ちなみに、環境は
OS:Windows2000 SP4
IE:Version6.0.2800.1106
IEパッチ:Q832894,Q831167,Q837009,Q867801,Q833989,Q903235
です。
もちろんインターネットオプションのセキュリティ等は設定済みです。
(信頼済みサイトにサーバを登録)
長々と書いて申し訳ありませんが、よろしくお願いいたします。
また板違いでしたらすみません。
0122デフォルトの名無しさん
2006/03/11(土) 14:48:32例えばプロジェクト全体が入っているのがHogeフォルダだとして、
この直下に.dswとか.dspとかが入ってます。
で、Hogeの中に直にヘッダやらソースが増えてきたので、
Hogeの中にフォルダをいくつか作ってその中にヘッダとソースを分野ごとに仕訳しました。
main.cppなどメイン部分をMainフォルダ、グラフィック部分はGraphフォルダ、といった具合にです。
そうした時に、Mainのフォルダに入っているソースから
Graphフォルダの中のヘッダなどをインクルードしようとしたときに
見つけられないみたいでコンパイルするとエラーになるのですが、
こういうときはどうやって#includeを書いたらよいでしょうか?
0123デフォルトの名無しさん
2006/03/11(土) 14:52:09DOSと同じ相対パス指定でおk
0124デフォルトの名無しさん
2006/03/11(土) 15:06:42あれ、いけました。すいませんありがとうございました。
0125デフォルトの名無しさん
2006/03/11(土) 18:24:10コンパイルエラーのメッセージとか
アホにも分かりやすく親切になってたりしますか?
0126デフォルトの名無しさん
2006/03/11(土) 18:46:540127デフォルトの名無しさん
2006/03/11(土) 18:51:130128デフォルトの名無しさん
2006/03/11(土) 21:20:50本当に分からず、こまってます。
C++3版読んでもよく分かりません。
0129デフォルトの名無しさん
2006/03/11(土) 21:53:22visual C++ 2005 Express を使い始めました。
PlaySound関数を使いたいので
リンカに「winmm.lib」を追加し、#include <Mmsystem.h>と書いてるんですが
ビルドすると
「fatal error C1083: include ファイルを開けません。'Mmsystem.h': No such file or directory」
になります。
いったいどうすれば良いのか途方にくれています。
どなたか教えてください。
0130デフォルトの名無しさん
2006/03/11(土) 22:06:43Mmsystem.hが本当にあるか調べる
0131デフォルトの名無しさん
2006/03/11(土) 22:26:47Mmsystem.hが無いとPlaySound関数は使えないのでしょうか?
0132デフォルトの名無しさん
2006/03/11(土) 22:43:030133デフォルトの名無しさん
2006/03/11(土) 22:46:54Platform SDKはインストールしたか?
0134デフォルトの名無しさん
2006/03/11(土) 22:57:30なるほどこれですか。
さっそくDLします。ありがとうございます。
0135129
2006/03/12(日) 08:11:03mmsystem.hもincludeさせたんですが、ビルドすると
>>error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
というエラーメッセージが大量に出てきます。
どうすればよいのでしょうか?
0136デフォルトの名無しさん
2006/03/12(日) 09:04:06そのエラーになってる行のコードを貼り付けてみるとよいかもしれん。
0137デフォルトの名無しさん
2006/03/12(日) 20:41:25CHogeのコンストラクタのなかで
m_wtext.empty();
m_wtext = L"あああ";
MessageBox(NULL,narrow(m_wtext).c_str(),"",NULL);
のようなことをしてみると、なぜか文字列がヘヘヘヘへ・・・・ンンンンのように既に壊れて表示されます。
narrowはCHogeの基底クラスで定義されている、wstringをstringに変換する関数です。
string CBase::narrow(const wstring& input) {
char* buffer = new char[input.size() * MB_CUR_MAX + 1];
wcstombs(buffer, input.c_str(), input.size() * MB_CUR_MAX + 1);
string result = buffer;
delete[] buffer;
return result;
}
別のもっと単純なアプリの中で同じ事を試しても問題はでないのですが、
なぜか今回ちょっと大きめなプロジェクトに組み込んでみたところおかしくなりました。
アプリごとの何かしらの動作順序の違いかなにかでこういうことは起こり得ることでしょうか?
でもコンストラクタのなかで関数を一個挟んだだけなのにアプリによって違いがでるというのは
理由がさっぱりわかりません。何かここが怪しげってところがあったら教えてください。
環境はW2k VC6.0++です。よろしくお願いします。
0138137
2006/03/12(日) 20:42:130139デフォルトの名無しさん
2006/03/14(火) 01:26:32モーダルダイアログのように呼び出したダイアログ以外をロックしてしまい、
モードレスダイアログを常にトップに表示したいのですが、
どうするのがベストでしょうか。
今は、モードレスダイアログがときどき後ろに隠れてしまいます。
0140デフォルトの名無しさん
2006/03/14(火) 01:34:200141デフォルトの名無しさん
2006/03/14(火) 07:33:46SetForegroundWindow
ただし、いかなる場合でもEnableWindowで無効化を解除できるようにコーディングしろよ
さもないと、ダイアログ閉じたら二度とアプリが操作できなくなるからな
0142デフォルトの名無しさん
2006/03/14(火) 10:08:010143デフォルトの名無しさん
2006/03/15(水) 22:48:40切り取りやDelしても消えないんだけど…
0144143
2006/03/15(水) 22:59:490145デフォルトの名無しさん
2006/03/16(木) 12:50:58ていうかもうしてしまいました。
どうしたらいいですか?
0146デフォルトの名無しさん
2006/03/16(木) 13:29:47MFCでフォームビューのシングルドキュメントのアプリを作っています。
最初に作成されたウインドウに貼り付けたコントロールの類は正常動作するのですが、
そこから派生したダイアログ(ボタンを押して新たに出現するダイアログ)に貼り付けたコントロールが
うまく動いてくれません。
コンパイルは完了するのですが、
Debugモードでは
Debug Assertion failed!
と出て落ちてしまいます
Releaseモードでは
エラーこそ出ないものの、期待した動作一切が無視された状態です。
派生したダイアログを定義したクラス内に、リストなどのコントロール変数を宣言、
コンストラクタ内でそのダイアログ内のコントロール変数を利用して初期化。
この作業に入った瞬間にエラーが発生しているようです。
すみませんが、どなたかご教授願います。
0147デフォルトの名無しさん
2006/03/16(木) 13:33:52クラスオブジェクトが生成されただけではウィンドウは作成されていない。
0148デフォルトの名無しさん
2006/03/16(木) 13:46:51ありがとうございます
ということは
ダイアログ.DoModal();
より後で、ダイアログが閉じるより前に
コントロール変数をいじるということでしょうか?
その場合は、ダイアログを定義したクラス内のどこに配置すれば、
ウインドウが開いた瞬間に適応されているように出来るのでしょうか。?
重ね重ね申し訳ありませんがお願いします。
0149デフォルトの名無しさん
2006/03/16(木) 14:04:400150デフォルトの名無しさん
2006/03/16(木) 14:11:54本当にありがとうございました、無事表示できました。
0151デフォルトの名無しさん
2006/03/16(木) 22:57:04CMyClassの中にtableのデータを1000件保持したいのですが、
使っても問題ないですか。
0152デフォルトの名無しさん
2006/03/17(金) 00:02:36つーかそれ、30万件の文字列ってなんだよ。
あっさりスタック食い潰しそうだからヒープに確保するようにして置けよ。
0153139
2006/03/17(金) 00:14:54遅くなりましたが、ありがとうございました。
無事に解決しました。
ところが、次の問題が出ていまして。
モードレスダイアログでOKボタンが連打できてしまうために、
処理が終わる前にまたOKが押されたときの処理をやろうとしてしまっているようで、
エラーが出ています。
OKが押されたらその処理が終わるまでOKが押せないようにするにはどうしたらよいでしょうか。
モードレスダイアログはDLLで表示していて、DLLのソースはいじれないので、
Exeで押さえ込まなければならないのですが。。。
0154デフォルトの名無しさん
2006/03/17(金) 00:54:530155デフォルトの名無しさん
2006/03/17(金) 05:41:38OKが押されてから、その処理が終わるまで、メッセージの発行をする処理を実行していないか?
例えば、コントロールに値を設定したり、メニューを変更したり。
基本的にメッセージループに飛び込まなければ次のメッセージは Pump されないはず。
ただ、DLLのソースの中でやられちゃってたらダメだから。
その場合は、>>154 のような逃げ技で…。
って感じ?
0156デフォルトの名無しさん
2006/03/17(金) 06:58:50DLL側でやってるんならどうにもならん
0157デフォルトの名無しさん
2006/03/18(土) 00:14:35どちらを使ったほうがいいのでしょうか?
0158153
2006/03/18(土) 00:54:35DLL側でOKボタン押されたらユーザメッセージを投げるので、
それを受けとったら処理が走ります。
EXE側でやってるのは、DLLで設定した内容を元にデータを作って通信しています。
通信部分はメソッドが確立しているので詳しく見ていないのですが、
おそらくwinsockかなんかで通信しているのだと思います。
0159153続き
2006/03/18(土) 00:55:20今日、とりあえずリリースビルドを作ってみたところ、
モードレスダイアログの呼び出し部分でエラーになることがわかりました。
デバッグビルドでは問題ありません。
調べてみたところ、MSDNを見るとヒープの問題でこのようなことが起きることが多いようなのですが、
AfxCheckMemoryなどでチェックしても問題は特に出てきていません。
リリースビルド時の最適化を無効にすると問題ないことも分かりました。
動作の流れは
(1)コンストラクタでLoadLibrary。
(2)ダイアログを呼び出すメソッド内でモードレスダイアログをクリエイトする関数呼び出し。
(3)1つ目の質問部分で書いている処理が正常終了したらダイアログクローズ。異常ならそのまま。
(4)デストラクタでFreeLibrary。
となっています。
メッセージボックスを表示させる方法でチェックしたところ[1]部分でエラーとなっています。
typedef int (__stdcall *DLGCREATE)(const char* szString, UINT nNum)
DLGCREATE pDllCall = (DLGCREATE)GetProcAddress(m_hDll, "Create");
if (pDllCall != NULL){
nRet = pDllCall(m_szString, 10); ---[1]
}
コードに問題があると思うのですが、どこから手をつけていいのか分かりません。
これだけの情報では分からないことが多い(というかほとんど分からないと思う)のですが、
もしこのような問題に遭遇したことがあればそのときの解決の方法などを教えていただければと思います。
よろしくお願いします。
0160デフォルトの名無しさん
2006/03/18(土) 09:14:36そういうときは、まずエラーになる部分で各変数の値がどうなっているか確かめろ。
0161デフォルトの名無しさん
2006/03/18(土) 10:47:38namespaceでコンパイルエラーになってしまいます。
namespaceの宣言やら関数を、呼び出すCdialog.cpp内に書くと問題ないのですが
自前のmyfunc.cpp内に書いて Cdialog.cpp内で呼び出すようにするとうまくいきません。
出来なかったりしまう?
0162デフォルトの名無しさん
2006/03/18(土) 11:03:260163デフォルトの名無しさん
2006/03/18(土) 11:07:46もしやヘッダは?
0164161
2006/03/18(土) 11:28:15#include "stdafx.h"
namespace abc
{
自作関数
};
(CDialog.cpp)
#include "stdafx.h"
using namespace abc;
・
・
プロジェクト作成時に出来た関数等々
・
・
BOOL CDialog::OnInitDialog()
{
自作関数
}
ざっくりこんな感じに書いてます。
エラーは↓とでます。
error C2871: 'abc' : 存在しないか名前空間ではありません。
error C2065: '自作関数' : 定義されていない識別子です。
0165デフォルトの名無しさん
2006/03/18(土) 11:31:52C++では他のファイルに書いたものはそのままでは使えない。
宣言によって名前が見えている必要がある。
だからヘッダを作ってそこに宣言を書き、ソースファイルで定義(実装)を書く。
そして使うファイルでヘッダをインクルードする。
0167http://www.vector.co.jp/soft/win95/util/se072729.html
2006/03/18(土) 18:51:43もしくは64bitにネイティブ対応した置換ソフトないですか?
0168デフォルトの名無しさん
2006/03/18(土) 22:17:12ヘルプがみれるので嬉しいのですが
家にあるVisual C++6.0 のヘルプを呼び出すとMSDNのコレクションが無いと
表示されて、終わってしまうのですが
VC6++の場合は、html work shopで一から作らなければならないのでしょうか
それともどこからかダウンロードして、インストールしなければならないのでしょうか
よくわからないので、書き込みさして頂きました。
解る人がいればご教授願いたいです。
0169デフォルトの名無しさん
2006/03/19(日) 08:51:24意味がわからん。
VC++6のヘルプはVC++6についていただろう?
新しいMSDNはVC++6には対応していないので
VC++6のIDEからは呼び出せないがそういうことか?
0170デフォルトの名無しさん
2006/03/19(日) 21:43:42新たにキー入力された文字列を取得する方法を教えてください。
コンボボックスへ文字列入力→コマンドボタンでコンボボックスリストへ追加
の処理を作ろうとしているのですが、いきなり積まず息巻いた。
0171デフォルトの名無しさん
2006/03/19(日) 21:58:55getWindowText()で取れない?
0172デフォルトの名無しさん
2006/03/19(日) 21:59:430173デフォルトの名無しさん
2006/03/19(日) 22:50:46C++も初心者なもので継承に気が付かずコンボのメンバーしか
見てませんでした。
無事できましたm(_ _)m
0174153
2006/03/21(火) 13:31:24解決しました。
/GZを使って調べたところ、呼び出し規約が違うって出てきました。
DLL側が__stdcallでは無かったようです。
__stdcallを削除したら問題なく動作しました。
ま、DLLが__stdcallだったとしても名前を装飾してなかったんで動かなかったと思いますが。。。
0175デフォルトの名無しさん
2006/03/21(火) 19:04:04でも、解決して良かったね。
0176デフォルトの名無しさん
2006/03/21(火) 21:48:06コンパネの地域のオプションでシステムロケールを英語に設定した上で、非UNICODEアプリを実行すると、
メッセージボックス等の文字が化け化けになってしまいます。
非UNICODEで〜A系のAPI(MessageBoxA等)が使われているので当たり前なのですが、
なぜかメニューバーだけは文字化けせず、普通に日本語が表示されます。
なんでかなーとexeの中を覗いてみたところ、
非UNICODEでも、メニューバーで使用されている文字列はUNICODEで格納されているようなのです。
(VC++6.0、2005experessで確認)
リソース内の文字列って、常にUNICODEで扱われるのでしょうか。
もしそうだとしたら、Win9xの時代からずっとそんな仕様だったのでしょうか。
0177デフォルトの名無しさん
2006/03/21(火) 23:25:34そうだよ。
ついでに言うと文字列リソースもUnicodeで格納されている。
だが、それなのに9xではLoadStringWが機能しない。酷い仕打ちだ。
0178176
2006/03/22(水) 19:42:54ヘンテコな仕様ですね。
そうすると、リソース内のUNICODEな文字列を
LoadStringAの内部でわざわざSJISに変換しているってことですね。
0179デフォルトの名無しさん
2006/03/22(水) 23:38:46を買ったのですが、これは、シェアウェアや商用で利用してもいいのでしょうか?
0180デフォルトの名無しさん
2006/03/22(水) 23:43:470181デフォルトの名無しさん
2006/03/22(水) 23:53:27ありがとうございます。
ttp://www.microsoft.com/japan/education/ap/faq.mspx
に書いてありました。
しかし、会社で使用する場合、通常版を買い直さなければならない
と表記してありますが、個人でシェアを作成することは
かまわないと言うことなのでしょうか?
よろしくお願い致します
0182デフォルトの名無しさん
2006/03/23(木) 09:05:22M$に電話しろよ。
0183デフォルトの名無しさん
2006/03/23(木) 12:30:12VC++でなぜかデバッグよりもリリースでのビルドの時の方が
処理速度が大幅に遅くなってしまっていて、
なにが原因かわからず困っています。
状況としてはデバッグの時には50fps以上の速度が出ていたのに
リリースビルドした時には7fps程度しかでなくなってしまっているといった感じです。
色々と調べてみたところどうやら下記の部分が原因になっているようでした。
ang_cos, ang_sin, xtemp, ytempはdoubleで他の変数はintになっています。
x = (int)((j - length_temp) * ang_cos - xtemp + xbase);
y = (int)((j - length_temp) * ang_sin + ytemp + ybase);
どうも暗黙のうちに使われているらしいftolが怪しいのかなと考えているのですが…
ビルドオプションを色々と変えてみても解決することができませんでした。
何かご存じの方がいたら教えていただけないでしょうか?
よろしくお願いします。
0184デフォルトの名無しさん
2006/03/23(木) 12:44:38何故そういう結論になったの?
別のところに致命的な原因があるような気がするけど…
どこかの変数が初期化されてなくて云々…みたいな。
と個人的には思ってみる。
0185デフォルトの名無しさん
2006/03/23(木) 12:56:010186デフォルトの名無しさん
2006/03/23(木) 13:08:48すいません、説明不足でした。
DevPartner Profiler Community Editionを使って
処理に時間がかかっていた部分を調べてみたり、
x = (int)((j - length_temp) * 1 - 1 + xbase);
y = (int)((j - length_temp) * 1 + 1 + ybase);
と言うような風にした時は遅くなることがなかったからです。
x = (int)((j - length_temp) * 1.1 - 1.1 + xbase);
y = (int)((j - length_temp) * 1.1 + 1.1 + ybase);
と言うようにしてみた場合には処理が遅くなってしまいました。
x,yに直接適当な数値を入れてみた場合は遅くなることはありませんでした。
>>185
レスありがとうございます。
いま直接exeを実行してみたのですが、やはり速度は遅いままでした。
0187183
2006/03/23(木) 14:57:21x = (int)((j - length_temp) * ang_cos - xtemp) + xbase;
y = (int)((j - length_temp) * ang_sin + ytemp) + ybase;
と言うようにしてみたところ、
リリースでもある程度の速度が出るようになりました。(40fpsくらい)
なぜか小数点以下の数値の扱いに違いがあるのですが…
ビルドの最適化オプションを変えてみても症状はかわりませんでしたが
最適化関連の問題なのでしょうか?
一応解決はできましたが原因がよくわからないので
何かご存じの方がいましたらお教えいただけると助かります。
よろしくお願いします。
0188デフォルトの名無しさん
2006/03/23(木) 15:01:130189183
2006/03/23(木) 15:19:16コードというとアセンブリ言語の事でしょうか?
アセンブリ言語はよくわかっていないので
短くはなっているかな位にしか考えてませんでした。
>>183 の時のコードでは下記のようになっていました。
長文で申し訳ありません。
リリースビルドの時
x = (int)((j - length_temp) * ang_cos - xtemp + xbase);
00401DB0 fild dword ptr [esp+28h]
00401DB4 fld st(0)
00401DB6 fmul st,st(5)
00401DB8 fsub qword ptr [esp+38h]
00401DBC fadd st,st(3)
00401DBE call __ftol2 (406DD0h)
デバッグビルドの時
x = (int)((j - length_temp) * ang_cos - xtemp + xbase);
0043065B mov eax,dword ptr [j]
0043065E sub eax,dword ptr [length_temp]
00430661 mov dword ptr [ebp-0A0h],eax
00430667 fild dword ptr [ebp-0A0h]
0043066D fmul qword ptr [ang_cos]
00430670 fsub qword ptr [xtemp]
00430673 fiadd dword ptr [xbase]
00430676 call @ILT+3965(__ftol2) (42BF82h)
0043067B mov dword ptr [x],eax
0190デフォルトの名無しさん
2006/03/23(木) 15:25:35Release で偉い遅くなるような事は無いなぁ。
j って変数があるってことは、ループの中?
もしそうなら、実はループがおかしいとか。
0191デフォルトの名無しさん
2006/03/23(木) 15:27:110192デフォルトの名無しさん
2006/03/23(木) 15:28:580193183
2006/03/23(木) 16:01:26値を出力させて見たところリリースとデバッグでループ回数に違いはありませんでした。
ほかに気になるところと言ったらjpgとpngとzlibのライブラリをリンクしていることなどでしょうか?
全てマルチスレッドのDLLを使うようにしています。
とりあえずいま新しくソリューションを作って問題の部分だけを試してみています。
0194デフォルトの名無しさん
2006/03/23(木) 16:53:32libpngにこんなようなコードが書いてあったので
もしやと思って削除してみたところリリースビルドでも
遅くなると言ったことはなくなりました。
#if (_MSC_VER >= 1300) && (WINVER < 0x0500)
//VC7 or later, building with pre-VC7 runtime libraries
extern long _ftol( double ); //defined by VC6 C libs
extern long _ftol2( double dblSource ) { return _ftol( dblSource ); }
#endif
ありがとうございました。
おかげ様で何とか検討つけて原因探すことができました。
0195デフォルトの名無しさん
2006/03/23(木) 22:42:50ここで質問させてください。
開発環境:Windows 2000、Visual C++ 6.0、ODBC 3.0、MSDE 2000 SP4
まず、下記のようなSQL文を作成し、SQLPrepareを実行しました。
UPDATE TestTable SET Field1=?
※Field1はCHAR型(30バイト)で、NULL値を許可されたフィールドです。
次に、パラメータにNULL値をバインドしたかったのですが、どうしても
うまくいきません。(UPDATE TestTable SET Field1=NULL を実行した
のと同じ結果にしたい、ということです。)
char szName[30 + 1];
strcpy(szName, "");
SQLINTEGER sNull = SQL_NULL_DATA;
として、
(続く)
0196195
2006/03/23(木) 22:43:35SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT,
SQL_C_CHAR, SQL_CHAR, 30, 0, NULL, sizeof(szName), &sNull);
とすると、SQLBindParameter自体は上手くいくのですが、SQLExecuteで
エラーとなり、エラー情報を取得すると
HY090 文字列長またはバッファ長が正しくありません。
が返ってきます。
また、
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT,
SQL_C_CHAR, SQL_CHAR, 30, 0, szName, sizeof(szName), &sNull);
とすると、SQLExecuteもうまくいくのですが、Field1がNULLではなく、
30バイト分半角スペースで埋められたデータが格納されてしまいます。
おそらくSQLBindParameterの8番目のパラメータの指定の仕方がまずいの
だと思うのですが、どのようにすればよろしいでしょうか。
分かる方がいらっしゃいましたらお願いします。
0197デフォルトの名無しさん
2006/03/23(木) 23:23:230198デフォルトの名無しさん
2006/03/26(日) 10:47:32win32APIでの透過GIFの扱いについてなのですが、どうも上手くいきません。
ググっても本当に情報が少なく困っております。助けて下さいorz
0199デフォルトの名無しさん
2006/03/26(日) 12:02:14RLE圧縮すれば容量もそこそこ減らせる。
そういう問題じゃないとも思うが。
0200デフォルトの名無しさん
2006/03/26(日) 12:57:50画像っていざ本格的に扱うと難しいもので、とても参考になります。有難うございます。
ビットマップ画像の「ビットマップのマスク透過」で検討してみたいと思います。トンクスです。
0201デフォルトの名無しさん
2006/03/26(日) 17:40:12"どれか 1 つがシグナル状態になったときに制御が返る"ようにしたとき、
(1) 制御が返ったとき、全ての自動リセットオブジェクトは非シグナル状態にリセットされる
(2) 制御が返ったとき、最初にシグナル状態になっていた自動リセットオブジェクトのみ
非シグナル状態にリセットされる
(配列の先頭から順にシグナル状態がチェックされるという仮定)
のどちらの動作になるのでしょう?
ご存知の方、ご教授ください
0202デフォルトの名無しさん
2006/03/26(日) 18:19:100203デフォルトの名無しさん
2006/03/26(日) 21:20:14なんでMSDN読まないの?
0204デフォルトの名無しさん
2006/03/26(日) 22:11:37今は環境変数CL、LINKにオプションをセットしてgetenv_sしてるけど
もっといい方法があれば知りたいです。
0205デフォルトの名無しさん
2006/03/28(火) 07:18:34debugバージョンの時にはちゃんと動くのですが、releaseバージョンの時には
ゲームのはじめの画面が少し映ってすぐに終了してしまいます。
なぜでしょうか?
0206デフォルトの名無しさん
2006/03/28(火) 07:20:410207デフォルトの名無しさん
2006/03/28(火) 12:24:32初期化してない変数を利用してる可能性が強い思う。
メンバ変数とか忘れがちなので確認してみるといい。
0208デフォルトの名無しさん
2006/03/29(水) 21:01:28Debugビルドではたまたま動いていたが、Releasビルドでは落ちたと
いうのがある。
たぶん配列の確保される領域が違ったんだと思う。
0209デフォルトの名無しさん
2006/03/29(水) 21:04:560210デフォルトの名無しさん
2006/03/30(木) 11:17:24CWnd*から、コントロールのタイプ(Static Text, Check Box等)を判別するには、
どのようにすれば、可能ですか?
0211デフォルトの名無しさん
2006/03/30(木) 11:26:370212デフォルトの名無しさん
2006/03/30(木) 11:27:370213デフォルトの名無しさん
2006/03/30(木) 11:32:320214デフォルトの名無しさん
2006/03/30(木) 11:37:010215210
2006/03/30(木) 11:39:51判別したいコントロールは、サブクラス化してないので、
>>211さんの方法で出来ました。
それでは、あがいてきます。m(_ _)m
0216デフォルトの名無しさん
2006/03/30(木) 11:41:390217デフォルトの名無しさん
2006/03/30(木) 15:57:090218デフォルトの名無しさん
2006/03/30(木) 16:26:280219デフォルトの名無しさん
2006/03/32(土) 09:57:130220デフォルトの名無しさん
2006/03/32(土) 11:27:14チェックボックスのオンオフをアクセスキー?でも出来るようにしたいのですが
ダイアログの場合だとキャプションで「&A」など指定あげれば勝手に実装されると思うんですが
ダイアログでは無くウィンドウ?に表示させてあるチェックボックスをアクセスキーでも切り替え可能にしたいんです
調べてもそんな関数は無いようなので作ってみたのですが
チェックボックスが選択中の枠で囲まれていない場合はキーで切り替え可能なのですが(周りの選択枠が出ないでチェックのみ変わります…これが原因の本丸っぽいですが…)
一度マウスで選択したあとでキーで切り替えが出来ない状態です…
コードはプローシャ内の上記部分です
switch (msg) {
case WM_COMMAND:
switch (LOWORD(wp)){
case ID_CHECKBOX:
break;
}
return 0;
case WM_KEYDOWN:
if (GetKeyState(VK_CONTROL) < 0)
if (BST_CHECKED == SendMessage(GetDlgItem(hWnd,ID_CHECKBOX), BM_GETCHECK, 0, 0))
CheckDlgButton(hWnd,ID_CHECKBOX,BST_UNCHECKED);
else
CheckDlgButton(hWnd,ID_CHECKBOX,BST_CHECKED);
return 0;
根本から違う気がしますが よろしくお願いします。
0221デフォルトの名無しさん
2006/03/32(土) 12:00:57コントロールにフォーカスがあるとキー入力はそっちに行ってしまうから
キーメッセージをディスパッチする前に処理する仕組みが必要になる。
MFCやATL/WTLのPreTranslateMessageみたいなの。
0222220
2006/03/32(土) 13:16:45メッセージループの方にWM_KEYDOWNの処理を入れたら出来ました
ありがとうございました
0223デフォルトの名無しさん
2006/04/02(日) 20:29:23最近久しぶりに.NET 2002でC言語書いてまして
エディタで宣言や定義を+-ボタンで折りたためる機能があった気がしたんですが
見当たらなくて、どうやって出すかわからなくなってしまいました
使ってる人少なそうだけどどなたかご存じないですか?
(もしかしたら勘違いか気のせい・・・?)
0224デフォルトの名無しさん
2006/04/03(月) 23:21:54データ型に数値を格納する際、オーバーフローというエラーが出てしまいます。
デバックしてみると、変数に「5.011456E+09」が格納されています。
これは指数表記で、5011456000のことでしょうか?
0225デフォルトの名無しさん
2006/04/03(月) 23:29:580226デフォルトの名無しさん
2006/04/04(火) 09:10:59そう
0227デフォルトの名無しさん
2006/04/04(火) 13:50:350228デフォルトの名無しさん
2006/04/04(火) 15:27:10( ‘д‘)
⊂彡☆))Д´) ←>>227
0229デフォルトの名無しさん
2006/04/04(火) 16:05:34( ‘д‘)
⊂彡☆))Д´) ←>>228
0230デフォルトの名無しさん
2006/04/04(火) 16:16:48( ‘д‘)
⊂彡☆))Д´) ←>>229
0231デフォルトの名無しさん
2006/04/04(火) 16:38:220232デフォルトの名無しさん
2006/04/04(火) 17:09:58( ‘д‘)
⊂彡☆))Д´) ←>>231
0233デフォルトの名無しさん
2006/04/04(火) 18:22:590234デフォルトの名無しさん
2006/04/04(火) 18:27:20( ‘д‘)
⊂彡☆))Д´) ←>>234
0235デフォルトの名無しさん
2006/04/04(火) 18:36:24( 'Д((☆
⊂彡
パーン _, ,_
☆))Д´)
ミ⊃
_, ,_
(*))'Д´((*) ハァハァ…
俺に免じて二人ともケンカはやめて
0236デフォルトの名無しさん
2006/04/04(火) 19:37:14●
〜▲〜 オデンマ〜ン 登場!!!
■
ハ
0237デフォルトの名無しさん
2006/04/04(火) 19:38:15( ゜д゜)
⊂彡☆======●
〜▲〜
■
ハ
0238デフォルトの名無しさん
2006/04/04(火) 19:48:24(゜д゜ )
●======☆ミ⊃
▲〜
〜 ■
〜 >>
0239デフォルトの名無しさん
2006/04/04(火) 19:53:57( ゜д゜)
⊂彡☆======●
〜▲〜
■
ハ
0240デフォルトの名無しさん
2006/04/04(火) 20:04:44(゜д゜ )
●======☆ミ⊃
▲〜
〜 ■
〜 >>
0241デフォルトの名無しさん
2006/04/05(水) 15:33:030242デフォルトの名無しさん
2006/04/05(水) 20:20:350243デフォルトの名無しさん
2006/04/15(土) 22:31:01いやですね、C++を学習するつもりで本を買ったのですがVC++を買ってました。
C++を学ぶならC++のやつを買いなおした方がいいでしょうか?
すいませんがあげさせてもらいます
0244デフォルトの名無しさん
2006/04/15(土) 23:08:39VC++は、C++言語を使ってアプリケーションを開発する
マイクロソフト製作・販売の統合開発環境ソフトの名称。
0245デフォルトの名無しさん
2006/04/15(土) 23:19:19答えて損した。
0246デフォルトの名無しさん
2006/04/15(土) 23:19:31ありがとございます
開発するということなので、どの道C++の知識がないとダメということですよね?
0247デフォルトの名無しさん
2006/04/15(土) 23:22:410248デフォルトの名無しさん
2006/04/15(土) 23:22:58日本語の説明ページがあるのにもかかわらず、英語のページが表示されるのはどこの設定をかえればよいのでしょうか?
ずっと悩んでいるのでおねがいします。
0249デフォルトの名無しさん
2006/04/15(土) 23:28:10VC++でいいよって言う人もいるんですよぉ
何でもMSを使うからとか何とか。
0250デフォルトの名無しさん
2006/04/15(土) 23:40:53「MSを使う」ってなによ?
質問する前に日本語勉強してくれ。
0251デフォルトの名無しさん
2006/04/15(土) 23:54:47VC++の本を買っちまったならまずはじめることだな本によってはC++の説明をしながらのものもある。
0252デフォルトの名無しさん
2006/04/16(日) 00:00:38の質問と回答って、レンプレ入りしてもいい気がするんだ。
>>248
IDE もしくは Document Explorer の ツール -> オプション -> 国際対応の設定 とか?
0253デフォルトの名無しさん
2006/04/16(日) 11:48:22猫でもわかるwindowsプログラミングの本の付録についている
何も無いウィンドウを描画するプログラムというサンプルをビルドしました。
2003環境では普通にコンパイル通って問題無いのですが
この度2005に移行したら
エラー1error LNK2019: 未解決の外部シンボル _main が関数 ___tmainCRTStartup で参照されました。MSVCRTD.lib
エラー2fatal error LNK1120: 外部参照 1 が未解決です。C:\Documents and Settings\***\My Documents\Visual Studio 2005\Projects\pra_01\Debug\pra_01.exe
というエラーが出てビルド出来ずに困っています。
初心者なのでエラーの意味もわかりませn。ソース見ないとわかんないかもしれませんが…・
環境移行した理由は学校で使う環境が2005なので合わせる為です。
0254デフォルトの名無しさん
2006/04/16(日) 11:56:13WM_MOUSEMOVEイベントが起こると関数A()が実行されるようにしてるんですが、
A()は処理が重いため、マウスを速く動かすとA()の処理が終わる前に
WM_MOUSEMOVEメッセージが更新されてしまい、マウスを速く動かしている間は
A()の処理が完了してくれません。
私としては、A()の処理が終わってから
次のWM_MOUSEMOVEメッセージを処理しにいってほしいのですが、
どのようにすれば実現できるでしょうか?
0255デフォルトの名無しさん
2006/04/16(日) 12:15:39.NET 2003のソリューションを2005で開くよりは、
2005で新しく作ってそこへソースコードをコピペで持ってきたほうがいいと思う。
http://www.kumei.ne.jp/c_lang/net2005/project.htm
http://www.kumei.ne.jp/c_lang/net2005/sample.htm
0256253
2006/04/16(日) 15:01:22ありがとうございます。
2005で新規プロジェクトを作製し
その後ソースのみのコピーで253の事象が発生するのです。。。
猫さんの所のを見て色々やってみたのですが…うーん
0257デフォルトの名無しさん
2006/04/16(日) 15:25:37つ[プロジェクトの形式]
0258デフォルトの名無しさん
2006/04/16(日) 15:29:25ウイザードで作ればいい。
0259デフォルトの名無しさん
2006/04/16(日) 16:57:35A()を別スレッドで動かさない限り
>()の処理が終わる前に WM_MOUSEMOVEメッセージが更新されて
は起こりえない。
0260デフォルトの名無しさん
2006/04/17(月) 22:05:43レスどうもありがとうございます。
詳しく調べてみたところ、A()の処理は完了していました。
InvalidateRectのあとに、UpdateWindowを実行していなかっただけでした。
お手数をおかけしました。
0261デフォルトの名無しさん
2006/04/18(火) 05:01:53みたいな事をしたいのですがどうすればいいのですか?
0262デフォルトの名無しさん
2006/04/18(火) 09:01:40http://www.google.co.jp/search?num=50&lr=lang_ja&q=%E9%85%8D%E5%88%97+%E5%88%9D%E6%9C%9F%E5%8C%96
0264デフォルトの名無しさん
2006/04/18(火) 11:58:000265デフォルトの名無しさん
2006/04/18(火) 12:43:21どんなソース書いたのよ?
0266デフォルトの名無しさん
2006/04/18(火) 20:22:030267デフォルトの名無しさん
2006/04/19(水) 00:20:07const array[10]
とそのまま書いたに3000点。
0268デフォルトの名無しさん
2006/04/19(水) 08:12:130269261
2006/04/19(水) 21:17:190270デフォルトの名無しさん
2006/04/20(木) 17:41:37VC初めて1週間の初心者です。質問させてください。
環境はVisual Studio 2005のVC++MFCです。
�@ダイアログを表示する
�AOKが押されるとHTMLのページを開く(CreateProcess使ってます)
�B開いたページのテキストボックスに自動的に文字列を入力する
※HTML側の設定でテキストボックスにフォーカスが当たった状態になります。
※文字列はプログラム内で固定で持っているものを使います。
上記のようなことを行いたいと思っているのですが、
�Bのやりかたがわかりません。
どのような関数を使えばよいのか教えてください。
よろしくお願いします。
0271デフォルトの名無しさん
2006/04/20(木) 18:45:58そこにテキスト表示した方が100倍ぐらい楽だと思う。
とりあえずそれやってみろ
0272デフォルトの名無しさん
2006/04/20(木) 18:56:580273270
2006/04/20(木) 19:19:38実はそれも作ってあるのですが、
そのページでログインした後にもう一回パスワード入力画面が出るような作りで、
その2枚目に自動入力させるようなものが作れないかなと思いまして。
>>272
そうです。
その練習として作っています(;´Д`)
ログインでユーザ名とパスワード入力するのまんどくせーから自動化しろ言われてまして。
0274デフォルトの名無しさん
2006/04/20(木) 19:33:510275270
2006/04/21(金) 12:03:36SendInputでそれっぽいことができましたので、
勉強してみます。
ありがとうございました。
0276デフォルトの名無しさん
2006/04/23(日) 15:45:42CDialogを継承したCLinkDlgというクラスを作っていますが、
下記のエラーがでて、コンパイルが通りません。
エラー 1 error C2248: 'CObject::CObject' : private メンバ (クラス 'CObject' で宣言されている) にアクセスできません。c:\program files\microsoft visual studio 8\vc\atlmfc\include\afxcoll.h593
(出力の内容)
c:\program files\microsoft visual studio 8\vc\atlmfc\include\afxcoll.h(593) : error C2248: 'CObject::CObject' : private メンバ (クラス 'CObject' で宣言されている) にアクセスできません。
c:\program files\microsoft visual studio 8\vc\atlmfc\include\afx.h(553) : 'CObject::CObject' の宣言を確認してください。
c:\program files\microsoft visual studio 8\vc\atlmfc\include\afx.h(524) : 'CObject' の宣言を確認してください。
コンパイラでのこの診断により関数 'CStringArray::CStringArray(const CStringArray &)' が生成されました。
どうもコンストラクタがあやしいようです。 このクラスにCStringArray型のメンバ変数があり、初期化でひっかかるようなのですが。。。
やりたいことは、CStringArray型の変数を作成中のLinkDlgに渡すといったことです。
以下がソースになります。 宜しくお願いします。
(CLinkDlg.h内)
public:
CLinkDlg(CWnd* pParent = NULL); // 標準コンストラクタ
virtual ~CLinkDlg();
CLinkDlg(CWnd* pParent, CStringArray& nameList , CStringArray& idList);
CStringArray m_idList;
CStringArray m_nameList;
(CLinkDlg.cpp内)
CLinkDlg::CLinkDlg(CWnd* pParent /*=NULL*/)
: CDialog(CLinkDlg::IDD, pParent)
{}
CLinkDlg::CLinkDlg(CWnd* pParent, CStringArray& idList, CStringArray& nameList)
: CDialog(CLinkDlg::IDD, pParent)
,m_nameList(nameList),m_idList(idList)
{}
0277デフォルトの名無しさん
2006/04/23(日) 16:03:24CStringArrayにはコピーコンストラクタが無いので、デフォルトのコピーコンストラクタが生成される。
その過程でCStringArrayの基本クラスCObjectのコピーコンストラクタを呼び出す事になるが
privateなのでアクセスできない。
よってエラーとなる。
0278デフォルトの名無しさん
2006/04/24(月) 01:31:30ありがとうございました!
解決できました。
0279デフォルトの名無しさん
2006/04/24(月) 02:32:24VC6.0でwindows.hをインクルードして使えるようになる関数って、
プラットフォームSDKの関数なんですか?
0280デフォルトの名無しさん
2006/04/24(月) 14:34:01MSNメッセンジャーやout look,skypeのように、デスクトップの右下のタスクトレイの上部に
アラートポップアップみたいなウィンドウを出したいのですが、どのように行っているのでしょうか。
MSNメッセンジャーで"○○がサインインしました。"と通知がでるウィンドウです。
調べてみましたが、調べるためのキーワードすら分からなかったので、
宜しくお願いします。
0281デフォルトの名無しさん
2006/04/24(月) 14:43:210282280
2006/04/24(月) 15:21:03レス、どうもっす。
ツールチップでウィンドウ型のGUIが実現できるのですか??
MSNメッセの場合、×ボタンやオプションボタンがバルーン内に配置されているのですが。
0283281
2006/04/24(月) 15:26:28昔はツールチップを自作してたやつもいたような気がする。
0284280
2006/04/24(月) 15:30:41ツールチップ、もう少し調べてみます。
0285デフォルトの名無しさん
2006/04/24(月) 20:02:59private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
sndPlaySound("J:\asfd\Win.wav",SND_ASYNC);
}
上記の場合だと
Form1.h(159) : warning C4129: '' :
Form1.h(159) : warning C4129: 'W' : エスケープ シーケンスとして正しく認識されませんでした。
Form1.h(159) : error C2065: 'SND_ASYNC' : 定義されていない識別子です。
Form1.h(159) : error C3861: 'sndPlaySound': 識別子が見つかりませんでした
こんな感じで怒られてしまいます。
環境はVisualStudio 2005で
Winmm.libはリンカに追加済みです。
ちなみにMMsystem.hをインクルードするとかなりの数のエラーが発生してしまいました。
よろしくお願いします。
0286デフォルトの名無しさん
2006/04/24(月) 20:05:050287デフォルトの名無しさん
2006/04/24(月) 21:48:31\ → \\
0288285
2006/04/24(月) 22:00:09ありがとうございました。エラーは減りましたが下記エラーが表示されたままです。
Form1.h(159) : error C2065: 'SND_ASYNC' : 定義されていない識別子です。
Form1.h(159) : error C3861: 'sndPlaySound': 識別子が見つかりませんでした
どうみてもインクルードの問題ですよね…
でもmmsystem.hをインクルードすると88個エラー出ちゃって うーん
0289デフォルトの名無しさん
2006/04/24(月) 23:01:190290285
2006/04/24(月) 23:42:35を別に使ってみたところ、インクルードも何もなしで使えました
2005はよくわかりませんが、一応巧く動いてくれたので終わりということで
ありがとうございました。
0291デフォルトの名無しさん
2006/04/25(火) 02:42:33DLLを呼び出さなくて良いのにビルドしたいのです。
どうやればいいのでしょうか?
0292デフォルトの名無しさん
2006/04/25(火) 04:17:260293デフォルトの名無しさん
2006/04/25(火) 08:49:24スタティックリンクライブラリのLIBを生成する為には
どうしたらいいかを教えて頂きたいのです。
0294デフォルトの名無しさん
2006/04/25(火) 08:53:34DLLの方が特殊なやりかた
0295デフォルトの名無しさん
2006/04/25(火) 09:46:540296デフォルトの名無しさん
2006/04/25(火) 09:49:32少なくともCygwin用はあったが……
0297デフォルトの名無しさん
2006/04/26(水) 03:05:50スタティックでない方ならあったのですが…。
0298デフォルトの名無しさん
2006/04/26(水) 06:08:54でもスタティックリンクするとソース公開しないとだめだろ
そういうことで普通はDLLにするんだな
0299デフォルトの名無しさん
2006/04/26(水) 08:19:39BSDスタイルだから公開する必要ないでしょ。
DLLの場合免れるのはLGPLで、
GPLだったらDLLにしても避けられないし。
0300デフォルトの名無しさん
2006/04/26(水) 08:55:04コマンドプロンプトでbzip2のフォルダで
"C:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT"
nmake -f makefile.msc
インストール先変えてるならパス変えてね。
てかさぁ、ビルドの仕方READMEに書いてあるんだけど???
まさか、READMEも読まずに、VC++の.dspファイル開いて、
DLLでしかビルドできませんとかほざいてるわけじゃないよね?
0301デフォルトの名無しさん
2006/04/28(金) 01:24:10OKボタンはDefault ButtonをTrueにしてます。
エディットボックスにカーソルがある状態で、Enterを押すとOKボタンが反応するようにしたいです。
DialogBox()だと、思ったとおりの動作になるんですが
CreateDialog()だとEnterを押してもBEEP音が鳴るだけです。
CreateDialogでも期待通りの動作をさせることはできますか?
DialogBox()ではメインの処理が止まってしまうので困ってます。
0302デフォルトの名無しさん
2006/04/28(金) 06:05:510303デフォルトの名無しさん
2006/04/28(金) 11:43:390304デフォルトの名無しさん
2006/04/28(金) 16:22:54お手間取らせてすいません。ありがとうございました。
0305デフォルトの名無しさん
2006/04/29(土) 23:34:59エディタの動作がものすごく重くなるのですが、こういうものなのでしょうか?
0306デフォルトの名無しさん
2006/04/30(日) 00:59:050307デフォルトの名無しさん
2006/04/30(日) 01:01:33スパゲッティコードが…
0308デフォルトの名無しさん
2006/04/30(日) 06:13:580309デフォルトの名無しさん
2006/04/30(日) 11:41:37500ファイルも作るなバカ。
0310デフォルトの名無しさん
2006/04/30(日) 12:26:06Firefoxを否定するなバカ。
0311デフォルトの名無しさん
2006/04/30(日) 16:16:32asm,_asm,__asmの違いって何なのでしょうか?
0312デフォルトの名無しさん
2006/04/30(日) 16:19:320313デフォルトの名無しさん
2006/04/30(日) 16:35:38あるファイルで使われている変数の中身を、違うファイルで使いたいのですが、
どうすれば値の引渡しができるんでしょうか?
0314デフォルトの名無しさん
2006/04/30(日) 16:41:030315デフォルトの名無しさん
2006/04/30(日) 17:33:16asmがISO C++でのキーワードだけどVC++では対応していなかった気がする。
_asmと__asmはVC++の独自拡張。どっちも同じだから好きなほうを使え。
0317デフォルトの名無しさん
2006/04/30(日) 19:12:03現在は EDIT コントロールの DC から GetTextMetrics( ) を使って TEXTMETRIC 構造体の tmHeight メンバと、GetSystemMetrics( ) から取った SM_CYBORDER * 2 を使っていますが、サイズがズレているようです。
0318デフォルトの名無しさん
2006/04/30(日) 20:59:59AdjustWindowRectを使ったらどう?
0319デフォルトの名無しさん
2006/04/30(日) 21:19:190320317
2006/05/01(月) 12:50:54レスありがとうございます。
1) GetTextMetrics( ) から tmHeight でフォントの高さを取得
2) GetSystemMetrics( ) から SM_EDGE で EditBox 内側の幅を取得
3) AdjustWindowRect( ) あら WS_BORDER で外側の枠線幅を取得
この 1) 〜 3) の値を足すと Just になりました。
GetSystemMetrics( ) で SM_EDGE と SM_BORDER 両方を取得すれば
AdjustWindowRect( ) は不要になるかもしれません。(未確認
0321デフォルトの名無しさん
2006/05/04(木) 20:56:15IEでpdfとか開くとAcrobat ReaderプラグインがIE上で開きますよね?
ああいうプラグインってどうやって作ればいいのでしょう。
何がやりたいかというとbbs2chreaderのIE版みたいなのを作りたいのです。
2chの板やスレのURLを開こうとしたら自作の2chビューワープラグインに渡すイメージです。
0322デフォルトの名無しさん
2006/05/05(金) 09:58:470323デフォルトの名無しさん
2006/05/05(金) 10:35:310324デフォルトの名無しさん
2006/05/05(金) 11:43:320325デフォルトの名無しさん
2006/05/06(土) 21:07:49BHOでInternet Explorerに潜入して、
DownloadCompleteイベントを捕まえれば開かれようとするときがわかる。
そしてIHTMLDocument2のURLプロパティでURLが得られる。
それが2chのものなら、IHTMLDocument2インターフェイスを通じて自分好みに書き換えればよい。
http://www.microsoft.com/japan/developer/library/jptech/msdnnews/top.htm
0326デフォルトの名無しさん
2006/05/07(日) 17:11:39ISO-2022 <-> Unicode な変換をする Windows API もしくはライブラリはありませんか?
#フリーで配布する予定なので、ライブラリの場合はライセンス的に問題のないものが良いです。GPL, BSD2, etc..
0327326
2006/05/07(日) 17:43:28HRESULT ConvertINetMultiByteToUnicode(
LPDWORD lpdwMode,
DWORD dwSrcEncoding,
LPCSTR lpSrcStr,
LPINT lpnMultiCharCount,
LPWSTR lpDstStr,
LPINT lpnWideCharCount
);
Requirements
OS Versions: Windows CE .NET 4.0 and later.
Header: Mlang.h, Mlang.idl.
Link Library: Mlang.dll.
が使えそうなので、MLang.h を include して
DWORD dwMode = 0;
ConvertINetMultiByteToUnicode( & dwMode, 50932, jisdata, nJSize, ucdata, & nUSize);
のようにしてみましたが
error C3861: 'ConvertINetMultiByteToUnicode': 識別子が見つかりません
となるようです。
(参考にしたURL)
ttp://www2d.biglobe.ne.jp/~msyk/cgi-bin/charcode/bbs.cgi?c=gr&n=211
ttp://www.kaede-software.com/2005/01/libiconv.html
MLang.h を include する以外にコード的になにか必要なのでしょうか。
(MLang.hの存在とAPIの宣言は確認しました
0328デフォルトの名無しさん
2006/05/07(日) 22:42:03http://msdn.microsoft.com/workshop/misc/mlang/reference/functions/convertinetmultibytetounicode.asp]
IE 5.5以上が必要と書いてあるから#define _WIN32_IE 0x0550が必要であるはず。
0329321
2006/05/08(月) 01:01:28IE7入れたら設定のところで各機能拡張が何でできてるか見られますね。
AdobeとかはActiveXですね。
なんにせよ、できなくはなさそうなので、頑張ってみます。
0330デフォルトの名無しさん
2006/05/10(水) 18:42:36staticのメンバを使えなくて困ってます。
class hoge {
public:
static char* str;
hoge() {
str = new char[10];
}
~hoge() {
delete[] str;
}
};
これは通るのですけども、ヘッダとして以下のように分けると
LINK2001:外部シンボル""public static char* hoge::str"(?str@hoge@@2PARA)"は未解決です。
LINK1120:外部参照1が未解決です。
と出てしまいます。
class hoge {
public:
static char* str;
hoge();
~hoge() {
delete[] str;
}
};
hoge::hoge() {
str = new char[10];
}
ビルドはVS2003です。staticでなければ行くのですけども。
何が原因でしょうか?
0331デフォルトの名無しさん
2006/05/10(水) 19:12:20これをコメントにすれば通るんじゃないか?
0332デフォルトの名無しさん
2006/05/10(水) 19:14:200333デフォルトの名無しさん
2006/05/10(水) 20:09:31クラス内の静的変数の宣言はあくまで宣言でしかない。
普通のグローバル変数のようにどこかで定義をする必要がある。
0334デフォルトの名無しさん
2006/05/10(水) 20:19:18上が通るようにみえるのは、リンカがclass hogeのコードを最適化で
リンクしなかったからじゃねーの。
0335デフォルトの名無しさん
2006/05/10(水) 23:06:340336デフォルトの名無しさん
2006/05/11(木) 00:53:29座標が与えられている(x1,y1)をa
(x2,y2)をb
ab間に線を引くとして、このabの線の長さを求める式はどのようにしたらいいでしょうか?
0337デフォルトの名無しさん
2006/05/11(木) 00:55:520338デフォルトの名無しさん
2006/05/11(木) 00:56:07ここはおこちゃまの数学講座じゃないんだが。
ま、hypot()でも使っておけ。
0339デフォルトの名無しさん
2006/05/11(木) 01:01:26ありがとうございます!
これで三角形の面積のプログラムがかけれます!
0340デフォルトの名無しさん
2006/05/11(木) 01:17:490341330
2006/05/11(木) 10:02:12char* hoge::str;
を定義したらできるようになりました。
ありがとうございました。
0342デフォルトの名無しさん
2006/05/12(金) 19:09:25SetLayeredWindowAttributesを使って半透明表示すると、ウィンドウ
全体が透過されてしまいます。
タイトルバーや枠線など非クライアント領域はそのまま表示し、
クライアント領域のみ半透明にするには、どのようにしたらよいのでしょうか?
0343デフォルトの名無しさん
2006/05/12(金) 19:53:560344デフォルトの名無しさん
2006/05/13(土) 14:24:44ありがとうございます。試してみます。
0345デフォルトの名無しさん
2006/05/13(土) 22:38:41MFC使わずにSDKで作るにはどうすればいい?
検索ワードだけでも教えてけれ。
0346デフォルトの名無しさん
2006/05/13(土) 22:53:040347デフォルトの名無しさん
2006/05/13(土) 23:18:28ATLを使って作る、の間違いです。
いずれにせよ骨が折れるのは変わらなさそうだけど。
0348デフォルトの名無しさん
2006/05/14(日) 00:23:30そこまでわかっているなら検索ワードとか必要ないと思うけど。
---------------
自分で構文解析しながら、なんちゃってプレビューって言う手もあるよ。
0349デフォルトの名無しさん
2006/05/14(日) 03:28:02GDI+ のスレが見つからないのですが、GDI;+ に関してです。
画面上の 1pixel のみに点を打つ関数がみあたらないのですが、
ひょっとして無いのでしょうか?
宜しくお願いします。
0350デフォルトの名無しさん
2006/05/14(日) 12:02:51デバッグモードで動かすと、デバッグウインドウに
「xxx.exe の 0x7c81eb33 で初回の例外が発生しました : Microsoft C++ exception: bool @ 0x05b9fe53。」
というメッセージが表示されてウザいです。
これを表示させなくする方法はありますか?
IDEはVisualC++2003です。
0351デフォルトの名無しさん
2006/05/14(日) 12:05:320352デフォルトの名無しさん
2006/05/14(日) 16:14:14ありますよwwwwwwwwwwww
0353デフォルトの名無しさん
2006/05/14(日) 16:35:35レジストリを変更せずにデフォルトの状態で
カレントフォルダのDLLを優先して使用するようにすることは
どうにかして出来ないのでしょうか?
強引な方法でもかまわないのですが…
何かありましたら教えていただけないでしょうか?
開発環境はVisual C++ .NET 2003です。
よろしくお願いします。
0354デフォルトの名無しさん
2006/05/14(日) 16:41:000355デフォルトの名無しさん
2006/05/14(日) 16:44:200356デフォルトの名無しさん
2006/05/14(日) 16:56:490357353
2006/05/14(日) 17:01:38削除はちょっと出来そうにないDLLで…
>355
実行ファイルと同じ所において直接実行しているので
間違い無いと思います。
>356
すいません説明不足でした。
自分で作るプログラムではなくて、
他のアプリケーションが呼び出しているDLLの関数の動作を変えたいのです。
0358デフォルトの名無しさん
2006/05/14(日) 17:18:450359デフォルトの名無しさん
2006/05/14(日) 18:11:35参考までに言っておくと、DirectXSDKについてるD3DSpyは
対象アプリのカレントにd3dspy9.dllをd3d9.dllにリネームして配置している。
0360353
2006/05/14(日) 18:42:17ありがとうございます。
試しにDirectXを使っているアプリのディレクトリに「d3d9.dll」を
コピーしてみたところ確かに呼び出しているDLLはカレントディレクトリのものになりました。
ところが同じアプリの他のDLL、たとえば「gdi32.dll」をコピーしてみてみたところ
カレントディレクトリのものをロードしてくれませんでした。
呼び出しているDLLの確認には「Dependency Walker」を使っているのですが…
この違いは何からきているのかわかりませんでしょうか?
WindowsXPだとデフォルトで
System32フォルダ→Systemフォルダ→Windowsフォルダ→プログラム本体があるフォルダ
の順でDLLを探すとあったのでどういう優先順位なのかがよくわかりません…
http://takuki.com/dennou/120-madotsukai.htm
0361デフォルトの名無しさん
2006/05/14(日) 18:59:360362デフォルトの名無しさん
2006/05/14(日) 23:03:00gdi32.dllなんかは常にシステムフォルダのものを使用するようレジストリに記載されている。
(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs)
0363353
2006/05/14(日) 23:31:32マニフェストファイル…調べてみて「****.exe.manifest」ファイルを適当に書いてみたところ
どうやら目的のファイルをロードできるようになったようです。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<file name="********.DLL" hash="DLLファイルのSHA1ハッシュ値" hashalg="SHA1"/>
</assembly>
と言うように書いたのですが、assemblyIdentityなども必ず記述しなくてはいけないのでしょうか?
いまいちnameやらpublicKeyTokenの値の書き方がよくわかりません。
もう少し調べてみることにします、ありがとうございました。
>362
KnownDLLsで検索してみたところ色々と情報が見つかりました。
なるほど、逆に言うとKnownDLLsに書いてあるDLLをコピーして別に用意するというのは危険なのでしょうか?
なかなかうまくいかないものですね…
0364デフォルトの名無しさん
2006/05/19(金) 14:38:24久しぶりにw2kをインスコして、VC6.0+MSDNもぶちこんだんだが、VCからMSDNを起動しようとすると、
ヘルプを表示出来ません。
必要なファイルが見つかりません。
インストールをやり直してください。
こんなことになる。何度再インスコしても同じ。普通にスタートメニューからなら、MSDNも起動するんだが。
むかーーーし昔にもなった気がするが、何とか治した気がするが、今回はどうにも治らない!
解決法知ってる人、手ぇ貸してくださいorz
0365デフォルトの名無しさん
2006/05/19(金) 14:53:210366デフォルトの名無しさん
2006/05/19(金) 14:58:21いやさっきから色々やってんだけど(´・ω・`)みつからんでね
0367デフォルトの名無しさん
2006/05/19(金) 15:09:10このへんじゃないかな
0368デフォルトの名無しさん
2006/05/19(金) 16:34:18なるほど、どうやらウチの場合、VC++のインスコでアレされている可能性がナニそうだね。
いい加減6.0も古いからなぁ。学生はいいなぁアカデミックエディション・・・・・・・
という訳でがんばってみます。ありがとう!
0369デフォルトの名無しさん
2006/05/19(金) 17:39:30アンインスコして再インスコしても駄目(´・ω・`)駄目だこりゃ
何とかしてアカデミックパックを仕入れる事に決定!
0370デフォルトの名無しさん
2006/05/19(金) 17:43:090371デフォルトの名無しさん
2006/05/19(金) 17:45:200372デフォルトの名無しさん
2006/05/19(金) 17:50:270373デフォルトの名無しさん
2006/05/19(金) 17:52:07取り敢えずしかるべき物を熟読して、何とか合法な道を探そう(w
0374デフォルトの名無しさん
2006/05/19(金) 17:53:24どうあがいても無理だろww
そういや学生の時にアカデミックライセンスでVS買った場合って
卒業した後はどうなるんだ?
0375デフォルトの名無しさん
2006/05/19(金) 17:53:530376デフォルトの名無しさん
2006/05/19(金) 17:54:40そのまま使える
0377デフォルトの名無しさん
2006/05/19(金) 17:58:45ええっと、19800円?
出せる金額では有るがなんか悔しいwwwwwwww
0378デフォルトの名無しさん
2006/05/19(金) 18:44:36そうなのか、thx
もっとも卒業まで最短でも後3年あるし、それまでにはC++0xのが出るだろうから
どうせ買うことになるんだろうが・・・
0379364
2006/05/19(金) 19:24:24ttp://support.microsoft.com/?scid=kb;ja;250334&spid=3042&sid=1237
即ち、 regsvr32 "C:\Program Files\Common Files\Microsoft Shared\VS98\VSHELP.DLL"
これでいけたヽ(`Д´)ノ というわけで後進のために検索ワード入れておくかw
visual studio vc 6.0 ヘルプシステム 言語の選択 日本語 空 f1 msdn まあなんかこれくらいで。
・・・・・・・・・・・という訳で当座は凌げるんだが、やっぱ2005欲しいよ(*´・ω・)(・ω・`*)ネー
0380デフォルトの名無しさん
2006/05/19(金) 21:35:04と言う認識でいいのでしょうか。8.1は問題が無かったのですが。
0381デフォルトの名無しさん
2006/05/20(土) 01:46:52俺は普段からVC6使うときにMSDNは別に起動するが、IDEから起動しなくてはならない理由って何?
0382デフォルトの名無しさん
2006/05/20(土) 05:53:490383デフォルトの名無しさん
2006/05/20(土) 09:55:26しらねーなw
0384デフォルトの名無しさん
2006/05/20(土) 10:16:26ソフトウェアキーボードが有ればマウスで文字が打てるのに、わざわざメカニカルキーボードを使う理由って何?
バイナリエディタが有ればexeなんて書けるのに、わざわざCコンパイラを使う理由って何?
こりゃ極端な例だが、まあ、微妙にだが、手間が、違う、のだろう。
0385デフォルトの名無しさん
2006/05/20(土) 10:59:47キーワードを見に行ってくれちゃうお茶目なF1キーのことか?
0386デフォルトの名無しさん
2006/05/20(土) 19:39:43キーボードのAとBが入れ替わってしまったら、とか考えると、ぞっとしますね。
人には人の価値観が有りますから、そっとしておいてあげましょう。
0387デフォルトの名無しさん
2006/05/23(火) 01:51:28サービスパック6をインストールしたのですが、
Visual C++のバージョン情報が変わっていません。
msdev.exeのバージョンは6.0.9782.2なのですが、
これって本当にアップデートされてるんでしょうか?
Visual Studio Service Pack がインストール済みか確認する方法
ttp://support.microsoft.com/default.aspx?scid=kb;ja;194295
を見たのですが、サービスパックにもリンク先にも
readme.txtなんてありませんでしたorz
0388デフォルトの名無しさん
2006/05/23(火) 03:04:590389デフォルトの名無しさん
2006/05/24(水) 02:01:09ありがとうございます。
VBはちゃんとSP6と表示されてました。
0390デフォルトの名無しさん
2006/05/24(水) 19:41:19VB++で開発をやることになったのですが、
試験ツールを調べるように言われました。
有料無料一切関係なく、調べ上げろと言われたのですが、
DevPartnerというソフトしか見つかりませんでした。
他に普及しているソフトなどはありますか?
よろしくお願いします。
0391デフォルトの名無しさん
2006/05/24(水) 19:48:020393デフォルトの名無しさん
2006/05/25(木) 01:36:11BoundsChecker
0394デフォルトの名無しさん
2006/05/25(木) 16:15:14なぜなのか誰かご教授下さい。WinXP
以下が詳細です。
---------VB側---------
Public Type Test
a As Double
b As String
a As Double
End Type
Public Function TestApi( ByRef Buf As Test )
Buf.a = 1: Buf.b = "TEST": Buf.c = 2
End Function
---VC側----
#import でVB DLLのタイプライブラリ情報読み込み、
Com関連初期化してインターフェース取得後以下のように上記関数呼び出し
Test tTest;
memset( &tTest, 0, sizeof(tTest) );
pTest->TestApi( &tTest );
以上で、tTest内容のa, bはVBで設定した内容となっているが、
cが不定のめちゃくちゃな値になっている。
なぜcが2にならないのでしょうか??
0395デフォルトの名無しさん
2006/05/25(木) 16:39:19たぶん間違いだろう
0396394
2006/05/25(木) 16:44:26Public Type Test
a As Double
b As String
c As Double
End Type
0397デフォルトの名無しさん
2006/05/25(木) 19:58:580398394
2006/05/26(金) 09:18:29VBの関数終了直前ではcには2が入っていて、
VCに戻ってきてすぐ構造体の中を見たらcがめちゃくちゃな値に
なっていました^^;
ActiveX DLLとCとの間の変換?かなにかが悪さをしているのでしょうか?
0399デフォルトの名無しさん
2006/05/26(金) 19:33:23クライアント側のソフトをVisual Basicで作成するという事は可能ですか?
具体的には、Visual C側のソフトでlisten関数で待ち続け、Visual Basic側のソフトで
connect関数で接続することは可能ですか?どなたか教えてください。m(_ _)m
0400デフォルトの名無しさん
2006/05/26(金) 19:38:18その構造体はどこから出てきた?
0401デフォルトの名無しさん
2006/05/26(金) 19:38:47VC側でacceptで待ち続けないと接続はできない。
0402デフォルトの名無しさん
2006/05/26(金) 19:53:24お返事ありがとうございます。listenで待てばいいと思っていたのですが、
acceptで待ち続けるが正解だったんですね。ということは、言語が違って
いてもサーバーソフト(Visual C) と クライアントソフト(Visual Basic)の接続
は可能だと言うことなんですね。ありがとうございました。m(_ _)m
0403デフォルトの名無しさん
2006/05/26(金) 19:57:100404390
2006/05/27(土) 05:59:40ありがとうございます。
BoundsCheckerもDevPartnerシリーズ(?)のですよね。
やはりそれしかないんですかね・・・
0405390
2006/05/27(土) 06:00:14ありがとうございます。
BoundsCheckerもDevPartnerシリーズ(?)のですよね。
やはりそれしかないんですかね・・・
0406デフォルトの名無しさん
2006/05/31(水) 01:33:25「シンボル情報がありません。」
と出て、デバッグができませんでした。
これを対処するにはどうしたらいいんでしょうか?
ビルドは成功して、エラーはなかったみたいなんですけど・・・
0407デフォルトの名無しさん
2006/05/31(水) 01:37:54http://ishizuka.net/ei/
0408デフォルトの名無しさん
2006/05/31(水) 19:02:56それでもダメなら /ZI あたりを調べれ
0409デフォルトの名無しさん
2006/05/31(水) 21:46:560410デフォルトの名無しさん
2006/05/31(水) 23:06:48ttp://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/windows/usingwindows.asp
0411デフォルトの名無しさん
2006/06/01(木) 20:26:37学校ではVisualStdio.Net2003でプログラミングしたものを
家の2005で開くと、ビルドエラーがおきて実行できないです。
変換画面が現れて、正常に変換が終了しました。とメッセージも出るんですが。
何回やってもビルドエラーが出ます、2003では間違いなく動くんですが
例えばただの
#include <stdio.h>
main()
printf("Hello");
↑これだけの物もビルドエラーが出てしまいます。
一体なぜなのでしょう
0412デフォルトの名無しさん
2006/06/01(木) 20:32:170413デフォルトの名無しさん
2006/06/01(木) 21:11:21学校の授業でC言語のプログラミングがあって
家でも練習したいんですが、コンパイラとか実行させるソフトとかって
どこで何を手に入れればいいんでしょうか?
学校はLinuxですが、家ではWindowsです。
教えてください。
0414デフォルトの名無しさん
2006/06/01(木) 21:18:13コンパイラにVisual C++を使いたいというわけではなさそうだな。
Cygwinなら、Windows上でUnix風の(ということはLinuxにも近い)環境が再現できる。
学校でやるのと忠実に操作感を再現したいわけではなければ、Visual C++も悪くない。
すれ違いだから、こんなスレで聞くよりよそで聞いた方がずっといいと思うぞ。
0415デフォルトの名無しさん
2006/06/01(木) 21:18:130416デフォルトの名無しさん
2006/06/02(金) 00:18:00そうですか
操作とかは別にいいです。
プログラムを作ってコンパイルして走らせてそのとおりの結果が出る・・・というのができればいいんです。
Visual C++とか調べてみます。
>>415
そこまで詳しいやつがいない
「自分はどうでもいい」的な人ばっかりなんで
0417デフォルトの名無しさん
2006/06/02(金) 03:00:50UNICODE環境で
CComBSTR strA( "あいうえお" );
で生成した文字列から前から"うえ"の部分文字列をコピーしたい場合
CComBSTR strB( 2 , strA + 2 );
と書いてよいのでしょうか?
printfで標準出力した結果を見ると問題ないようです
しかし、CComBSTRクラスに対して+UNICODE2文字バイトずらすという行為は
本来NGだと思うのですが・・・
個人的には下のどちらかを利用したいと考えています。
CComBSTR strB( 2 , strA.m_str + 2 );
CComBSTR strB( 2 , (BSTR)strA + 2);
すみませんが詳しい人教えてください。
0418デフォルトの名無しさん
2006/06/02(金) 18:23:42CComBSTR strB(2 , strA + 2);
これで平気。
CComBSTRはBSTRへの暗黙の変換があり、
BSTRは単なるOLECHARへのポインタとして扱えるから、
CComBSTR(int, LPCOLESTR);のコンストラクタが呼ばれ、新たなBSTRが作られる。
あと、BSTRをリテラルから構築するつもりなら、L"あいうえお"で初めからワイド文字にしておくほうがよい。
0419デフォルトの名無しさん
2006/06/02(金) 22:48:202003でコーディングしたソースを実行すると、
ファイルをオープンする箇所で、
文字化けをしてパスが正しく取得できていません。
ちなみに、英語のみでのパスだとファイルをオープンします。
すみませんが、詳しい人適切な方法をよろしくお願いします。
0420デフォルトの名無しさん
2006/06/02(金) 23:06:34全般
文字セット
マルチバイト文字セットを使用する
0421デフォルトの名無しさん
2006/06/02(金) 23:29:58プロパティの設定は確認して、マルチバイト文字をセットするに
なっていました。
CString path;
ifstream is(path);
if(!is)
return;
でリターンされてしまいます。
0422デフォルトの名無しさん
2006/06/03(土) 00:03:18基礎的なことですが、Visual C++6.0(MFC)でわからないことがあったので質問させていただきます。
ダイアログボックスの中に簡単な線を描画したいと思っています。
一般的なウィンドウ上であれば、OnDraw関数において例えば
Cpoint Line[2];
CPen lPen;
Line.x[0] = 0;
Line.y[0] = 0;
Line.x[1] = 100;
Line.y[1] = 0;
lPen.CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
oDC->SelectObject(&lPen);
pDC->PolyLine(Line, 2);
とすれば、長さ100太さ3の直線が引けます。
しかし、ダイアログボックス上において線を引く際に、線は引けるのですが、
lPen.CreatePen(PS_SOLID, 3, RGB(0, 0, 0)); 、pDC->SelectObject(&lPen);
のような機能を持った関数(?)が見つからないために、太さ1のペンでしか
描画できずに困っています。(というのも、CDCクラスの使い方がわからない?)
ダイアログボックス上に自由自在に破線を引いたり、太さを変えた線を引きた
いと考えています。
どなたか詳しい方がいらっしゃったら、ご教授ください。
0423デフォルトの名無しさん
2006/06/03(土) 00:31:240424デフォルトの名無しさん
2006/06/03(土) 00:53:31OnPaintでやってみたが普通に太さ3になったがな?
下のコードはデフォで出来てるCAboutに書いてみたコード
void CAboutDlg::OnPaint()
{
CPaintDC dc(this); // 描画用のデバイス コンテキスト
CPoint Line[2];
CPen lPen;
Line[0].x = 10;
Line[0].y = 90;
Line[1].x = 120;
Line[1].y = 90;
lPen.CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
dc.SelectObject(&lPen);
dc.Polyline(Line, 2);
}
> 線は引けるのですが
どうやって引いたの?
0425デフォルトの名無しさん
2006/06/03(土) 01:20:32初期値 a, b が入力でき、 6桁推定された解と関数 f (x) を呼びだした回数を出力する方法を教えてください。
0426デフォルトの名無しさん
2006/06/03(土) 01:22:340427デフォルトの名無しさん
2006/06/03(土) 23:39:29http://pc8.2ch.net/test/read.cgi/tech/1068359871/611-612
0428デフォルトの名無しさん
2006/06/04(日) 17:34:57ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1981.zip
のスクリーンショットみたいな簡単なプログラムをVC++.NETのMFCアプリケーションで作りたいのですが、
クリックして点を打つコントロールで、どのコントロールをどう使ったらよいのか分からんのです。
あと、
・コントロール上の座標を得る方法
・座標に点を描く
もよく分からんのです。
だれか手取り足取り教えてくれませんか。
よろしこお願いしマソ。
0429デフォルトの名無しさん
2006/06/04(日) 18:40:06.NETFRAMEWORKとMFCを混ぜて使いたいのか?
ttp://msdn2.microsoft.com/ja-JP/library/0xb61xs7.aspx
を読んでみるといい。
手取り足取りが必要な段階でやりたがるのは無駄だと解るだろう。
MFCだけで逝くか、.NETFRAMEWORKで逝くか決めろ
0430デフォルトの名無しさん
2006/06/04(日) 19:21:27ダイアログ内のコントロールの初期化は
OnInitDialog、OnCreate のいずれで行うものなのでしょうか?
ヘルプには下記にように書いてありましたが、使い分けが、いまいちわかりませんでした
OnInitDialog
このメッセージは、Create 関数、CreateIndirect 関数、
または DoModal 関数が呼び出されている間に、ダイアログ ボックスの
表示直前にダイアログ ボックスに対して送られます。
OnCreate
ウィンドウが作成された後で、それが可視状態になる前に、
新しい CWnd オブジェクトはこの呼び出しを受け取ります。
OnCreate は、Create または CreateEx メンバ関数から戻る前に呼び出されます。
0431デフォルトの名無しさん
2006/06/04(日) 19:36:21ダイアログ以外はOnInitDialogは使えない。
0432デフォルトの名無しさん
2006/06/04(日) 19:43:01とりあえずVCのチュートリアルのScribbleでもやっとけ
http://msdn2.microsoft.com/ja-JP/library/92y4h944.aspx
0433デフォルトの名無しさん
2006/06/05(月) 01:28:42ダイアログ内のコントロールはOnInitDialogでやる。
0434デフォルトの名無しさん
2006/06/11(日) 11:23:27http://msdn2.microsoft.com/ja-jp/library/ms235629(d=printer).aspx
上記のURLが役に立つのではないでしょうか?
見当違いならばごめんなさいm(_ _)m。
0435デフォルトの名無しさん
2006/06/11(日) 12:08:25Cドライブ検索しても
user32.libが蜜からねぇぇl−−−−−
どこいったんだー!
0436デフォルトの名無しさん
2006/06/11(日) 12:15:480437デフォルトの名無しさん
2006/06/11(日) 12:27:34_stprintf()を使おうとすると、「warning C4996: '_swprintf' が古い形式として宣言されました。」と怒られます。
要はsprintf()を使いたいのですが、正しくはどうすりゃいいのでしょうか。
VC8EEでtchar.hはインクルードしてあり、プロジェクトの文字セットは取り敢えずUNICODE(デフォルト)にしてあります。
http://www.246.ne.jp/~y-ookubo/program/tips/unicode.html
ここを参考にしたのですが…他に良いとこあったら教えて下さい。
0438デフォルトの名無しさん
2006/06/11(日) 12:40:380439デフォルトの名無しさん
2006/06/11(日) 12:46:16直りました、有難うございます。
この辺を解説したリンクってないすかね。
tchar.hを嫁ってのはカンベン
0440デフォルトの名無しさん
2006/06/11(日) 13:15:02その警告は無視しろ
0441デフォルトの名無しさん
2006/06/11(日) 17:12:27for next文を使うということは分かったんですが、そのあとが全くと言っていいほど分かりません。
どなたかご教授お願いします。
0442デフォルトの名無しさん
2006/06/11(日) 17:24:080443デフォルトの名無しさん
2006/06/11(日) 17:32:28nの階乗
int f=1;
for(int i=1; i<=n; i++) f *= i ;
0444441
2006/06/11(日) 19:28:10宿題スレ行ってきます
0445デフォルトの名無しさん
2006/06/11(日) 23:11:16VC++2005のインストールフォルダを全部検索したけどLIBC.libが入ってない。
もとから入ってないの?
0446デフォルトの名無しさん
2006/06/11(日) 23:30:31無い。
シングルスレッド用のランタイムは無くなった。
0447デフォルトの名無しさん
2006/06/12(月) 15:16:32新しいプロジェクトで、Windows フォームアプリケーションを選択すると、
Form1 という名前で生成されてしまいます。
この Form1 っていう名前を変えたい場合は、どうすればいいのでしょうか?
Form1 のプロパティ->デザインに、(Name) っていうのが無いので、どう
すればいいのかわかりません。表示される文字列は、表示->Text で変
更できたのですが・・・・。
0448デフォルトの名無しさん
2006/06/14(水) 12:28:30TRUEとtrueはどう違うんでしょうか?
ヘルプ見てみたんですがTRUEに関しては
JavaのTRUEの説明しかなかったです
0449デフォルトの名無しさん
2006/06/14(水) 13:41:01TRUEはWindowsSDKで#defineされているもの
0451デフォルトの名無しさん
2006/06/14(水) 16:43:57Cでは(たとえC99でも)trueはキーワードではない。
0452デフォルトの名無しさん
2006/06/15(木) 06:43:39チェックボックスの見た目をボタンにし、
ONならONの画像
OFFならOFFの画像をボタンに表示したいのですがうまくいきません。
具体的に以下をやってみました。
�@チェックボックスのプロパティにあるPush LikeとBitmapをTrueにする
�ASetCheck関数で値をセット(TRUEorFALSE)
�BSetBitmapで画像をセット
SetCheckが無視されているようなのですが
何か良い方法をご教示願えませんでしょうか?
0453デフォルトの名無しさん
2006/06/15(木) 09:32:42�ASetCheck関数で値をセット(TRUEorFALSE)
ここまでやってみたら問題なく動く
0454デフォルトの名無しさん
2006/06/15(木) 11:12:350455452
2006/06/16(金) 20:33:11�AでTRUEorFALSEをセットせずに
GetCheck()で判定するだけでよかったみたいです。
�AでTRUEorFALSEをセットするとGetCheck()は常に0となってしまいます。
0456デフォルトの名無しさん
2006/06/24(土) 19:31:38CString a;
と宣言しても
----------error----------
'a' : 定義されていない識別子です。
'CString' : 定義されていない識別子です。
';' が、識別子 'a' の前に必要です。
とエラーが発生します。
他にSYSTEMTIMEなどもすべて同じようなエラーになるのですが、何か足らないものがあるのでしょうか?
0457デフォルトの名無しさん
2006/06/24(土) 20:16:18適切なヘッダをincludeしたのか?
0458デフォルトの名無しさん
2006/06/24(土) 22:01:382回目以降実行したときにそのファイルからパスを読み込みたいと考えています。
しかし、以下のコードでは「"C:」までしかファイルに記録されません。
自分で調べた限りではfgetsを使えばスペースや予約文字も関係ないとは思うのですが。
どうかご教授お願いします。
void get_pass(char savefile[],char pass[])
{
FILE *file;
if((file = fopen(savefile,"r")) == NULL)
{
fgets (pass, sizeof (pass), stdin);
file = fopen (savefile, "w");
printf ("%s" ,pass);
fprintf (file,"%s" ,pass);
fclose (file);
}
else
{
fgets (pass ,sizeof(pass) ,file);
fclose (file);
}
}
void main()
{
char monopass[256]="",filename[]="logpass.txt";
get_pass(filename,monopass);
}
0459デフォルトの名無しさん
2006/06/24(土) 22:09:550460デフォルトの名無しさん
2006/06/24(土) 22:58:42その場合、sizeof(pass)はsizeof(char*)と等価である。
0461デフォルトの名無しさん
2006/06/25(日) 00:05:56ありがとうございます。サイズも外部から渡すようにしたら上手くいきました。
パスのスペル間違っていた。恥ずかしいorz
0462デフォルトの名無しさん
2006/06/25(日) 10:40:29フォームを作成してForm1.hというファイルができあがり、そのファイル中にコードを記述しているのですが、
ネットや、この掲示板、参考書を見るかぎり、やってること(書いてる場所)が全く違う気がして疑問に思っているのですが、
VC++.NETで開発する際、実際にコードを打つファイルはForm1.hではなく、別の.cppファイルを作成して
それをForm1.h側から参照するようにするのが普通なのでしょうか?
0463デフォルトの名無しさん
2006/06/25(日) 10:55:110464デフォルトの名無しさん
2006/06/25(日) 16:24:12できるのでしょうか?
やはりダイアログやメニューの作成なんかでは、エディタがないと
厳しいですか?
0465デフォルトの名無しさん
2006/06/25(日) 17:18:11テンプレで紹介されてるサイトとか見た方が良いよ。
そのうち何の処理を書いてるのか分かってきて
自分でいろいろ弄ったりできるようになるから。
0466デフォルトの名無しさん
2006/06/29(木) 00:44:18VC++.netで設定を変更するにはどこをいじるのでしょうか
0467デフォルトの名無しさん
2006/06/29(木) 19:02:05ASIOドライバ対応ソフトを作りたいです。
どうすればいいですか?
0468デフォルトの名無しさん
2006/06/29(木) 19:03:460469デフォルトの名無しさん
2006/06/29(木) 19:14:30これ?
0470デフォルトの名無しさん
2006/07/02(日) 01:08:19ここのdirectXのサンプルプログラムをvisual c++ 2005でビルドしてみたのですがコンパイルまではできたのですが、リンクの段階で
dx_audio.obj : error LNK2019: 未解決の外部シンボル __imp__CoCreateInstance@20 が関数 "int __cdecl AdoInit(void)" (?AdoInit@@YAHXZ) で参照されました。
dx_audio.obj : error LNK2019: 未解決の外部シンボル __imp__CoInitialize@4 が関数 "int __cdecl AdoInit(void)" (?AdoInit@@YAHXZ) で参照されました。
dx_audio.obj : error LNK2019: 未解決の外部シンボル __imp__CoUninitialize@0 が関数 "void __cdecl AdoRelease(void)" (?AdoRelease@@YAXXZ) で参照されました。
win_main.obj : error LNK2019: 未解決の外部シンボル __imp__ShowCursor@4 が関数 _WinMain@16 で参照されました。
win_main.obj : error LNK2019: 未解決の外部シンボル __imp__FindWindowA@8 が関数 _WinMain@16 で参照されました。
というようなエラーが大量にでてきました。解決方法わかりますでしょうか。
スレ違いでしたらごめんなさい。
0471デフォルトの名無しさん
2006/07/02(日) 03:44:510472デフォルトの名無しさん
2006/07/02(日) 09:13:170473デフォルトの名無しさん
2006/07/03(月) 12:00:56SDKでMDIアプリケーションを作っているんですが、
ウィンドウサイズの変更時の画面のちらつきをなくすために
CS_VREDRAW | CSHREDRAWをけずってみたのですが、
ドキュメントウィンドウを最大化しているとちらついてしまいます。
解決策はありますでしょうか。
0474デフォルトの名無しさん
2006/07/03(月) 12:13:260475473
2006/07/03(月) 12:55:230476デフォルトの名無しさん
2006/07/03(月) 23:18:00CDC myDC;
CFont myFont, *oldFont;
myFont.DeleteObject(); ・・・�@
myDC.DeleteDC(); ・・・�A
}
の�@、�Aって必要なんですか?
CDCやCFontのデストラクタでDelete〜を内部で呼び出したりしてないんですかね・・・
物の本には、お約束の様に�@�Aが書かれていて、まあ、書いてるんですがね
myFont.DeleteObject();
myFont.CreateFont();
みたいな使い方したいときに、DeleteObjectとかあるのかな・・・と勝手に解釈してたんですが、
実際どうなんでしょう?
0477デフォルトの名無しさん
2006/07/03(月) 23:24:470478デフォルトの名無しさん
2006/07/03(月) 23:29:45マルチかよ
0479デフォルトの名無しさん
2006/07/03(月) 23:42:28ソース見ればいいじゃん
0480デフォルトの名無しさん
2006/07/05(水) 18:49:12動作の種類が増えてもタイマーを増やしたくないので、何とか自分で
累積経過時間を監視して都度必要な動作を起動したいのですが、
システムフックを使っても自分に関係のあるメッセージが飛んでこないと
何も出来ないので困っています。
タイマーを使わずに実現する良い方法は無いでしょうか?
0481デフォルトの名無しさん
2006/07/05(水) 19:33:15仮に個別の動作は1秒単位で指定できればいいとする。
1秒のタイマーを設定し1秒に一回、個別の動作予定時刻かどうか
判定するようにすればタイマーは一個あれば充分と言うことになる。
頭は生きているうちに使おう。
0482デフォルトの名無しさん
2006/07/05(水) 20:18:09ありがとうございます。
実はそれも考えてはみました。
しかし当初は1秒単位〜100ミリ秒単位でいいのですが、
将来的には複数の動作を10ミリ秒単位で制御したいので
タイマー無しでOSのメインループから毎回呼び出して
貰うような方法がないかと探しております。
0483デフォルトの名無しさん
2006/07/05(水) 20:27:39処理が終わったら次の時刻まで〜。
ってやるとか。
0484デフォルトの名無しさん
2006/07/05(水) 20:50:50これから卒研ではじめる予定です。
0485デフォルトの名無しさん
2006/07/05(水) 21:08:440486デフォルトの名無しさん
2006/07/05(水) 21:36:10指導教官に聞けよ。
0487デフォルトの名無しさん
2006/07/05(水) 21:37:53sleepだとCPU握ったままになるんじゃないかと心配なのですが
そのへんどうなのでしょうか?
MSDNでは「モニターの所有権を失いません」という表現になっていて
どうもよく判りません。
と思っていたら、>>485さんのWaitableTimerで検索してみたら精度が
100ns単位という情報がありました。これなら十分使えそうです。
という事は、普通にタイマー使ってもそれほど負担にはならないと
いう事でしょうか。
>>481さんの方法で問題ないのかも。
いろいろ試してみます。ありがとうございました。
0488デフォルトの名無しさん
2006/07/05(水) 21:40:42VC6のプロジェクトを.net2003にするのは多少違いはあるけど大体問題なく動きます。
(一部の標準コントロールでプロパティやメソッドが違ったりしますが)
逆は動かない場合もあります。(.Net Frameworkの機能を使ったりするとダメ)
試すだけなら簡単なので一度やってみると良いですよ。
(*.dswから起動すれば自動でソリューションにしてくれる)
0489デフォルトの名無しさん
2006/07/05(水) 21:48:11ttp://msdn.microsoft.com/library/en-us/dllproc/base/about_processes_and_threads.asp
この辺読んどけ。
0490Timerの質問
2006/07/06(木) 19:06:22一定時間ごとに画面(グラフを書いています)を書き直すプログラムを
作成中です.
あるダイアログのOnCreateでTimerをセットしました.
if( ( id = SetTimer(1, 100, NULL)) != 0 ) {
// timer起動できたとのコメント表示 -> 表示できることを確認済み
}
ところがOnTimer()が呼び出されません.
OnTimer()の冒頭に,
CString ss = "hoge";
this->SetWindowTextA(ss);
と書いても,なにも表示されませんので,呼ばれていないのは確かだと思います.
何が考えられるでしょうか?
Timerをセットした以降,do-loopなど,windowsからのメッセージを
読まないような処理は入れていません
0491デフォルトの名無しさん
2006/07/06(木) 19:48:32それくらいしか思いつかないな。
0492デフォルトの名無しさん
2006/07/06(木) 19:55:02ありがとうございます。
(・・・実はWin98も視野に入れてました)
でも各スレッドに数10ms単位で実行権を渡してるということは
10ms単位での制御は無理なんですね。
やっぱりWindowsは制御には向いてないか。
0493デフォルトの名無しさん
2006/07/07(金) 00:40:53制御っていうか、リアルタイムOSじゃないんだから、そういうときは別のOSを使うべし。
PocketPCなんかは、実行権をがっちり握れるからリアルタイムOSに近いことが出来るはずだよ。
Windowsっていったって、ファミリーはピンキリなんだから、簡単に向いていないとか言うべからず。
0494デフォルトの名無しさん
2006/07/07(金) 01:29:22コマンドプロンプトから起動する簡単な物でいいのですが
Visial C++のコンパイラはC++専用ですか?
なぜかヘルプがまともに起動しないのでググったのですが分かりません。
どこを参照すれば良いでしょうか?
0495デフォルトの名無しさん
2006/07/07(金) 02:59:18vectorを使っているところでコンパイルエラーとなってしまいました。
問題を単純化するためにConsoleアプリで試したところ再現しましたので、皆様に問題の解決法を教授賜りたくお願いいたします。
●ソース
#include "stdafx.h"
#include <vector>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
vector<char> i; //OK
vector<char> j(10); //OK
return 0;
}
class hoge
{
private:
vector<char> ii; //OK
vector<char> jj(10); //←この行がエラーとなります。
};
●表示されるエラーメッセージ
k:\... ...l\Console.cpp(20) : error C2059: 構文エラー : '定数'
何か根本的なところで間違っている予感もするのですが、お指摘お願いいたします。
0496デフォルトの名無しさん
2006/07/07(金) 03:24:020497デフォルトの名無しさん
2006/07/07(金) 03:32:10hoge():jj(10){} とのアドバイスですが、このアドバイスは私にとってはレベルが高いようです。お時間を割いて頂いて大変申し訳ないのですが、もう少し分かりやすくご教授お願いいたします。
0498≠496
2006/07/07(金) 04:35:05class内の変数を初期化する構文はないので、問題の行は変数の宣言ではなく関数の宣言と見なすことになる。
そう解釈した場合、パラメータリストに定数は置けないのでエラーとなってしまう。
#従って、>496はjjをコンストラクタで初期化せよという指摘。
0499490
2006/07/07(金) 07:15:55なんでなんだろう。。。
0500デフォルトの名無しさん
2006/07/07(金) 07:47:260501490
2006/07/07(金) 08:18:470502490
2006/07/07(金) 12:13:30よく分からないので、ゼロから作り直しました。関数や変数はVC++の
機能を使って改めて作り、関数の中身はもとのプログラムをそのままコピペ
しました。つまり、中身は同じはずですが、どういう訳か今度は思い通りに
動きました...結局どこが悪かったのが分からないままです...
0503デフォルトの名無しさん
2006/07/07(金) 14:02:33原因を放置すれば又、ハマる。
0504デフォルトの名無しさん
2006/07/07(金) 23:00:57おかげさまで直りました。スペシャル�dクス
0505デフォルトの名無しさん
2006/07/08(土) 23:16:00HTTP通信まわりを処理するのって、
どのへんのクラスライブラリを使うのが一般的でしょうか?
0506デフォルトの名無しさん
2006/07/09(日) 15:19:50このときに、ダイアログの中のチェックボックスのチェックあり/なしで
アイコンに別のアイコンをオーバーレイしたいのですがうまくいきません。
オーバーレイ関係を調べるとCImageListがあるようなんですが、これでオーバーレイイメージに設定しても
オーバーレイではなくアイコンが完全に変わってしまいます。
さらに戻すことができません。
どうするのがよいのでしょうか。
0507デフォルトの名無しさん
2006/07/10(月) 04:52:320508デフォルトの名無しさん
2006/07/10(月) 06:28:550509デフォルトの名無しさん
2006/07/10(月) 15:12:590510デフォルトの名無しさん
2006/07/10(月) 22:19:18typedef [既存型名][型の別名]
と調べたらありました。この場合、
typedef enum{
AAA,BBB
}CCC;
ってどういう意味なんでしょうか?enumは整数列挙型だから、
「整数列挙型をCCCと別名をつけて、さらにAAA、BBBというenum型の変数を
宣言する」ってことでしょうか?
ご教授お願いしますm(_ _)m
0511デフォルトの名無しさん
2006/07/10(月) 22:46:37と同じ意味。
0512デフォルトの名無しさん
2006/07/10(月) 22:47:10enum {
AAA, BBB
}
これで、1つの型が表されている。(無名の列挙型)
それをtypedefしてCCCと名付けている。
AAAとBBBは列挙定数。
言い換えればこういうこと。
enum xxx {
AAA, BBB
};
typedef xxx CCC;
0513デフォルトの名無しさん
2006/07/10(月) 23:09:48即レスありがとうございます。
良く分かりました。
宣言ひとつでも、いろいろな書き方があって難しいですね。
分かりやすいレスで感謝です。
0514デフォルトの名無しさん
2006/07/10(月) 23:18:44スタイル論争も烈しいが…
0515デフォルトの名無しさん
2006/07/10(月) 23:20:590516デフォルトの名無しさん
2006/07/10(月) 23:26:280517デフォルトの名無しさん
2006/07/11(火) 10:09:160518デフォルトの名無しさん
2006/07/11(火) 10:12:300519デフォルトの名無しさん
2006/07/12(水) 00:45:59class AAA{
public:
void PPP();
}
class BBB : public AAA{
}
と定義したあとで、オブジェクトを作成。
class XXX = new BBB();
この時
XXX->PPP();
というような記述は可能なんでしょうか?可能だとしたら、
クラスBBBを宣言する際に、クラスAAAも取り込んでいるというような
感じなのでしょうか。
0520デフォルトの名無しさん
2006/07/12(水) 00:50:25class XXX = new BBB();
ではなくて、
BBB* XXX = new BBB();
でした。
宜しくお願いします
0521デフォルトの名無しさん
2006/07/12(水) 00:55:51Visual C++の質問っぽくないけど
「取り込んでいる」だとオブジェクトコンポジションっぽいけど
これは「派生」ってやつなので、ちとちがう感じ。
もしかして、コンパイラがどう翻訳しているか聞いている?
0522デフォルトの名無しさん
2006/07/12(水) 15:46:57ファイルからビットマップを表示させるプログラムを作っています。
LoadImage で HBITMAP を作ってAttachして表示、はできたのですが、
スクロールバーで詰まっています。
スクロールバーを表示/非表示をビットマップの大きさに合わせるにはどうすれば良いでしょうか。
お願いします。
0523デフォルトの名無しさん
2006/07/12(水) 16:21:45ttp://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/scrollbars/aboutscrollbars.asp
ここをよく読んで勉強しなさい
0524デフォルトの名無しさん
2006/07/12(水) 17:03:28必要ない時はスクロールバーを出さないようにしたいんだろうか?
スクロール自体はできているということだな
0525デフォルトの名無しさん
2006/07/12(水) 17:05:290526デフォルトの名無しさん
2006/07/12(水) 17:11:110527デフォルトの名無しさん
2006/07/12(水) 18:26:080528デフォルトの名無しさん
2006/07/12(水) 18:45:280529デフォルトの名無しさん
2006/07/12(水) 20:49:150530デフォルトの名無しさん
2006/07/12(水) 22:22:05テンプレ:CLR - Windowsフォームアプリケーション
質問させてください。
CSVファイルから取り込んだデータを
CheckedListBoxの項目にしようと考えているのですが
string str = test;
checkedListBox->Items->Add( str, false );
error C2664: 1 番目の引数を 'std::string' から 'System::Object ^' に変換できません。
とエラーが出てしまいます。
String^ str = "test"; ならばエラーは出ませんが変数文字列を項目として設定できません。
String^ や Object^ の 「^」 の意味がわからず手詰まりとなってしまいました。
どうやったら変数文字列をCheckedListBoxに追加できるのでしょうか?
0531デフォルトの名無しさん
2006/07/12(水) 23:03:03^はマネージ型における*だと思えば(とりあえずはそれで)いい。
その場合は、std::stringをSystem::Stringに変換する必要がある。
と言っても単にcheckedListBox->Items->Add(gcnew System::String(str.c_str()), false);としたらどうか。
http://msdn2.microsoft.com/ja-JP/library/ms235631.aspx
0532デフォルトの名無しさん
2006/07/12(水) 23:13:540534デフォルトの名無しさん
2006/07/13(木) 14:03:36その場合でもMFCライブラリって使えますか?
<afxwin.h>をincludeすると
「dllMainは既に定義されています」なんて出るし、
Officialにあった解決方法を参考にリンク順序を変えても
エラーは消えないですし。
dllでMFCを使うための手順があれば教えていただけないでしょうか。
環境はVC6エンタープライズです。
0535デフォルトの名無しさん
2006/07/13(木) 15:20:040536534
2006/07/13(木) 15:34:42配布されているテンプレートがWin32dllなので
今から変えるわけにはいきません・・・。
MFC(dll)に変更するしか方法はないでしょうか?
0537デフォルトの名無しさん
2006/07/13(木) 16:01:020538デフォルトの名無しさん
2006/07/13(木) 21:14:47「error LNK2019;未解決の外部シンボ"public;_thiscall CAAA::(void)"(??0CAAA@@QAE@XZ)が関数_WinMain@16で参照されました。」
と怒られてしまいます。
やりたいことは、AAAというクラスを作って、オブジェクトを作成して、オブジェクトのメソッド(メッセージボックス)を実行することです。
何が悪いかと、いろいろ調べて見たのですが分かりません。
アドバイスお願いします。
#include<windows.h>
#include <string>
class CAAA {
private:
public:
CAAA();
~CAAA();
void MsgBox();
};
void CAAA::MsgBox(){
MessageBox(NULL , TEXT("ここでテキストを表示") ,
TEXT("メッセージボックス") , MB_OK);
};
INT WINAPI WinMain(HINSTANCE hinst, HINSTANCE, LPSTR, INT){
CAAA* XXX=new CAAA();
XXX->MsgBox();
return 0;
};
0539デフォルトの名無しさん
2006/07/13(木) 21:21:44http://news19.2ch.net/test/read.cgi/newsplus/1152788480/
0540デフォルトの名無しさん
2006/07/13(木) 21:24:04コンストラクタ、デストラクタの定義がないよ。
0541デフォルトの名無しさん
2006/07/13(木) 21:39:52即レスありがとうございます。
無事、ビルドが通りました。
0542デフォルトの名無しさん
2006/07/13(木) 22:15:43オブジェクトXXXはCBBBというクラスのオブジェクトですが、
CAAAの処理MsgBox()が使えます。
class CBBB : public CAAA {
みたいな書き方をすると、クラスAAAの機能を含んだ、
新たなクラス(ここではBBB)を定義することが出来る・・・
ってことで間違っていませんか?
そして、このことが、521さんが言ってる「派生」ってことでしょうか?
クラスAAAのオブジェクトを作らずに、クラスAAAの機能を使えるって
言うのは、なんか不思議な感じがしますね^^>
0543デフォルトの名無しさん
2006/07/13(木) 22:16:49当方VC++2005のプログラマ見習い(の見習い)です。
WM_ACTIVATEを使ってウィンドウのアクティブ/非アクティブを判断させようと思ったんですが、
WM_ACTIVATEの中にウィンドウがアクティブかどうかのフラグ処理を書くとWM_PAINTを読み取ってくれません。
どなたかいい方法を教えていただけないでしょうか・・
0544デフォルトの名無しさん
2006/07/13(木) 22:18:23#include<windows.h>
#include <string>
class CAAA {
private:
public:
CAAA();
~CAAA();
void MsgBox();
};
class CBBB : public CAAA {
private:
public:
CBBB();
~CBBB();
};
CAAA::CAAA() {};
CAAA::~CAAA() {};
CBBB::CBBB() {};
CBBB::~CBBB() {};
void CAAA::MsgBox(){
MessageBox(NULL , TEXT("ここでテキストを表示") ,
TEXT("メッセージボックス") , MB_OK);
};
INT WINAPI WinMain(HINSTANCE hinst, HINSTANCE, LPSTR, INT){
CBBB* XXX=new CBBB();
XXX->MsgBox();
return 0;
};
0545デフォルトの名無しさん
2006/07/13(木) 22:18:40悪いこといわないから、オブジェクト指向の入門書読め。
『憂鬱なプログラマのためのオブジェクト指向開発講座』とか。
0546デフォルトの名無しさん
2006/07/14(金) 03:01:31自分のコードが間違ってるはず。
というわけで問題点を見つけ出して修正するべし。
ブレークポイントや、OutputDebugString など使うと便利かも。
0547デフォルトの名無しさん
2006/07/14(金) 11:41:06WINDOWS.H already includeと警告が出ます。
自分で作ったプログラム中ではWINDOWS.Hはincludeしてないし、
Afx.hも1度しかincludeしていません。
試しにMFC\include配下でwindows.hをincludeしていたところも
全てコメントアウトしましたがエラーは消えません。
windows.hをincludeしてるのはどこなのでしょうか?
0548デフォルトの名無しさん
2006/07/14(金) 12:07:14すごいね
0549デフォルトの名無しさん
2006/07/14(金) 18:51:48CEditのエディットボックスから入力された文字列String型を読み取り、
int型へ変換するのに
CString moji;
int suuzi;
edit.GetWindowTextW(moji);
swscanf(moji,_T("%d"),&suuzi);
と打ったのですが、
warning C4996: 'swscanf' が古い形式として宣言されました。
'swscanf' の宣言を確認してください。
と警告が出ました。
修正点のご指摘お願いします。
0550デフォルトの名無しさん
2006/07/14(金) 18:56:150551550
2006/07/14(金) 18:59:530552デフォルトの名無しさん
2006/07/14(金) 19:11:100553デフォルトの名無しさん
2006/07/14(金) 19:31:48int a = atoi(moji);
double b = atof(moji);
0554デフォルトの名無しさん
2006/07/14(金) 20:49:040555デフォルトの名無しさん
2006/07/14(金) 23:54:350556デフォルトの名無しさん
2006/07/15(土) 12:55:28のようにprintfで「"」や「%s」等を表示したい場合は
どうすればいいか教えていただけないでしょうか?
0557デフォルトの名無しさん
2006/07/15(土) 13:01:330558デフォルトの名無しさん
2006/07/15(土) 13:02:400560デフォルトの名無しさん
2006/07/15(土) 13:05:190562デフォルトの名無しさん
2006/07/15(土) 13:33:37[ビルド]はプロジェクト中のソースファイル、ヘッダファイルを
コンパイルすることですよね?
[リビルド]は変更のあったものだけを再コンパイルするんですよね?
じゃあ[コンパイル]はなんでしょうか?
現在アクティブなソースファイルのみをコンパイルする?
0563デフォルトの名無しさん
2006/07/15(土) 13:40:000564デフォルトの名無しさん
2006/07/15(土) 14:08:46[リビルド]×
0点
0565562
2006/07/15(土) 14:34:06訂正です
[ビルド]プロジェクト中の.cpp、.hファイルをコンパイルして
リンクする
[リビルド]変更のあったファイルだけをコンパイルしてリンクする
0566デフォルトの名無しさん
2006/07/15(土) 14:36:380567デフォルトの名無しさん
2006/07/15(土) 14:38:04またしてもビルドとリビルド間違い。
0568565
2006/07/15(土) 14:54:10わかんないよ
[ビルド].cppファイルをコンパイルする。
そのあと、.hによって依存関係を解決してリンクする
[リビルド]変更のあった.cppファイルをコンパイルして
リンクする
.hはコンパイルされない
0569デフォルトの名無しさん
2006/07/15(土) 14:56:30またしてもビルドとリビルド間違い。
0570デフォルトの名無しさん
2006/07/15(土) 15:06:03>>565
およそこんなかんじ。
[ビルド] 変更のあったファイルに関連するものをコンパイルしリンクする。
foo.cppがfoo.hをインクルードしているときにfoo.hを変更すると、foo.cppも
コンパイルされる。
[リビルド] 変更のあるなしにかかわらず、全てを一からコンパイルしリンクする。
0571565
2006/07/15(土) 15:13:02[ビルド]プロジェクト中の.hファイルを参照して.cppファイルをコンパイルする
コンパイルしてできた.objファイルをリンクして.exeファイルを生成する
[リビルド]通常ビルドは変更のあった.cppファイルのみを、依存する.hファイルを
参照してコンパイルし直して.objファイルを作り、再度リンクして.exeファイルを
生成するが、リビルドは.cppファイルの変更に関係なく、全てを再ビルドする
0573デフォルトの名無しさん
2006/07/15(土) 15:19:50残念。リビルドは「クリーン時に削除する拡張子」にしたがって
中間ディレクトリからファイルを削除し、ビルドを開始すること。
0574デフォルトの名無しさん
2006/07/15(土) 15:23:49お前という人間が残念だよ
0575デフォルトの名無しさん
2006/07/15(土) 18:21:550576デフォルトの名無しさん
2006/07/16(日) 15:57:14ネットゲームでのツール(オートログイン、経験値時給表示、キャラ自動操作等)
を作成してみたいと考え、C/C++の開発を行おうとおもっています。
そこで、c/c++の統合開発環境として
Visual C++ Express Edition を勧めていただき、これから構築しようと
思っているのですが、「ゲーム作成ができない」という表現が、
VCEEについてありました。ゲーム作成とネットゲームのツール作成は
確かに異なりますが、私のやりたいことはVCEEにて可能なのでしょうか。
0577デフォルトの名無しさん
2006/07/16(日) 16:28:540578デフォルトの名無しさん
2006/07/16(日) 16:35:230579デフォルトの名無しさん
2006/07/16(日) 16:43:510580デフォルトの名無しさん
2006/07/16(日) 17:03:42「ゲーム作成ができない」とは一体どこの誰の発言だ?
少なくともMicrosoftは、VCEEでどんなアプリケーションを作るかなどといったことについて、
法的にも技術的にも制限を設けていない。
0581デフォルトの名無しさん
2006/07/16(日) 17:29:560582デフォルトの名無しさん
2006/07/17(月) 07:49:58やりたいことが糞杉だからな
0583デフォルトの名無しさん
2006/07/17(月) 10:09:46以下のようにやってもうまくいきません
#include <cstdio>
int main(void)
{
putchar(0x1b);
printf("[7;31m");
printf("あああ");
}
あああが赤色で反転表示されるのを期待したのですが
Enterキーの下部分に印字されている左矢印のような
文字が表示されて、そのあとに「[7;31mあああ]と表示されます
どこがまずいでしょうか?
0584デフォルトの名無しさん
2006/07/17(月) 10:15:41NT系のWindowsでは、DOSプログラムしかエスケープシーケンスを使えない。
だから、DOS用のコンパイラを使うか、Windows APIでどうにかするかのどちらかを選べ。
0585デフォルトの名無しさん
2006/07/17(月) 10:17:00どこをいじればよいでしょうか?
0586デフォルトの名無しさん
2006/07/17(月) 10:59:27探さずに聞いてないか?
0588デフォルトの名無しさん
2006/07/17(月) 14:20:160589585
2006/07/17(月) 14:24:480590585
2006/07/17(月) 14:27:190592デフォルトの名無しさん
2006/07/17(月) 14:31:120593585
2006/07/17(月) 14:41:460594デフォルトの名無しさん
2006/07/17(月) 14:50:260595デフォルトの名無しさん
2006/07/17(月) 16:28:57コンソールからオプション指定してコンパイル、
makeファイル書く、
プロジェクトファイルをいじる
とかいくらでも方法あるだろ
それすらできないやつがコンパイルオプションいじってもしょうがない。
0596585
2006/07/17(月) 17:27:250597デフォルトの名無しさん
2006/07/18(火) 18:53:32教えてください。
0598デフォルトの名無しさん
2006/07/18(火) 18:54:14Windows API
0599デフォルトの名無しさん
2006/07/18(火) 18:56:41もう少し詳しくお願いします。
まだVisual C++を買っていないので・・・
今使っている言語からは切れなさそうなので、
そこからプログラムをコールしようかと思うんですが・・・
ライブラリ名とメソッド名または関数名か何か教えていただければ。
0600デフォルトの名無しさん
2006/07/18(火) 19:01:27ExitWindowsEx
あとはMSDN見ろ。
0601デフォルトの名無しさん
2006/07/18(火) 19:04:41>600
すません。ありがとうございました。
なかなか引っかからなかったので申し訳ないです。
これで何とかできそうです。
0602デフォルトの名無しさん
2006/07/18(火) 19:07:12電源切るだけなら自分でプログラムを作るまでもないな、そういうツールを作っている香具師が必ずいるはずだ。
#作るにしても、VCである必要は全くないし。
0603デフォルトの名無しさん
2006/07/18(火) 19:18:28�dクス。電源切るプログラムは一応見つけてはいたんですが・・・
商用利用できるかどうか微妙だったのでとりあえず自分で書きます。
0604デフォルトの名無しさん
2006/07/18(火) 19:30:160605デフォルトの名無しさん
2006/07/18(火) 22:18:220606デフォルトの名無しさん
2006/07/18(火) 22:21:57付けたいんだろ。何か不思議なことでもあるんかいな。
0607デフォルトの名無しさん
2006/07/18(火) 22:22:570608デフォルトの名無しさん
2006/07/19(水) 00:19:050609デフォルトの名無しさん
2006/07/20(木) 13:17:13Visual C++ 2005 Express Edition にしたらコンパイル時に
windows.hが見つからないといったコンパイルエラーが出るのですが、
EEではwindows.hをサポートしていないのですか?
それと、この問題をEEで解決するにはどうしたらいいですか?教えてください
0610デフォルトの名無しさん
2006/07/20(木) 13:30:43書き飽きたが、Platform SDKを入れろ
0611デフォルトの名無しさん
2006/07/20(木) 15:21:19ご助言ありがとうございました
0612デフォルトの名無しさん
2006/07/21(金) 08:45:05それぞれのメリット・デメリットを教えてくださいっ
0613デフォルトの名無しさん
2006/07/21(金) 09:05:450614デフォルトの名無しさん
2006/07/21(金) 09:47:21それぞれの仕様調べて自分なりの見解示してみろ。
人に聞いてるだけじゃ進歩ねーぞ。
0615デフォルトの名無しさん
2006/07/21(金) 10:35:330616デフォルトの名無しさん
2006/07/21(金) 11:05:180617デフォルトの名無しさん
2006/07/22(土) 01:01:121.01にしたときは1.0.1.1にしてる?最後の4桁目いらなくない?
0618デフォルトの名無しさん
2006/07/22(土) 03:06:490619デフォルトの名無しさん
2006/07/22(土) 11:22:08main.cpp main.h sub.cpp sub.h の4つのファイルがあったとして、
main.cppはmain.hを、sub.cppはsub.hをそれぞれインクルードしてます。
この状態で、
main.cppでsub.hをインクルードします。
この時、
sub.cppで記述した関数等(ヘッダーで定義した関数の実部?)が使えるんですが、どうもシックリきません。
main.cppから見ると、sub.cppはインクルードしている訳ではないのに、
sub.cppの内容が見えているってことなのでしょうか?
初心者考えでは、
main.cppでsub.cppをインクルードする。すると、
そのsub.cppは、sub.hをインクルードしているので、main.cppからsub.hは
見えている。
と言う風に考えてしまうのですが・・・
どういう理屈なのかご教授お願いしますm(_ _)m
0620デフォルトの名無しさん
2006/07/22(土) 11:25:57郵便局の中身を知らなくても、ポストがあれば手紙を届けることができる。相手からも手紙が返って来る。
関数の実態をしらなくとも、ヘッダにあるプロトタイプ宣言があれば、関数を呼び出すことが出来る。戻り値を受け取ることもできる。
0621デフォルトの名無しさん
2006/07/22(土) 11:29:14書いた傍から、思ったんですが、
main.cpp に[include main.h]と書くことは、
main.cppにmain.hを含める・・・ではなくて
main.hにmain.cppを含める
という理屈なのでしょうか?
これですと、理解できるのですが・・・
0622デフォルトの名無しさん
2006/07/22(土) 11:34:200623デフォルトの名無しさん
2006/07/22(土) 12:20:16別モジュールにある関数を繋げるのがリンカの仕事。
0624デフォルトの名無しさん
2006/07/22(土) 16:08:10これをどうにかする方法ってないんでしょうか?
Sleep(10)やGetMessageに変える以外の方法が検索しても出てこないので、
もしわかる方がいらっしゃればよろしくお願いします.
0625デフォルトの名無しさん
2006/07/22(土) 18:22:390626デフォルトの名無しさん
2006/07/22(土) 19:35:17普通に0と比較すると必ず負であるという判定になってしまいます。
0をtime_tでキャストしてもダメで、(long)でキャストしたlong型の
変数に代入すれば正常に負の判定が出来ます。
減算前の変数同士でいちいち大小比較するという方法以外で、
キャストもせずに正攻法で判定する方法はないでしょうか?
0627デフォルトの名無しさん
2006/07/22(土) 19:58:33つ[difftime()]
0628デフォルトの名無しさん
2006/07/22(土) 20:24:14ありがとうございます。
しかし減算結果を保持する変数の型もtime_tで、なるべく修正個所を
少なくしたいと考えております。
64bitの開発環境はまだ整備されてないのでしょうか・・・
0629デフォルトの名無しさん
2006/07/23(日) 00:02:370630デフォルトの名無しさん
2006/07/23(日) 09:16:47数値の演算や比較ができないってどんな間抜け?
0631デフォルトの名無しさん
2006/07/23(日) 10:11:11それが32ビットか64ビットかって話だろ。
0632デフォルトの名無しさん
2006/07/23(日) 10:22:54どんなコードを書いたらそうなるんだ?
0633デフォルトの名無しさん
2006/07/23(日) 11:22:22a=b-c;
if(a<0) {
//負の処理
} else {
//正の処理
}
詳細省くと上のような処理ではaの符号に関わらず必ず負の処理が
走ってしまいます。
long型のワーク変数にキャストして、そちらで判定するように
誤魔化してしまいましたがそれじゃ64ビットの意味が無いような気も。
0634デフォルトの名無しさん
2006/07/23(日) 11:39:19>629
0635デフォルトの名無しさん
2006/07/23(日) 11:40:17明日引く今日は高々86400秒でしかないと思うのだが。
0636デフォルトの名無しさん
2006/07/23(日) 11:44:42頭悪い人は黙っててください
0637デフォルトの名無しさん
2006/07/23(日) 12:08:17昨日から調べているのですが、何も見つけることが出来ませんでした。
もし良ければもう少し詳しくお教えください。
>>635
まだ暫くは問題ないけど、この先の移行の事とか考えると
なるべく手間を減らせるのが良いかなと・・・
今まで普通に動いていたソースが64bit版のコンパイラで動かなく
なったので、まだ下調べしてるだけの段階なんですけどね。
0638デフォルトの名無しさん
2006/07/23(日) 12:50:12きっと何か深い理由があるんだろうね。
0639デフォルトの名無しさん
2006/07/23(日) 13:58:37このコードだけのテストプログラムでもそうなの?
0640デフォルトの名無しさん
2006/07/23(日) 14:31:12time_tがunsignedなら警告が出てもいいと思うんだけどね。
しかも、unsignedなら常に正になりそうな気がするし。
0641デフォルトの名無しさん
2006/07/23(日) 14:54:49なんでif (b < c)ではだめなの?
0642デフォルトの名無しさん
2006/07/23(日) 15:09:550643デフォルトの名無しさん
2006/07/23(日) 15:15:240644デフォルトの名無しさん
2006/07/23(日) 15:15:430645デフォルトの名無しさん
2006/07/23(日) 15:26:280646ぼるじょあ ◆yBEncckFOU
2006/07/23(日) 15:37:260647デフォルトの名無しさん
2006/07/23(日) 16:29:16デバッガ使えないくせにずいぶん偉そうなこと言ってるな
0648デフォルトの名無しさん
2006/07/24(月) 14:57:50時点で問題ありそうだが・・・
32bit環境ではtime_tは long int だろけど64bit環境では違うだろうし
0649デフォルトの名無しさん
2006/07/24(月) 15:05:08VC++ 2005から、Win32でもtime_tは64bitが標準。
0650デフォルトの名無しさん
2006/07/24(月) 23:44:09そういう方法ってありますでしょうか?
0651デフォルトの名無しさん
2006/07/25(火) 00:00:15捨てたい部分をDLL化して明示的リンク(LoadLibrary/FreeLibary)すれば同じようなことができると思う。
もっとも、それでどれだけメモリを節約できるかは疑問。ほかにやることはないのか?
0652デフォルトの名無しさん
2006/07/25(火) 01:13:50ありがとう、そうしてみます。
他にやる事は沢山あるんですが
一度しか呼び出さないコードがすごく気になっちゃって・・・
0653デフォルトの名無しさん
2006/07/25(火) 10:30:08こういうのがいいという話ではないが、似たような御仁がおられると思って。
昔メモリの少ない時代には、subroutine のオーバレイという手法があった。
Macintosh には、リソース(Windows のと似てはいるが)に proc という
種別があってこれに処理させる方法があった。
自分の最初の Windows マシンは 64MB で、今でも application file サ
イズは 1MB を超えると抵抗感がある。
で、651 の方法を考えて始めたのだが、dll を別ファイルというのも面倒で
なんとか application file に同梱できないかと考えて、今やっている方法
は、dll を lzh 圧縮してリソースに入れて、使うときは解凍して呼ぶ。
終わると dll file を破棄。このため lzh 解凍ルーチンを抱えることに
なって、コードをけずってけずってlzh 解凍に 3KB。
んで、jpeg, gif, png, tiff などの解凍? dll もリソースに抱えている
のだが、application file サイズは肥大化して、なんのことか分からなく
なっている。いいことは違うマシンにこの appli を写すときは .exe 一本で
済むこと。因みに、エラーメッセイジ(150KB超)も lzh 圧縮してリソースで
持つようにしたので、.exe をバイナリで見ても見えない。
後、UNICODE 化ではすごい難儀。まだ終わっていない。
0654デフォルトの名無しさん
2006/07/25(火) 14:03:20スワップアウトが必要になればEXEファイルの部分のメモリだって捨てるよ。
そうなったらその部分は必要になるまでメモリには帰ってこない。
そういう問題じゃないって?すまん。
0655デフォルトの名無しさん
2006/07/25(火) 15:20:350656デフォルトの名無しさん
2006/07/25(火) 15:32:42アドレス空間の節約をしたいのかもしれない。
0657デフォルトの名無しさん
2006/07/25(火) 16:42:31Windowsなら>>651の言うようにdll化して、
いらなくなったアンロードだろうね。
0658デフォルトの名無しさん
2006/07/25(火) 19:37:30リソースにあらかじめ格納しておく方法もあるのか・・・
>>654-657
気分的にexeファイルのメモリ使用量を抑えたかっただけだったりして
0659デフォルトの名無しさん
2006/07/25(火) 19:43:580660デフォルトの名無しさん
2006/07/25(火) 20:24:34とかでLPSTRの変数を共有メモリにするのは分かったのですが、
CStringArrayの変数を共有メモリにすることはできますか?
環境は
VC++6.0
WinXP Home
です。
0661デフォルトの名無しさん
2006/07/25(火) 20:32:22無理にやればCStringArray自体は出来るかもしれないが
CStringArrayの要素は別に確保されるので共有できないがそれでもいいのか?
0662デフォルトの名無しさん
2006/07/25(火) 20:37:46ええと、「CStringArray自体は出来る」というのは共有出来るということなのでしょうか?
やりたいことは
EXE1で作ったCStringArray変数を、
EXE2で参照出来るようにしたいわけですけど。
0663デフォルトの名無しさん
2006/07/25(火) 20:49:13CStringArrayのインスタンスは配置newで共有メモリ上に構築できるかもしれないが
CStringArray内で確保されるメモリは共有メモリではないし
複数のプロセスから操作すればおかしなことになるし
ようするに無理。
0664デフォルトの名無しさん
2006/07/25(火) 20:52:04なるほど、無理なのですね。
ありがとうございました。
0665デフォルトの名無しさん
2006/07/25(火) 23:59:00administrators 権限では問題なく動くのに、
power users 権限では、
'HOGE.DLL'の読込に失敗しましたみたいなメッセージをアプリが吐いて
終了します。
HOGE.DLL の DllEntry にブレークポイントを仕掛けても、DllEntry がコールされる
前にエラーが発生することから、 HOGE.DLL が依存している DLL のいづれかが
power users では動かないんだと思います。
こういう状況で、どの dll がエラーの原因となっているのか特定する方法はありますでしょうか?
0666デフォルトの名無しさん
2006/07/26(水) 01:00:010667665
2006/07/26(水) 15:12:57HOGE.DLL も、HOGE.DLL があるフォルダも、
Power Users で、読み書き実行できるようにしてあります。
0668デフォルトの名無しさん
2006/07/27(木) 00:48:54スレッドを作ったのですが、正常終了できません。
どなたか、正常に終了する方法を教えてください。
ExitThread(0)とPostQuitMessage(0)では、スレッド生成画面ごと終了
してしまい、AfxEndThread(0)ではASSERT(pThread != AfxGetApp())
でエラーが発生しています。
AfxGetApp()はウォッチでは文字化けして見れないのですが、immedで
見ると確かにpThreadと同じアドレス値になってます。
スレッドを生成した画面からPostThreadMessage()で WM_QUITを送っても
エラーにはならないのですがスレッドは終了してくれません。
今のところTerminateThread()でしか停止できないのですが、
それではメモリリークが発生するためなんとか普通に停止させる
方法が知りたいと思っています。
何か使用法が根本的に間違っているのでしょうか?
0669デフォルトの名無しさん
2006/07/27(木) 01:31:470670デフォルトの名無しさん
2006/07/27(木) 01:45:27ダイアログ画面のボタンを押すとAfxBeginThread()で複数のスレッドを
生成する処理をしています。
しかしスレッドは動き出すのですが、正常に終了してくれません。
スレッド内からExitThread(0)を呼び出すと最初のスレッドでダイアログ
が閉じて無限ループになり、PostQuitMessage(0)を呼び出すと全ての
スレッドが終了した後でダイアログ画面も終了してしまいます。
0671デフォルトの名無しさん
2006/07/27(木) 07:55:08なんでASSERT(pThread != AfxGetApp())でピンと来ないかな。
どう見たってアプリケーションクラスからExitThread呼んでるでしょ。
ExitThreadを呼ぶのは作成したスレッドからだよ?
0672デフォルトの名無しさん
2006/07/27(木) 13:33:37呼ばれなくなってもいけないからExitThread()は使わない方が委員で内科医?
ワーカスレッドからreturnするだけで充分じゃないかと。
#メインスレッドからExitThread()を呼ぶ間違いも起こり得ないし。
0673デフォルトの名無しさん
2006/07/27(木) 14:20:140674デフォルトの名無しさん
2006/07/27(木) 14:35:23いえ、それがアプリケーションクラスではなくCWinThreadを継承した
スレッド内で呼んでます。だから困っているんです。
(PostThreadMessage()だけはダイアログから呼んでます)
それから、ワーカスレッドではなくユーザー インターフェイス
スレッドを作っています。
ワーカスレッドでは中断して待たせたりはできないんですよね?
0675デフォルトの名無しさん
2006/07/27(木) 14:44:08これだとスレッドは終了してくれますが、強制中断してスレッドの
後始末をしないらしく、メモリリークが発生します。
SuspendThread()やResumeThread()はまったく問題なく動作するんですが・・・
(こちらももちろんダイアログ側から呼んでます)
0676デフォルトの名無しさん
2006/07/27(木) 14:49:28~~
??
0677デフォルトの名無しさん
2006/07/27(木) 14:59:500678デフォルトの名無しさん
2006/07/27(木) 15:51:450679デフォルトの名無しさん
2006/07/27(木) 16:17:53?
0680デフォルトの名無しさん
2006/07/27(木) 18:22:12ttp://techtips.belution.com/ja/vc/0009/
のwndbase.cpp と〜.h を使用して、ビルドした際に、ウィンドウが
表示されるのを目標にしています。以下、ソースです。
[m(_ _)m]の手前までで、オブジェクトwindow を作りましたが、
この後、何を書いて行けばよいのでしょうか?
windowcreate を記述するのは分かるのですが、どこに記述したらいいのか分からず、
皆さんのお力を貸して頂けないでしょうか?
ビルド後にウィンドウが出るよう、アドバイスを宜しくお願いします。
#include <windows.h>
#include "wndbase.h"
INT WINAPI WinMain( HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR szStr,INT iCmdShow)
{
// ウィンドウハンドル
HWND HWnd;
CWndBase* window=new CWndBase();
//m(_ _)m
//window->WndProc;
//delete window;
return 0;
}
0681デフォルトの名無しさん
2006/07/27(木) 18:46:18そこの掲示板で作ったやつに聞け
馬鹿
0682デフォルトの名無しさん
2006/07/27(木) 19:04:172chの皆さんの方が教えてくれるような気がして。
ウィンドウをクラス化したいと考えてる人はたくさん
いると思いますので、ここに今まで作った方がいて、
何か良いアドバイスを頂けるかと思った次第です。
このサイトの方のソースを必ず使いたいわけではなく、
このソースを使ったほうが早いかなって思いました。
何か良いサイトでもよろしいので、引き続きアドバイス
宜しくお願いします。
0683デフォルトの名無しさん
2006/07/27(木) 19:07:070684デフォルトの名無しさん
2006/07/27(木) 19:22:22MFCのGUIコントロールから派生クラスを作り、
スタティックライブラリにしようと思っています。
描画はGDI+でやろうとしているのですが、
何故かGDI+の方で大量のエラーが出てしまいます。
GDI+を利用するクラスはスタティックライブラリにできないのでしょうか?
0685デフォルトの名無しさん
2006/07/27(木) 19:26:56とりあえずここ読んでから質問してくれ。
ttp://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/messagesandmessagequeues/aboutmessagesandmessagequeues.asp
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windowprocedures/aboutwindowprocedures.asp
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/aboutwindows.asp
0686デフォルトの名無しさん
2006/07/27(木) 20:50:26そもそも、C++を使わないでウィンドウを作ることはできるんだよな?
C++のクラスにするということは、そのときのプログラムの動きをクラスの枠組みに乗っけてやるということ。
個々の細かな流れは大して変わらない。
0687668
2006/07/27(木) 21:31:15出来るようになりました。どうもスレッド内で書いていた終了時の処理が
悪かったみたいです。
少しずつ処理を追加して調べてみると、thrdcore.cppの_AfxThreadEntry()を
AfxEndThread()で抜ける際にvectorの例外(out_of_range)が発生していました。
自分の処理でvectorは使っていますが、その行ではエラーが起きてないので無関係
だと思ってたのですが、これが原因でしょうか?
それとも、AfxBeginThread()の戻り値を使用してスレッドのメンバに直接アクセス
してはいけないという決まり事か何かがあるのでしょうか?
0688デフォルトの名無しさん
2006/07/27(木) 21:52:20いけなくはないが、複数のスレッドがアクセスする場合
同期してやらないと問題が起きる場合がある。
0689デフォルトの名無しさん
2006/07/27(木) 22:14:21ウィンドウズをクラス化することが出来ました。
ありがとうございます。
感謝の気持ちとして、ソースを公開したほうが宜しいでしょうか?
(大した内容ではないですが><)
また、分からないことあったら来ます。
0690668
2006/07/27(木) 22:23:17ありがとうございます。
個々のスレッドがアクセスするメンバは別々の実体でそれぞれのExitInstance()内で
deleteしてたのですが、念のためにPreTranslateMessage()でユーザメッセージを
受け取ってから処理するようにしてみます。
(ネットで調べた他の人のソースではメッセージマップ使ってCWinThread::OnQuit()で
処理してるみたいなんですけど、VS2005ではメッセージマップが選択できないんですよね・・・)
0691デフォルトの名無しさん
2006/07/28(金) 01:05:35どのように書き換えればいいのか、教えてください。ActiveXコントロールモジュールを読み込んで、その中の関数を使ったものです。
サブルーチンの一例は、
Public Function SetSerialNum(ByVal lSerialNum As Long) As Long
MG17Motor1.HWSerialNum = lSerialNum
MG17Motor1.StartCtrl
End Function
Private Sub Command1_Click()
SetSerialNum (30808366)
fPosition = 0
MG17Motor1.SetAbsMovePos CHAN1_ID, Text1
MG17Motor1.MoveAbsolute CHAN1_ID, False
End Sub
0692デフォルトの名無しさん
2006/07/28(金) 01:19:12public:
long SetSerialNum(long& lSerialNum);
private:
afx_msg void OnBnClickedCommand1(void);
で、cppが
long クラス名::SetSerialNum(long& lSerialNum) {
MG17Motor1.HWSerialNum = lSerialNum;
MG17Motor1.StartCtrl();
}
void クラス名::OnBnClickedCommand1() {
SetSerialNum(30808366);
fPosition = 0;
MG17Motor1.SetAbsMovePos(CHAN1_ID, Text1);
MG17Motor1.MoveAbsolute(CHAN1_ID, False);
}
みたいな感じになると思う。
AcrtiveXコントロールの使い方も変わるだろうが
それ以上にVBのフォームとVCのCWnd派生クラスじゃ使い勝手が
まったく違うからそっちから調べたほうがいい。
0693デフォルトの名無しさん
2006/07/28(金) 01:22:04Public Function SetSerialNum(ByVal lSerialNum As Long) As Long
で値返して無いじゃん。まあいいけどwww
0694691
2006/07/28(金) 01:38:55とりあえず、コピーして貼り付けてビルドすると、MG17Motor1が定義されていない、というエラーが出てきます。
VisualCは全くの初心者なのですが、何かで勉強し直した方がいいですね。
0695デフォルトの名無しさん
2006/07/28(金) 05:49:460696デフォルトの名無しさん
2006/07/28(金) 06:16:070697デフォルトの名無しさん
2006/07/28(金) 08:48:34まずはソースを公開してくれよ
部分的にあーだこーだ言われても分からん
0698デフォルトの名無しさん
2006/07/28(金) 15:08:39NM_CUSTOMDRAWのハンドラ使いますよね。
VC++.NET2003だとリソースエディタからハンドラ作成できるけれど
どうしてLPNMCUSTOMDRAWに勝手にキャストされるの?
↓こんな感じに。
void CHoge::OnNMCustomdrawList1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR); ←これ
// TODO : ここにコントロール通知ハンドラ コードを追加します。
*pResult = 0;
}
LPNMCUSTOMDRAW じゃなくて更に次の
LPNMLVCUSTOMDRAW使いたいのにっ!なんで最初からLPNMLVCUSTOMDRAWにキャストしといてくれないの??
0699デフォルトの名無しさん
2006/07/28(金) 15:18:440700デフォルトの名無しさん
2006/07/28(金) 15:22:35別にリストビュー専用じゃないからでしょ。
0701デフォルトの名無しさん
2006/07/28(金) 15:33:02リストビューから作ったハンドラなのにっ
0702デフォルトの名無しさん
2006/07/28(金) 16:52:45俺が若い頃は(ry…
じいちゃんばあちゃんの気持ちがわかった希ガス。
0703691
2006/07/28(金) 17:32:42目的は単純に、装置制御するプログラムです。
MG17Motor.ocxというActiveXコントローラーが付属されていて、Visual Basic6のサンプルプログラムが付いていただけです。
Visual Baicでは、MG17Motor.ocxをコンポーネンツとして追加して、メインルーチンに
Private Sub Command1_Click()
SetSerialNum (30808366)
fPosition = 0
MG17Motor1.SetAbsMovePos CHAN1_ID, Text1 //Text1 は変数で、この値で装置の状態を変えられます。
MG17Motor1.MoveAbsolute CHAN1_ID, False
End Sub
と書き込み、実行し、フレームに現れるボタンを実行すると問題なく動きます。
僕の用途では、ボタンなど必要なく、コンパイル後、実行するとすぐに命令が執行されるプログラムの方が好ましいのです。
MG17Motor.ocxをどこに読み込むのか?さえ分かりません。
よろしくお願いします。
0704デフォルトの名無しさん
2006/07/28(金) 17:37:33VBのままでいいなら、Form_Load()で実行すればいいよ。
VC++に移植したいのなら、OCXのままだと先ず無理だと思った方がいい。
0705691
2006/07/28(金) 17:58:58有り難うございます。移植は無理だということですね。それでも構いません。
VB6でForm_Load()の中にコマンドを書き込んで実行するとすぐに動きました。
実はこのプログラムのexeファイルを作り、他のプログラムで動かしたいのです。
試してみたところ、ちゃんと動きますが、exeファイルを実行するたびにFormが出てきてしまいます。
このFormを出さない方法、あるいは、実行後Formを消す方法とかないでしょうか?
よろしくお願いします。
0706デフォルトの名無しさん
2006/07/28(金) 18:00:200707デフォルトの名無しさん
2006/07/28(金) 18:00:39VBでOCXを取り込んだOCXなりDLLを作ってそれをVCに組み込めばいいと思う.
0708704
2006/07/28(金) 18:12:41なんだ、Formも要らないなら先に書けよ。
それだったら>706のようにMain()に書いちゃえばOK。
つーか、それくらい調べろよって気もするが。
0709668
2006/07/28(金) 22:37:44おかげさまで解決しました、ありがとうございました。
各スレッドにユーザメッセージを送信して、スレッドのPreTranslateMessage()で
終了時のメモリ解放処理とPostQuitMessage(0)をするように変更すると、全ての
スレッドが綺麗に終了するようになりました。
メモリ解放処理をスレッドのメソッドにしてダイアログ側から直接呼び出していた
のが悪かったようです。(予想外に大量のメッセージが溜まっていました)
ただ、他の人のソースに良くあるようなPostThreadMessage()でユーザメッセージを
送信した後にSleep(1000)などとタイミング調整のスリープを入れると、その直後の
WaitForSingleObject((*it)->m_hThread,INFINITE)がロックしてしまいます。
単にタイミング調整してるだけだから無くても正常に動くならいいか、と思ってますが
原因が突き止められないのでちょっと不安・・・
0710デフォルトの名無しさん
2006/07/28(金) 22:44:320711デフォルトの名無しさん
2006/07/28(金) 23:03:32各スレッドを呼び出すダイアログ側がprivateで管理しているので同時に複数の
操作は入らないはずなんです。
(*it)が指しているスレッドは、WaitForSingleObject(INFINITE)の後で
deleteするまで生きてるので参照にも問題は無いようなんです。
普通は処理の終了待ちで入れているはずのSleep(1000)を入れるとロックして
入れないとWaitForSingleObject(INFINITE)はすぐに帰ってくるので、
何か変(想像と逆)ですよね?
0712デフォルトの名無しさん
2006/08/01(火) 21:16:47あるクラスを作って、その中にさらにクラスを入れ子にした場合、
この、「ハンドルされていない例外」というのが出てるような気がします。
なぜ、この様なエラーが出るのか?回避の方法は如何様かを
ご教授お願いします。
以下、ソースです。
よろしくお願いしますm(_ _)m
0713デフォルトの名無しさん
2006/08/01(火) 21:17:29#include "sub.h"
main.cpp______________________________________
#include <windows.h>
#include "main.h"
INT WINAPI WinMain( HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR szStr,INT iCmdShow)
{
CSUB* SUBOBJ=new CSUB();
SUBOBJ->RUN();
delete SUBOBJ;
return 0;
}
sub.h_________________________________________
#include "sub2.h"
class CSUB {
protected: CSUB2* SUB2OBJ;
public:
CSUB();
~CSUB();
void RUN();
};
sub.cpp_______________________________________
#include "sub.h"
#include <windows.h>
CSUB::CSUB(){ }
CSUB::~CSUB(){ }
void CSUB::RUN(){
MessageBox(NULL, "check01", NULL, MB_OK);
SUB2OBJ->XXX(SUB2OBJ->YYY());
MessageBox(NULL, "check03", NULL, MB_OK);
0714デフォルトの名無しさん
2006/08/01(火) 21:18:11class CSUB2 {
protected: bool ZZZ;
public:
CSUB2();
~CSUB2();
void XXX(bool zzz);
bool YYY() { return ZZZ; }
};
sub.cpp_______________________________________
#include "sub2.h"
#include <windows.h>
CSUB2::CSUB2(): ZZZ(false) { }
CSUB2::~CSUB2() { }
void CSUB2::XXX(bool zzz) { MessageBox(NULL, "check02", NULL, MB_OK); }
0715デフォルトの名無しさん
2006/08/01(火) 21:32:05しかもそこでメンバ変数に触ってるんだから落ちるだろ。
0716デフォルトの名無しさん
2006/08/01(火) 22:18:22>715さん
レスありがとうございます。
レスを元に、今、「メモリ 動的確保」 でぐぐって調べています。
この例での、SUBOBJ を作った段階では、
まだSUB2OBJ が作られていなくて、更にそこにアクセスしようと
したからエラーが発生した・・・ということでしょうか?
ご面倒とは思いますが、何卒ご教授お願いします。
0717デフォルトの名無しさん
2006/08/01(火) 22:47:380718デフォルトの名無しさん
2006/08/01(火) 22:50:24SUB2OBJだってどこか(と言ってもまず間違いなくコンストラクタとデストラクタ)で
newとdeleteをしなければならない。
ところで、全部大文字のクラス名・変数名きもい。
あと、main.hの存在意義が無いだろ、それ。
さらに、そもそも動的に確保する必要はあるのか疑問。
0719デフォルトの名無しさん
2006/08/01(火) 23:00:21相対パス指定するとエラー
どうすればいいの?
0720デフォルトの名無しさん
2006/08/01(火) 23:24:30MSDNで仕様を確認。
0721デフォルトの名無しさん
2006/08/01(火) 23:30:02GetFullPathNameはどう?
0722デフォルトの名無しさん
2006/08/01(火) 23:37:41レスありがとうございます。
sub.cppを書き直してみました。(下記参照下さい)
コンストラクタとデストラクタ(つまり�@と�A)でnewとdeleteを
してみたのですがビルドエラーが出てしまいます。
�B�Cだと無事通ることができました。
何故か分かりませんが、少し自分で調べてみます。
レスをして頂いた方々。ありがとうございます。m(_ _)m
#include "sub.h"
#include <windows.h>
CSUB::CSUB(){
//�@CSUB2* SUB2OBJ=new CSUB2();
}
CSUB::~CSUB(){
//�Adelete SUB2OBJ;
}
void CSUB::RUN(){
//�BCSUB2* SUB2OBJ=new CSUB2();
MessageBox(NULL, "check01", NULL, MB_OK);
SUB2OBJ->XXX(SUB2OBJ->YYY());
MessageBox(NULL, "check03", NULL, MB_OK);
//�Cdelete SUB2OBJ;
}
0723デフォルトの名無しさん
2006/08/02(水) 00:27:050725デフォルトの名無しさん
2006/08/02(水) 01:31:04クラス定義みてないけどこれはまずいだろ。
�@はコンストラクタのローカル変数で、CSUBのメンバ変数のSUB2OBJじゃないからこのnewはメモリリークしてる
�AはCSUBのメンバ変数だけど�@のSUB2OBJとは別物で初期状態のままの不定値が入ってるから落ちる
�BはCSUB::RUN()関数のローカル変数でCSUBのメンバ変数のSUB2OBJじゃない
�CはCSUBのメンバ変数だけど�Bとは別物だから結果は�Aと同じ
ってか、上なおしてもこの設計だとCSUB::RUN()をよびだしたらアウト。
0726デフォルトの名無しさん
2006/08/02(水) 03:00:110727デフォルトの名無しさん
2006/08/02(水) 07:27:570728デフォルトの名無しさん
2006/08/02(水) 20:23:21詳しい解説ありがとうございます。
理解できました。愚かな質問で申し訳ございません。
また、教えてくれた方々にも感謝しています。
ありがとうございましたm(_ _)m
0729デフォルトの名無しさん
2006/08/02(水) 21:29:54次からは、エラーが出たならエラーメッセージくらい書いてね
0730デフォルトの名無しさん
2006/08/03(木) 14:41:39と同じcmd.exeに関するエラーに悩まされてます。
ツール>オプション>実行可能ファイルの設定を見直すといいと分かりましたが
できればエラーの出ない(みなさんの)環境での設定項目を
羅列してもらえないでしょうか?
0731nmn
2006/08/03(木) 22:44:43質問なんですが、VC++6.0を安く買える方法ないですか?
気合いれて、1万もするVC++6.0の本を買ったんで、
折角だから、家でも勉強したいなと…。
0732デフォルトの名無しさん
2006/08/03(木) 22:45:280733nmn
2006/08/03(木) 23:01:18商品名 :プログラミングMicrosoft Visual C++6.0
販売価格:9,975円
買ったのに…。
仕事場の開発環境がVC6.0ってだけで即決してしまいました↓↓
やっぱりVC2005ですかね?
0734デフォルトの名無しさん
2006/08/03(木) 23:43:050735nmn
2006/08/04(金) 00:06:43プロジェクトが変わり、VC++を使うことになりました。
ttp://www.amazon.co.jp/gp/product/4891000503/503-0614484-7271114?v=glance&n=465392&s=gateway
VC2005でもこの本使えますかね…。
0736デフォルトの名無しさん
2006/08/04(金) 00:11:19使えません。
さらに言うなら、VC2003などの書籍もさけた方が良いです。混乱の元。
0737nmn
2006/08/04(金) 00:21:44やっぱりダメですか…。
どうしたもんだか…。
まずはVC++6.0を勉強しようかな…。
きっと役に立つ…立ちますよね?
何かいいアドバイスいただけたら幸いです。
0738デフォルトの名無しさん
2006/08/04(金) 00:33:36ん?業務で使うのはどっち?
業務で使うほうの勉強をしたほうがいいよ。
ざっくり言うと、VC6の知識はVC2005では通用しないものがほとんどだし、逆もまた真だから。
0739デフォルトの名無しさん
2006/08/04(金) 00:35:52業務でVC6使うなら、VC6の本でいいね。
基本部分以外はVC2005じゃ使えないから、なんとかしてVC6を手に入れることだね。
MSDNには入ってるんだっけ?
0740nmn
2006/08/04(金) 00:38:29今の業務で使っているのはVC6の方です。
VC6の方で勉強していきます!!
あとはソフトか…。
あ、ちなみに一概には言えないのは承知の上で、
現状でVC6での業務って多いんですかね?
最近はVC2005なんですか?
0741デフォルトの名無しさん
2006/08/04(金) 00:39:35会社に断って家のPCにインストールさせてもらいなよ。
0742nmn
2006/08/04(金) 00:42:56今のプロジェクトの場合、
ライブラリは自分で作ってるとか言っておりました。
0743nmn
2006/08/04(金) 00:44:20なるほど!有難うございます。
明日会社で聞いてみます。
0744デフォルトの名無しさん
2006/08/04(金) 00:46:41会社の人は知らない可能性があるから、もしそうなら、コピーが自由だってことは
EULA.txtに書かれてるって教えてやれ。
0745デフォルトの名無しさん
2006/08/04(金) 00:49:540746nmn
2006/08/04(金) 00:56:22ここで質問してみてよかった!
ありがとうございます!!
0747デフォルトの名無しさん
2006/08/04(金) 01:03:210748デフォルトの名無しさん
2006/08/04(金) 01:41:440749デフォルトの名無しさん
2006/08/04(金) 07:05:59んな適当なこと言ってないで、早く就職したらどうだ?
0750デフォルトの名無しさん
2006/08/04(金) 07:59:40なんか問題あんの?
0751デフォルトの名無しさん
2006/08/04(金) 18:03:01VC++を学ぼうと思い、猫でもわかるプログラミングからやろう考え一番最初のをコピペしたところ
ttp://www.kumei.ne.jp/c_lang/sdk/sdk_00.htm ←このコードです。
hWnd = CreateWindow(szClassNme,
"猫でもわかるプログラミング",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
この部分の一番したのNULLにエラーがでます。
error C2664: 'CreateWindowExW' : 2 番目の引数を 'char [25]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
どうすればいいでしょうか?.NET2003ではこんなエラーでなかったので困ってます・・・お願いしますm(_ _)m
0752デフォルトの名無しさん
2006/08/04(金) 18:04:16すいません、事故解決しました。
UNICODEからSJISをデフォルトにすればいいんですね、なんか2005色々めんどくさくなってますね・・・
0753デフォルトの名無しさん
2006/08/04(金) 18:25:520754デフォルトの名無しさん
2006/08/04(金) 20:30:05なんかマクロ定義しればいい?
0755デフォルトの名無しさん
2006/08/04(金) 20:35:040756デフォルトの名無しさん
2006/08/04(金) 20:45:19一切UNICODEでコンパイルすることが無ければ付けなければ良いだけの話し
0757756
2006/08/04(金) 20:47:160758デフォルトの名無しさん
2006/08/04(金) 21:11:34LPCSTRが、みんなLPCTSTRになっちゃってるんだよね
使いにくいったらありゃしない
0759デフォルトの名無しさん
2006/08/04(金) 21:18:38それならUNICODEでコンパイルしなければいいだけ。それなら>>752が正解
0760デフォルトの名無しさん
2006/08/04(金) 21:40:380761デフォルトの名無しさん
2006/08/04(金) 22:03:28VCスレでそれを聞くのはいかがかとw
0762デフォルトの名無しさん
2006/08/05(土) 02:28:38fatal error C1083: include ファイルを開けません。'windows.h': No such file or directory
と出てしまいます。
Microsoft Platform SDKも入っていてその中にwindows.hも入っています。
Visual C++ 2005 Express Edition と Microsoft Platform SDK を一緒に使う
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
このサイトの通りにやってもだめでした。
どなたか分かる人いたらお願いします。
0763デフォルトの名無しさん
2006/08/05(土) 02:38:350764762
2006/08/05(土) 03:03:45#include <stdio.h>
#include <windows.h>
main(){
}
これでコンパイルかけてもダメです。
0765デフォルトの名無しさん
2006/08/05(土) 03:05:10<亀田のカラクリ>
1戦目 デンナロン・シスソバ(タイ) 戦績 0勝2敗 ○ 1回44秒KO
2戦目 プラカルン・ツインズジム(タイ) 戦績 0勝3敗 ○ 1回1分12秒KO
※日本ボクシングコミッション2005年度招聘禁止選手(八百長疑惑)
3戦目 サミン・ツインズジム(タイ) 戦績 0勝4敗 ○ 1回1分48秒KO
4戦目 ダオチャイ・KTジム(タイ) 戦績 0勝5敗 ○ 10回判定
※日本ボクシングコミッション2006年度招聘禁止選手(八百長疑惑)
5戦目 ノパデッチレック・チュワタナ(タイ) 戦績 0勝0敗 ○ 2回59秒KO
6戦目 ヨードゲン・シンワンチャー(タイ) 戦績 0勝4敗 ○ 1回2分10秒KO
7戦目 サマン・ソー・チャトロン(タイ) 戦績 46勝7敗1分 ○ 1回2分59秒KO
※チャトロンは35歳、3年前に1度引退。復帰後3連敗
8戦目 ワンミーチョック・シンワンチャー(タイ) 戦績 12勝2敗 ○ 3回50秒TKO
※亀田は防衛戦を一度もせずに王座返上。一部のライターや元プロからワンミーチョックの手数が明らかに少なかったと指摘される。
9戦目 ノエル・アランブラッド(ベネズエラ)戦績 21勝4敗1分1無効試合 ○ 7回TKO
※アランブラッドは元WBAミニマム級チャンピオンで亀田(フライ級)とは2階級差
10戦目 カルロス・ボウチャン(メキシコ)戦績 16勝12KO5敗 ○ 6回2分20秒KO
※ローブロー疑惑。試合終了後亀田親父がとんでもない剣幕で相手陣営に怒鳴り込む(ブック破りで切れた?)
11戦目 カルロス・ファハルド(ニカラグア)戦績 15勝10KO6敗1引 ○2回1分28秒TKO
※ファハルドの最終戦は2005年6月17日(1年近くのブランク有り)で、もともとミニマム〜Lフライ級の選手
昨日亀田が1階級下げて(ライトフライ)タイトルマッチを争ったランダエダは元々最軽量のミニマムの選手で
亀田とは実質2階級差。本来は去年の12月で引退予定だった選手。
0766デフォルトの名無しさん
2006/08/05(土) 03:15:40こんなところで妄想八百長おつかれさま。
0767デフォルトの名無しさん
2006/08/05(土) 03:27:44http://freepg.fc2web.com/cpp/topic_vce_001.html
このページの通り試してみる
0768764
2006/08/05(土) 04:05:45できました!ありがとうございます。
corewin_express.vspropsファイルの修正のところでミスしてました。
どうもありがとうございmasita。
0769デフォルトの名無しさん
2006/08/05(土) 06:19:44返事遅くなったけどアリガトン!
昨日は久々に早く寝ちゃって今起きた。
0770デフォルトの名無しさん
2006/08/05(土) 22:08:23VC++に興味を持ち、VCEEをインストールしました。
そんで、いざやるぞ!って思ったんですが、インターネット上で
VCEEに関する勉強HPが見当たりません。
VC6.0に関するHPはいくつも見つけたのですが、
これは流用ってできませんよね?(ポインタの表記の仕方とかが違うみたいです)
どこか、よいHPはありませんでしょうか。
0771デフォルトの名無しさん
2006/08/05(土) 22:14:14ただのC/C++コンパイラとして使うのであれば(C++/CLIを使うつもりで無ければ)、
普通のCやC++の入門のWebサイトは使えるぞ。
0772770
2006/08/05(土) 22:40:42#include "stdafx.h"
#include "Form1.h"
using namespace RO;
[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
// コントロールが作成される前に、Windows XP ビジュアル効果を有効にします
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
// メイン ウィンドウを作成して、実行します
Application::Run(gcnew Form1());
return 0;
}
0773770
2006/08/05(土) 22:44:44今、猫さんのHPをみながら、
*****
#include <stdio.h>
int main(void)
{
printf("私の名は粂井です\n");
return 0;
}
****
というコードを記述してみようと思いました。
ところが、VCEEにて新規プロジェクトを作成し、いざやってみようと
思ったら、メインソースファイルが>>772のような形になっており、
はてさて、int main{なんたら}のなんたら部分を消してしまってもよいものか
困っています。このような理由で、先ほどのような質問をさせていただいた次第です。
0774デフォルトの名無しさん
2006/08/05(土) 22:46:56それはC++/CLIのプログラム。はっきり言うとC++/CLIには
まだ入門向けのWebサイトも本もないし、当分できないであろう。
だって素のC++の上に、更にC++/CLIと.NET Frameworkの知識を積み重ねで要求されるから。
普通のC/C++使ったプログラムを作る気なら、
Win32 コンソールアプリケーション・Win32 アプリケーションでプロジェクト作れよ。
0775770
2006/08/05(土) 23:14:38ご指摘ありがとうございました。
ここはひとつ、おっしゃるようにWin32 コンソールアプリケーション・Win32 アプリケーションで
プロジェクトをつくり、C/C++に慣れてみようと思います。
ちなみに、Win32 コンソールアプリケーション・Win32 アプリケーションで作成した
プロジェクトは、操作はやっぱりコマンドプロンプトのみで、
フォームを作成したりとかはできないですよね?
0776デフォルトの名無しさん
2006/08/05(土) 23:22:06C言語編を中盤までマスターし、Platform SDKを使えるようにした上で、
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
Windows SDK編へ突入しろ。
0777770
2006/08/05(土) 23:30:090778770
2006/08/05(土) 23:31:24いろいろありがとうございました。
猫さんのHPを見て頑張ってみます。
0779デフォルトの名無しさん
2006/08/06(日) 20:36:090780デフォルトの名無しさん
2006/08/06(日) 21:53:360781sage
2006/08/07(月) 07:31:40画面上にある複数のボタンを押すことにより画面とクラスを切り替え、それぞれ違う処理をしようと思っていますが、
CFormViewのクラスの追加はできましたが、画面とクラスの切り替えがうまくできません。
最初の画面の、ボタンを押されたときの処理にいろいろ打ち込んでいるのですが‥
どなたか参考になるご意見をお願いいたします
0782デフォルトの名無しさん
2006/08/07(月) 14:41:02そいつの表示用メソッドを呼んでやればいいよ。
たとえばこんな感じ。
CMyFormView* pMyFormView;
pMyFormView = new CMyFormView(this);
pMyFormView->ShowWindow(SW_SHOW);
クラスを追加するというのは雛型を作っただけ見たいな状態なので、
実際にはどっかのクラスのメンバ変数として用意してやるとか、
ポインタ変数をメンバに定義してnewしてやるとかして実体を作って
やんないと何も処理が出来ない。
0783デフォルトの名無しさん
2006/08/07(月) 18:23:56#include <iostream.h>
#include <fstream.h>
#include <conio.h>
void FileRead(char *FileName,char *File)
{
char c;
char *file_name = *FileName;
int i=0;
ifstream MyFile(file_name);
while(MyFile.get(c))
{
i++;
cout << c;
*(File+i) = c;
}
}
int main(void)
{
char File[255];
char *FileName = "test.txt";
FileRead(*FileName,*File);
cout << File[0] << endl;
getch();
return 0;
}
どうすればよろしいのでしょうか。ご提示お願いいたします。
0784デフォルトの名無しさん
2006/08/07(月) 18:28:22素直に入門書辺りを読み直した方がいいと思うよ。
突っ込みどころだらけで説明する気にもなれないよ。
0785デフォルトの名無しさん
2006/08/07(月) 18:28:52C++使えるようになりたいんなら
C言語のポインタの勉強を基本からやりなおせ・・・
0786デフォルトの名無しさん
2006/08/07(月) 18:50:530787デフォルトの名無しさん
2006/08/07(月) 20:47:46わかりました。もっと勉強してきます。
>>786
またどうしてもわからなくなったらC++スレで訊いてこようと思います。
0789デフォルトの名無しさん
2006/08/09(水) 00:53:26タイトルバー無しのダイアログを表示させたいのですが、背景が灰色ではなく、透明になってしまいます。
ダイアログにあるボタン、テキスト、エディットボックス部分は、背景は透明ではなく、ちゃんと灰色に表示されます。
以下が、ソースコードの一部です。何がおかしいのでしょうか?
リソーススクリプト
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
IDD_HISCORE DIALOGEX 0, 25, 119, 86
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
PUSHBUTTON "OK",IDOK,37,69,42,15
CTEXT "あいうえお",IDC_STATIC,24,3,70,8
CTEXT "かきくけこ。",IDC_STATIC,24,12,72,8
EDITTEXT IDC_EDIT1,14,40,91,12
END
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
ダイアログの表示する関数
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
DialogBox(
(HINSTANCE)GetWindowLong(hWnd , GWL_HINSTANCE) ,
MAKEINTRESOURCE(IDD_HISCORE),
hWnd , DialogProcHiscore
);
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
0790デフォルトの名無しさん
2006/08/09(水) 01:42:05float a = 1.0f;
float b = 0.1f;
while(1){
a = a / b;
}
とループさせながらウォッチでaの値を見ていると
1.000e-038#DENとでてくるのですが
#DENの意味は何ののですか?
0791デフォルトの名無しさん
2006/08/09(水) 01:53:520792デフォルトの名無しさん
2006/08/09(水) 09:14:180793デフォルトの名無しさん
2006/08/09(水) 10:07:410794デフォルトの名無しさん
2006/08/09(水) 11:21:19aの値は増えていくんじゃないのか?
んで、1e308を越えて演算オーバーフローが起きたんじゃないか?
0795デフォルトの名無しさん
2006/08/09(水) 12:40:33Windows Me で動くのでしょうか。
0796デフォルトの名無しさん
2006/08/09(水) 12:40:58動かない。2000/XP以上が必要。
0797795
2006/08/09(水) 12:47:47そうですか。
ありがとうございます。
0798790
2006/08/11(金) 00:48:10a = a / b; じゃなくて
a = a * b; でした
floatの範囲を越えてたみたいですね
と思ったら、ループを続けたら以下の数値が
出てきたのですが
1e-038#DEN
1e-039#DEN
1.00001e-040#DEN
9.99967e-042#DEN
1.00053e-042#DEN
9.94922e-044#DEN
9.80909e-045#DEN
1.4013e-045#DEN
0
floatの範囲外は>>791でのDENYで
正しくないということなのかな
0799デフォルトの名無しさん
2006/08/11(金) 12:15:52値が小さすぎて正規化数では表せませんってこと。
0801デフォルトの名無しさん
2006/08/16(水) 14:26:30ここのタスクトレイ常駐アプリサンプルをコンパイルしてみたのですが、
「初回の例外が発生しました : 0xC0000005: 場所 0xffffffff を読み込み中にアクセス違反が発生しました。」
というメッセージが終了後に出ます。
けれども出力欄には上記メッセージが出るのですが、
中止とか継続とかの例のダイアログは出ません。
Releaseで実行すると何事も無く終了します。
このアクセス違反メッセージは無視していいのでしょうか?
ちなみに
((CMainWnd*)m_pMainWnd)->Create();
の行をコメントアウトすると消えます。
何かヒントをいただければと思います。よろしくお願いいたします。
Athlon64の自作機
WindowsXP Professional SP2
Visual Studio .NET 2003 Professional
0802デフォルトの名無しさん
2006/08/16(水) 14:44:50m_pMainWndがNULLかどうか、デバッグで確認してみようか。
0803デフォルトの名無しさん
2006/08/16(水) 14:58:44レスありがとうございます
とりあえず、リークがあったのでCMainWnd::PostNcDestroy()の最後でdelete thisしています。
m_pMainWndがNULLかについては、CTrayIconApp::ExitInstance()を追加して
そこでブレークした限りではNULLでしたが…もっと前でしょうか?
0804デフォルトの名無しさん
2006/08/16(水) 15:16:530805デフォルトの名無しさん
2006/08/16(水) 15:17:01>((CMainWnd*)m_pMainWnd)->Create();
の段階でNULLなら、そりゃぁアクセス違反も起きるわなぁ。
まさか、解放した後のポインタを見てないだろうね。
0806801
2006/08/16(水) 15:47:29ぃぁそこでNULLだったら盛大にダイアログが出ますから…
それにそこは一つ上でnewしてる直後ですし
終了の最後の段階でアクセス違反が、デバッグ版では出ているのに、
そういうメッセージが出力欄に出るだけで素通りされ、何をどうやっても
止まってくれないんです
一応はアセンブラのウィンドウも覗きましたが、さすがに理解不能で
デバッガが止めてくれない例外というのは何者なのだろうか、と
0807デフォルトの名無しさん
2006/08/16(水) 16:12:15ちなみに、WinXPProSP2/VS2005Proだと、例外は発生しなかった。
デバッガが止めないという事は、内部でハンドリングされている訳だし、
気にするな、てことでいいんじゃね?
0808801(やおい?)
2006/08/16(水) 16:17:43なんですとー!?
まあ….NET2003はちょっと怪しいところがありますしねえ
だからって初代はもっと怪しいですが
とりあえずデバッガ公認ということでとりあえず気にしないことにします。
ありがとうございました
0809デフォルトの名無しさん
2006/08/17(木) 01:27:36メニューからファイル→開く でファイルを参照させて画像ファイルを開いてそれをPictureboxに表示させたいんですが
どう書けばいいでしょう・・・メニュー自体は作れたのですが、それを押した時のイベントが初心者なので全然わかりません(TT)
参考になるHPとかでもいいんで教えてくださいー
0810809
2006/08/17(木) 01:28:290811デフォルトの名無しさん
2006/08/17(木) 02:31:350812デフォルトの名無しさん
2006/08/17(木) 13:26:400813デフォルトの名無しさん
2006/08/18(金) 18:41:43int*がNULLのはずがfalseってなるし、
ポインタがNULLなのに、<未定義の値>ってなる。
前は、未定義の値なら、そのおかしな数値がそのまま表示されたのに。
やってられん(;´Д`)
0814813
2006/08/18(金) 19:13:360815デフォルトの名無しさん
2006/08/18(金) 20:50:17自己代入を行うと、
オブジェクトは一つなのに
文字列を格納するための動的なメモリ領域が二つ分割り当てられると本にあるのですが、
sDatを一度deleteしてからnewしてるので、そんなことはないと思ってしまうのですが。
どう解釈したらよいのでしょうか……。
よろしくお願いします。
// MyStringクラスの定義
class MyString {
char *sDat;// メンバ変数
public:
MyString();// コンストラクタ
~MyString();// デストラクタ
void operator=(const MyString &mstr);// 代入演算子のオーバーロード
};
// 代入演算子のオーバーロード
void MyString::operator=(const MyString &mstr)
{
// 古い文字列を削除。(ここでsDatは消える?)
delete [] sDat;
// 新しい文字列を格納。
sDat = new char[lstrlen(mstr.sDat) + 1];
lstrcpy(sDat, mstr.sDat);
0816デフォルトの名無しさん
2006/08/18(金) 20:51:15int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
// オブジェクトを宣言
MyString ms1;
// 文字列を代入
ms1 = "Hello";
// 自己代入(これで文字列が二つに?)
mc1 = mc1;
...
}
0817デフォルトの名無しさん
2006/08/18(金) 21:49:57deleteされた領域にアクセスすることになるな
0818デフォルトの名無しさん
2006/08/18(金) 22:54:29VS2003 SP1
ttp://www.microsoft.com/downloads/details.aspx?FamilyId=69D2219F-CE82-46A5-8AEC-072BD4BB955E&displaylang=ja
0819デフォルトの名無しさん
2006/08/18(金) 23:00:56GJ
0820デフォルトの名無しさん
2006/08/19(土) 09:21:39ちょ、なにサラっとGJしてんの?
ありがとう
0821デフォルトの名無しさん
2006/08/19(土) 21:28:30時間が無いんだ
Visual C++ 2005 Express Edition
ってFramework不要のアプリって作れるのか?
作るときには何か別途でダウンロードとかあるのか?
0822デフォルトの名無しさん
2006/08/19(土) 21:42:43Visual Studio 2005 Express Editions: Visual C++ 2005 Express Edition と Microsoft Platform SDK を一緒に使う
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
0823デフォルトの名無しさん
2006/08/19(土) 21:50:51ありがとう!!
今インストールしてる
0824デフォルトの名無しさん
2006/08/19(土) 22:48:46このサイトを見ながら
tp://www7a.biglobe.ne.jp/~lshen/EternalWindows/else/VC%202005.html
0825デフォルトの名無しさん
2006/08/19(土) 22:55:52素直にMSDN見ろよ。
0826デフォルトの名無しさん
2006/08/19(土) 23:05:480827デフォルトの名無しさん
2006/08/19(土) 23:08:15ありがとうございました。
0828デフォルトの名無しさん
2006/08/19(土) 23:08:290829デフォルトの名無しさん
2006/08/21(月) 01:39:55プログラムが上手く実行できなかったので質問します。
Win32アプリケーションを作ろうとして、
新規プロジェクトからWin32アプリケーション(コンソールではない。)を設定
test.cpp(Hello,Worldなど超簡単プログラム)を作って
コンパイル→実行→思惑通り起動!
とここまでは良かったのですが、Visual C++ 6.0を終了させて、
再起動の後、先ほどのtest.cppを開いて実行すると、以下のようなエラーで実行できません
LIBCD.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です
Debug/test.exe : fatal error LNK1120: 外部参照 1 が未解決です。
ちなみにコンパイルではエラーなしです。
初めにプロジェクトを作るときはどのプログラムでも実行できたのですが、
一度VisualC++を終了させてから再起動してプログラムを起動すると
二度と実行できなくなります。
どうすれば再起動後もプログラムを走らせることができますか?
0830デフォルトの名無しさん
2006/08/21(月) 01:41:18ソリューションファイルを開くんだ
0831デフォルトの名無しさん
2006/08/21(月) 02:10:190832デフォルトの名無しさん
2006/08/21(月) 03:18:16Visual Studio.Netではなく、Visual C++なので
ソリューションファイル(.sln)が作成されないのですが・・・
>>831
mainはC言語、WinmainはWindowsアプリケーションのエントリーポイントという
ことはわかったのですが、ウェブ上で発見したどのようなWinアプリも
>>829の症状がでて実行できなかったです。ちゃんとWinmain関数を使ってるのですが・・・
Visual Studio.Netを使わないとWinアプリは作れないということなのでしょうか・・・?
0833デフォルトの名無しさん
2006/08/21(月) 03:21:35というファイルは無いのか?
それを開けばよし
0834デフォルトの名無しさん
2006/08/21(月) 06:38:35VC++6.0までなら、dswかdspを開けばいい。
VC.NETからはdsw->sln、dsp->vcproj等になっている、はず。
ソースだけ渡されたので、とりあえずコンソールアプリとしてビルドされた、
でもmain見つからない、って所か?
0835デフォルトの名無しさん
2006/08/21(月) 16:29:38エディットボックスをある条件下で「編集不可」にしたいのですが、どうすればできますか?
0836デフォルトの名無しさん
2006/08/21(月) 16:37:03EM_SETREADONLY
0837デフォルトの名無しさん
2006/08/21(月) 16:38:290838デフォルトの名無しさん
2006/08/21(月) 16:39:19その定数を使う関数も教えて頂けますか?
0839デフォルトの名無しさん
2006/08/21(月) 16:42:52MSDNで調べろ
0840デフォルトの名無しさん
2006/08/21(月) 23:28:10"EM_SETREADONLY"でぐぐれば、使用例がある。ちょっとしたことはホント便利になった。
0841デフォルトの名無しさん
2006/08/22(火) 00:18:33Disc2,Disc3って何に使うかご存知な方おりましたら、
ご教授願います。
0842デフォルトの名無しさん
2006/08/22(火) 00:23:04中身見てみれば?
0843デフォルトの名無しさん
2006/08/22(火) 00:32:18セットアップファイルのEXEも起動しないですし・・・。
0844デフォルトの名無しさん
2006/08/22(火) 00:44:200845デフォルトの名無しさん
2006/08/23(水) 01:12:02CPaintDC dc;
Graphics graphics(dc.m_hDC);
Bitmap* bmp = new Bitmap(IDB_BITMAP1); ←これどうにかしたい
graphics.DrawImage( bmp, 0, 0 );
0846デフォルトの名無しさん
2006/08/23(水) 01:14:42OSは、WindowsXPです
ログインユーザーの違いによりエラーが出てこまっています。
1、管理者権限でログインした場合
・EXE実行(Releseで作成したもの)すると、正常に動作します。
・ソース実行(DEBUG)bオても正常に動麹�オます。
2、一般ユーザー(制限ユーザー)の場合、
・EXE(Releseで作成したもの)をクリックしたとたんに
"初期化に失敗しました。アプリケーションエラー (0xc0000022)"の
Windowsエラーが発生し、起動さえできません。
・ソース実行でも(DEBUG)、初期化に失敗しましたと出て、
落ちている個所さえ特定出来ません。そもそも、ソースが実行できていない感じです。
DLLの読み込み等で失敗しているのでしょうか?
ちなみにWindows2000でも同じ現象が発生しました。
普段開発は、管理者権限で行っていますが、
実際動作させるのは制限ユーザーです。
何が影響しているのか、わかりません。
管理者権限でうまく動作しているのでソース自体には問題がないと思われるのですが。。。
アクセス権限等関係あるのでしょうか?
どなたかご存知の方、解決方法を教えてください。
0847デフォルトの名無しさん
2006/08/23(水) 02:04:17インスタンスハンドルとリソース名(or ID)を指定するコンストラクタがある。
http://windowssdk.msdn.microsoft.com/en-us/library/ms536317.aspx
ところでBitmapをnewで動的に作る必要ある?
0848デフォルトの名無しさん
2006/08/23(水) 02:48:10実際のプログラムだとRenshuGDIPlusってクラスに
Bitmap* m_resourceBitmap;
ってメンバ用意してます。
コンストラクタでリソースからBitmapクラス作ろうとしてるので
さっきの例ではnewしてたのです。
実際RenshuGDIPlusコンストラクタで
HINSTANCE hInst = GetWindowLong( this->m_hWnd, GWL_HINSTANCE );
m_resourceBitmap = new Bitmap( hInst, IDB_BITMAP1 );
ってやったらコンパイラからお母さん許しませんって出ました。orz
0849デフォルトの名無しさん
2006/08/23(水) 05:52:01ありがとう、解決しました。
�@
m_resourceBitmap = new Bitmap( hInst, (WCHAR*)MAKEINTRESOURCE(IDB_BITMAP1) );
�@'
m_resourceBitmap = new Bitmap( hInst, (WCHAR*)IDB_BITMAP1 );
�@と�@'のどちらでもできました。
0850デフォルトの名無しさん
2006/08/23(水) 08:24:51どうせデストラクタでdeleteするのだろう。ならやはりポインタにする必要ない。
普通にコンストラクタの初期化リストで初期化すればいいだけではないか。
>>849
MAKEINTRESOURCEW使えばキャスト不要。
0851デフォルトの名無しさん
2006/08/23(水) 09:24:16学校でVCを使用する事になったのですが、
0852デフォルトの名無しさん
2006/08/23(水) 09:42:41そうですか。
それで何か質問でもおありで?
0853デフォルトの名無しさん
2006/08/23(水) 22:35:12変数に対して左に書くような、本にありました。
例えば、変数aに対して、ポインタは*a。(aの左に書いてる)
勉強していて、この*が変数の右に来ることがあるみたいですが、
どういう意味なのかわかりません。
void RenderObject(void *p_void)
{
struct Object *p=(struct Object *)p_void;
などと本にあって、 ↑この*の
使い方ってどういう意味なのでしょうか?
質の低い質問で申し訳ないですが、よろしくお願いします。
0854デフォルトの名無しさん
2006/08/23(水) 22:55:340855デフォルトの名無しさん
2006/08/23(水) 23:12:54キャスト
0856デフォルトの名無しさん
2006/08/24(木) 00:02:33ぐぐって調べます。m(_ _)m
0857デフォルトの名無しさん
2006/08/24(木) 00:56:270858855
2006/08/24(木) 01:03:21int *p;
とした時、pの型は int * で
この*は型がポインタであることを表している
んで
(struct Object *)p_void
はp_voidの型をObjectのポインタにキャスト(型変換)してる
0859デフォルトの名無しさん
2006/08/24(木) 01:06:100860デフォルトの名無しさん
2006/08/24(木) 06:38:140861デフォルトの名無しさん
2006/08/24(木) 07:13:170862デフォルトの名無しさん
2006/08/24(木) 08:14:44アクセス違反
0863デフォルトの名無しさん
2006/08/24(木) 10:15:25static_castしようとしたら面接で落とされ
dynamic_castしたら警察に通報され
やけくそになってreinterpret_castしたら殺された
そんな人生。
0864デフォルトの名無しさん
2006/08/26(土) 03:06:12スプリッタウインドウ作り左右にFormViewを配置しました。
左のViewにはボタンコントロールが2つ。
───────────────────────────
│ ×│
───────────────────────────
│ │ │
│ │ │
│ ボタン1 │ │
│ │ │
│ ボタン2 │ │
│ │ │
│ | │
│ | │
│ | │
│ | │
───────────────────────────
ボタンコントロールで右のViewを切り替えたい場合は
どうやればいいのでしょうか?
スプリッタ使う場合の右のViewを複数作る時点から壁にぶつかってしまいました。
0865864
2006/08/26(土) 03:07:100866デフォルトの名無しさん
2006/08/29(火) 09:10:42http://www.bosuke.mine.nu/blog/archives/2005/07/post_214.php
外道ソフト 「アマゾン殺し」
(VC++によるソースもあるようで。自己責任にてドーゾ)
0867デフォルトの名無しさん
2006/08/29(火) 11:57:43今日インターンシップの事前研修にいったら「開発はVisualC++を使ってる(結構うろ覚え)」といわれました。
だけどボクのパソコンはmac…本格的なインターンシップは来週からなんですが独学でVisualC++を勉強したいんです。
macでのVisualC++を勉強する環境は無いでしょうか?
0868デフォルトの名無しさん
2006/08/29(火) 12:03:33exeを実行できないから意味が無い。
0869デフォルトの名無しさん
2006/08/29(火) 12:05:140870デフォルトの名無しさん
2006/08/29(火) 12:08:55macで何かしらプログラム組んでたなら、大丈夫じゃね?
0871デフォルトの名無しさん
2006/08/29(火) 12:10:490872デフォルトの名無しさん
2006/08/29(火) 12:27:220873デフォルトの名無しさん
2006/08/29(火) 13:04:170874デフォルトの名無しさん
2006/08/29(火) 14:17:220875873
2006/08/29(火) 14:38:27#知っている人は知っている、車の名前みたいな店名だw
0876デフォルトの名無しさん
2006/08/29(火) 19:19:26\resource.h() : fatal error RC1004: unexpected end of file found
というエラーが出るんですがどうしてでしょうか・・・。
0877デフォルトの名無しさん
2006/08/29(火) 20:36:30RC1004 でググろうとか思わないのかい?
0878デフォルトの名無しさん
2006/08/29(火) 21:24:210879デフォルトの名無しさん
2006/08/29(火) 21:45:090880デフォルトの名無しさん
2006/08/29(火) 23:29:20試しにボタンを押すとメッセージボックスが出るようにしようと
思ってMessageBox()を使ってみたら、エラーが出てコンパイル
出来ません。
少し分かる人に聞いたところ、CWnd::MessageBox が呼び出されている
ためとのことですが、SDKの(?)のMessageBox() を呼び出すには
どの様に記述すれば良いのでしょうか?
0881デフォルトの名無しさん
2006/08/29(火) 23:33:180882デフォルトの名無しさん
2006/08/29(火) 23:35:05それでいけるんですか。
ありがとうございます。
afxMessageBox()は知っていたのですが、引数が違うし
しっくりこないなと思っていたんです。
0883デフォルトの名無しさん
2006/08/29(火) 23:38:480884デフォルトの名無しさん
2006/08/29(火) 23:56:000885デフォルトの名無しさん
2006/08/30(水) 01:13:27{
//フレームレートを60にする
static DWORD NowTime,PrevTime;
NowTime = timeGetTime();
if( (NowTime - PrevTime)<1000/60 )return;
PrevTime = NowTime;
//以下いろんな処理
}
int WINAPI WinMain()
{
//いろんな処理
while(1){
if(PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
{
if(!GetMessage(&msg,NULL,0,0))
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}else{
Draw();
}
}
//いろんな処理
}
0886デフォルトの名無しさん
2006/08/30(水) 01:14:16と、ある書籍にサンプルコードがあったんですが、
PrevTime という変数は初期化もされずに使われています。
また、PrevTime = NowTime としてるんですが、
PrevTime も NowTime もDrawのローカル変数なので、
ループでDrawを呼び出す毎に変数PrevTimeとNowTimeは破棄されるから、
なんの意味もないような感じに見えるのですが・・・
この書き方じゃ、秒間60フレームにするって動作は満たせませんよね?
グローバルで宣言しないと期待の動作はしませんよね?
0887デフォルトの名無しさん
2006/08/30(水) 01:24:370888デフォルトの名無しさん
2006/08/30(水) 01:25:240889デフォルトの名無しさん
2006/08/30(水) 21:20:42的確なご回答ありがとうございました。
0890デフォルトの名無しさん
2006/08/30(水) 21:57:02具具ってもなさそう
0891デフォルトの名無しさん
2006/08/30(水) 22:25:27リストビューのアイテムをクリックして編集しようとしています。
CListCtrl::EditLabel で編集出来るのは分かっているのですが、
一列目しか編集出来ません。
二列目以降を編集したい場合、エディットボックスを手動で
貼り付けるしかないのでしょうか?
その場合、エディットボックスに与えるべきサイズと位置は
どのようにして取得すればよいのでしょうか?
0892デフォルトの名無しさん
2006/08/31(木) 00:01:10そういうことをやった例がCodeGuruにいくつかある。
但し、高機能すぎて何をやっているのかよく判らない例と低機能で見栄えが悪い例に大別される。
まぁ、丹念に探せばそれなりのが見つかると思う。
0893デフォルトの名無しさん
2006/09/02(土) 09:41:22アプリケーションを作りたいのですが簡単な方法はないでしょうか?
0894デフォルトの名無しさん
2006/09/02(土) 09:45:13高速道のSAや駅などにある情報端末の多くが極普通にVC++で作られている。
#只のCGIなのも多いけど。
それらは大抵、マウスの代わりにタッチスクリーンを使っているだけだ。
結論:
作るだけなら普通のアプリを作るのと変わらない。
0895デフォルトの名無しさん
2006/09/02(土) 09:51:55ありがとうございます。
タッチパネル方式というのは比喩でして、要は画面遷移をさせたいのです。
今までダイアログベースのアプリケーションしか作ったことなくて
この辺の知見がないのです。イメージとしてはSDIのクライアント領域に
コントロールが並んでいて「進む」ボタンを押すごとに画面がどんどん
切り替わっていくみたいなイメージです。。。
0896デフォルトの名無しさん
2006/09/02(土) 09:54:15つ[flash]
つ[dhtml]
0897デフォルトの名無しさん
2006/09/02(土) 10:29:12MFCならCPropertySheet
0898デフォルトの名無しさん
2006/09/02(土) 11:07:16DLL(libxxx.dll とそのインポートライブラリ libxxx.lib)
を生成するとき、それぞれのプロジェクトに同じように
ソースファイルを追加しますよね?
あるオープンソースのライブラリのソースツリーを
眺めていたら、*.cpp と *.h は静的ライブラリの方にだけ
加えれていて、動的ライブラリは依存関係で静的ライブラリ
に依存するように設定してあとはモジュール定義ファイル
libxxx.def が一つだけ追加されていたのですが、
このような方法で DLL を生成することができるのでしょうか?
0899デフォルトの名無しさん
2006/09/02(土) 11:08:45>>897
ありがとうございます。
勉強してみます。
0900デフォルトの名無しさん
2006/09/02(土) 12:47:56できる。所詮静的ライブラリはオブジェクトファイルを固めただけのようなもの。
OBJが全く無く、LIBだけでもEXE/DLLは作れる。
0901デフォルトの名無しさん
2006/09/02(土) 14:08:09つーことは特に最適化とかを変えるわけじゃなければ、
まず静的なライブラリを作って、それを DLL に
変換できるってことっすか??
マジカヨとおもって >>898 で言及したライブラリを
ビルドしてみたら、DLL 用のプロジェクト
(これ自体にはモジュール定義ファイル libxxx.def
しか含まれてないけど、静的なライブラリのプロジェクト
に依存してる)からはなんにも生成されませんでした orz
0902デフォルトの名無しさん
2006/09/02(土) 14:28:54ShowWindow(SW_HIDE);
ShowWindow(SW_SHOW);
0903デフォルトの名無しさん
2006/09/02(土) 18:18:270904デフォルトの名無しさん
2006/09/02(土) 18:23:430905デフォルトの名無しさん
2006/09/02(土) 19:54:40できたアプリを実行すると 2005 の方が遅くなってるのは、
やっぱりマルチスレッド用のランタイムしか提供されて
いないからですか?
0906デフォルトの名無しさん
2006/09/02(土) 19:58:070907デフォルトの名無しさん
2006/09/02(土) 20:00:49一番モッサリしたのはIDEだがな。
0908デフォルトの名無しさん
2006/09/02(土) 22:35:00→
C:\\Documents and Settings\\Administrator\\デスクトップ\\test.txt
のように変換するAPIみたいなのってありますか?
GetSaveFileName関数などで取得したファイルパス名で
fopenしたいのですが
0909デフォルトの名無しさん
2006/09/02(土) 22:37:18君は何か勘違いしてる
0910デフォルトの名無しさん
2006/09/02(土) 22:39:19配列に入ってるものを変換してやる必要はない。
0911デフォルトの名無しさん
2006/09/02(土) 22:42:53つ エスケープシーケンス
0912911
2006/09/02(土) 22:44:180913908
2006/09/02(土) 23:07:49ということは、GetSaveFileNameで取得したファイル名で
fopenが失敗するのは、別の原因があるってことでしょうか・・
俺の脳みそでは他に原因が思いつかないorz
0914デフォルトの名無しさん
2006/09/02(土) 23:14:110915デフォルトの名無しさん
2006/09/02(土) 23:17:310916908
2006/09/02(土) 23:19:43OPENFILENAME ofn;
HANDLE hFile;
DWORD dwAccBytes;
char buf[MAX_BUF_SIZE];
char szFileName[255]="kakikomi.txt";
char szFile[255]="test";
memset(&ofn, 0, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hWnd;
ofn.lpstrFilter = "text(*.txt)\0*.txt\0All files(*.*)\0*.*\0\0";
ofn.lpstrFile = szFileName;
ofn.lpstrFileTitle = szFile;
ofn.nFilterIndex = 1;
ofn.nMaxFile = sizeof(szFileName);
ofn.nMaxFileTitle = sizeof(szFile);
ofn.Flags = OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY;
ofn.lpstrDefExt = "txt";
ofn.lpstrTitle = "名前を付けて保存";
if(GetSaveFileName(&ofn) == 0)
return -1;
hFile = CreateFile(szFileName, GENERIC_WRITE, 0, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
strcpy(buf,szFileName);
FILE *fp;
fp=fopen(buf,"wb");
if(fp==NULL){
MessageBox(NULL,"ファイル作成失敗",buf,MB_OK);
return -1;
}
0917908
2006/09/02(土) 23:24:13apiというと、WriteFileとかでしょうか
シリアライズで保存したかったのですが
fwriteを利用する方法しか知らないもので・・
0918デフォルトの名無しさん
2006/09/02(土) 23:32:24先にCreateFileすると、CloseHandleするまでは、そのファイルを
ロックするわけで、後からきたfopenで開けないのは当然の話。
0920デフォルトの名無しさん
2006/09/02(土) 23:36:090921デフォルトの名無しさん
2006/09/02(土) 23:36:500923デフォルトの名無しさん
2006/09/03(日) 04:17:38そういった機能が実装されているクラスとかって標準でありますか?
無ければSYSTEMTIME構造体のメンバを比べて
作ろうと思ってます
0924923
2006/09/03(日) 06:33:00このページを参考に自作して解決しました
0925デフォルトの名無しさん
2006/09/03(日) 10:39:05CTimeは?
0926デフォルトの名無しさん
2006/09/03(日) 11:22:340927デフォルトの名無しさん
2006/09/03(日) 11:32:150928デフォルトの名無しさん
2006/09/03(日) 20:01:11( ‘д‘)
⊂彡☆ CTime ===========================)) Span
0929デフォルトの名無しさん
2006/09/04(月) 14:20:07boost 厨っていわれるからやめとくよ
0931デフォルトの名無しさん
2006/09/04(月) 23:51:22MFCの最小プログラムを書いて見たんですがもっと小さく出来るでしょうか?
#include <afxwin.h>
#define p public
class M:p CFrameWnd{p:M(){Create(0,"");}DECLARE_MESSAGE_MAP()};class A:p CWinApp{p:BOOL InitInstance(){M*w=new M;w->ShowWindow(m_nCmdShow);m_pMainWnd=w;return 1;}};BEGIN_MESSAGE_MAP(M,CFrameWnd)END_MESSAGE_MAP();A a;
0932デフォルトの名無しさん
2006/09/05(火) 00:22:140933デフォルトの名無しさん
2006/09/05(火) 00:27:19素晴らしい
それは盲点でした
0934デフォルトの名無しさん
2006/09/05(火) 00:40:040935デフォルトの名無しさん
2006/09/05(火) 00:41:120936デフォルトの名無しさん
2006/09/05(火) 00:42:29(m_pMainWnd=new M)->ShowWindow(m_nCmdShow);
0937デフォルトの名無しさん
2006/09/05(火) 00:44:350938デフォルトの名無しさん
2006/09/05(火) 00:50:32リネームですか〜ちょっと反則ぎみな気もしますが一応適応
>>936
それはいけてますね
今のところ241バイト
改行コードを0dのみにするのもアリかもしれませんね
#include <a>
#define p public
class M:p CFrameWnd{p:M(){Create(0,"");}DECLARE_MESSAGE_MAP()};class A:p CWinApp{p:int InitInstance(){(m_pMainWnd=new M)->ShowWindow(m_nCmdShow);return 1;}};BEGIN_MESSAGE_MAP(M,CFrameWnd)END_MESSAGE_MAP();A a;
0939デフォルトの名無しさん
2006/09/05(火) 00:53:48!!!素晴らしい 217バイト
#include <a>
struct M:CFrameWnd{M(){Create(0,"");}DECLARE_MESSAGE_MAP()};struct A:CWinApp{int InitInstance(){(m_pMainWnd=new M)->ShowWindow(m_nCmdShow);return 1;}};BEGIN_MESSAGE_MAP(M,CFrameWnd)END_MESSAGE_MAP();A a;
0940デフォルトの名無しさん
2006/09/05(火) 00:56:02ところでこういうことはできるか?
#define m(p) p##_MESSAGE_MAP
struct M:CFrameWnd{M(){Create(0,"");}m(DECLARE)};struct A:CWinApp{int InitInstance(){(m_pMainWnd=new M)->ShowWindow(m_nCmdShow);return 1;}};s(BEGIN)(M,CFrameWnd)s(END)();A a;
0941デフォルトの名無しさん
2006/09/05(火) 01:01:54CFrameWndを直接newするのは?
0942デフォルトの名無しさん
2006/09/05(火) 01:06:14発想は素晴らしいし、コンパイルも通りますが残念ながらサイズは増えてしまいました 222バイト
#include <a.h>
#define d(x) x##_MESSAGE_MAP
struct M:CFrameWnd{M(){Create(0,"");}d(DECLARE)()};struct A:CWinApp{int InitInstance(){(m_pMainWnd=new M)->ShowWindow(m_nCmdShow);return 1;}};d(BEGIN)(M,CFrameWnd)d(END)();A a;
0943デフォルトの名無しさん
2006/09/05(火) 01:25:49#include <a.h>
struct A:CWinApp{int InitInstance(){((CFrameWnd*)(m_pMainWnd=new CFrameWnd))->Create(0,"");m_pMainWnd->ShowWindow(m_nCmdShow);return 1;}};A a;
0944デフォルトの名無しさん
2006/09/05(火) 01:29:520945デフォルトの名無しさん
2006/09/05(火) 01:36:29頂きました /W4に変更することで154バイト
#include <a.h>
struct A:CWinApp{InitInstance(){((CFrameWnd*)(m_pMainWnd=new CFrameWnd))->Create(0,"");m_pMainWnd->ShowWindow(m_nCmdShow);return 1;}};A a;
0946デフォルトの名無しさん
2006/09/05(火) 01:39:01#include <a.h>
struct A:CWinApp{InitInstance(){((CFrameWnd*)(m_pMainWnd=new CFrameWnd))->Create(0,0);m_pMainWnd->ShowWindow(m_nCmdShow);return 1;}};A a;
すいません、そろそろ仕事に戻ります
スレ汚しスイマセンデシタ
0947デフォルトの名無しさん
2006/09/05(火) 01:39:510948デフォルトの名無しさん
2006/09/05(火) 01:43:25CWndのCreateに、引数2個が無いため無理です
ああ、明日締め切りなのに遊んでしまったww
0949デフォルトの名無しさん
2006/09/05(火) 01:56:01あとはm_nCmdShowを諦めて、直接5 (SW_SHOW)か何かを指定するくらいしか思いつかない。
0950デフォルトの名無しさん
2006/09/05(火) 02:02:31{return((CFrameWnd*)(m_pMainWnd=new CFrameWnd))->Create(0,0,0x10CF0000);}
0x10CF0000はWS_OVERLAPPEDWINDOW | WS_VISIBLE。
0951デフォルトの名無しさん
2006/09/05(火) 02:06:23->Create(0,0,0x10CF0000);}}a;
aの部分、エラーはおろか/W4でも警告にならなかった。
0952デフォルトの名無しさん
2006/09/05(火) 02:29:22まだやってましたか!大分小さくなりましたね
struct {} a;はC言語の基礎中の基礎ですね
WindowStyleにWS_OVERLAPPEDWINDOW|WS_VISIZBLEもSDKだと基本ですね
showwindowに戻り値があることもすっかり忘れてました
いい勉強になりました
0953デフォルトの名無しさん
2006/09/05(火) 16:41:040954デフォルトの名無しさん
2006/09/05(火) 20:02:46お勧めの書籍はありますか?Visual Studioを使うのはこれが初めてです。
0955デフォルトの名無しさん
2006/09/05(火) 20:15:13MFCとかDirectXとか.NETとかのC++以外の部分じゃなくて?
本当にC++なら「プログラミング言語C++ 第三版」で鉄板。
0956デフォルトの名無しさん
2006/09/05(火) 20:25:52レスありがとうございます。
C++の言語部分はおっしゃる書籍を使おうと思っているのですが、
Visual Studio自体の使い方(デバッカなど)で分かりやすい
お勧めがあればなぁ、と。
0957デフォルトの名無しさん
2006/09/05(火) 21:47:570958デフォルトの名無しさん
2006/09/05(火) 22:17:180959デフォルトの名無しさん
2006/09/06(水) 14:31:45for 中でしか必要のない変数を for 文のスコープ外で見せたくないので。
for 文の外で宣言してさらにそれをブロックで囲めとかですか?普通。
0960デフォルトの名無しさん
2006/09/06(水) 14:50:130961デフォルトの名無しさん
2006/09/06(水) 14:53:47for の中で unsigned 一つと char 一つ使いたいので。
0962デフォルトの名無しさん
2006/09/06(水) 15:23:39Cスレで聞け
0963デフォルトの名無しさん
2006/09/06(水) 15:26:13適切な変数名をつければ(そしてコードが長ければ適切に関数に分けていけば)
for の外で宣言しても混乱なくコードが書けると思いますぜ。
== 外で宣言しても気にしない。
まぁ 「普通」 なんて人によって違ってくるから1つの意見として。
0964デフォルトの名無しさん
2006/09/06(水) 22:15:340965デフォルトの名無しさん
2006/09/07(木) 01:15:16圧縮後のファイルサイズを比較したところ、
libpngの方がかなり小さくなります。
libpng は、圧縮レベルを設定できるのですが、
GDI+では、該当するパラメータを見つけられません。
本当は、GDI+で楽をしたいので、
GDI+での圧縮レベルの設定法を教えてください。
ちなみに、テストに使用しているのは、デスクトップを
キャプチャした画像です。
0966デフォルトの名無しさん
2006/09/07(木) 05:25:57pngの圧縮レベルはサイズに余り影響しないと思うのだけどね。
もしや、GDI+は32ビットカラー、libpngは8ビットカラーなんてことはない?
0967デフォルトの名無しさん
2006/09/07(木) 06:25:590968965
2006/09/07(木) 07:45:04出来上がったファイルを右クリックしてプロパティで
確認した限りでは、両方とも8ビットカラーと表示されてます。
圧縮後のサイズは1割程度の差がつくようです。
GDI+使用時 45k
libpng使用時 39k
>>967
メタデータは意識していませんでした。
確認してみます。
0969デフォルトの名無しさん
2006/09/07(木) 17:23:56ボタンやコンボ,picture boxを配置しています.
いま,矢印キーを押すと,pictureに表示している内容を変えたいと思っています.
OnKeyDown(nChar ,...)で
if(nChar == 0x025) hogehoge();
としていますが,これではhogehogeが呼び出されません.
ボタンへのフォーカスが動くだけです.
どうしたら,hogehogeを呼び出すことができるのでしょうか?
0970デフォルトの名無しさん
2006/09/07(木) 18:15:35PreTranslateMessage()で拾ってみたら?
0971969
2006/09/07(木) 18:41:230972デフォルトの名無しさん
2006/09/08(金) 18:39:58Escapeキー→プログラムを終了
Tabキー→ボタンのフォーカス移動
の両立がしたいのですが、うまくいきません
現在、ウィンドウクラスをwc.cbWndExtra = DLGWINDOWEXTRAにして
CreateWindowで作ったトップウィンドウにボタンを2個配置しています
メッセージループで
while (GetMessage(&msg, NULL, 0, 0)) {
if(!IsDialogMessage(hWnd,&msg)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
このように記述するとフォーカス移動はできますがESCAPEはうまく動かず
逆にisDialogMessageの記述をなくすとESCAPEはOKですが
フォーカス移動がダメという状態です
メッセージループの書き方が悪いような気がするのですが
そもそも作り方自体が変なのでしょうか
0973デフォルトの名無しさん
2006/09/08(金) 18:53:520974デフォルトの名無しさん
2006/09/08(金) 18:59:160975972
2006/09/08(金) 19:38:26回答ありがとうございます
一応、各関数については調べました
msgの中身の見方というのは良くわからないのですが
while (GetMessage(&msg, NULL, 0, 0)) {
if(msg.message==WM_KEYDOWN){
if(msg.wParam==VK_ESCAPE)
MessageBox(NULL,"vkescape","",MB_OK);
}
if(!IsDialogMessage(hWnd,&msg)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
こういったプログラムを実行してみたところ
VK_ESCAPEの入力自体はあるようです
ちょっと、質問の仕方が下手だったので整理して
もう一度質問質問させてもらいます
0976972
2006/09/08(金) 19:52:58猫でもわかるプログラミングののSDK編のイントロダクションのサンプルで
wc.cbWndExtraの値を0からDLGWINDOWEXTRAにだけ変更して作成したウィンドウの
ウィンドウハンドルです
そして
CreateWindow(
TEXT("BUTTON") , TEXT("ボタン1") ,
WS_CHILD | WS_VISIBLE | WS_BORDER| WS_TABSTOP|BS_PUSHBUTTON ,
0 , 0 , 0 , 0 ,hWnd , (HMENU)100 , hInstance , NULL);
こういう感じでボタンを2つ配置しているのですが
メインのhWndをダイアログかつ、通常のウィンドウとして
扱うのは変だろうかというのが疑問点です
つまり、プログラムとしては
リソーススクリプトを作ってそこにボタンを配置して
CreateDialogでhWndを親とするダイアログをつくり
while (GetMessage(&msg, NULL, 0, 0)) {
if(!IsDialogMessage(hWndDialog,&msg)) //←hWndからhWndDialogに
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
こういうループにしたほうが良いでしょうか
0977972
2006/09/08(金) 20:19:44メッセージ処理はメッセージループの中でしなければだめと
思い込んでいました
while (GetMessage(&msg, NULL, 0, 0)) {
if(msg.message==WM_KEYDOWN){
if(msg.wParam==VK_ESCAPE){
PostQuitMessage(0);
}
}
if(!IsDialogMessage(hWnd,&msg)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
0978デフォルトの名無しさん
2006/09/08(金) 23:50:51共通の処理は一つにまとめたいので、CDialogを継承した
自前のクラスを作り(CMyDialogとします)、このCMyDialogを
継承してそれぞれのダイアログに対応したクラスを作りたいと
考えています。
しかし、クラスウィザードでダイアログに対応したクラスを作ろうと
すると、”MFCクラス”しか選べず、自前のクラスは選べません。
この様にCDialogをそのまま使わずに継承してから使いたい
場合はどうすればいいのでしょうか?
0979デフォルトの名無しさん
2006/09/09(土) 00:20:100980デフォルトの名無しさん
2006/09/09(土) 00:38:11クラスウィザードで作った後、自前で変えることは可能だが。
0981デフォルトの名無しさん
2006/09/09(土) 00:56:47そうなんですか?
クラスウィザードでとりあえずCDialogベースに作っておいて、その後に
手動編集で自前のクラスを継承させてもそのまま使えるのでしょうか?
その場合、編集するのは
Class MyClass : public CDialog
のCDialogを書き換えるだけで良いのでしょうか?
また、その後にクラスウィザードでメッセージ対応させた関数を作っても
そのまま使えるのでしょうか?
0982972
2006/09/09(土) 02:30:55どの部分が推奨されてないのでしょうか
GetMessageの直後?
後はフックでもできそうだということはわかったんですが
フックは一歩間違うと致命的らしいので怖いです
ttp://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200303/03030095.txt
ダイアログを表示するDLLでキー入力
0983デフォルトの名無しさん
2006/09/09(土) 09:25:17他にもいくつか書き換える場所あるよ。メッセージマップとか。
0984デフォルトの名無しさん
2006/09/09(土) 11:48:01>while (GetMessage(&msg, NULL, 0, 0)) {
ここじゃね?
エラー発生時に-1を返すとかだっけ?
GetMessageをMSDNで調べてみな。
0985972
2006/09/09(土) 15:46:28多分私へのレスですよね?
MSDNにはGetMessageはWM_QUITのときのみ0
エラーが出たときは-1を返すと書いてありました
WEBにあるメッセージループはほとんどwhile(GetMessage)の形式なので
全く気づきませんでした!とても参考になりました
こんな感じに書き直してみました
int getmessage_return_value;
while(TRUE){
Getmessage_return_value=GetMessage(&msg,NULL,0,0);
if(getmessage_return_value!=0 && getmessage_return_value!=-1){
if(msg.message==WM_KEYDOWN&&msg.wParam==VK_ESCAPE)
PostQuitMessage(0);
if(!IsDialogMessage(hWnd,&msg)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
else{
break;
}
}
0986デフォルトの名無しさん
2006/09/09(土) 23:30:34誰か教えてください
0987デフォルトの名無しさん
2006/09/09(土) 23:38:13マニュアルを読む際に日本語のものが無いまたは役に立たない場合など
英語のソースにあたることが多いので英語力は無いよりはあった方が有利
数学
基本的には論理的思考が出来れば良い
開発にかかわるプログラムの内容によっては数学の知識や物理の知識が必要
0988デフォルトの名無しさん
2006/09/09(土) 23:38:56数学は分野によるのでは?
英語は分かるにこした事はないけど、普通に書く分には簡単な単語が分かれば十分でしょ。
あとプログラム書いてて思ったのは、文章の構成能力というか、
文章を纏めるのが上手い人が書いたプログラムってのは凄く読みやすいと思ったよ。
0989デフォルトの名無しさん
2006/09/09(土) 23:54:58プログラム組めますか?
0990デフォルトの名無しさん
2006/09/10(日) 00:02:520991デフォルトの名無しさん
2006/09/10(日) 00:04:58英語や数学うんぬん言う前に
ひとの意見に耳を傾ける能力も必要だよ
0992デフォルトの名無しさん
2006/09/10(日) 00:05:56マジレスすると、計算が苦手でも式さえ考える力があれば
計算系のプログラムもある程度は書けると思うよ。
計算するのはコンピュータだからね。
まぁ要は君の頑張り次第じゃないのかな?
まだ若いのなら今から色々本見るなり、ネットで調べるなりして頑張って勉強するといいよ。
0993デフォルトの名無しさん
2006/09/10(日) 00:06:440994デフォルトの名無しさん
2006/09/10(日) 00:12:57本当に好きなら、誰がなんと言おうが頭が悪かろうがその気持ちを抑えられないでしょ、普通。
おれなんかは、決して頭も良くないし、プログラムもあまり上手くないと思うけど
凄く好きだから今だにやってるし、初めてコンソールで「Hello World!」って出した時なんか
言葉では言い表せない様な衝撃が身体に走ったけどな。好きならそんなもんでしょ?
0995デフォルトの名無しさん
2006/09/10(日) 00:26:18そうですかー学校でCの学習がはじまるんで
どうなんだろうと思いました。ありがとうございます。
とりあえず、英語は単語程度ならある程度分かるので頑張ってみます
>>991
自分>>986です。>>989は別の方ですね
0996デフォルトの名無しさん
2006/09/10(日) 00:26:540997デフォルトの名無しさん
2006/09/10(日) 00:28:51釣りにマジレス
0998デフォルトの名無しさん
2006/09/10(日) 00:31:17やる気の問題
ただ年取ってくると日常の雑務に煩わされて
だんだん遊んでる時間なくなってくるけどね
0999デフォルトの名無しさん
2006/09/10(日) 00:33:27「○○語が書けるようになる」「筆が使えるようになる」
というのと同じようなもので、何を書くか、ということとは別問題。
1000デフォルトの名無しさん
2006/09/10(日) 00:36:4710011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。