■過去ログ置き場に戻る■
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.