11/08/06 01:58:49.05
>>974
初心者の私には、「MFC、Win32++を超える」なんて自信は無いもので。
よちよち歩きの理解だし、初心者板が似合いだと思います。
>>975
ええ、複数スレッドから使ったりするとやばいかも。
だから無茶な方法だと自覚してます。
回避する方法を考えなきゃ...
979:972
11/08/06 02:01:49.73
はやとちりしてしまった ごめんなさい。
>>977
むむむー
文法で解決できる事柄なのに、スタイル維持にはちょっと特殊な構造にしないといけないのか…
980:876
11/08/06 02:06:05.94
>>975
ロックすれば良いのかな?
ロックフラグ用意して、ロックされてる間は生成の順番待ちしてもらうかな。
できるだろうか。
981:デフォルトの名無しさん
11/08/06 02:10:24.87
>>980
hoge* pCreaterも排他付きmapにして、lpParamに識別渡すんだよ。
そのためのlParam。
982:デフォルトの名無しさん
11/08/06 02:16:26.78
>>980
単一スレッドでも不完全
983:876
11/08/06 02:26:24.34
>>981
なるほど、ありがとうございます。
>>980
どう不完全でしょう。
すみません、教えていただけないでしょうか?
面倒くさいとは思いますが。
984:デフォルトの名無しさん
11/08/06 02:31:26.04
>>876のコードがどんどんすごいことになっている件
ウインドウ生成は基本的にマルチスレッドでするものではないし、一応完全だと思うが。
ウインドウ生成過程でウインドウ生成ってなんだ?
hogeウインドウ生成中にhogeウインドウは生成されないだろ
985:876
11/08/06 02:31:37.05
眠い、そろそろマブタが重いです。
おやすみなさい、また明日。
アドバイスくださった方ありがとうございました。
986:876
11/08/06 02:37:04.31
>>984
ええ、普通マルチスレッドではしませんよね。
でも指摘された事に対する可能性はそれなのかな...と。
完全ならうれしいのですが。
他の人は完全では無いというので混乱してきました。
987:デフォルトの名無しさん
11/08/06 02:37:30.12
>>966
俺も趣味グラマだけど
趣味グラマだと守破離の守の先生もとて教育されていないから超俺俺になり、
守の先生もとで修行を積んだ職業PGからみれば><になるってことは覚えておいたほうが良い
まっ、趣味グラマなら動けばOK、自己満足満たせばOKだけどね
988:デフォルトの名無しさん
11/08/06 02:44:06.51
>>983
例えば再帰的にサブウィンドウが作られる場合とかが危険
(g_pHoge = new Hoge; CreateWindow(...)) ~ (WM_CREATEをハンドリング; マッピング)
この間(~の部分)でもう一度Hogeクラスのウィンドウを作ろうとしたらg_hogeが書き換わってしまいマッピングに失敗する
マッピングの後にサブウィンドウを作るなら問題ないし普通はそうするだろうけどね
989:876
11/08/06 03:00:36.22
>>988
プロシージャのWM_CREATEにおける処理が終わるまで、次のウィンドウを作ってはならないという理解でよいでしょうか?
だとすると、終わった所で外れるロックフラグを用意すれば大丈夫でしょうか。
990:デフォルトの名無しさん
11/08/06 04:00:14.23
thisMapに登録するまでの間、g_pHogeが再帰で上書きされるのが問題って話だろ
g_pHogeがフラグそのものになるじゃないか。
if (g_pHoge != 0)残念;
g_pHoge = new Hoge(); h = CreateWindow();
g_thisMap[h] = g_pHoge; g_pHoge = 0;
991:デフォルトの名無しさん
11/08/06 06:00:10.48
>>939
035です。ちょっと金銭的な問題で高いソフトを買う金が無いんですよね。
フリーでそういったWinアプリを作成できるようなものはないんでしょうか?
992:デフォルトの名無しさん
11/08/06 06:05:09.40
Qtでいいだろ
993:デフォルトの名無しさん
11/08/06 06:05:35.41
VC++2010Expressは無料だぞ
994:876
11/08/06 08:40:46.99
>>989
おはようございます。
OK、理解できました。
thisMapに登録するまでの間、内側から create しないようにします。
助言ありがとうございます。
995:デフォルトの名無しさん
11/08/06 13:41:00.16
>>991
レスにあることすら自分では全く調べませんよってことか
なら、Winアプリを作成も自分でしないで誰かにやらせたら
>フリーで
そんな奴だと平気で後だし条件を付けて
おまえら調べろってするよな
996:デフォルトの名無しさん
11/08/06 13:53:32.59
どこで聞けばいいかわからなかったので、ここで失礼します。
Windows フォトビューアーで複数の画像を同時に開く処理
(エクスプローラで複数の画像ファイルを選択し、Enterを押すのと同じ処理)
をCで書きたいのですが、
ShellExecute(NULL,"OPEN","Rundll32.exe","\"C:\\Program Files\\Windows Photo Viewer\\PhotoViewer.dll\",ImageView_Fullscreen 画像のパス", NULL, SW_NORMAL);
で一つの画像ファイルを開くことには成功したのですが、複数画像を開く方法がわかりません。
半角スペースで画像パスを並べたり、ダブルクオーテーションで括ったりしましたが起動しませんでした。
どなたか解決法をご存知の方はいませんか。
997:デフォルトの名無しさん
11/08/06 14:40:34.84
>>996
ファイルの個数だけ ShellExecute を呼べばいいんじゃね
998:デフォルトの名無しさん
11/08/06 15:04:27.78
>>991
>>995
ネットで情報収集する能力すら弱い初心者なのかも、自分と同じ基準で評価するのは良くないでしょう。
VC++2010Express はマシンスペックによってはマトモに動かないかも、新しい分だけ重いし。
グレードダウンして VC++2008Express も考慮に入れるべき。
VC++2005Express は Platform SDK が別に必要で設定もややこしいので勧めません。
本当の初心者がいきなり Qt のような高級ライブラリに手を出すのはツライでしょうか。
開発環境を手に入れたら、WinAPIの入門サイトでも見ながら勉強しては?