■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

★初心者にVisual C++を教えるスレ★ Part20
501 名前:デフォルトの名無しさん :2005/07/28(木) 22:02:54
[オプション] ダイアログ ボックスの [プロジェクトとソリューション] セクションで [Visual C++ フォルダ] を更新します。

これって「ツール」→「オプション」で出てくるプロジェクトおよびソリューションのどっかいじれってことですよね?
すいません、よくわからなくて…。って俺は何時間こんなことやったんだ!!!!!!!

502 名前:デフォルトの名無しさん :2005/07/28(木) 22:42:19
質問させていただきます。よろしくお願いいたします。
WIN32APPLICATIONで、
親ウインドウより、ダイアログをCreateDialogで、
ダイアログを表示していますが、ダイアログが、閉じると同時に、
親ウインドウも閉じてしまいます。
親ウインドウは、閉じない方法はありますでしょうか。


503 名前:デフォルトの名無しさん :2005/07/28(木) 22:56:20
もしかして親WindowとWindowハンドル同じってはなし?


504 名前:デフォルトの名無しさん :2005/07/28(木) 23:00:07
すいません、お聞きしたいのですが、
VC++6.0 Win2k 非MFCで
ダイアログボックス表示中に他のアプリのウインドウを操作できないようにしたいのですが
何か方法はありますか?
フックとか使えばできるんでしょうか?
(っていうかフックってのがよくわかってないのですが。。)

505 名前:デフォルトの名無しさん :2005/07/28(木) 23:14:32
>>503さんありがとうございます。
int WINAPI WinMain(HINSTANCE , HINSTANCE,LPSTR,int);
この、第一引数を、
DialogBox(この第一引数にわたしています。)
それから、CreateDialog でなくて、DialogBoxでした。
BOOL CALLBACK dlgproc(HWND,UINT,WPARAM,LPARAM);
この第一引数を
EndDialog(この第一引数にわたしています。);
で答えになっていますか?


506 名前:デフォルトの名無しさん :2005/07/28(木) 23:38:03
>505
話すと長くなるけど、
メインウィンドウとダイアログを表示することに関してはHINSTANCEハンドルはどこも同じでいいから、
HWNDハンドルに関して、
CreateWindowの戻り値入れるHWNDハンドルと
DialogBoxのHWNDハンドルと
CALLBACK dlgprocのHWNDハンドルと
EndDialogのHWNDハンドルを
それぞれ1つだけ変えて走らせてみるとおもしろいことが分かるよ(きっと理解が深まる)

それと、HWNDハンドルが複数要った場合、定義する位置も考えて、
すなはち、グローバルにコードの頭でなのか関数の中(例えば、CALLBACK WndProc(?)の中)でなのか

507 名前:デフォルトの名無しさん :2005/07/28(木) 23:55:05
ちゃんとした日本語を話してください><

508 名前:デフォルトの名無しさん :2005/07/29(金) 00:33:41
c言語で
char a[4];
printf("4文字入力");
scanf("%s",a);
のようにして、4文字を一文字づつ読み取るにはどうすばいい?
初心者に教えてください。

509 名前:デフォルトの名無しさん :2005/07/29(金) 00:41:02
>508
いた間違えた。

510 名前:デフォルトの名無しさん :2005/07/29(金) 00:41:52
>>504
フックとか使えばできると思うよ。

511 名前:デフォルトの名無しさん :2005/07/29(金) 01:06:21
マック用はないんですか?
ググってもマック用のCコンパイラソフトが見つからなかったので、、、

512 名前:デフォルトの名無しさん :2005/07/29(金) 01:12:51
マックはOSのインストールCDに
デベロッパーツールが入ってるから買う必要はない

513 名前:デフォルトの名無しさん :2005/07/29(金) 01:16:15
円周率を計算式から実行結果を表示させる時、%の次を何にすれば
よりたくさんの数字が表示されますか?

514 名前:どくろべい :2005/07/29(金) 02:12:38
すみませんー教えてください。
DirectXをVC++で使うのにDirectX9.0SDKを
インストールしたのですが、
VC++でプロジェクト新規作成時、
DirectX9 AppWizardが表示されません。
どうやれば表示できるかおしえて〜(><)

515 名前:デフォルトの名無しさん :2005/07/29(金) 02:20:38
>>514
DirectX SDK Sample Browser

516 名前:デフォルトの名無しさん :2005/07/29(金) 02:34:55
>>513
取り敢えず%.15gとデモして味噌。

517 名前:デフォルトの名無しさん :2005/07/29(金) 06:23:08
>>505って、DialogBoxが終ったらそのままWinMainが終了してるだけちゃうの?

518 名前:デフォルトの名無しさん :2005/07/29(金) 09:46:39
すいません。
VC++Standard.NET2003を買おうと思うのですが、最適化をするためにtoolkitを使おうと思っています。
そのためには特別な設定が必要なのでしょうか?
また、このコンパイラを使った場合、エラーメッセージ等は英語になってしまうのでしょうか。
VC++を買う前に検討したいと思いました。

519 名前:デフォルトの名無しさん :2005/07/29(金) 10:27:37
VC++Standard.NET2003を買おうと思うのですが = プログラミング経験なしか超初心者
そのためには特別な設定が必要なのでしょうか? = PC初心者
エラーメッセージ等は英語になってしまうのでしょうか。 = 低学歴

心配ありません
最適化とは無縁です

520 名前:518 :2005/07/29(金) 10:52:47
>プログラミング経験なしか超初心者

初心者ですが、BCC+BCCDevで少し勉強しています。
次のステップに買おうと思っています。

>PC初心者

というかVC++初心者なのでどういう設定が必要なのか教えて下さい。

>低学歴

ということは英語になるという事ですね?

また、初心者で無い人はどのバージョンを買うのも合わせて教えていただけると嬉しいです。

521 名前:デフォルトの名無しさん :2005/07/29(金) 10:56:49
最低でも最適化のあるProfessional以上だな。
会社とかならMSDNとかボリュームライセンスで入手するだろうな。
学生なら初心者かどうかにかかわらず、the Spokeが安くてPro相当だからそれを買えばいい。

522 名前:デフォルトの名無しさん :2005/07/29(金) 11:17:10
>>516
ありがとうございます!16桁以上がどうしてもでなくて・・・
でもありがとうございました!

523 名前:518 :2005/07/29(金) 11:41:46
>>521
そうですか。どうもありがとうございます。
で、当方学生じゃないし、金額の面でもstandardを買おうと思うのですが、
>>518の質問なのですがどのような設定をするのでしょうか。
「visualC++ standard 最適化 toolkit」なのでググって見たのですが
設定の仕方を解説した記事等が見当たりませんでした。

524 名前:デフォルトの名無しさん :2005/07/29(金) 12:01:00
toolkitは無料なんだし、それ落として来てコンパイルするだけだろうが
visual c++ toolkit でぐぐったら使い方なんかいくらでも見つかるし、
それ見てわからんのだったらあきらめろ

Standard.からtoolkit使うのはそれができてから考えろ

525 名前:518 :2005/07/29(金) 12:32:10
>>524
>Standard.からtoolkit使うのはそれができてから考えろ

いちいちレスするの面倒だろうし、レス消費ももったいないのでサクっと教えてくれませんか?


526 名前:デフォルトの名無しさん :2005/07/29(金) 12:49:20
いちいちレスするの面倒だし、レス消費ももったいないのでサクっとPro以上を買ってください。

527 名前:デフォルトの名無しさん :2005/07/29(金) 12:58:35
Q.standardでtoolkitを使うための設定の方法を教えて下さい。

A.pro以上を買って下さい。


じゃなくて、Qを教えて下さい。

528 名前:デフォルトの名無しさん :2005/07/29(金) 13:06:09
>>527
A.自分で調べましょう。それができないなら>526で。

529 名前:518 :2005/07/29(金) 13:08:00
答えるのが面倒。自分で調べろって
おまえさぁ・・・このスレにいる意味ないだろ

530 名前:518 :2005/07/29(金) 13:16:25
>>529はニセモノです。
が、代弁してくれてありがとうw。
以降、ニセモノ出るかもしれないけど、答えられない人は無駄なレスはしてないでおとなしくしていましょうよ。

自分で調べましょうとか、〜のあとに考えろとか、お前じゃ無理だから心配するなとか、
無意味なアドバイスはいらないです。

531 名前:デフォルトの名無しさん :2005/07/29(金) 13:23:39
>>530
ああ書いちゃった。
漏れ知らね

532 名前:デフォルトの名無しさん :2005/07/29(金) 13:23:44
というかtoolkitはインストールしたのか?
それできないと質問自体無意味だぞ

533 名前:デフォルトの名無しさん :2005/07/29(金) 13:34:21
>>518
エラーメッセージ等は英語にならない

534 名前:デフォルトの名無しさん :2005/07/29(金) 13:40:44
>>530
つ[分相応]

535 名前:デフォルトの名無しさん :2005/07/29(金) 13:47:05
>>530
つ[ぬるぽ]

536 名前:デフォルトの名無しさん :2005/07/29(金) 15:45:58
VC++2003 standard + toolkitの話題が出てたから調べてみたら良さそうだね。
いいかげん6.0だと無理が出てきたんで乗り換えようと思ったけど
2005はstandardでも最適化できるっぽい・・・悩む

537 名前:518 :2005/07/29(金) 15:50:25
>>529
>>530
は本物です。

538 名前:初心 :2005/07/29(金) 16:34:40
: fatal error C1083: インクルード ファイルがオープンできません。'sys\socket.h': No such file or directory
どうすれば実行できますか?

539 名前:デフォルトの名無しさん :2005/07/29(金) 16:56:29
>>538
Windows には UNIX のソケットはありません。
WinSock について調べてみてください。

540 名前:初心 :2005/07/29(金) 17:03:08
はい、調べてみます。

541 名前:デフォルトの名無しさん :2005/07/29(金) 19:31:38
いつも思うけどPro以上、Pro以上って誰それかまわず薦めてる奴は
アホだと思う。

542 名前:デフォルトの名無しさん :2005/07/29(金) 20:07:39
>>505です
>>506さん
>>517さん
いろいろアドバイスいただきまして、ありがとうございました、
ハンドルいろいろ変えて試してみました。
理解が深まってきたと思います。
画面が、すべて閉じてしまったのは、
コマンドイベントの終わりに、break;を入れてないからでした。
みなさまありがとうございました。

543 名前:デフォルトの名無しさん :2005/07/29(金) 20:12:32
いつも思うけどPro以上、Pro以上って誰それかまわず薦めてる奴は
素直だと思う。

544 名前:デフォルトの名無しさん :2005/07/29(金) 20:59:10
最適化が必用なら素直にpro買っとけ
初心者スレで裏技質問するなアホ

545 名前:デフォルトの名無しさん :2005/07/29(金) 21:19:11
最適化が不用なら素直にtoolkit落としとけ
初心者スレで表技質問しろアホ

546 名前:デフォルトの名無しさん :2005/07/29(金) 21:35:07
VC toolkitは最適化有ります

547 名前:デフォルトの名無しさん :2005/07/29(金) 22:17:24
すいません現在C言語とgcc ver3.4.4でpthread_create()を使っているのですが、
win環境で実行するにはどうしたらよいのでしょうか?
pthread_create()をそのまま使いたいというわけではなく、
winでも同じ機能を持った関数があればそちらを教えていただきたいと思っています。
VC++.net2003をwin環境でのプログラム用として使っています。

548 名前:デフォルトの名無しさん :2005/07/29(金) 22:17:52
>>547
_beginthreadex()かな。

549 名前:デフォルトの名無しさん :2005/07/29(金) 22:19:24
http://www.pure-sense.net/mkg2/mkgu/0123.html
極秘情報

550 名前:デフォルトの名無しさん :2005/07/29(金) 22:53:55
toolkitは裏技じゃありません。
むしろStandardユーザーのためのものです。

551 名前:デフォルトの名無しさん :2005/07/29(金) 23:40:47
>>550
MSのサポート受けられなくなる時点で裏技。

552 名前:デフォルトの名無しさん :2005/07/29(金) 23:44:33
HWND CreateWindow( の
第10引数
HANDLE hInstance, // handle to application instance
は hInstance なのに、ヘルプで HINSTANCE になっているのは
どうしてですか?
GetModuleHandle(0) でパラメータを与えてるソースを見たこと
があるのですが、これは問題ないでしょうか?


553 名前:デフォルトの名無しさん :2005/07/29(金) 23:45:16
学生:Spoke(4000円ぐらい、商用OK)

趣味:VC++2005expressβ(無料、配布OK)

商用:pro以上(10万円以上、商用OK)

554 名前:552 :2005/07/29(金) 23:49:29
×ヘルプで HINSTANCE になっているのはどうしてですか?
○ヘルプで HINSTANCE になっていないのはどうしてですか?
どっちでも同じなんでしょうけど、悪いのはヘルプという認識でよい??でしょか

555 名前:デフォルトの名無しさん :2005/07/29(金) 23:53:55
>>552
HANDLEなのはたぶん修正漏れだと思われる。

Win32ではHMODULEとHINSTANCEは同一の扱いだから、GetModuleHandleの戻り値をHINSTANCEとして扱うのは全然問題ない。
そしてGetModuleHandleは引数0だとWinMainの最初の引数のHINSTANCEと同じ値を返す。
(というよりWinMainを呼ぶ側がWinMain(GetModuleHandle(0), ..);としている)

556 名前:デフォルトの名無しさん :2005/07/29(金) 23:58:05
>WinMain(GetModuleHandle(0), ..);
おぉ・・・こんなことを実際していたのですか。
ひとつ勉強になりました。ありがとうございます。

557 名前:デフォルトの名無しさん :2005/07/30(土) 03:47:22
>>553
VC++2005expressβはMFC付いてないだろ。
製品版はいつ発売だ?

558 名前:デフォルトの名無しさん :2005/07/30(土) 05:11:55
製品版にもつかない

559 名前:デフォルトの名無しさん :2005/07/30(土) 06:15:40
Visual Studio 2005 mfc の検索結果のうち 日本語のページ 約 5,510 件中 1 - 10 件目 (0.20 秒)

Visual Studio 2005 Express Edition よく寄せられる質問
Visual C++ 2005 Express Edition には MFC と ATL が含まれますか。 いいえ、MFC と
ATL は Visual C++ 2005 Express Edition には含まれません。MFC と ATL は、その他
のすべての Visual Studio 2005 エディションに含まれる予定です。 ...
www.microsoft.com/japan/msdn/ vstudio/2005/express/faq/default.aspx - 70k - キャッシュ - 関連ページ



560 名前:デフォルトの名無しさん :2005/07/30(土) 09:22:47
すみません、別スレで質問したんですが
過疎スレだったみたいでレスがつきません、誘導させてください。
http://pc8.2ch.net/test/read.cgi/tech/1035653663/359

561 名前:デフォルトの名無しさん :2005/07/30(土) 09:40:26
おはようございます。
もし、クラスを多appにわたり活用したいとき、
同じプロジェクト内だけですが、
ヘッダーファイルに、class定義を書き込むという方法になるのでしょうか。
hファイルに
class Mocc{
Mocc();
open();
}
このように宣言して、使うのでしょうか。

562 名前:デフォルトの名無しさん :2005/07/30(土) 10:46:06
>>560
あんな過去からある過疎スレに誘導しないでこっちで仕切りなそうよ。
で、情報量が少ないので追加希望。
・VCのバージョンは?
・DDXのm_ixに関わるコードはどうなっている?
要は、自分のプロジェクト内を問題のメンバ変数名で検索してみろと。

563 名前:デフォルトの名無しさん :2005/07/30(土) 11:01:01
>561です。
すみませんでした。
classの追加でできそうです。

564 名前:デフォルトの名無しさん :2005/07/30(土) 14:24:48
>>562
>VCのバージョンは?
Ver.は確かsp6だったと思います。

>DDXのm_ixに関わるコードはどうなっている?
すみません、素人なもんで質問の意味がピンときません。
AfxBeginThread近辺のコードと言うことでしょうか?

コードを貼りたいのですが今手元に無いので
月曜日にでも改めてこちらに伺いますのでよろしくお願いします。


565 名前:デフォルトの名無しさん :2005/07/30(土) 14:32:21
ワークスペースA
 |
 |−プロジェクト1
 |
 |−プロジェクト2

こういう場合、プロジェクト1のグローバル関数を、プロジェクト2から呼び出すことは出来るのでしょうか?
そのまま呼んでみたら、ビルドで外部参照エラーが出てしまうのですが。

566 名前:デフォルトの名無しさん :2005/07/30(土) 14:47:28
>565
簡単にやるんなら片方をdll化しといて、
VSのプロジェクト>設定>リンクで他方からリンク張ってやるのは?

て、やってだめだったのかな

567 名前:デフォルトの名無しさん :2005/07/30(土) 15:20:44
viewのクライアント領域にbitmap画像を表示させようとしているのですが、
クライアント領域の内、bitmapが表示されていない部分の色(背景色?)を変えようとして、

OnEraseBkgndをオーバーライドしてPatBltでクライアント領域全体を塗りつぶし、
OnDraw内で、bitbltでbitmapを結びつけたメモリDCを表画面に転送しているのですが、

OnEraseBkgndよりも先にOnDrawが実行されているのか、bitmapが表示されずに
OnEraseBkgndで指定した色でクライアント領域が塗りつぶされてしまいます。

何か良い方法はないでしょうか?
(OnEraseBkgndを消せばbitmapはちゃんと表示されます)

568 名前:デフォルトの名無しさん :2005/07/30(土) 15:25:12
>>567
>OnEraseBkgndをオーバーライドしてPatBltでクライアント領域全体を塗りつぶし、
必要な部分だけにして→クライアント領域全体


569 名前:デフォルトの名無しさん :2005/07/30(土) 16:12:44
>>566
それは試していなかったです。
今、ソース環境がないので後でやってみます。
ありがとうござます。

570 名前:デフォルトの名無しさん :2005/07/30(土) 16:14:03
>>565
社内(同一ワークスペース)の別プロジェクトに有用なスキル(関数)を持った人材(ソース)がいるのなら、
自分のプロジェクトに参加させればいいじゃない。
但し、人間関係(インクルードなどの依存)に注意で。

571 名前:デフォルトの名無しさん :2005/07/30(土) 16:15:00
>>567
OnEraseBkgndで上書きしちゃうなら、OnEraseBkgndからOnDrawを呼べばいいじゃない。

572 名前:デフォルトの名無しさん :2005/07/30(土) 16:26:04
>>568
つまり、bitmap部分を避けて、矩形を二つ塗りつぶせって事でしょうか?
矩形1:(0, bitmap.height, bitmap.width, client.height)
矩形2:(bitmap.width, 0, client.width, client.width)

それとも何かスマートな方法があるのでしょうか?
___________________
| |///////|
| bitmap |///背//|
| |///景//|
|___________|///////|
|///////////////////|
|///////////////////|
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
>>567
そうするとOnDrawが2回実行されて、ちらつきが起きませんかね?

573 名前:デフォルトの名無しさん :2005/07/30(土) 16:54:22
開発環境 Visual C++.NET 2003 MFCウィザード使用
今ListCtrl(リストコントロール)を使用して、データーベースから
取ってきたアイテムを、各リストに表示するアプリケーションを作っています。
それで、とってきた文字列の最大長に応じて、リストコントロールの
カラムのサイズを変更したいのですが、何か使える関数ありますでしょうか?
今の段階だと、各列の文字列の最大長をstrlen()関数ではかり、
それに応じてカラムのサイズサイズを変更してるのですが、とても
スマートな方法ではない気がします。
ご存知の方はご教授願います。


574 名前:デフォルトの名無しさん :2005/07/30(土) 17:01:00
>OnEraseBkgndからOnDrawを呼べばいいじゃない

を発展させて、OnDraw内にフラグを設けてやるのはどうでしょう?
フラグが0なのでbitmap貼らない

OnEraseBkgnd呼び出し

OnEraseBkgnd内でフラグを1にして、OnDraw実行

(もしここで、フラグを0に戻したりすると、延々ループにはまって固まっちゃうかも、
あんまりフラグはCALLBACKルーチンでは禁じ手のような気がするけど)

575 名前:デフォルトの名無しさん :2005/07/30(土) 17:03:55
>>558-559
まじかよ。
じゃあ2005待つ理由が無くなったね。


576 名前:デフォルトの名無しさん :2005/07/30(土) 17:15:46
>延々ループにはまって固まっちゃうかも
というのは、ちょっと言葉足らずだったかもしれないけど、
マウスが動くだけでも再描画でしょう
その時、呼び出される最初のOnDrawはフラグが1でそのままOnDraw終了しないといけない。
だから、フラグを0に戻す場所は非常にシビア
以前、これ試してみて、マウスの動きがガックンガックン固まったことがある
やっぱ禁じ手だろうね。駄レスすんまそん。

577 名前:デフォルトの名無しさん :2005/07/30(土) 17:59:27
>>575
standardはMFC, ATLが付いて最適化ができるぞ。
いままでのproユーザーがstandardに移る感じ。

578 名前:567 :2005/07/30(土) 18:02:59
色々試してみましたところ、
どうもOnDrawの実行後にOnEraseBkgndが上書きしているわけではなさそうでした。

現在OnDrawではbitmapの全体を描画しているわけではなく、
クリッピング領域のみを描画しているのですが、
OnEraseBkgndを書かなければOnDraw実行時にbitmap領域がクリッピングにある為正しく描画されるが、
OnEraseBkgndを書くとOnDraw実行時にはbitmapがクリッピングから消えてしまっており、
描画されなくなってしまうような気がしてきました。
(全然見当違いの可能性もありますが…)

引き続き悩み続けます…。

579 名前:デフォルトの名無しさん :2005/07/30(土) 19:52:45
>>578
OnEraseBkgndで0を返せ。

580 名前:デフォルトの名無しさん :2005/07/30(土) 20:37:05
CListViewでCImageListを割り当てたのですが、このCListViewを再利用する時に
DeleteAllItemsとしてもアイコン部分だけが残ってしまいます。このアイコン部分も
削除するにはどうしたら良いのでしょうか?。

581 名前:567 :2005/07/30(土) 20:58:11
>>579
ダメでしたorz
ちなみにOnEraseBkgndで0を返すとどんな効果があるんですか?
(特に意味も考えずに試してみましたけど)

何かOnDrawの中のbitbltが失敗するんですよ…。(戻値が0)
bitmapが描画されない直接的原因はここのようです。

OnEraseBkgnd中のpDC->GetSafeHdc()をコメントアウトすると成功するんですけど(戻値が1)、
もうわけわかりません…。

582 名前:デフォルトの名無しさん :2005/07/30(土) 21:14:29
、i`ヽ                        ,r‐'ァ 
 `ヽ::                      ::´
   ヽ ヽ        , -‐--、         / /
    ヽ \      I:::::::I_      _ / /
     ヽ  ヽ    i,(;;;ノI、;;;)l    ,,/  , '
      ヽ  ` ー 、.,,ゝ´ヮ`,ノュ_, - '   r'     うはwwwwww8月17日発売のザ・テレビジョンにHG出演www
        ` 、_ /::: `山':::::    /      皆で買って一位にしようぜwwwwww
         ヽ:::::::::::|::::::::"",r‐'         それがHGクオリティ   
          〉::::::::|::::::::::¨/
         /;;;;;;;/;;;;;;;;;;/             
        /;;;;;;;/:::::::::::《              http://that3.2ch.net/test/read.cgi/event/1122721667/l50
        <;;;;;;;《:::::::::::::ヽ              http://ex10.2ch.net/test/read.cgi/heaven4vip/1122723881/l50
      /   ヽI,r''"""^~ヽ            詳しくはこのスレでwwwwww
     /   ,/ ヽ    ヽ    


583 名前:デフォルトの名無しさん :2005/07/30(土) 21:17:28
>>581
>何かOnDrawの中のbitbltが失敗するんですよ…。(戻値が0)

NT系ならGetLastError()で原因調べれ。

584 名前:567 :2005/07/30(土) 21:31:27
>>583
もうこれ以上頭を使う元気がないので、

pDC->GetSafeHdc()
::PatBlt()
の使用を諦めて

pDC->FillSolidRect()
を使うことで解決としました。

アドバイスくれた方々、ありがとうございました。

585 名前:デフォルトの名無しさん :2005/07/30(土) 21:35:19
ビューにテキストと画像を表示させ(表示のみ)、テキスト部分は
マウスで選択してクリップボードにコピーできたらなと思っています。

私の目的には、たまたまCHtmlViewがほぼ理想でOKなのですが、
もっと正統派?な方法(ビューでテキスト選択を実現する方法)って何だろなと気になりました。
テキスト選択をイチから実装するのは難儀でしょうから、CEditViewに画像を表示させたりする
のがいいのかなーと思ったのですが、実際のところどうなのでしょう?

詳しいお兄ちゃん方、教えて頂けないでしょうか?

586 名前:デフォルトの名無しさん :2005/07/30(土) 22:46:21
>>577
いくら位かわかる?

587 名前:デフォルトの名無しさん :2005/07/30(土) 23:27:11
>>573
CDC::GetCharABCWidths()

588 名前:デフォルトの名無しさん :2005/07/31(日) 03:24:02
うまく書けなくてスマソなんですけど

ひとつのファイルを無事成功し、
違うファイルを作り、実行しようとすると
コンパイルの時点で「_main はすでに 定義されています」
とでて、そこから先へ進めません。
成功したファイルには「プロジェクトファイル」なるものなどが勝手に作られています。
一つを実行させた後でも、何個も作業を実行するにはどうすればいいのでしょうか?

589 名前:588 :2005/07/31(日) 03:28:26
あとすいません、すれ違いなのですが
ついでにコンパイルとビルドの違いを教えていただけますか?
よろしくお願いします

590 名前:デフォルトの名無しさん :2005/07/31(日) 08:24:03
コンパイルはC/CPP等をコンパイルすることで、
ビルドはプロジェクトをビルドすることだな。
って全然説明になってないよ!

591 名前:デフォルトの名無しさん :2005/07/31(日) 12:06:05
コンパイル:オブジェクトモジュールを作る
ビルド:実行ファイルを作る(リンクまで行う)

592 名前:デフォルトの名無しさん :2005/07/31(日) 12:34:20
WNDCLASSEX構造体の背景ブラシ(hbrBackground)を定義する時に、黒、白、灰色以外の色のブラシを指定することはできるのでしょうか?

593 名前:デフォルトの名無しさん :2005/07/31(日) 13:02:58
>>592
できる。

594 名前:592 :2005/07/31(日) 14:47:05
>>593
どうやって指定するんですか?


595 名前:デフォルトの名無しさん :2005/07/31(日) 15:19:43
>>590-591

596 名前:デフォルトの名無しさん :2005/07/31(日) 16:10:04
すいません、質問なんですが
VBでかいた関数をVCから呼び出すことは不可能でしょうか?

597 名前:デフォルトの名無しさん :2005/07/31(日) 16:27:19
>588
状況がいまいち理解できないんだけど、
1つのプロジェクトの中にmain関数が2個あるんじゃないの?
コンソールアプリならmain関数は1個じゃないとダメだよ。

あと、その質問の内容だと状況がいまいちわからないので、
長文になっても構わないから、操作手順とかをもう少し詳しく教えてください。

598 名前:デフォルトの名無しさん :2005/07/31(日) 16:45:07
>>596
不可能です。VC++で書いた関数をVBから呼ことは出来ます。

599 名前:デフォルトの名無しさん :2005/07/31(日) 17:01:32
>>598
うそ教えるな。できるよ。

600 名前:588 :2005/07/31(日) 17:15:52
>>588レスどうもです。
私は超初心者ですので、質問がへたくそだったのは申し訳ありません。
でも本当にどうやって質問したらいいか…

例えば
VISUAL C++を開き、

main()
{
int abc,opq,xyz;

abc = 180;
opq = 200;

xyz = abc + opq ;
printf("xyz:%d",xyz);
}

というのを作成し、成功しますよね。そしてそのままC++を開いたまま
次に

main()
{
int abc = 180, opq = 200, xyz;

xyz = abc + opq;

printf("abc(%d) + opq(%d) = %d",abc,opq,xyz);
}
を実行しようとすると
「_main はすでに定義されています」と出てしまい、実行できないのです。
これで困っているのです。なぜ実行できないのでしょうか?

601 名前:デフォルトの名無しさん :2005/07/31(日) 17:16:51
>>597レスどうもです。 、の間違いです

602 名前:588 :2005/07/31(日) 17:19:44
ついかすいません
あと「1 つ以上の複数回定義されているシンボルが見つかりました」というのもでます

603 名前:デフォルトの名無しさん :2005/07/31(日) 17:30:33
さすが、夏休みだな。

604 名前:デフォルトの名無しさん :2005/07/31(日) 17:47:38
いくつか確認。
>>588の理解度を知っておきたい

1) プログラミングについて、どれくらい理解している? 
  ・C言語は知ってる(プログラムを作ったことがある)
  ・VCは初めて
  ・何もかも初めて       などなど

2) エラーが出るまでの操作手順を最初から教えて
  プログラムのソースじゃなくて、VC++の操作。
  メニューで新規作成を何を選んでどうのこうの、って感じで

605 名前:デフォルトの名無しさん :2005/07/31(日) 17:52:08
>>599
ありがとうございます。
それはどうやればできるんでしょうか?
または、推奨の書籍はありますか?


606 名前:588 :2005/07/31(日) 18:03:37
>>604
1)学校でCを習い始めて四ヶ月です
2)ですが、学校ではC++を使ってはいないのです
なので、C++を使うのは実質初めてです

607 名前:デフォルトの名無しさん :2005/07/31(日) 18:20:22
>>606
会津大学生?

608 名前:デフォルトの名無しさん :2005/07/31(日) 18:20:43
>>606
C++じゃなくて、VC++を使った経験はあるかって聞いてるんだと思うぞ。
まあその様子じゃ使ったこと無いようだが。

ぶっちゃけプロジェクトとかワークスペースとかソリューションとか、
そういうのが分からないんじゃないかな?

609 名前:588 :2005/07/31(日) 18:39:05
>>608そうですね、ないですし、わからないです。

なぜか知りませんが、学校ではコマンドプロンプトをつかって
コンパイルなどをさせられるのです。
それをそのまま家のPCでやろうとするとソフトが立ち上がってしまうので…

610 名前:デフォルトの名無しさん :2005/07/31(日) 18:51:28
>>609
- C言語
- Cコンパイラ、リンカ
- 統合開発環境(IDE)
の違いが解ってないっぽいね

611 名前:604 :2005/07/31(日) 18:56:46
OK、とりあえず理解度はわかった。
それじゃ、ちょっとだけVC++基礎を説明。

VC++では、プロジェクトという単位でプログラム開発をする。
プロジェクトというのは、プログラムを作るために必要なファイルや情報を
まとめたもの、って考えおけばいいと思う。

ワークスペース(ソリューション)ってのはプロジェクトを管理するための入れ物みたいなもの。
ワークスペース上でプロジェクトをビルドすることで、プログラムが作られる。
尚、ワークスペースやプロジェクトのファイルは、VC++で新規作成したときに自動的に作られる。

で、たぶんココが一番大事だと思うんだけど、
1つのプロジェクトからは1つの実行ファイル(プログラム)しか作れない。

C言語やってるなら、main関数がプログラム本体だってのは知ってると思うけど
1つのプロジェクトの中にmain関数を2個入れたらダメ。
どういう操作をしたかわからないけど、たぶんコレが今回のエラーの原因。
新しくもう1個プロジェクトを作れば、とりあえずは解決すると思う。

長文スマン。

612 名前:デフォルトの名無しさん :2005/07/31(日) 19:12:55
長文が最初から悪いと思ってるならなんで書いた後に謝るんだろうな。
でも悪くないから、全然^^

613 名前:デフォルトの名無しさん :2005/07/31(日) 19:16:56
無料コンパイラ使ってれば悩まなくてすむものを
必用もないのにVC買ってしまうやつが後をたたない

614 名前:デフォルトの名無しさん :2005/07/31(日) 19:18:46
買ったかどうかはわからんがな

615 名前:604 :2005/07/31(日) 19:18:54
もうちょっと基礎の基礎から説明。

プログラムを作るためには、
ソースコード(C言語)をコンパイラに通して
プログラムコード(実行ファイル)に変換してもらう。

ソースコード中で定義してないprintfとかの関数の
プログラムコードを他から持ってきてくっつけるのがリンクという作業。
これをするをリンカって言うんだけど、大抵はコンパイラが兼業してる。

で、学校ではコマンドプロンプトを使ってコンパイルしてるって言うけど
普通、コンパイラはコマンドラインで動くもの。
VC++のような総合開発環境は、コンパイラの上にGUIをかぶせて、
プログラムの開発を楽にした物とでも考えればわかりいいと思う。

言ってることに間違いがあったらツッコミよろしく。

>>612
ありがd

616 名前:デフォルトの名無しさん :2005/07/31(日) 19:31:25
ベターCってなんですか?

617 名前:588 :2005/07/31(日) 19:37:11
>>604さん、とても優しく教えて頂きありがとうございます。
最近、ネットでは心を傷つけられてばかりいたので、余計にありがたい気持ちです

では本題に戻ると、
新しくまた違うファイルを実行させようとするなら、
新しいプロジェクトを作ればいいのですね。

んで、早速やってみたのですよ。
ですが、「この名前では出来ません」とかでちゃいますし、
名前を入れる欄の左でいくつかあるやつの中から選びますが、
それぞれが何なのか分かりませんし、且つどれを選んだらいいかわかりません。

今度はどなたか、プロジェクトの作り方を教えていただけますか?
聞いてばっかで本当に申し訳ありません。m(__)m


618 名前:デフォルトの名無しさん :2005/07/31(日) 19:39:19
本ぐらい買えよ馬鹿

619 名前:デフォルトの名無しさん :2005/07/31(日) 19:44:39
あてずっぽう、行き当たりばったり

620 名前:604 :2005/07/31(日) 19:49:33
最初のプログラムは何のプロジェクトで作ったの?
>600のようなソースなら普通はWin32 Consoleでいいと思うけど。
あと、既にある物と同じ名前のプロジェクトは作れないので注意。

VCでの開発の仕方は、「VisualC++」 「VC」 「VC++」 「入門」 「初心者」あたりの
キーワードを組み合わせてググれば、いろいろ出てくるよ。



621 名前:デフォルトの名無しさん :2005/07/31(日) 19:51:05
>>588
他人の心を慮ることもせずに他人に対して刃を振り翳す者に、
全ての人が慈悲の手を差し伸べるとお思いか?
あなたが傷つけられたと言うその刃は、あなた自身が振り翳したものではないのですか?

622 名前:デフォルトの名無しさん :2005/07/31(日) 20:02:08
>>617
ネットで傷つくなよw

学校でVC++使ってないなら、まずは学校と同じ環境する事をオススメする。
それでもVC++使いたかったら、本とかネットで勉強しながら並行してやった方がいいよ。
VC++ってツールの使い方を覚えるのもC言語そのものを覚えるのも両方とも難しいものだよ。

623 名前:デフォルトの名無しさん :2005/07/31(日) 20:36:32
一冊、初心者向けの本かっちゃえば幸せになれるぞ。


624 名前:デフォルトの名無しさん :2005/07/31(日) 20:37:16
金が惜しいなら図書館から借りるという手もある。

625 名前:デフォルトの名無しさん :2005/07/31(日) 20:38:27
>>594
GetSysColorの引数のCOLOR_なんたらを使ってreinterpret_cast<HBRUSH>(COLOR_なんたら + 1)としたり、
Create何とかBrushでブラシを作ってそれをhbrBackgroundに入れたりする。
後者のブラシを作る方法の場合は後でDeleteObject()が必要。

626 名前:デフォルトの名無しさん :2005/07/31(日) 20:47:04
明智光秀は敵は本能寺にありとか言って、織田信長を攻撃しましたが、
光秀の部下は反対しなかったんですか?反対したら殺されるとかいう
こともあったかもしれませんが、誰かがこっそりと信長の所へ光秀の
謀反を報告に行かせるとか、そういうことすら無かったのでしょうか?
そんなに信長は嫌われていたんですかね?

627 名前:588 :2005/07/31(日) 20:47:53
>>620
最初に作る場合は、こっちがプロジェクトを作らなくても
勝手にに作ってしまいますからね、わかりません。
ですが、604さんがWin32 Consoleと教えてくれたので
自分で作るときはそれでやってみたいと思います。

>>621
そうですね、もちろん自分にも責任はあります。
おっしゃるとおりです。人間って、難しいですね。
特に、ネットだと殆どの人が本性丸出しになってなってしまうから…

>>622
上でも書いたのですが、
学校と同じ様にVC++を使わずやろうとしても、ソフトが勝手に立ち上がって
しまうのですよ…
確かに>>618の言うとおり、本を買ったりするなどしてみたいと思います。

皆さんご迷惑を掛けました。そしてありがとうございました。
これを反省して、ネットで安易に人に聞くことをやめようとおもいます。
ご迷惑はかかるし、自分もやな思いするばっかりですしね。
すいませんでした。



628 名前:626 :2005/07/31(日) 20:48:25
誤爆しました。
板間違えました。
スミマセング

629 名前:604 :2005/07/31(日) 21:03:12
名無しで安易に聞くためにココがあるんだけどね・・・。

もういなくなっちゃったかもしれないけど、
人に教わるよりも、自分で調べて、自力でやったほうがいろいろ身に付くよ。
特にVC++なんてのはその辺にたくさん情報が転がってるしね。

とはいえ、どうしても自分だけではわからないこともあるだろうから、
その時はまた質問においでよ。
読み手にちゃんと内容が伝わるように、要点をまとめて質問すれば
ちゃんと回答してくれる人が出てくるよ。

あと、さっきも言ったけど、コマンドラインでも普通にビルドはできる。
どういう手順でビルドしようとしてるのか、どういうソフトが立ち上がるのか
その辺をちゃんとまとめて質問すれば、対処法が見つかるかもよ?

>>626
素敵な誤爆ですね。

630 名前:デフォルトの名無しさん :2005/07/31(日) 21:08:31
>>627
ネットで傷つけられたってのは、

C言語なら俺に聞け! Part 111
http://pc8.2ch.net/test/read.cgi/tech/1121657911/

の634以降の話か?
まあ、お前がこの先、言語やツールを学んで理解できるようになったら、
いかにアホな質問をしていたか、気づくと思うよ

まあ、がんばれ!

631 名前:デフォルトの名無しさん :2005/07/31(日) 21:23:23
>>605
DLL作成する。

632 名前:デフォルトの名無しさん :2005/07/31(日) 21:34:03
今回、ツールの使い方くらい自分で読め、というだけなんだよなあ。
なによりも、質問がアホな以前にまともに内容を伝える日本語になっていない。
そんな事をうだうだとうらみがましく聞かされたほうがまず不愉快だからなあ。
本性丸出しじゃあんなもんじゃすまないだろう。
自分のことを棚に上げて傷ついたふりをするのも今時は子供の間でも通じないし。


633 名前:デフォルトの名無しさん :2005/07/31(日) 21:49:25
てかよくあることだけど、本人がいなくなってからグチグチ言うな。

そんなことはいいから、ベターCって何さ?

634 名前:デフォルトの名無しさん :2005/07/31(日) 21:55:08
C言語やVC++よりも、まずは質問の仕方を勉強しないとね〜
エラーの詳細とか操作手順とかわからないと答えようがないし。

635 名前:デフォルトの名無しさん :2005/07/31(日) 22:31:23
>>627
>学校と同じ様にVC++を使わずやろうとしても、ソフトが勝手に立ち上がって
>しまうのですよ…

VC++の関連付けを外せばいいだけのような…。
勝手に立ち上がるからダメって事はない。
これ説明するのはWindowsの使い方を教える事になるからスレ違い。


636 名前:デフォルトの名無しさん :2005/07/31(日) 22:42:27
VectorCの間違いではないか?

637 名前:デフォルトの名無しさん :2005/07/31(日) 22:47:59
Better C = ちょっと良いC

例えば、C++でクラスを使わずに、
手続き型のCとして使うようなやり方。
拡張機能をいろいろ使えるから、ただのCより使い勝手が良い。
・・で、あってるんだっけ?

638 名前:デフォルトの名無しさん :2005/07/31(日) 22:58:50
たとえばより厳しい型チェックやboolやどこでも変数宣言とか関数定義時の仮引数名の省略とか。
俺の思いつくのはこんなもん。

639 名前:デフォルトの名無しさん :2005/07/31(日) 23:00:30
あと俺が思うに参照とデフォルト引数くらいまで。
STLまでくると流石にC++そのものだな。

640 名前:デフォルトの名無しさん :2005/07/31(日) 23:04:25
>>605
だから出来ないと言うのに。試しにGoogleかなんかで検索かけてみなよ。
同じような質問をしている人をあちこちでみかけるだろうけど、全部否定
されてるよ。第一、VBの関数作っても、引数の型をどうやって呼び出し時に
VC++のものに変換するんだ?VBの変数型でVC++がサポートしてないものは幾つもあるぞ。
呼び出し方はどうする?extern "VB"なんてのも無いぞ。いっそのことVBで
dllを作るか?でも、それをVC++でも呼び出せるか?逆は出来るぞ。
WinAPIをVBに取り込むのと同じようにすれば良いだけだからな。
結局、こういう制限があるということがVBの限界であるから仕方が無いんだが、
VC++で書き直すことをすすめる。

641 名前:デフォルトの名無しさん :2005/07/31(日) 23:09:21
まあ、VBでActiveXコントロールあたりにすればVC++で
使えないことも無いけど、そういう使い方を望んでいるわけでも
ないんでしょ?
悪いことはイワン。そのVBの関数をVC++で書き直した方が良い。

642 名前:デフォルトの名無しさん :2005/07/31(日) 23:16:29
>>637-639
そういう意味か。
全然違う意味かと思ってた。
要するに、基本Cで、C++の使いやすい所を使うって事ね。
ニュアンスは分かった。ありがd。

643 名前:デフォルトの名無しさん :2005/08/01(月) 00:00:15
>>640-641
>いっそのことVBで dllを作るか?でも、それをVC++でも呼び出せるか?逆は出来るぞ。

VBでDLL作ればVC++から呼び出せるけど?


644 名前:デフォルトの名無しさん :2005/08/01(月) 00:22:34
>>643

俺もコレが気になる。
>第一、VBの関数作っても、引数の型をどうやって呼び出し時に
>VC++のものに変換するんだ?VBの変数型でVC++がサポートしてないものは幾つもあるぞ。

645 名前:デフォルトの名無しさん :2005/08/01(月) 00:31:20
>>644
いや、>641の戯言は忘れた方がいいと思うのだが。
VBとVCとでお互い擦り合わせのできる型で呼び出せばいいだけだからね。

646 名前:デフォルトの名無しさん :2005/08/01(月) 04:06:12
VC++7のプロジェクトでのメモリリークについて質問です。
あるダイアログアプリと、そいつから利用されるスタティックライブラリやらDLLやらのプロジェクトが10個くらいあつまったソリューションがありまして、
さらにこのAPにはプロジェクトとしては提供されていないDLLもダイナミックリンクします。(つまりそのDLLのソースは機密なのでDLLファイルだけもらった)

このダイアログAPを起動してある操作をして終了させるとメモリリークが検出されまする。
残念ながらソースの箇所は表示されません。
そこですべてのソースファイルに_malloc_dbg()やfree_dbg()を使うように以下の記述を各ファイルの先頭に追加しました。
(ファイルの先頭に入れとけばよいんですよね?)

#define CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>

そしてスタートアッププロジェクトはダイアログアプリにして実行させてみます。
しかし残念ながらメモリリークは検出しますが場所が出ませんでした。

これはやはりプロジェクトとして提供されていないDLLの中でリークしてるのでしょうか?


647 名前:デフォルトの名無しさん :2005/08/01(月) 07:34:48
メモリリークの意味わかっちょるのか?

648 名前:デフォルトの名無しさん :2005/08/01(月) 07:57:13
つまり何が言いたいのですか?
どの辺の記述がどう変なのか指摘していただかないと。
分っている、としか言いようが無い。


649 名前:デフォルトの名無しさん :2005/08/01(月) 08:22:44
>>648
その疑わしいDLLを外してやってみればいいじゃん。
DLL関数のところは使わないようにするか、ダミーを作って差し替えればOK

それでメモリリークとやらが起きなければ、お前さんの考えが正しいってこと。

650 名前:649 :2005/08/01(月) 08:23:47
アンカー間違えた。>>648じゃなくて>>646

651 名前:592 :2005/08/01(月) 15:12:44
>>625
流されてたと思ってた(涙 さんくす!

652 名前:デフォルトの名無しさん :2005/08/01(月) 15:48:43
こんにちは、質問です。よろしくお願いします。
win32で
ウインドプロシージャーのなかで、
LRESULT CALLBACK WndProc(HWND hwnd,UINT im, WPARAM wp,LPARAM lp){
switch(im){
case WM_CREATE:
ここを最初に表示するときに通らないのです。
そんなものなのでしょうか。

653 名前:デフォルトの名無しさん :2005/08/01(月) 16:11:32
>>652
すみません通っていました。


654 名前:デフォルトの名無しさん :2005/08/01(月) 17:00:44
理由があって
CDialog の DoModal() をやって
そのダイアログを見えないようにしたいのですが
そのようなことはできますか?


655 名前:デフォルトの名無しさん :2005/08/01(月) 17:37:43
>>654
やったことないから推測で言うけど
ダイアログのWS_VISIBLEいじればいいんじゃないの?

しかし・・・DoModalやった後、どうやってそのダイアログを閉じるんだ?

656 名前:デフォルトの名無しさん :2005/08/01(月) 17:39:40
>>654
ShowWindow使え

657 名前:デフォルトの名無しさん :2005/08/01(月) 17:41:15
VisualC++.NETで、ArrayListクラスを利用していますが
Arrayの特定のIndexのみに要素を設定する方法が分かりません。
-----------------
ArrayList* ar = new ArrayList();
ar->Add(S"a");
// 間を22個空けたい
ar->set_Item(24, S"z");//Insertでも同様の結果
-----------------
このようにした場合、4行目を実行すると不正な参照として落ちてしまいます。
また、ArrayListをnewする際に要素数を36に指定してみましたが結果は同じでした。
(間を空けるだけならfor文で空白をAddすればいいのですが…)

何か他に上手い方法はありますでしょうか?

658 名前:デフォルトの名無しさん :2005/08/01(月) 17:49:47
>>656
DoModal() する前では
窓が初期化されておらず
DoModal() してしまうと制御がかえってきません

いつ ShowWindow(SW_HIDE) すればいいのでしょうか?

659 名前:デフォルトの名無しさん :2005/08/01(月) 17:53:35
>>658
そのDoModalするダイアログ内ですれば?

660 名前:デフォルトの名無しさん :2005/08/01(月) 17:56:45
>658
OnInitDialog作ったらダメ?

661 名前:デフォルトの名無しさん :2005/08/01(月) 17:58:07
>>659
一回表示して
なにかボタンとか押して,という意味でしょうか?

いっさいダイアログを出したくないんです

662 名前:デフォルトの名無しさん :2005/08/01(月) 18:02:26
>>661
>>660

663 名前:デフォルトの名無しさん :2005/08/01(月) 18:04:51
>>660
OnInitDialog 内で

ShowWindow(SW_HIDE)

したんですが,
あれ〜普通に表示されますね
なんでだろう…

664 名前:デフォルトの名無しさん :2005/08/01(月) 18:10:09
>This message is sent to the dialog box during the Create, CreateIndirect, or DoModal calls, which occur immediately before the dialog box is displayed.

OnInitDialogからユーザメッセージをpostしてそこで非表示にすれば?

665 名前:デフォルトの名無しさん :2005/08/01(月) 18:18:08
>>664
>ユーザメッセージをpostして

すいません.これがわかりません
どう書けばいいのでしょうか?

666 名前:デフォルトの名無しさん :2005/08/01(月) 18:29:17
見えないんだったらDoDialog()する必要ないような……

OnInitDialog()でEndDialog()すれば表示されないけどね(勿論すぐ処理は戻る)。

667 名前:デフォルトの名無しさん :2005/08/01(月) 18:31:51
>>665
WM_APPでぐぐれ

668 名前:デフォルトの名無しさん :2005/08/01(月) 18:32:11
>>665
PostMessage関数を使って、自身にメッセージを送る
ダイアログプロシージャの中に、そのメッセージのハンドラを作って
その中でShowDialogをする。

PostMessageだと、今のメッセージの処理が終わった後に
メッセージが送られてくる。

・・・と、ここまで描いてて思ったが、OnDrawじゃダメかな?

669 名前:668 :2005/08/01(月) 18:33:40
×ShowDialog
○ShowWindow
疲れてるかもしんない・・・

670 名前:デフォルトの名無しさん :2005/08/01(月) 18:53:47
OnInitDialog の中で

SetWindowPos( &wndTop, 0, 0, 0, 0, SWP_HIDEWINDOW );

してやると表示されなくなりましたが
タスクバーにはこのダイアログの項目が残っています
これをうまく消せないでしょうか?

671 名前:デフォルトの名無しさん :2005/08/01(月) 19:12:08
>>670
ShowWindow(FindWindow("Shell_TrayWnd", NULL), SW_HIDE);



672 名前:デフォルトの名無しさん :2005/08/01(月) 19:42:26
タスクバーにはダイアログの項目がって、親ウィンドウ無いんか?

673 名前:デフォルトの名無しさん :2005/08/01(月) 21:14:04
トロイでも作ってるんだろう

674 名前:デフォルトの名無しさん :2005/08/01(月) 21:18:34
こんばんは、ツールバーを表示させたいのですが、
やり方が、わかりません。どうか、教えてください。
win32アップリケーションです。
CreateWindowEx(WS_EX_TOOLWINDOW,"ToolBarWindow32",
"ID_TOOLE1",WS_VISIBLE,
CW_USEDEFAULT,0,100,
100,h,NULL,hinstance,NULL);
上記のようにしたのですが、表示されませんでした。

675 名前:デフォルトの名無しさん :2005/08/01(月) 22:13:10
デバイスコンテキストについての質問ってここでよし?

676 名前:デフォルトの名無しさん :2005/08/01(月) 22:15:41
HDCならWin32APIスレ、CDCならここ。

677 名前:デフォルトの名無しさん :2005/08/01(月) 22:29:19
ちょっとソースが手元に無いのでうろ覚えで申し訳ないんですが、
デバイスコンテキストって完全に一対一対応だと思ってたから、
ツール起動時にメイン画面のを取得してそれを使いまわそうと思ってました。

m_pDC = m_main.GetDC();
m_pDC->m_hDC = m_pDC->GetSafeHdc();

//m_pDCはヘッダでCDC*で宣言
//m_mainはメイン描画部分のハンドル持ち
//以降はm_hDCを使用してOpenGL処理

とやると上手くいきます。しかし、

m_pDC->m_hDC = m_main.GetDC()->GetSafeHdc();

とやると、描画は上手くいくんですが、
ツール終了時にwinhand.cppの251行目、ASSERT部分で怒られます。
何がいけないのでしょうか?見た目、同じように思えるのですが

678 名前:677 :2005/08/01(月) 22:36:58
質問がごっちゃになってしまった。
677の2,3行目はなしで。で、改めて追加質問。

デバイスコンテキストって完全に一対一対応だと思ってたから、
ツール起動時にメイン画面のを取得してそれを使いまわそうと思ってました。
で、起動時にメイン描画部のをm_pDCに取得して677の場所で使おうと思い、

m_pDC->m_hDC = m_pDC->GetSafeHdc();

とだけやりましたら、描画されませんでした。
ここ以外では取得はしてません。
m_pDCではなく、それぞれの関数内で

CDC* h_pDC

とか作ってそれに取得はしてますが、最初にとったm_pDCはそのままです。
しかし、上記のように、最初に取ったDCが反映?されてません。
677のように取り直すと上手くいくのですが、
最初に取ってそれを何度も使いまわす、といったことはできないのでしょうか?


679 名前:デフォルトの名無しさん :2005/08/01(月) 23:05:00
vc++バージョン6を使っています。
初めてunicode対応をやろうとして、とりあえず

MessageBoxA( NULL, "ANSI test(テスト)", NULL, MB_OK );
MessageBoxW( NULL, L"unicode test(テスト)",NULL, MB_OK );

と続けて実行すると、ANSIの方はうまく表示できますが、
UNICODEの方は「テスト」の部分が文字化けしてしまいます。
フォントが変わってしまっているようなのですが、
unicode対応アプリにするためのコンパイラやリンカのオプション
がたりないのでしょうか。_UNICODEは定義しています。


680 名前:デフォルトの名無しさん :2005/08/01(月) 23:31:02
>>678
OpenGLスレのほうがいいような気もするが
そもそもm_pDC取得すればm_hDCは取得する必要ないんじゃないか?

>m_pDC->m_hDC = m_pDC->GetSafeHdc();

m_pDC->m_hDC = m_pDC->m_hDC;
と大して変わらないような気がする。意味ないような・・・

681 名前:デフォルトの名無しさん :2005/08/02(火) 00:06:30
>>679
エントリポイントは変更したか?

682 名前:679 :2005/08/02(火) 00:11:18

エントリポイントもwWinMainCRTStartup に変更したのですが。


683 名前:デフォルトの名無しさん :2005/08/02(火) 00:12:54
>>682
小出しで書くな。やったこと全部書けよ。
いちいち確認させる気か?

ちなみに漏れは>>679のソースそのままでちゃんと出たんで、あんたのやり方が何かおかしいんだろ。

684 名前:デフォルトの名無しさん :2005/08/02(火) 01:07:38
メインスレッドはメッセージハンドラを同時にひとつしか処理しないはずだけど例外はありますか?
いまCOMを使うアプリでこのCOMをReleaseしているメソッドがあるんですが、こいつを処理中に
メインスレッドが他のイベントを受けて、動いてしまいます。
COMをReleaseするメソッドを処理してから他のイベントを処理してほしい。。
メインスレッドが同時に複数(あるいは同じハンドラ)を処理してしまうことはあるのですか?


685 名前:684 :2005/08/02(火) 01:35:19
ちなみにコールスタックは次のように呼ばれます。(↓方向に関数呼び出ししていきます。)
mfc71d.dll!AfxWndProcBase ←ここでメッセージ処理開始
mfc71d.dll!AfxWndProc
mfc71d.dll!AfxCallWndProc
mfc71d.dll!CWnd::WindowProc
mfc71d.dll!CWnd::OnWndMsg
myapp.exe!CMyDlg::OnFoo() ←自分のAPのメッセージハンドラ
mydll.dll!CMyCom::UnInitialize() ←ここではCOMのインタフェースをRelease
quartz.dll!7cfa6e72()
省略
user32.dll!77cf8816()
user32.dll!77cf8734()
mfc71d.dll!AfxWndProcBase ←あれ??またメッセージ処理開始?
mfc71d.dll!AfxWndProc
mfc71d.dll!AfxCallWndProc
mfc71d.dll!CWnd::WindowProc
mfc71d.dll!CWnd::OnWndMsg
myapp.exe!CMyDlg::OnFoo()

です。なぜですか?

686 名前:デフォルトの名無しさん :2005/08/02(火) 03:47:30
>>679
実はOSが9xとか

687 名前:デフォルトの名無しさん :2005/08/02(火) 08:26:33
>>686
MessageBoxWは9xでも問題なく使える数少ない関数の1つ。

688 名前:デフォルトの名無しさん :2005/08/02(火) 09:52:46
>>685
Release内にメッセージループ回す処理があるとか

689 名前:デフォルトの名無しさん :2005/08/02(火) 10:46:47
CDialog は CWnd から派生してますよね?
で,CDialog が CWnd を
どのように変更(もしくは追加)しているのを
知る手だてはありますか?

特にどのような引数をあたえて Create しているのか
知る必要があるのです


690 名前:デフォルトの名無しさん :2005/08/02(火) 10:48:33
>>689
MFCのソース読む

691 名前:デフォルトの名無しさん :2005/08/02(火) 11:20:10
>>690
それができればいいんですが,
MFCのソースは開発環境についているのでしょうか?

CDialog の部分をどのように
探りあてればいいのでしょうか?

692 名前:デフォルトの名無しさん :2005/08/02(火) 11:21:40
すみません、質問です。

先日VCを再インストールしたんですが、
前は関数名の上にカーソルを乗せたら出た
関数の説明(ポップアップ?)が出なくなってしまいました orz

http://49uper.com:8080/html/img-s/69227.jpg

上の絵だと、dwFileSizeの説明は出るのですが、
::GetFileSize() の引数の説明なんかが、一切出なくなってしまったんです。

どなたかご存知の方いらっしゃいましたら、
どうかお願いいたします m(__)m

使ってるのは VisuaC++ 6.0 Standard です。

693 名前:デフォルトの名無しさん :2005/08/02(火) 11:28:06
>>691
付いてるからインストールしとけ。
CDialog::Createを追っかけてけばわかるんじゃない?

694 名前:デフォルトの名無しさん :2005/08/02(火) 12:01:36
>>691
MSDNライブラリで探せ

695 名前:デフォルトの名無しさん :2005/08/02(火) 12:22:43
つーか、IDEを使っているならCDialogと書いて定義へ移動で事足りそうだ。

696 名前:デフォルトの名無しさん :2005/08/02(火) 14:41:09
>>686
たとえばこんなん書くと同じスレッドIDのダイアログいっぱいでるね
void CTestDlg::OnTimer(UINT nIDEvent) {
  CString msg;
  msg.Format( "id:%lu", ::GetCurrentThreadId() );
  ::MessageBox( NULL, msg, msg, MB_OK );
  CDialog::OnTimer(nIDEvent);
}


697 名前:デフォルトの名無しさん :2005/08/02(火) 14:59:54
質問です。
ボタンの文字サイズを変えるにはどうしたらいいでしょうか。
ダイアログではなくてウィンドウに貼り付けたボタンですが。

698 名前:デフォルトの名無しさん :2005/08/02(火) 15:08:23
ウィンドウに貼り付けたボタン?

699 名前:697 :2005/08/02(火) 15:43:10
すんません、表現の仕方が・・・
子ウィンドウと言うんでしょか。
CreateWindowで作ったボタンに表示される文字のサイズです。

700 名前:デフォルトの名無しさん :2005/08/02(火) 19:09:40
CPropertyPageに配置したコントロールを初期化しようと思い、
CPropertySheetのOnInitDialogをオーバーライドしたのですが、
DoModal()を呼び出してもOnInitDialogが実行されません。

CPropertySheetがCWndから継承してるのも不可解なのですが、
DDXを使うしかないのでしょうか?


701 名前:デフォルトの名無しさん :2005/08/02(火) 19:25:12
CPropertyPageの基本クラスが何か見てみよう

702 名前:700 :2005/08/02(火) 19:44:16
>>701
ありがとうございます。
CPropertyPageのOnInitDialogでコントロールを初期化してこれを
CPropertySheetにAddPageしたところ
CPropertySheetのOnInitDialogが呼び出されました。
コントロールの初期化はサブクラスでやらなきゃいけないのね...


703 名前:デフォルトの名無しさん :2005/08/02(火) 19:46:05
MSDNオンラインのページに行って色々調べようと思ったのですが使い方が分かりません。
例えばCreateProcess()関数を調べたい時、トップページ右上にある検索欄に『CreateProcess』と書いても何も見つかりません。
どうやって調べたらいいのでしょうか?

704 名前:592 :2005/08/02(火) 20:07:11
ttp://www.microsoft.com/japan/developer/library/jpwinpf/_win32_createprocess.htm

ぐぐるのもまた1案

705 名前:名も無き冒険者 :2005/08/02(火) 20:08:14
名前みすったorz

706 名前:700 :2005/08/02(火) 20:56:18
>>701
702の補足:
AddPageした場合は、
CPropertySheet::OnInitDialogから
各 CPropertyPage::OnInitDialogが呼び出されるという仕組みのようでした。
初期化を遅延しないといけないからこうなってるのかも...


707 名前:679 :2005/08/03(水) 00:45:40
683さん、どうもすいませんでした。

その後も自分でいろいろやったのですが、
1) bcc 5.5 なら問題ない(文字化けしない)。
2) Lマクロを使わず直接unicode文字列を引数に与えれば文字化けしない。

ちなみに、
unsigned char buf[10];
unsigned char buf2[10];

buf[0] = 0xb5;// 「サ」のユニコード
buf[1] = 0x30;
buf[2] = '\0'; buf[3] = '\0';

buf2[0] = 0xda;// 「サ」の丸囲文字のユニコード
buf2[1] = 0x32;
buf2[2] = '\0'; buf2[3] = '\0';

MessageBoxW(NULL,
(const wchar_t *)buf,
(const wchar_t *)buf2,
MB_OK);  // これは正しく表示。丸サも出る。

MessageBoxW(NULL,
L"サ",
L"サ",
MB_OK); // こっちは化ける。

こんなことってあるんでしょうか




708 名前:デフォルトの名無しさん :2005/08/03(水) 01:11:28
L"サ"のバイナリはどうなってる?

709 名前:デフォルトの名無しさん :2005/08/03(水) 07:06:55
>>707
そこはこうだろ。とのんきに言ってみるテス
wchar_t buf[2];
buf[0] = 0x30b5; //L'\u30b5';
buf[0] = 0x0; // L'\0';

710 名前:デフォルトの名無しさん :2005/08/03(水) 07:18:29
679ではないけど、
ソースファイルはShift-JISで保存されているから、
その文字コードがそのままバイナリになるってこと?

711 名前:デフォルトの名無しさん :2005/08/03(水) 08:58:58
なんらかの原因でL"サ"が0x30b5 0x0000になってないんだろうな。

712 名前:679 :2005/08/03(水) 16:00:27
遅くなりました。 ヒントありがとうございます。


L"サ" がなぜか
0x0192 0x0054 0x0000

になっていました。0x0192 はラテン拡張文字で
そういう意味では文字化けではなく、ちゃんと表示している
だけみたいです。

どうやら私の環境が変で、Lマクロが異常な変換
をしているようです。

お騒がせしました。

でもBCC5.5 だとちゃんと 0x30b5 0x0000 になるのにな。



713 名前:デフォルトの名無しさん :2005/08/03(水) 18:08:14
>>712
ところでLはマクロではないのだが……。

714 名前:679 :2005/08/03(水) 20:56:38
私もマクロではないな、と思いながらつい使ってしまいました。

L はプリプロセッサで処理されるわけでは
ないですものね。
かといって、実行時関数でもなく、あくまでコンパイル時に
処理されるのですよね。正確にはなんというのでしょう?


ちなみに、L"サ" をアセンブルしたら、
$SG41923 DB092H, 01H, 'T', 00H,
(つまり0x192 0x54)
この段階ですでに変になっていることを確認しました。



715 名前:679 :2005/08/03(水) 21:08:10
またまた変な言い方をしてしまいました。

> ちなみに、L"サ" をアセンブルしたら

L"サ" を含むc++ソースをコンパイルしてアセンブリリストファイル
を出力したら、という意味です。


716 名前:デフォルトの名無しさん :2005/08/03(水) 21:20:36
ワイド文字のLは単にワイド文字(列)の接頭辞とでも言えばいい。
尤もX3010/X3014にこう書いているわけではないが。

717 名前:デフォルトの名無しさん :2005/08/04(木) 09:33:56
2つの似て非なるソースがあるとき
これらをマージするのに便利なソフトウェアとか
「俺はこうやってるよ」みたいな方法論があったら
おしえてください


718 名前:デフォルトの名無しさん :2005/08/04(木) 10:25:18
テストで一次元配列および二次元配列のポインタ表記について簡潔に説明せよって問題が出そうなんだがなんて答えればイイと思う??

719 名前:デフォルトの名無しさん :2005/08/04(木) 11:39:51
>>717
diff, patch, cvs使用。
或いはエディタで。

>>718
C/C++には二次元配列はありません。
それは配列の配列か、ポインタの配列か、或いはポインタのポインタに過ぎません。

720 名前:デフォルトの名無しさん :2005/08/04(木) 11:47:18
え?
じゃあ
int i[10][20];ってやったらこれ二次元配列じゃないの?

721 名前:デフォルトの名無しさん :2005/08/04(木) 11:48:26
それは配列の配列

722 名前:デフォルトの名無しさん :2005/08/04(木) 11:51:32
だからそれを2次元配列って言うんだろ

723 名前:デフォルトの名無しさん :2005/08/04(木) 12:21:58
配列の配列は二次元配列ではない。
現に、二次元配列を扱える言語では厳密に区別されている。

724 名前:デフォルトの名無しさん :2005/08/04(木) 12:31:02
VC以外も厳密に区別してほしいな
甘すぎ

725 名前:デフォルトの名無しさん :2005/08/04(木) 13:20:26
int i[10][20]は二次元配列でないのか。知らんかった。
それと同じC言語でも、仮引数がこの形だと
VCやBCCではOKだが、gccではNG聞いた事があるけど、
>>723の原因と同じ所なのかな。

726 名前:デフォルトの名無しさん :2005/08/04(木) 14:25:32
>>725
仮引き数は配列ではなくポインタでしかないから、配列を渡すことはできない。
つまり、配列へのポインタを渡すことになる。
#或いは配列へのポインタへのポインタか。

727 名前:678 :2005/08/04(木) 16:05:15
解決しました。
プログラムでも、ましてやコンパイラの問題でもありません
でした。

OSの設定で、地域オプションの数値や通貨の設定がなぜか
英語(米国)になっていて、それを日本語に戻してコンパイルし直す
とすべてうまくいきました。

お騒がせしてすみませんでした。


728 名前:679 :2005/08/04(木) 16:08:28
自己をいつわり、かつあげてしまいました。
申し訳ありません。


729 名前:デフォルトの名無しさん :2005/08/04(木) 16:21:28
VCの開発環境で作られる中間ファイルなんですが
どうしてこんなにサイズが大きくなければいけないのでしょうか?

最終的に作られる exe や dll の
数十倍から100倍あったりするんですが…
もう馬鹿じゃないかと
いつも思います

なんとか,小さくして
なおかつかわりなく部分コムパイルできないもんでしょうか?


730 名前:デフォルトの名無しさん :2005/08/04(木) 16:40:08
>>729
馬鹿はお前

731 名前:デフォルトの名無しさん :2005/08/04(木) 16:47:51
とりあえず自分でコンパイラ作ってMSよりいいものができたら馬鹿にしてくれ

732 名前:デフォルトの名無しさん :2005/08/04(木) 17:02:10
>>728
言葉が足りないから、>727で間違えたということが判りにくい。
#かつ上げしたのかと思ったよw

733 名前:デフォルトの名無しさん :2005/08/04(木) 17:03:31
>>729
何故中間ファイルを小さくしたいと思うのかね?

734 名前:729 :2005/08/04(木) 17:11:48
>>733
モードっていうんですかね?
Debug とか Release とか
それだけならまだいいんですけど
どうしてもヴァリエイションをいつくも作る
必要が出てくるわけです

そうすると中間ファイルがとんでもないことになっている


735 名前:デフォルトの名無しさん :2005/08/04(木) 17:17:17
中間ファイルごときで尻の穴小さいこと言うなよ。
ていうかなんで何が不便なの?


736 名前:729 :2005/08/04(木) 18:36:35
どんどんハードディスクの空き容量を食い潰していくので。

737 名前:デフォルトの名無しさん :2005/08/04(木) 18:46:06
>>736
どうせnyかしゃれのせいでHDDがいっぱいって言うんだろ?

738 名前:デフォルトの名無しさん :2005/08/04(木) 19:25:36
いくつ「か」は必要だろうけど、いくつ「も」必要かどうか、
つうか整理すれ。
君だって、馬鹿だから机小さくていいだろ、と言われたら困るだろ?
必要な作業域ぐらいおごっといてやれよ、そのほうが無難だ。

739 名前:デフォルトの名無しさん :2005/08/04(木) 20:00:40
>>729
フォルダ管理ができているなら
*.ilk;*.obj;*.pch;*.pdb;*.idb;*.pdb;*.opt
などで検索してゴミ箱に捨てればいいじゃん


740 名前:デフォルトの名無しさん :2005/08/04(木) 20:06:47
そう言う香具師に限って古いプロジェクトのDebugディレクトリまでそのままの罠。
つーか、プロジェクトのクリアくらいしとけって。

741 名前:デフォルトの名無しさん :2005/08/05(金) 00:33:45
>>729
↑をビルド後の処理にいれとけばビルドする度に勝手にやってくれるぞ。

>>717
WinMerge日本語版お勧め。

742 名前:デフォルトの名無しさん :2005/08/05(金) 09:15:25
>>739
それらの拡張子のファイルは消してしまっても
部分コムパイルできるんですか?

もしそうだとすれば,なんのためにあるんでしょう?

743 名前:デフォルトの名無しさん :2005/08/05(金) 09:31:26
いい加減コムパイルって言うのやめようよ。

744 名前:デフォルトの名無しさん :2005/08/05(金) 10:13:49
>>742
>>729で「中間ファイル」と言ってるじゃないか

745 名前:デフォルトの名無しさん :2005/08/05(金) 13:21:48
馬鹿って口にする奴が馬鹿な質問をしてくるのはなんだかウザイ

746 名前:デフォルトの名無しさん :2005/08/05(金) 16:59:19
コンパイラの批判する前にコンパイラを知れやホケェ

747 名前:デフォルトの名無しさん :2005/08/05(金) 17:37:55
CreateCompatibleBitmapでビットマップ作成して、メモリデバイスコンテキストに
それを選択させて描画行った後そのビットマップを白黒に変換したいのですが、どのようにすればいいですか?
今まではGetDIBitでDIB形式に変換してピクセルデータをいじっていたんですが、処理スピードの関係でそのやり方は没に・・・
他に方法等ありましたらご教授お願いします

748 名前:デフォルトの名無しさん :2005/08/05(金) 22:03:25
>>747
1ビットビットマップを作り、それを元画像で白にしたい部分を(他は黒になる)
その色でSetBkColorし、そのビットマップに元画像を描画すればいい。

749 名前:デフォルトの名無しさん :2005/08/05(金) 22:05:47
ほほぉ、なるほど。>>747じゃないけど、覚えておこっと。

750 名前:デフォルトの名無しさん :2005/08/05(金) 23:43:59
白黒とは、マスクのことだと勘違いしているらしい>748がいるのはこのスレですか?


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.