★初心者にVisual C++ ..
[2ch|▼Menu]
653:デフォルトの名無しさん
09/01/19 13:31:54
>>652
できましたありがとう

654:デフォルトの名無しさん
09/01/19 23:39:08
CM_Get_DevNode_Registry_Propertyのかわりに
SetupDiGetDeviceRegistryPropertyほうを使うのが良いらしいんですが、
どういう理由なんでしょうか?

655:デフォルトの名無しさん
09/01/20 11:40:37
MSDNにそう書いてあるから、じゃだめ?

656:デフォルトの名無しさん
09/01/20 23:21:50
今使っているのはVisual Studio 2005です。

人に出来上がったexeファイルを配布するときに

このアプリケーションの構成が正しくないため、 アプリケーションを開始できません
でした。

というエラーを起こさないようにプロジェクトのランタイムライブラリの設定を
マルチスレッドDLLからマルチスレッドに変えました。
そうしたら以下のような警告が出て、他にも外部シンボルが未解決ですというエラーが大量に出ました。

warning LNK4098: defaultlib 'LIBCMT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。

人に配布するときに一番上のエラーが出なく、かつリンクが通るようにするにはどのようにすればいいのですか?

657:デフォルトの名無しさん
09/01/20 23:42:25
>>656
DebugビルドとReleaseビルドが混じってるとか
リビルドしてみるか、言われたとおり /NODEFAULTLIB:LIBCMT.lib を試してみる

658:デフォルトの名無しさん
09/01/21 09:08:20
>>656
元の構成に戻して、構成プロパティの全般ページの「MFCの使用」を
「スタティックライブラリでMFCを使用する」にする。

か、

元の構成に戻して、該当する方を渡す。

Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86)
URLリンク(www.microsoft.com)

Microsoft Visual C++ 2005 再頒布可能パッケージ (x86)
URLリンク(www.microsoft.com)

659:656
09/01/21 14:59:38
ゲームを作ろうと思っているのですが、
他の人が作っているゲームや商業用のゲームは
再配布可能パッケージをインストールしなくても動いているのが気になります。
それはなぜなのでしょうか。

660:デフォルトの名無しさん
09/01/21 15:10:46
>>659
スタティックリンクかもしれないし、
MFCを使ってないかもしれないし、
VCじゃないかもしれないし、
付属のセットアップで全部インストールされるかもしれないし、

もういいですか?

661:デフォルトの名無しさん
09/01/21 15:11:21
全然満足できません

662:デフォルトの名無しさん
09/01/21 15:14:29
あぁもう面倒くさいな。
取り敢えず「スタティックライブラリでMFCを使用する」でどうなるかやってみろ。

663:デフォルトの名無しさん
09/01/21 15:17:55
面倒くさいならレスしないで下さいよ。ここは初心者スレなんだから。

664:デフォルトの名無しさん
09/01/21 15:20:03
他の人が作っているゲームや商業用のゲームとかいう認識レベルのやつに説明しても無駄
開発環境や使用ライブラリぐらい調べてから質問しろ

665:デフォルトの名無しさん
09/01/21 15:21:15
無駄ならレスしないで下さいよ。ここは初心者スレなんだから

666:デフォルトの名無しさん
09/01/21 15:27:31
初心者じゃなくて初心者以前だろ

667:デフォルトの名無しさん
09/01/21 15:28:56
知りもしないで文句だけたれてるクズがうざぃ

668:デフォルトの名無しさん
09/01/21 15:39:57
そのゲームと同じにしたかったら同じ環境で同じように作ればいい

669:デフォルトの名無しさん
09/01/21 15:44:28
その程度のレスなんていらないよぉ

670:デフォルトの名無しさん
09/01/21 16:11:57
Microsoft Visual C++ 2005 再頒布可能パッケージなんだから
Visual C++ 2005以外で作れば入れる必要ない

671:デフォルトの名無しさん
09/01/21 17:02:41
誰か>>643を…

672:デフォルトの名無しさん
09/01/21 17:16:41
>>671
ちょっと待て

673:デフォルトの名無しさん
09/01/21 17:51:52
と思われるウィンドウって他の人が出してるウインドウ?

サイズ変更のメッセージでサイズ調整したりするけど
他から勝手に余計なことされたらどうなるんだ?

674:デフォルトの名無しさん
09/01/21 17:55:57
余計な事は考えないで質問にだけ答えてくださいよ。

675:デフォルトの名無しさん
09/01/21 17:59:02
>>673
ウィンドウシェードが目的なので他のプログラムですね。
コマンドプロンプトなどだと中身が一行見えたり、GIMPだとほとんどウィンドウの中身が見えてしまっていて全く使えません。
もちろん手動でタイトルバーだけにしようと思っても(OnGetMinMaxInfoかなんかで)それ以上小さくならないですし。

676:デフォルトの名無しさん
09/01/21 18:48:54
ウィンドウシェードなんて聞いたことない
知ってるやつが来るまでおとなしく待ってればいいよ

677:デフォルトの名無しさん
09/01/21 19:37:30
>>676
MacやBlackboxなどにあるウィンドウをタイトルバーだけにする機能のことです。

678:デフォルトの名無しさん
09/01/21 19:44:19
explorer.exeを殺して最小化すればいい。

679:デフォルトの名無しさん
09/01/21 20:03:54
>>675
他のシェードツールでは問題なく動作するの?
それなら動かしつつSPYで見てみるとか

680:デフォルトの名無しさん
09/01/21 20:26:41
>>678
互換シェル使っていますのでexplorer.exeはファイラー以外使ってません。
でもシェルを切ればタイトルバーだけになりますね。あまりあれは好きではありませんが。

>>679
Stylerでできた気がするのですが諸事情で確認できません。

681:デフォルトの名無しさん
09/01/21 22:40:49
VS2008(VC9?)で、newしたときに、失敗したときに例外じゃなくてNULLを返させたいです。
でもnew(nothrow)みたいに、既存のソースのnewを一個一個置き換えるのはやなので、一発でなんか無いですか?



682:デフォルトの名無しさん
09/01/21 22:55:40
newを自作

683:デフォルトの名無しさん
09/01/21 22:59:59
なんか方法があるのは憶えてるけど、どうやるかは忘れたな。
ググればでてくるんじゃないか?

684:デフォルトの名無しさん
09/01/21 23:03:43
検索したらmsdnにヒットしたけどオフィシャルとは思えない笑える説明

685:デフォルトの名無しさん
09/01/21 23:08:01
笑える部分をコピペしてやりたいけど、それやると検索で見つかってしまうからやめておこう

686:デフォルトの名無しさん
09/01/21 23:09:37
ダウンロードしたMSDNライブラリを、たとえばfirefoxで閲覧するにはどうすればよいでしょうか

687:デフォルトの名無しさん
09/01/21 23:49:00
>>682-685
えー
教えてください


688:デフォルトの名無しさん
09/01/22 00:24:09
もしかしてnothrownew.objをリンクするってやつ?

689:デフォルトの名無しさん
09/01/22 14:29:19
WindowsのAPI関数をさしてF1キーなどでドキュメント付属のリファレンス見れますけど、
英語のものばっかり表示されるんですが、日本語で表示するにはどうすればいいですか?
オプションで全部日本語を設定してるんですが・・・

690:デフォルトの名無しさん
09/01/22 14:55:16
んな難しい英語使われてないやろ

691:デフォルトの名無しさん
09/01/22 15:00:09
なんで2ちゃんねらーって論点をずらすことばかりするの?

692:デフォルトの名無しさん
09/01/22 15:03:55
そりゃあたくさん人がいるからだよ

693:デフォルトの名無しさん
09/01/22 15:06:28
visual studio使ってる段階でクズだし基地外が好んで使うから

694:デフォルトの名無しさん
09/01/22 15:20:01
>>689
キーワードタブのフィルタ条件を「日本語ドキュメント」にする。
その状態は記憶されるので次からは日本語になる。

695:デフォルトの名無しさん
09/01/22 15:50:57
VC++6.0を使用しています。
メニューバーの項目を一つだけ右端に持って行きたいのですが可能でしょうか?
下のような感じで。
________________________________
|ファイル|編集|表示|___________________|ヘルプ|
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

696:デフォルトの名無しさん
09/01/22 15:58:18
>>695
不可能

697:デフォルトの名無しさん
09/01/22 16:04:28
>>965
無理

698:デフォルトの名無しさん
09/01/22 16:05:12
>>696 >>697
感謝です。

699:デフォルトの名無しさん
09/01/22 16:07:43
>>695
リソースじゃなくて自分でメニューバーのウィンドー作れば可能

700:695
09/01/22 16:15:20
>>699
感謝です。

URLリンク(yokohama.cool.ne.jp)
メニューバーの作り方はここを参考に作れば大丈夫でしょうか?

701:デフォルトの名無しさん
09/01/24 21:59:52
Web制作の経験があるという理由だけで会社でVisual C++の担当になりました。
1から勉強しなければならないのですが、そもそもこのソフトで何ができるようになるのでしょうか?
上司に聞こうにも上手くはぐらかされるだけでストレスになっています。

例えばこういうものが作れるといった具体例があれば教えていただけないでしょうか?

702:デフォルトの名無しさん
09/01/24 22:09:40
この世に存在する自動的に制御されているものはほとんど作れます

703:デフォルトの名無しさん
09/01/24 22:17:49
これはさすがに釣りだろjk

704:デフォルトの名無しさん
09/01/24 22:59:02
>>701
ウインドウズのアプリケーション。
ライブラリ。
DLL。
COM。
ActiveX。
Webアプリケーション。


705:デフォルトの名無しさん
09/01/25 04:26:10
工具箱で何が作れるのか聞いてるようなもんだな。

706:デフォルトの名無しさん
09/01/25 13:11:32
>>701
VCはなんでも作れるらから安心しろ。

707:デフォルトの名無しさん
09/01/25 13:30:49
最初、ヴァーチャルストゥディオって読んでました


708:デフォルトの名無しさん
09/01/25 13:38:02
VirtualStdioか
意味は通らなくもない

709:デフォルトの名無しさん
09/01/25 16:33:42
VisualC++2005EEとVisualC++2008EEの違いって何ですか?
教えてください。

710:デフォルトの名無しさん
09/01/25 16:40:52
VisualC++2008EEのほうが全てに秀でる あと軽い

711:デフォルトの名無しさん
09/01/25 16:49:55
ありがとうございました。
2008インストールしてみます。

712:デフォルトの名無しさん
09/01/25 19:45:42
>>701
会社の業務に関係するシステムを作らされそうなの?
たぶんC#とかVBでやったほうがいいとおもうけど。

713:デフォルトの名無しさん
09/01/26 23:16:58
ダイアログベースアプリで、ウイザードが生成するコードで、
CXXXDlg::OnPaint()
{
 if(IsIconic())
 {
  処理

って奴あるじゃん。
あのIsIconicのときの処理って走りますか?
何時走るの??
ちなみにモーダルやモードレスの子ダイアログの場合、最小化すると走るらしいけど、
メインウインドの場合は?


714:デフォルトの名無しさん
09/01/26 23:28:03
>>713
MSDNには最小化したら0以外が返るって書いてあるけど、
ダイアログ以外のウインドウだと動作が違うの?

715:デフォルトの名無しさん
09/01/26 23:30:19
そもそも最小化しているときにOnPaintが呼ばれるのか?ということだろ。俺も気になる。

716:デフォルトの名無しさん
09/01/26 23:41:09
てか、最近のVCのウィザードはif(IsIconic())なんてコードを吐くの?


717:デフォルトの名無しさん
09/01/26 23:41:21
int main(void)
{
int a=0, b=99;
Exchange(a,b);
printf("a=%d ,b=%d\n",a,b);
}

int Exchange(int t1, int t2){
int tmp = t2;
t2 = t1;
t1 = tmp;
return t1,t2;
}


上の文では戻り値が返されずa=0,b=90と言う結果が出てしまいます。
どんな時に戻り値が適用され、どんな場合に仮引数、実引数が使われるのかが分かりません。
もしかして2つの値は返されないのでしょうか?
また、これは値渡しと言うものなのでしょうか?
混乱しています。よろしくお願いします。

718:デフォルトの名無しさん
09/01/26 23:42:49
>>715
そうそう、そんな感じ。
ウィザードがわざわざ生成するくらいだから何とかすれば通るような。
でもブレイクポイント設定して何をやってもブレイクしないし。

719:デフォルトの名無しさん
09/01/26 23:45:16
>>717
煽るわけじゃなくて、マジ疑問なんだけど、どういうのを
手本にして勉強してるの?
ネットのサイトとか?

二つの値を返したいときはこうだな。

void Exchange(int* t1, int* t2){
int tmp = *t2;
*t2 = *t1;
*t1 = tmp;
}

int main(void)
{
int a=0, b=99;
Exchange(&a,&b);
printf("a=%d ,b=%d\n",a,b);
}


720:デフォルトの名無しさん
09/01/26 23:46:38
>>718
Win3.1時代の名残りかな?
そのころは、最小化するとタスクバーじゃなくて、アイコン化されてたし。

721:デフォルトの名無しさん
09/01/26 23:49:23
>>720
最小化なのかアイコン化なのかもちょっと気になる。。

このIsIconic()〜のソースってSDIとかなら分かる気がする。

たとえば、親ウインドの中の子ウインドを最小化すると、親画面の左下に小さくなって並ぶじゃん。
あのときに、親ウインドにWM_PAINTが発生すれば、子供にも回ってきて、
子供は自分で自分がアイコンで占有している部分を更新リージョンからくり抜くんでしょ。たぶん。
でもメインウインドのダイアログのOnPaintでIf(IsIconic())って成立するのかな。。


722:デフォルトの名無しさん
09/01/26 23:51:38
__int32と int型ってまったく同一に見られるんですか?
オーバーロードができないんですが。

723:デフォルトの名無しさん
09/01/26 23:54:21
>>721
その場合は、子ウィンドウからしたら、全領域が非クライアント領域のような気がするし、
第一、WS_CLIPCHILDRENを付ければ勝手にやってくれることのような気がする。

724:デフォルトの名無しさん
09/01/26 23:55:14
>>722
そういう仕様。
URLリンク(msdn.microsoft.com)
> ..., and __int32 is synonymous with type int.
なお、ここには載っていないけど、__int64もlong longと同じ。

725:722
09/01/26 23:56:48
すいません、リサーチ不足でした。
ありがとうございます。

726:デフォルトの名無しさん
09/01/26 23:57:18
>>723
ああ。。確かに。
いったいこのコードなんだろう。誰かご存知のかた、ご回答お待ちしてます。

727:デフォルトの名無しさん
09/01/26 23:58:59
>>719
いや、ポインタを使わずに返すには、こうしたらどうか?
……と、思って書いてみたんですけど…やっぱり無理ですよね。

サンクスです。

728:デフォルトの名無しさん
09/01/26 23:59:43
C++なら参照というものがあってだな……。

729:デフォルトの名無しさん
09/01/27 00:06:10
>>727
構造体を使えばできるけど、Cじゃあんまりやらないな。

struct pair {
int first, second;
};

struct pair swap(int a, int b)
{
struct pair c;
c.first = b;
c.second = a;
return c;
}

730:デフォルトの名無しさん
09/01/27 00:12:11
VC+++MFCってコントロール少なすぎじゃないですか?
どう見ても、VC#でやったほうが楽なのに、なんでVC++のほうがメジャーなんですか?

731:デフォルトの名無しさん
09/01/27 00:16:13
そりゃ単純にいままでVC++でやってきた連中からしたら
VC#なんか分からん事だらけだからじゃないの?
なんでVC++で簡単にテキストファイル開けたのに
C#でその方法をぐぐらなくっちゃいけないの?
そこまでして移行してご利益がいっぱいあるの?
MSは好都合かもしれないけど。そんなものみんないやなんです。



732:デフォルトの名無しさん
09/01/27 00:16:36
>>730
C#よりも10年近く先に登場した分、資産・ノウハウが貯まっているところが多い。

733:デフォルトの名無しさん
09/01/27 00:22:46
感覚的には、新規の案件はVCよりC#のほうが多いような気がしたけど、
求人サイトで、C++とC#で検索してみたら、まだC++のほうが多かったな。


734:デフォルトの名無しさん
09/01/27 00:24:43
C++と比較したの?それともVC++と比較したの?
C++だけだと、LinuxとかUnixとか組み込みとかあるよ。

735:デフォルトの名無しさん
09/01/27 00:25:27
C#でもWeb系ってたまにないか?

736:デフォルトの名無しさん
09/01/27 00:29:21
>>735
aspで、イントラ作ろうって案件だと、C#かVBだしな。

737:デフォルトの名無しさん
09/01/27 00:37:49
>>732
その割には使えるコントロールが全くないじゃないですか?
しかも、Viewって一つしかないし・・・

738:デフォルトの名無しさん
09/01/27 00:45:22
>>737
Viewは複数あるじゃん。

739:デフォルトの名無しさん
09/01/27 00:47:41
>>737
コントロールは増えてないってだけでしょ。
MSはVC向けにはわざとそういう便利なライブラリを出さないんだろうね。
おらおらおらおらおらおらおらおらおらおら!!!!!!
さっさとドットネットにいきやがれこんちくしょーーーーーー!!
ってことですね。

おっとつい興奮していつの間にかCapsLockがONになってた

740:デフォルトの名無しさん
09/01/27 00:49:02
>>729
遅スレだけれどmain関数の中を

int main(void)
{
struct pair pair1;

pair1.first = 0;
pair1.second = 90;

swap(pair1.first,pair1.second);


printf("first=%d,second=%d\n",pair1.first,pair1.second);

return 0;
}

と、書いてみた。

駄目だった…。ちょっと思考錯誤してきます。

741:デフォルトの名無しさん
09/01/27 00:51:47
>>739
90年代はActiveXの時代だった。
どっちかというと、VBで使うのが主流だったと思うけど。

742:デフォルトの名無しさん
09/01/27 00:52:33
>>740
pair = swap(1, 2);


743:デフォルトの名無しさん
09/01/27 00:55:12
>>741
ここで言っているコントロールってActiveXのことなん?
もしそうならVCでも使えるんじゃね?

744:デフォルトの名無しさん
09/01/27 01:10:28
>>742
サンクスです。構造体に入れるのを忘れるとは…お恥かしい。
面倒な質問だったと思いますが最後まで有難う御座います。

これでひのきのぼうを装備してスライムが倒せそうです。

745:デフォルトの名無しさん
09/01/27 02:32:06
>>743
使えるけど、たしか標準ではメニューに入っていないでしょ。

746:デフォルトの名無しさん
09/01/27 07:43:04
基本的にはWindows標準のものだけ扱うからね。
でも2008SP1でごっそり増えたじゃない、C#にもまだないようなのが。
まあこれらもWindowsに標準で組み込まれる予定だけど。

747:デフォルトの名無しさん
09/01/27 18:29:11

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{/*ウインドウクラス構造体の設定*/
HWND hDlgWnd;
//ダイアログボックスを表示します
hDlgWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),NULL,(DLGPROC)DlgWndProc);
ShowWindow(hDlgWnd, SW_SHOW);
UpdateWindow(hDlgWnd);
//戻り値を返す
return 0;
}
このようにモードレスダイアログを表示する関数を宣言しているのですが、一瞬表示されてすぐに消えてしまいます。
どこがおかしいのでしょうか?
ここの記述がおかしいのかはわかりませんが、ご検討をお願いします。


748:デフォルトの名無しさん
09/01/27 18:39:15
>>747
モードレスダイアログは普通のウィンドウのようにメッセージループが必要。

749:デフォルトの名無しさん
09/01/27 18:43:08
UpdateWindow呼んだあとreturnしちゃってるからな。

750:デフォルトの名無しさん
09/01/27 19:46:16
747です。返信遅れてすみません。
では、WinMainの中に記述してはいけないということでしょうか?
今からいろいろやってみますが、かなりの初心者なので少しヒントを下さい。
お願いします!

751:デフォルトの名無しさん
09/01/27 19:58:16
>>750
メッセージループっていってんだから
メッセージループでググレよウンコ

752:デフォルトの名無しさん
09/01/27 20:15:28
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{ WNDCLASSEX wcex; //ウィンドウクラス構造体
HWND hDlgWnd;
   MSG msg;
ghInst = hInstance;
/*ウィンドウクラス構造体を設定*/
//ダイアログボックスを表示します
hDlgWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),NULL,(DLGPROC)DlgWndProc);
ShowWindow(hDlgWnd, SW_SHOW);
UpdateWindow(hDlgWnd);
while (GetMessage(&msg, NULL, 0, 0) > 0) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
//戻り値を返す
}
という風に書き直したらできました。しかし、このソースおかしいぞと思われたらレスください。
748,749,751さんどうもありがとうございました。



753:デフォルトの名無しさん
09/01/27 20:36:45
なんでageてんの?

754:デフォルトの名無しさん
09/01/27 22:23:39
VC#みたいな補完機能はないのでしょうか?
毎回Ctrl+Spaceするのはめんどくさいですしセミコロン打っても自動で文字間隔とかを調整してくれませんし不便で仕方ないです
補完でこのスレを抽出するとないと言われていますがそんな馬鹿なことはないですよね?

755:デフォルトの名無しさん
09/01/27 23:12:01
ない

756:デフォルトの名無しさん
09/01/28 00:07:12
VC++にはWPFがないのはなぜ?

もしかして、見放された?



757:デフォルトの名無しさん
09/01/28 00:20:17
お前はC++を何だと思ってるんだ
アーキテクチャ考えれば無いのは当たり前

758:デフォルトの名無しさん
09/01/28 00:38:43
>>755
そうですか・・・ありがとうございました

759:デフォルトの名無しさん
09/01/28 00:40:33
つまり.NETに移行するって事は標準の言語ではなく
マイクロソフトのツールを使わせる戦略なの。
マイクロソフトにとってオープンソースや標準というものは金儲けの邪魔なのだ。
もちろん自分が好き勝手に決められる標準なら大好きだ。

760:デフォルトの名無しさん
09/01/28 01:01:13
>>756
なんかのインタビューでC++はそういう用途のものじゃないから、って言っていた気がするが
見つけらんなかった。すまん。

761:デフォルトの名無しさん
09/01/28 02:19:59
>>759
マイクロソフトの戦略というのは確かだが、
何でもかんでも決め付けるはどうかと

762:デフォルトの名無しさん
09/01/28 10:09:07
>>739
MFCフューチャーパックなるものがリリースされて、
コントロールが10年ぶりくらいに刷新されたと聞いたけど、
あれ、どうなんだろう?
VS2003使いだから、導入したくても導入できない

763:デフォルトの名無しさん
09/01/28 13:24:19
VC++2005Standard Editionにはmicrosoft platform SDKは同梱されていますか?

764:デフォルトの名無しさん
09/01/28 13:40:56
>>763
されてるよ


765:デフォルトの名無しさん
09/01/28 13:45:18
>>764
ありがとうございます

766:デフォルトの名無しさん
09/01/28 15:23:17
>>763-765
>>763-765


























URLリンク(www.microsoft.com)

URLリンク(www.microsoft.com)

767:デフォルトの名無しさん
09/01/28 15:29:21
>VC++2005Standard Editionにはmicrosoft platform SDKは同梱されていますか?

768:デフォルトの名無しさん
09/01/28 16:00:05
>>766
ExpressじゃなくてStandardの話をしている


769:デフォルトの名無しさん
09/01/28 16:45:30
>>762
あれはコントロールってレベルじゃない。
URLリンク(www.atmarkit.co.jp)

770:デフォルトの名無しさん
09/01/28 22:23:57
>>766
すごい赤っ恥だな 俺だったら軽く鬱になる

771:デフォルトの名無しさん
09/01/28 22:47:54
>>766みたいにオッチョコチョイの癖にカッコつけて言葉が少ない奴って
しょーもねー勘違いで、一人で変な方向に突っ走ってプロジェクトの火種くすぶらせるんだろーな。


772:デフォルトの名無しさん
09/01/29 10:47:04
江戸っ子なんだろうw

773:デフォルトの名無しさん
09/01/29 11:37:35
アプリケーション開始とともにモードレスダイアログを2つ起動させたいのですが、どのような記述をすればいいのかがわかりません。
インスタンスハンドルが2つ必要なのでしょうか?
さっぱり分からないのでお願いします

774:デフォルトの名無しさん
09/01/29 11:39:29
1個はできてるの?
ためしに、単にCreateDialogを2回呼んでみては。

775:デフォルトの名無しさん
09/01/29 12:07:05
1個は表示されてます。
hDlgWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),NULL,(DLGPROC)DlgWndProc);
hDlg = hDlgWnd;
ShowWindow(hDlgWnd, SW_SHOW);
UpdateWindow(hDlgWnd);

while (GetMessage(&msg, NULL, 0, 0) > 0) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
ghInst = (HINSTANCE)GetWindowLong( hDlg , GWL_HINSTANCE ) ;
//ghInst = GetModuleHandle(NULL) ;
hDlgWnd2 = CreateDialog(ghInst, MAKEINTRESOURCE(IDD_DIALOG2),hDlg,(DLGPROC)DlgWndProc);
hDlg2 = hDlgWnd2;
ShowWindow(hDlgWnd2, SW_SHOW);
UpdateWindow(hDlgWnd2);
while (GetMessage(&msg2, NULL, 0, 0) > 0) {
TranslateMessage(&msg2);
DispatchMessage(&msg2);
}

return (int)msg.wParam;

}

このように記述しています

776:デフォルトの名無しさん
09/01/29 12:11:07
何でメッセージループが複数あるのさ。
同時ならループの前で2回作れ

777:デフォルトの名無しさん
09/01/29 12:16:40
メッセージループの何たるかを知らずにコピペでプログラムを作る人間か…

778:デフォルトの名無しさん
09/01/29 12:18:21
hDlgWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),NULL,(DLGPROC)DlgWndProc);
hDlg = hDlgWnd;
ShowWindow(hDlgWnd, SW_SHOW);
UpdateWindow(hDlgWnd);

ghInst = (HINSTANCE)GetWindowLong( hDlg , GWL_HINSTANCE ) ;
hDlgWnd2 = CreateDialog(ghInst, MAKEINTRESOURCE(IDD_DIALOG2),hDlg,(DLGPROC)DlgWndProc);
hDlg2 = hDlgWnd2;
ShowWindow(hDlgWnd2, SW_SHOW);
UpdateWindow(hDlgWnd2);
while (GetMessage(&msg, NULL, 0, 0) > 0) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return (int)msg.wParam;
//戻り値を返す
//return 0;
}

このように記述したらダイアログ2つともでました!
ですが、2つめのダイアログの表示が1つめのレイアウトとかぶってしまいました。色とか線が2つめのダイアログにも影響を与えています。


779:デフォルトの名無しさん
09/01/29 15:50:33
Webブラウザコントーロールのバージョンはいくつになるんですか?
自分のマシンにIE7が入っていればIEコンポーネントを埋め込んだアプリを起動したときIE7として起動するんですか?

780:778
09/01/29 16:00:51
解決しました。お答えくださったかたがたありがとうございました。

781:デフォルトの名無しさん
09/01/29 16:08:31
どうでもいいけど、GetMessageが0以外の値として-2以下を返すときってないの?

782:デフォルトの名無しさん
09/01/29 16:19:34
それより

警告 GetMessage 関数は、0 以外の値、0、-1 のいずれかを返します。したがって、次のようなコードは避けてください。

while (GetMessage(lpMsg, hWnd, 0, 0)) ...

と書いてるくせにVisual C++の自動作成されたやつはしっかりそうなっているという矛盾


783:デフォルトの名無しさん
09/01/29 21:26:06
long long型の数値を入力するときは、
VC++ではfgets→atollができないので、
scanfを使うしかないのでしょうか?

784:デフォルトの名無しさん
09/01/29 21:30:17
long long atoll(char *str){
long long result = 0;
int negative=0;

while (*str == ' ' || *str == '\t')
str++;
if (*str == '+')
str++;
else if (*str == '-') {
negative = 1;
str++;
}

while (*str >= '0' && *str <= '9') {
result = (result*10) - (*str++ - '0');
}

return negative ? result : -result;
}


785:デフォルトの名無しさん
09/01/29 21:30:56
>>784
ありがとうございます。
ぐへへへへ、これであんなことやこんなことができる。

786:デフォルトの名無しさん
09/01/29 21:33:25
_atoi64

787:デフォルトの名無しさん
09/01/29 21:36:17
>>785
何だか分からんが
とりあえず通報しておいた

788:デフォルトの名無しさん
09/01/29 21:56:38
なぜか負になる不思議!

789:デフォルトの名無しさん
09/01/30 00:46:27
すまん、ホリデーってなん曜日だったっけ?

790:デフォルトの名無しさん
09/01/30 01:24:22
給料日だよ

791:デフォルトの名無しさん
09/01/30 06:55:22
俺は毎日がホリデイ

792:デフォルトの名無しさん
09/01/31 04:49:26
CreateWindow()でNULLが返るのですが、どうやってデバッグすればよいですか?
(どの変数がおかしいのか、とか、、)

793:デフォルトの名無しさん
09/01/31 04:54:41
テンパってます。助けてぇ〜

794:デフォルトの名無しさん
09/01/31 05:01:11
CreateWindowにブレークポイント設定してそこまでの変数が
期待通りの値になっているか確認したら
うまいやり方は玄人が来るまで待て

795:デフォルトの名無しさん
09/01/31 05:10:14
794
ありがと。それはやってるけど、何が正常なのかよくわからないです。
理由を

796:デフォルトの名無しさん
09/01/31 05:29:15
CreateWindowから前の命令についてMSDN引きながら
どういう値が戻るのか、渡すのが正しいのか確認しなよ
それも出来ないならエスパーが来るまで2時間程寝たら?
今のテンパってる状態では何かやってもうまくいかないさ

797:デフォルトの名無しさん
09/01/31 05:35:25
<例>cin >> a >> b >> c;
scanfを使って一行で表すにはどうしたらいいですか?

798:デフォルトの名無しさん
09/01/31 10:38:18
まずGetLastError()をだな

799:デフォルトの名無しさん
09/01/31 10:44:20
>>795
GetLastError();

800:デフォルトの名無しさん
09/01/31 10:48:18
じゃ、俺も
GetLastError()


801:デフォルトの名無しさん
09/01/31 16:29:08
プロジェクトをテンプレートから作成するとき
空のプロジェクトとWin32コンソールアプリケーションとでは
どこがどのように異なるのでしょうか。
VC++は2008 Expressです。

802:デフォルトの名無しさん
09/01/31 16:40:57
質問です。
初心者でもひろってくれる会社はないですか?

803:デフォルトの名無しさん
09/01/31 16:43:21
>>801
Win32コンソールアプリケーションだとmain関数入りのソースファイルが初めから追加済み。
空のプロジェクトは本当に空っぽ。

804:デフォルトの名無しさん
09/01/31 17:13:58
自分でプロジェクト作って見ればいいだけだろ
お前のVC++は2008 Expressは飾りか?

805:デフォルトの名無しさん
09/02/01 13:39:52
すいません、昨日の明け方カキコしたものです。ちょっと前まで寝てました。
なんでCreateWindow()でNULLが返るのか分かりました。WinProc()のWM_CREATEの中で
変なことやってました。早く寝るべきだったス。
ありがとうございました。


806:デフォルトの名無しさん
09/02/01 13:46:36
>>802
ないです。

807:デフォルトの名無しさん
09/02/01 13:47:54
>>797
int a, b, c;
scanf("%d%d%d", &a, &b, &c);

808:デフォルトの名無しさん
09/02/01 19:23:23
>>802
求人サイトで、未経験者可の会社さがせ。

809:デフォルトの名無しさん
09/02/01 21:02:25
けどそういう会社ってブラックな所多いよね。

810:デフォルトの名無しさん
09/02/01 21:38:39
地元で自宅通勤できるならデジドカでもおkだけど、
県外に出てまでデジドカにはなりたくないな。

ところで情報工学科に受かったが、入学前の間このままVCで遊んでいればおk?

811:デフォルトの名無しさん
09/02/01 21:47:15
何もしなくても問題ないと思うけどね
TOEICとか英語の資格取る勉強とかすれば?って気がする

812:デフォルトの名無しさん
09/02/01 22:19:10
スレチなのに回答Thanks!
確かに、何も知らない人にも最初から教えてくれるはずだからな。

813:デフォルトの名無しさん
09/02/01 22:44:30
>>810
私立の情報工学科なんて専門学校と同じだろ?


814:デフォルトの名無しさん
09/02/01 22:52:43
国立だとどうなの?

815:デフォルトの名無しさん
09/02/01 22:55:19
国立でも旧帝以外なら屑

816:デフォルトの名無しさん
09/02/02 01:13:57
ダイアログコントロールのプロパティ[Visible]をfalseって裏では何を設定してるんですか?

817:デフォルトの名無しさん
09/02/02 01:21:52
英語と苦手だったら数学の復習でもしてれば?
後は仕様書きちんと書いてからソフトを作ってみると良い経験になるかな

818:デフォルトの名無しさん
09/02/04 01:03:58
いままで、動いていたプログラムが
サービスパック入れたとたん120個エラー。
しかも触ったことも無いヘッダファイルから・・・
 
・・・・orz

こういうことって良くあるんでつか?

819:デフォルトの名無しさん
09/02/04 01:34:26
VC+++MFCって画面の作り方がさっぱりわかりません

ダイアログベースにするとしょぼいコントロールが数個あるだけで・・・
ドキュメントビューにすると、全く画面が作れないし・・・

どうやってつくるのか、いいHPあったら教えてください

820:デフォルトの名無しさん
09/02/04 01:59:41
質問させてください。

数値のデータが列挙された Excelデータがあります。内容は、IDと、00 や、 02など
見た目では分かりにくいデータです。

Windows SDKを使用して、Excelの値の意味を画面表示することが目的のプログラムを
作成しようと調査しています。

そこで、Accessのデータベースと、Excelのパラメータを比較して画面出力する処理を
考えていますが、そもそもWindows SDKを使って、mdbと接続できるのでしょうか?

821:デフォルトの名無しさん
09/02/04 02:26:06
Windows SDKとは関係ありません。
バイナリファイルに自分でアクセスする処理を作って下さい。

822:デフォルトの名無しさん
09/02/04 03:03:19
生APIの海の世界へようこそ 君が今まで居た場所は池にすぎない

823:デフォルトの名無しさん
09/02/04 08:27:33
いや、mdbと接続っていうならバイナリアクセスじゃなくて
com使ってexcelやaccessと接続するんじゃないの

office オートメーション

あたりでのキーワードでググってみたら?

824:デフォルトの名無しさん
09/02/04 16:43:22
自分はADO使うんだと思った。

825:デフォルトの名無しさん
09/02/04 17:29:12
VC++ならDAOでも ADOとDAOは用途似てる上に略式名がふざけすぎていると思うw

826:デフォルトの名無しさん
09/02/04 20:33:51
>>819
ダイアログアプリにして
ぺたぺたコントロールを貼り付けていく

827:デフォルトの名無しさん
09/02/04 21:18:03
確かにDialogベースアプリはしょぼい概観。
SDIとかMDIはめんどくさいしほとんど使う価値無し。

最近のアプリ(ウイルスソフトとか)って概観がWebページみたいな感じじゃないですか?
ああいうのってどうやって作るんだろ。
以前DirectXを使ってボタンを描画するライブラリとか見たことあるけど。


828:デフォルトの名無しさん
09/02/04 21:25:07
スキン 貼り絵

829:デフォルトの名無しさん
09/02/04 21:55:11
>>828
そんな感じなの?
ふーん。


830:デフォルトの名無しさん
09/02/05 11:13:48
Diableベースアプリに見えた

831:デフォルトの名無しさん
09/02/05 22:10:28
VS2008でMFCアプリ作ってみたら、すごいことになってたな。

832:デフォルトの名無しさん
09/02/05 22:27:41
SP1のスケルトンだなw

833:デフォルトの名無しさん
09/02/06 00:08:05
>>831
確かに!
.NET不要じゃね?て思っちまった

834:デフォルトの名無しさん
09/02/06 03:55:01
クラスをまたがる処理がゴミゴミしてきたのでグローバル変数にしようと思うんですが、
なるべくコードの量を減らしたいので、今、すべての.cppでincludeしてあるstdafx.hを使ってなんとかしたいです。

まずCMainFrameをグローバル変数にしたいのですが、
// stdafx.h
extern CMainFrame* g_pMainFrame;

// MainFrame.cpp
#include "stdafx.h"
CMainFrame* g_pMainFrame;
CMainFrame()
{
 g_pMainFrame = this;
}

MainFrame.cpp内でグローバル変数を宣言しているのにexternするのは変化もしれませんが、
すべてのファイルで共有するのでこれでエラーが出ないようにしたいんです。
どうすればいいでしょうか?

835:デフォルトの名無しさん
09/02/06 09:03:48
プリコンパイルヘッダー使ってるならstdafx.h使うのは無理じゃない?
あまりそれ使うのはお勧めしないが、
MainFrame.cppだけプリコンパイルヘッダーはずしてstdafx.hインクルード前に#define入れて
#ifdefでextern宣言飛ばすようにするとか。

836:デフォルトの名無しさん
09/02/06 10:21:44
>>834
#define CxxxApp::GetMainWnd() g_pMainFrame

CMainFrame* CxxxApp::GetMainWnd()
{
return DYNAMINC_DOWNCAST( CMainFrame, m_pMainWnd);
}

837:デフォルトの名無しさん
09/02/06 10:25:17
DYNAMINC_DOWNCAST → DYNAMIC_DOWNCAST

class CxxxApp
{
public:
CMainFrame* GetMainWnd();
}

838:デフォルトの名無しさん
09/02/06 10:29:10
いかん。

#define CxxxApp::GetMainWnd() g_pMainFrame → #define theApp.GetMainWnd() g_pMainFrame


839:デフォルトの名無しさん
09/02/06 10:36:29
MFC使ってるのに少しぐらいコードの量減らしたってほとんど意味ない

840:デフォルトの名無しさん
09/02/06 10:45:30
>まずCMainFrameをグローバル変数にしたいのですが、

ってあるからそれ以外にもあるのだろうね、大量にw

841:デフォルトの名無しさん
09/02/06 14:32:49
そうなんです、大量にあるんです。
コードの量を減らすのは見やすいようにするためなんですが、なるべく同じ関数は2度と呼び出さなくてもいいように
確保しておきたいんです。ループの中とかでも頻繁にクラス間のメンバ参照を使うので馬鹿にできないんです。
全ファイルにインクルードするのが面倒というか、増えていくファイルで自動で追加されるstdafx.hにglobal.hをインクルードしておくだけにしたいんです。

で1行は必ず自分のポインタを格納したグローバル変数をもう一度externするのをさけたいんです。
#defineで既にexternされている場合か、宣言が既にある場合はその行だけ飛ばすにはどうかけばいいんでしょうか?


842:デフォルトの名無しさん
09/02/06 15:22:23
CMainFrameはたとえが悪かったな。AfxGetMainWndとかあるしな。
global.cpp をつくり変数はそこで定義すればいいじゃない。

よくやる手段としては、ヘッダファイルで
#ifdef EXTERN
#define EXTERN extern
#endif
とかやっといて、cpp1つだけインクルードの前に#define EXTERNとかやる。
stdafx.hを使うのであればmそのcppはプリコンパイルヘッダーを使わない設定にしないとならない。

843:デフォルトの名無しさん
09/02/06 15:22:49
>>841
>>836 以降を実行しろ。グローバル変数になんぞする必要もない。

844:デフォルトの名無しさん
09/02/06 15:23:01
#ifdef EXTERN じゃなくて#ifndef EXTERN だった

845:デフォルトの名無しさん
09/02/06 15:30:44
グローバルはCWinApp派生クラスに一任だぜ 
WindApp派生クラスのヘッダファイルにextern theAppがあるだろ?

846:デフォルトの名無しさん
09/02/06 15:55:21
もしかしてexternって、書いたファイルでその宣言を使える用にするんじゃなくて
externが書いてあるファイルをインクルードしておけば、どのファイルからでも使えるようになるんですか?

847:デフォルトの名無しさん
09/02/06 16:03:01
まずインクルードのこと、翻訳単位について勉強だな

848:デフォルトの名無しさん
09/02/06 16:16:01
すまん、本をもう一度読んでからレスを読み返してみるよ
みんなありがとう

849:デフォルトの名無しさん
09/02/06 16:29:21
わかりました。グローバルファイルを別に作る必要すらなかったです。
externの意味を間違えていたのが原因でしたすいません!

// .hのクラスの外(グローバル領域)
extern CMainFrame* g_pMainFrame;

// .hのクラスの中
CMainFrame* g_pMainFrame;

// .cppのCMainFrameのコンストラクタ
g_pMainFrame = this;


850:デフォルトの名無しさん
09/02/06 16:41:10
やばい振り出しに戻った

851:デフォルトの名無しさん
09/02/06 18:12:17
そもそもグローバル変数にしなきゃならんような設計が間違い

852:デフォルトの名無しさん
09/02/06 19:59:56
中途半端にコードだすから・・・
何度こういうケースを見たことか。

853:デフォルトの名無しさん
09/02/06 21:51:31
VC++ 6.0 使ってます。
スレッドを生成するのに、JavaのThreadクラスのようなものは無いのでしょうか?

854:デフォルトの名無しさん
09/02/06 21:52:58
CThread

855:デフォルトの名無しさん
09/02/06 22:19:20
MFCごときで作るアプリなんざ、グローバル変数使ったって全然もんだいない。
じゃんじゃん使え。CWinAppの派生クラスに押し込めるとか、そんな糞めんどくさいことするな。
あとアクセス関数とか全然必要ないよ。
全部変数はパブリック。楽で良いぞ。

856:853
09/02/06 23:19:37
>>854
ありがとうです。
CThreadはCWinThreadを継承して自分で作るってことですか?
調べてみたらこんなのしかなかったんですが、この方法でよいのでしょうか・・・?
URLリンク(www.tri-field.com)
URLリンク(hp.vector.co.jp)
URLリンク(www.edita.jp)

857:デフォルトの名無しさん
09/02/06 23:41:56
_beginthreadexつかえ。

858:デフォルトの名無しさん
09/02/06 23:52:15
物凄く初歩的かつ大雑把な質問なのですが、
システムの処理上sqrtやcos,sinをかなり使っていて、
これらの処理が重いということは知っていたのですが、
「最近のPCだと、もちろん重いことには重いがそれほど四則計算と変わりない」と聞きました
実際のところはどうなのですか?

859:デフォルトの名無しさん
09/02/06 23:54:55
最近のマシンで動作する3Dゲームを見れば分かる。
アレだけたくさんのポリゴンを計算し、それらの表面の光沢を表現し
その膨大な演算を一瞬にしてこなしているだろ?
だから早いんだよ



860:デフォルトの名無しさん
09/02/06 23:57:03
確かにそうですね。
最近は2次元の計算作業なんて多少無理しても大丈夫なレベルになってるんですね。
ありがとうございます。

861:デフォルトの名無しさん
09/02/07 00:03:24
>>860
自分のための処理であるのなら実際に自分が使用する環境で実測してみることをお勧めする
処理速度や計算機リソースをどの程度消費するかなどは結局のところ実際に計ってみないと議論できない面がある
実際に行いたい処理から規模をスケールダウンして実測してみてそこから外挿してそれが無理な処理か大丈夫なレベルか判断

862:デフォルトの名無しさん
09/02/07 00:17:32
計算機なんて20年ぶりに聞いたw


863:デフォルトの名無しさん
09/02/07 04:53:42
FORTRAN屋みたいな奴がいるなw

864:デフォルトの名無しさん
09/02/08 00:16:09
VC2008で操作ミスってソースウィンドウのタブやスペースが
”→”、”・”と表示されるようになったんですが、
元に戻すにはどうしたらいいんでしょうか?

865:デフォルトの名無しさん
09/02/08 00:24:55
メニューバー→編集→詳細→スペースの表示


866:デフォルトの名無しさん
09/02/08 00:25:25
ageスマン

867:デフォルトの名無しさん
09/02/08 00:25:49
>865
直りました。
ありがとうございます。

868:デフォルトの名無しさん
09/02/08 20:03:10
VC++9を使いはじめたものです。
タブを押すと押しただけどんどんタブが追加されていくんですが、
これをタブをインデントをそろえるために使えませんでしょうか?
キーボードをEmacsタイプにするのは、ほかのキーバインドもEmacs風になってしまうので、
やめたいです。
よろしくお願いします


869:デフォルトの名無しさん
09/02/08 20:29:42
逆に考えるんだ。
「VSのやり方に合わせよう」と考えるんだ。
みんなそうしているよ。

870:デフォルトの名無しさん
09/02/08 20:30:13
そこだけ設定抜きだして入れりゃいいじゃんか

871:デフォルトの名無しさん
09/02/08 20:36:23
>>870
どうやるんスか?

872:デフォルトの名無しさん
09/02/08 21:37:14
これをタブをインデントを

873:デフォルトの名無しさん
09/02/08 21:51:12
>>871
ユーザー設定のコマンドに全部設定あるだろ。
EMACSでやってる欲しい設定だけ拾ってキーに設定するんだよ

874:デフォルトの名無しさん
09/02/08 22:24:54
タブデント!

875:デフォルトの名無しさん
09/02/09 00:08:29
初心者です。
VC6.0のFormViewで色々実装しています。

ドキュメントクラスのSerialize関数がメニューの[開く][上書き保存][保存]
からしか呼び出されません。

上記のものを消してしまい、後で追加したいのですが何も考えずに追加すると
Serialize関数が呼び出されません。一見[開く]などとたの項目とでは特に
違いがなさそうなのですがSerialize関数を呼び出すにはどうすればよいのでしょうか。


876:デフォルトの名無しさん
09/02/09 09:55:03
追加したコマンドIDは消す前と同じかえ?

877:デフォルトの名無しさん
09/02/09 09:58:45
別に新規で作って見てみたら?
それでわからなかったら、Serializeにブレークポイント置いておいて
止まったら呼び出し履歴見てみれば。

878:デフォルトの名無しさん
09/02/12 15:54:51
VC++6.0のダイアログベースで作成しているのですが
元のダイアログをAとし、別のダイアログBを作成し、AからBにDoModalを行った後、
Bのダイアログのリストビューのアイテムをダブルクリックした時に、
Aのダイアログにもどり、Aにあるスタティックテキストをそのダブルクリックされたアイテムの
名前に変更したいのですが非常に苦戦しております、、

自分が考えていたのはアイテムがダブルクリックされたときに、
アイテムをグローバル変数に突っ込んで CDialog::OnOK();を実行し
元のダイアログに戻った時にデータを突っ込んでUpdateDataをかけようと思っていたのですが、
CDialog::OnOK();で元のダイアログが閉じられたあとにどこに行っているのかがさっぱりで
処理を突っ込めませんでした。

CDialog::OnOK();の後どこにいくのか、また他になにか良い方法はないか
よろしくおねがいします。

879:デフォルトの名無しさん
09/02/12 16:15:37
OnOK後はDoModalから返ってくるだろ。
Bのパブリックメンバーにしておいて、DoModalがOK返してきたら
AからBのそのメンバー見ればいいじゃんかよ。

880:デフォルトの名無しさん
09/02/12 16:40:04
>>879
あー、言われて見直して10分悩んで見直したら出来ました。
全然頭が回ってないですね自分。

ありがとうございました。助かりました。

881:デフォルトの名無しさん
09/02/13 01:53:54
windowsでC++の勉強を始めたのですが、Std::coutに出力してもどこにも
出力が出ません。どうすれば表示されますか?

882:デフォルトの名無しさん
09/02/13 02:15:57
コンソールアプリケーションのプロジェクトを選べ

883:デフォルトの名無しさん
09/02/13 02:42:29
ありがとうございます。
windowsアプリケーションを選ぶときは、どうすればいいですか?

884:デフォルトの名無しさん
09/02/13 04:15:21
windowsアプリケーションを選べばいんじゃね?

885:デフォルトの名無しさん
09/02/13 05:44:00
MessageBox()を使えばいいよ。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4353日前に更新/248 KB
担当:undef