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


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

Win32API質問箱 Build36
501 名前:デフォルトの名無しさん :2005/10/29(土) 17:06:03
まあまあ、おまえら。要するにMSDNの中の人が怠慢だってことで。

502 名前:デフォルトの名無しさん :2005/10/29(土) 21:42:10
日本語を原本にして、後から英語に翻訳すりゃいいのに……。

503 名前:デフォルトの名無しさん :2005/10/29(土) 21:46:44
・・・ウィンドウクラス登録・・・
  HWND wapp = ::CreateWindow(
    clsName,0,WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
    0,0,::GetModuleHandle(0),0);
  HWND wpop = ::CreateWindow(
    clsName,0,0/*WS_POPUP*/,
    CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
    0/*wapp*/,0,::GetModuleHandle(0),0);
  ::SetWindowLong(wpop,GWL_STYLE,WS_POPUP); // API-a
  ::SetParent(wpop,wapp);                      // API-b
  ::SetWindowPos(wpop,0,100,100,300,200,SWP_FRAMECHANGED|SWP_NOACTIVATE|SWP_NOZORDER);
  ::ShowWindow(wpop,SW_SHOW);
  ::ShowWindow(wapp,SW_SHOW);
・・・メッセージループ・・・

2番目のCreateWindowでコメントアウトして0にしている部分を
補う形でSetWindowLongとSetParentを使ってwpopを設定したいのですが、
ポップアップウィンドウにならずにチャイルド
(親ウィンドウでクリップされる)ウィンドウになってしまいます。

つまり、このままコンパイルした場合と、2番目のCreateWindowの
コメントアウト部分を復帰してAPI-a、API-bを削除した場合とで
wpopのスタイルが違ってしまいます。
どこが悪いのでしょうか?

というのも、とある都合で先にウィンドウを作って
後からその親ウィンドウと位置、スタイルを設定するという
必要に迫られ、書いてみましたがうまくいきませんでした。

詳しい方ご教授お願いします。

504 名前:デフォルトの名無しさん :2005/10/29(土) 21:52:23
>>503
CreateWindowの引数に親ウィンドウのハンドルを指定できないのか?

505 名前:デフォルトの名無しさん :2005/10/29(土) 22:48:35
>>503
SetWindowPosのヘルプに書いてあるやり方と、指定してるフラグがちがくないか?

506 名前:デフォルトの名無しさん :2005/10/30(日) 01:56:16
>>503
SetWindowLong()の部分、それだとウィンドウスタイルがWS_POPUPのみになるよ?
スタイルを変更する場合は
SetWindowLong(wpop, GWL_STYLE, GetWindowLong(wpop, GWL_STYLE) | WS_POPUP) みたいに
現在のスタイルを取得して、それを改変するのが一般的。

507 名前:デフォルトの名無しさん :2005/10/30(日) 03:29:20
>>502
アメリカの会社がそんなことするわけないだろ

508 名前:デフォルトの名無しさん :2005/10/30(日) 05:49:06
使い方が解らなかったら使わなければいいだろ

509 名前:デフォルトの名無しさん :2005/10/30(日) 07:31:23
>>506
それだと、既に設定されてる別のフレームスタイルと競合しねぇ?

510 名前:503 :2005/10/30(日) 08:56:35
いろいろ調べてたら、ウィンドウの関係は
親ウィンドウとオーナーウィンドウっていう2種類があって
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowfeatures.asp

「Owned Windows」
の部分を読むと
After creating an owned window, an application cannot
transfer ownership of the window to another window.
って書いてありました・・・(;´д`)
最初に指定するしかないっぽいですね・・・・
意外と柔軟性ないのね(´・ω・`)

そんな訳で自己解決しました
どうもお騒がせして失礼しました〜

511 名前:デフォルトの名無しさん :2005/10/30(日) 13:22:38
質問です。

http://www.microsoft.com/japan/msdn/thisweek/vbxp/vbxp1.asp

ここにあるグループボックス直下に配したオプションボタン真っ黒現象は、
ルート→グループボックス→何か→ラジオボタン
とか1クッション入れる以外の回避方法はないのでしょうか?

これだとすごく泥臭い対処な気がするんですが、
なにか他に定番のやり方みたいなのがあれば、ご教示くださいまし。



512 名前:デフォルトの名無しさん :2005/10/31(月) 00:23:41
WinAPI Database for VB Programmer
http://www.winapi-database.com/

VBだぁ?と構えてしまったが、、
C/C++の構文も乗ってる。
分類が分かりやすくてすぐ見つけられるので
正直、MSDNより使える。

513 名前:デフォルトの名無しさん :2005/10/31(月) 02:41:41
>>512
逆引き(目的から検索)は便利かもしれませんね(ちょっと量が少ないけど)。
ただそれ以外はMSDN Libraryとは比較にならないような……

MSDN Libraryが使いにくいって言っている人は、Web上のMSDN Libraryでも
参照しているんじゃないかと思ってしまう。

514 名前:デフォルトの名無しさん :2005/10/31(月) 02:50:43
Web上のMSDNは糞過ぎ
重い、無駄に重い
しかも直訳

515 名前:デフォルトの名無しさん :2005/10/31(月) 05:53:10
訳はWeb版だけひどいわけじゃないだろ

516 名前:デフォルトの名無しさん :2005/10/31(月) 09:02:26
デバイスコンテキストに描画された内容を、
回転する方法ありましたっけ?

517 名前:デフォルトの名無しさん :2005/10/31(月) 09:16:53
RotateDC(hDC);

518 名前:デフォルトの名無しさん :2005/10/31(月) 19:06:30
こんばんは、
印刷を横向きでしたいのですが。
PAINTSTRUCT ps;
PRINTDLG pd;
DOCINFO dci;
pd.lStructSize=sizeof(pd);
pd.hwndOwner=hwnd;
pd.hDevMode=NULL;
pd.hDevNames=NULL;
pd.Flags=PD_RETURNDC|PD_HIDEPRINTTOFILE;
pd.nFromPage=1;
pd.nToPage=1;
pd.nMinPage=1;
pd.nMaxPage=1;
pd.nCopies=1;
memset(&dci,0,sizeof(DOCINFO));
dci.cbSize = sizeof(DOCINFO);
dci.lpszDocName = "moji";
if(!PrintDlg(&pd)) return;
//以下横に設定しているのですが、ここでは遅すぎるようです。
LPDEVMODE dm = (LPDEVMODE)GlobalLock(pd.hDevMode);//
if(dm)//
{//
dm->dmOrientation = DMORIENT_LANDSCAPE; // ポートレイト
GlobalUnlock(pd.hDevMode);//
}//

デフォルトのプリンタの設定を変更するには、どうすればよいのでしょうか。
よろしくお願いいたします。


519 名前:dmFieldsもセットしろよゴルァ :2005/10/31(月) 19:32:54
DMORIENT_LANDSCAPE ; // ポートレイト ←コメントに嘘を書かない


520 名前:デフォルトの名無しさん :2005/10/31(月) 23:46:33
Win32APIでJPEGを読み込むAPIはあるんでしょうか?
BMPはLoadImageで取得できるんですけどそのJPEG版みたいなみたいな奴です。

現在の開発環境は
Borland C++ Compiler 5.5.1とメモ帳だけです。
よって、MFCとかは使えません。

誰か、貧乏な私に知恵を授けて下さい...

521 名前:デフォルトの名無しさん :2005/10/31(月) 23:52:20
貧乏人はマルチがお好き

413 名前:デフォルトの名無しさん[sage] 投稿日:2005/10/31(月) 23:05:12
無料のbcc55を使っています。ものすごく基本的な質問なんですけど
JPEGを読み込みたいんですけど<jpeg.hpp>が見つからないし、それによりTJPEGImageが使えません。
VC++の<gdiplus.h>も無いです。

JPEGを読み込む為には、BCBかVC++を買うしか無いのでしょうか?
貧乏人はおとなしくLoadImageでBMPでも読み込んでろという事でしょうか?

522 名前:デフォルトの名無しさん :2005/10/31(月) 23:54:09
いやみったらしくコピペするくらいなら、
素直に「無い」って教えてやれよ。

GDI+かIEコンポーネントでも使いなさい。

523 名前:デフォルトの名無しさん :2005/11/01(火) 00:01:39
OleLoadPictureならPNG以外は大体読めるが

524 名前:デフォルトの名無しさん :2005/11/01(火) 00:09:47
>>520
良い機会だから、自分で実装しても面白いよw

参考書
ttp://www.amazon.co.jp/exec/obidos/ASIN/4797330457/

525 名前:デフォルトの名無しさん :2005/11/01(火) 00:11:55
まあ、いいじゃないか、「へへっ、おら知ってるよ、わかってるよ」
「どお、裏山でしょ?」ってのが>>521 を筆頭としたお方たちの
唯一の心の拠り所なんだから、例え心貧しい自己満足でも、
少なくとも1人(ご自分ね)は満足して幸せになってるんだから
誰も幸せにならないよりは、多分ましなんだろうと思うよ。

>>520
どうしても只でということなら>>522 の言う様にGDI+かIEコンポー
ネント、後はどれくらい手間が掛かるかは別としてGnuWin32にも
あるJpegのライブラリをなんとか使えるようにするとか。
susieのプラグインを使えるようにするとか。
もっと柔軟に考えて行けば、道は開けると思うよ。

526 名前:デフォルトの名無しさん :2005/11/01(火) 00:59:11
つ[ImageMagick]

527 名前:デフォルトの名無しさん :2005/11/01(火) 02:25:43
マルチにも優しいお方たちでつね(^ω^)

528 名前:デフォルトの名無しさん :2005/11/01(火) 02:32:06
脳足りんは優しい振りが好きだからね。

529 名前:デフォルトの名無しさん :2005/11/01(火) 11:33:47
>>520
CreateFile

530 名前:デフォルトの名無しさん :2005/11/01(火) 11:47:39
winXP 機にキャノンの iP1500 を繋いで、プリンタ設定でなかなか EnumPrinters() が
成功しないで、やっと通ったと思ったら、PrinterProperties() で、ユーティリティの
画面しか出てきません。一応ぐぐったのですが、応えに行きつきません。
PrinterProperties() は不適なのでしょうか。
もしそうなら win98 用はこのままで winXP は PrintDlg() かなあと思案中です。

531 名前:デフォルトの名無しさん :2005/11/01(火) 12:41:28
>>529
不十分。

>>520
CreateFile()してReadFile()

532 名前:デフォルトの名無しさん :2005/11/01(火) 12:55:59
>>530
悪いが、「何をしたい」のかさっぱりわからん。

533 名前:520 :2005/11/01(火) 12:57:02
あっち(初心者BCBスレ)で質問したんですが、どうも無料のBCCとBCBを勘違いしていて、
BCBスレでの質問は適切なスレではないと勝手に判断し、こちらのスレで再質問したのですが、
誘導を待たずに別スレで同様な質問をして、マルチに見えてしまったのなら申し訳ありません。
私の質問の仕方が未熟なせいでスレを荒らしてしまったことに関しては謝ります。

それにも関わらず、回答を沢山頂きありがとうございました。
<olectl.h>中にOleLoadPicture*系のAPIらしきものを発見したのでこいつで頑張ってみます。

どうもありがとうございました。

534 名前:530 :2005/11/01(火) 15:38:59
>>532
どうも。
プロパティを出すと、他のアプリでは、基本設定とかページ設定とかのタブで
いろいろ設定できるダイアログが出てきます。「ユーティリティ」とは最後の
タブで出てくる画面です。PropertySheet 仕様のダイアログが出てくるはず
ですが、最後の sheet しか出て来ないということです。

535 名前:デフォルトの名無しさん :2005/11/01(火) 16:18:36
デバック環境について質問なんですが、
自分はATLを使ってるんで、IDEでの開発環境ではATLTRACEでログ出力をしてデバックしてるんですが、、
ReleaseビルドでIDE環境が無い状態で(ほかのマシンにインストールした状態)デバックというか、挙動を確認したいのですが、
何かいい方法はありませんでしょうか、Release後のデバックや挙動追跡などテクニックなど伝授してください。


536 名前:デフォルトの名無しさん :2005/11/01(火) 16:32:45
先ずは日本語を勉強するといいと思うよ。

537 名前:デフォルトの名無しさん :2005/11/01(火) 16:37:12
>>530
それってPrintDlg使えばいいだけじゃねーのか

あるプリンタ特定の物出したいなら、DocumentProperties/DM_PROMPT


538 名前:デフォルトの名無しさん :2005/11/01(火) 16:41:34
>>535
バグがありそうな部分でログ吐かせりゃいいんじゃない?

539 名前:デフォルトの名無しさん :2005/11/01(火) 16:43:21
>>534
>>532

540 名前:デフォルトの名無しさん :2005/11/01(火) 16:45:09
>>535
>>507

541 名前:デフォルトの名無しさん :2005/11/01(火) 17:30:53
>>535
OutputDebugString() → DbgView.exe(http://www.sysinternals.com/Utilities/DebugView.html)



542 名前:535 :2005/11/01(火) 19:45:23
RESありがとうございます。
参考になりました。

>541
http://www.sysinternals.com/Utilities/DebugView.html
これよさげですね、早速試してみます。
ありがとうございました。


543 名前:デフォルトの名無しさん :2005/11/01(火) 20:58:20
ReleaseビルドなのにOutputDebugStringは生きているのか?

544 名前:デフォルトの名無しさん :2005/11/01(火) 21:43:05
APIの動作がリリース/デバッグビルドで変わってたまるか。

545 名前:デフォルトの名無しさん :2005/11/01(火) 21:58:58
ReleaseでDebug動作ができてたまるか。

546 名前:534=530 :2005/11/01(火) 22:05:46
>>537
PrintDlg() にしました。
win98 で通ってましたから、winXP で初めてプリンタ繋いでびっくりしました。

547 名前:デフォルトの名無しさん :2005/11/01(火) 22:08:02
ReleaseビルドでKernel32.dll!OutPutDebugStringよんでみろよ。


548 名前:デフォルトの名無しさん :2005/11/01(火) 22:57:06
>>543
WindowsからしてみたらEXEがDebugビルドで作られたかどうかなんて区別のしようがない。

549 名前:デフォルトの名無しさん :2005/11/01(火) 23:12:21
デバッグ出力表示アプリ起動させっぱなしにしてると平然とメッセージ吐き出してるアプリちょくちょく見かける

550 名前:デフォルトの名無しさん :2005/11/02(水) 01:13:12
>>548
Releaseビルドでは無に置換されるようなマクロ使ったりしてないのか? って意味でしょ

551 名前:デフォルトの名無しさん :2005/11/02(水) 02:15:26
>「使ったりしてないのか? って意味でしょ 

氏んでいいよ、ドアホ

552 名前:デフォルトの名無しさん :2005/11/02(水) 05:07:28
沸点低いな

553 名前:デフォルトの名無しさん :2005/11/02(水) 07:59:31
ム板だからな

554 名前:デフォルトの名無しさん :2005/11/02(水) 17:55:26
>>549
つ ギコナビ

他にも、各種メディアプレイヤーでDRM保護されたメディアを開くとデバッグログを吐く。

555 名前:デフォルトの名無しさん :2005/11/03(木) 12:38:42
背景にビットマップを貼り付け、画面の片隅にマウスカーソルの座標を常に表示する処理を
必要とする画面にエディットコントロールを作成したくて以下のようなコードを書いたのですが
マウスを動かすとInvalidateRect()が発生するためエディットボックスが点滅してしまいます。
この点滅を防ぐ方法が何かあれば教えていただけないでしょうか…。

void DrawScreen(HWND hWnd, POINT p_mouse) {
/*
メモリDCを用いたダブルバッファリングを使用した描画処理
背景の描画とマウスカーソルの座標の表示
*/

static HWND hwndEdit = CreateWindow("EDIT", NULL,
WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT,
0, 40, 200, 22, hWnd, NULL, hInst, NULL);
}

556 名前:デフォルトの名無しさん :2005/11/03(木) 12:40:30
ださ

557 名前:デフォルトの名無しさん :2005/11/03(木) 12:56:22
つーか、Draw()でEditを作ってどうするのかと。毎回破棄してなければ増殖しそうだが。

558 名前:デフォルトの名無しさん :2005/11/03(木) 13:02:30
ああ、やっぱりそうなんですか?
とりあえずWM_CREATEにエディット作成は移動してみました。が、依然点滅は直らないです…。
マウスの移動に対してInvalidateRectを呼ぶのをやめてTimerで画面を更新するように変更したら
大分ましにはなったのですが、よくみると点滅してるのがわかります。

559 名前:デフォルトの名無しさん :2005/11/03(木) 13:09:47
ああすみません。自己解決しました。
よく考えたら画面全体を毎回更新する必要はないですね…orz

560 名前:デフォルトの名無しさん :2005/11/03(木) 13:48:08
UpdateWindowというものを知った

561 名前:デフォルトの名無しさん :2005/11/03(木) 15:17:34
>557
static

562 名前:デフォルトの名無しさん :2005/11/03(木) 16:14:41
>>561
(゚д゚;).o(・・・・・・・・・・・・・・・・)

563 名前:デフォルトの名無しさん :2005/11/03(木) 16:15:29
これがゆとり教育の弊害か・・・

564 名前:デフォルトの名無しさん :2005/11/03(木) 17:17:52
・・・を良く使うのは中国から入ってきた文化らしいよ
ネトゲやチャットで使ってる奴多いけど何か伝わってると思ってるのかね

565 名前:デフォルトの名無しさん :2005/11/03(木) 17:21:32
何も感じられないならそいつの感性が鈍いだけかな

566 名前:デフォルトの名無しさん :2005/11/03(木) 17:26:38
三点リーダーは英文でも使うぜえ
…じゃなくて...だけどな。
三点リーダーを中黒で代用しちゃう奴は(ry

567 名前:デフォルトの名無しさん :2005/11/03(木) 18:16:02
ざわざわ・・・

568 名前:デフォルトの名無しさん :2005/11/03(木) 18:27:06
結局staticでも増殖するものなの?

569 名前:デフォルトの名無しさん :2005/11/03(木) 18:28:36
staticなのは作成されたEDITのハンドルを保持するHWND型変数ですが?

570 名前:デフォルトの名無しさん :2005/11/03(木) 18:40:59
関数の中で
static int i = 0;
としても初期化されるのは初回だけに見えたから
static HWND hwnd = CreateWindow();としてもCreateWindow()が呼ばれるのは
初回だけだと思ってたよ
勘違いに気づかせてくれてどうもありがとう。

571 名前:デフォルトの名無しさん :2005/11/03(木) 18:46:14
ちがうの?

572 名前:デフォルトの名無しさん :2005/11/03(木) 18:48:11
え、違うから>>557とか>>562とか>>569が食って掛かってきてるんじゃないんですか…

573 名前:デフォルトの名無しさん :2005/11/03(木) 18:50:22
ただの趣味グラマだから細かいことは知らんとですorz

574 名前:デフォルトの名無しさん :2005/11/03(木) 18:50:47
自分でやってみりゃわかるんじゃね?

575 名前:デフォルトの名無しさん :2005/11/03(木) 18:55:34
いや、もうやってみた
問題なく動いてるように見えて実は見えないところでなんか変なことになってるのかな、と…

576 名前:デフォルトの名無しさん :2005/11/03(木) 19:03:48
>>562

577 名前:デフォルトの名無しさん :2005/11/03(木) 19:11:53
だめだこりゃ

578 名前:デフォルトの名無しさん :2005/11/03(木) 19:13:01
だめだね

579 名前:デフォルトの名無しさん :2005/11/03(木) 19:17:24
エディットコントロールじゃなくて普通のウインドウでやってみればすぐわかるだろ

580 名前:デフォルトの名無しさん :2005/11/03(木) 19:40:54
static int x = 100;
x++;
static HWND hwndedit = CreateWindow(); //x, y座標とheight, widthをxに設定

↑のコードをDraw()の中に入れてみた。
xの値はDraw()が呼ばれるたびに増えたけどエディットコントロールには変化が無かった。
毎回作成されているなら大きさと位置が変化するはずだよね?

581 名前:デフォルトの名無しさん :2005/11/03(木) 19:59:00
>>518です
>>519さんありがとうございます。
ヒントを参考にさせていたできましたが、
よくわからずに、DocumentProperties を使いましたが、
変更できません。下記にコードを載せますが、長くて申し訳ありません。

DEVMODE *lpDM,*pDev;//
char szPrnName[256],szTemp[256];//
HANDLE hPrn;//
DWORD dwNeeded;//
HGLOBAL hMem;//

PRINTDLG pd;
DOCINFO dci;
LPSTR lpszDocName = "titile";


pd.lStructSize=sizeof(pd);
pd.hwndOwner=hwnd;
pd.hDevMode=NULL;
pd.hDevNames=NULL;
pd.Flags=PD_RETURNDC|PD_HIDEPRINTTOFILE;
pd.nFromPage=1;
pd.nToPage=1;
pd.nMinPage=1;
pd.nMaxPage=1;
pd.nCopies=1;
memset(&dci,0,sizeof(DOCINFO));
dci.cbSize = sizeof(DOCINFO);
dci.lpszDocName = lpszDocName;

582 名前:デフォルトの名無しさん :2005/11/03(木) 19:59:37
>>581つづき
if(!PrintDlg(&pd)) return;
lpDM = (DEVMODE *)GlobalLock(pd.hDevMode);
if(lpDM == NULL) return;
strcpy(szPrnName,(LPSTR)(lpDM->dmDeviceName));
if(OpenPrinter(szPrnName,&hPrn,NULL)==0){
GlobalUnlock(pd.hDevMode );
GlobalFree(pd.hDevMode);
return;
}
HANDLE hPrn;
//バッファーサイズ取得
dwNeeded = DocumentProperties(hwnd,hPrn,szPrnName,NULL,NULL,0);
hMem = GlobalAlloc(GHND,dwNeeded);
if(hMem == NULL){
ClosePrinter(hPrn);
GlobalUnlock(pd.hDevMode );
GlobalFree(pd.hDevMode );
return;
}
pDev = (DEVMODE *)GlobalLock(hMem);
if(pDev == NULL){
GlobalFree(hMem);
ClosePrinter(hPrn);
GlobalUnlock(pd.hDevMode );
GlobalFree(pd.hDevMode );
return;
}


583 名前:デフォルトの名無しさん :2005/11/03(木) 20:00:11
>>582つづき
if(DocumentProperties(hwnd,hPrn,szPrnName,pDev,NULL,DM_OUT_BUFFER)<0){
GlobalFree(hMem);
ClosePrinter(hPrn);
GlobalUnlock(pd.hDevMode );
GlobalFree(pd.hDevMode );
return;
}
if(pDev->dmFields & DM_ORIENTATION){
pDev->dmOrientation == DMORIENT_LANDSCAPE;
}
//3回目のDocumentPropertiesの呼び出しでの、引数がよく分からなかったのですが、
if(DocumentProperties(hwnd,hPrn,szPrnName,pDev,pDev,DM_OUT_BUFFER | DM_IN_BUFFER)<0){
return;
}
//グラフィック書き出し・・

GlobalUnlock(hMem);//
GlobalUnlock(pd.hDevMode );//
if(GlobalFree(pd.hDevMode ) !=NULL){//
return;//
}//


584 名前:デフォルトの名無しさん :2005/11/03(木) 21:27:26
#include <stdio.h>
int foo(){
static int i = printf("hello\n");
return i;
}
int main(){
printf("%d\n", foo());
printf("%d\n", foo());
printf("%d\n", foo());
}
結果
hello
6
6
6

585 名前:デフォルトの名無しさん :2005/11/03(木) 21:29:38
>>584
iをstaticにする意味を教えてくれ

586 名前:デフォルトの名無しさん :2005/11/03(木) 21:32:37
>>585
>>555-

587 名前:デフォルトの名無しさん :2005/11/03(木) 21:36:44
>>584
>>555-
とは何も関係がないように見えるが…

588 名前:デフォルトの名無しさん :2005/11/03(木) 21:38:44
ああ、スマン、わかった。
foo()を3回呼んでるけどhelloは一回しか出力されないってのが言いたかったのか

589 名前:デフォルトの名無しさん :2005/11/03(木) 21:48:13
>>585
static にする意味は、iの値を持ってるてるってことですが、
その適用範囲となると、難しいかなと思います。
ここが、win32質問板なので、いいますと
下手に、callback関数で使っていると、大変なことになりました。

590 名前:デフォルトの名無しさん :2005/11/03(木) 21:59:52
>>589の1行目の翻訳を誰かお願い

591 名前:デフォルトの名無しさん :2005/11/03(木) 22:02:19
訳:「レス番号585ですが、」

592 名前:デフォルトの名無しさん :2005/11/03(木) 22:04:27
>>591
はいはい、悪かったよ
>>589の2行目の翻訳を誰かお願い
でいいか?

593 名前:デフォルトの名無しさん :2005/11/03(木) 22:11:30
自分でしろ

594 名前:デフォルトの名無しさん :2005/11/03(木) 22:21:34
人の力を借りなきゃ煽ることもできないなんて!!

595 名前:デフォルトの名無しさん :2005/11/03(木) 22:29:51
Alt+EnterとかCtrl+Aとか
特殊なキーの入力の判定はどうやったらできる?


596 名前:デフォルトの名無しさん :2005/11/03(木) 22:31:56
ふむ、誰も翻訳できんわけだな。
まあどうでもいいことだしな、ほっとくとしよう。

597 名前:デフォルトの名無しさん :2005/11/03(木) 22:32:31
>>595
アクセラレータ

598 名前:デフォルトの名無しさん :2005/11/03(木) 22:36:06
>>595
GetKeyState

599 名前:デフォルトの名無しさん :2005/11/03(木) 22:37:14
>>597-598
サンクス


600 名前:デフォルトの名無しさん :2005/11/03(木) 22:56:49
excellのセルを作りたいのですが、あれはどのAPIを使っているのでしょうか?

LineTo関数や、polyline関数で線を引いているのでしょうか?

601 名前:デフォルトの名無しさん :2005/11/03(木) 23:23:11
>>600
その通り

602 名前:デフォルトの名無しさん :2005/11/03(木) 23:27:26
読み取りアクセスは同時に複数スレッド可、書き込みアクセスは単一スレッドのみという
.NETでのReaderWriterLockと同じことがしたいです。
Win32には用意されていないのでしょうか?

603 名前:デフォルトの名無しさん :2005/11/03(木) 23:32:22
>>602
クリティカルセクションあたりで実装する

604 名前:デフォルトの名無しさん :2005/11/03(木) 23:33:40
>>603
自作しかないですか。頑張ってみます。

605 名前:デフォルトの名無しさん :2005/11/03(木) 23:34:55
>>601
レス有難うございます。

606 名前:デフォルトの名無しさん :2005/11/04(金) 00:59:05
>>591
「レス番号585の方へ、」じゃないのか?
自作自演だって言いたいの?

607 名前:デフォルトの名無しさん :2005/11/04(金) 01:04:03
>>606
つ「レス番585(について)ですが」

608 名前:デフォルトの名無しさん :2005/11/04(金) 01:12:54
>>607
さらに翻訳が必要な翻訳ってどうよ

609 名前:デフォルトの名無しさん :2005/11/04(金) 10:38:55
ウインドウを非表示にしたいんですが、実装方法を相談させてください。
とりあえず、ウインドウの拡張スタイルでWS_EX_TOOLWINDOWとWS_EX_TRANSPARENT立ててみたんですが、
WinXPでは非表示になるものの、Win2Kでは表示されてしまいました。
よろしくお願いします。


610 名前:デフォルトの名無しさん :2005/11/04(金) 10:57:19
>>609
WS_VISIBLE

611 名前:デフォルトの名無しさん :2005/11/04(金) 10:57:59
>>609
WS_VISIBLEを立てないでウィンドウ作ればいいだけのような・・・

612 名前:デフォルトの名無しさん :2005/11/04(金) 11:36:08
ShowWindowでいいじゃん

613 名前:デフォルトの名無しさん :2005/11/04(金) 12:13:09
つーか普通に作成したら最初は非表示だぜ・・・
WS_VISIBLE指定しない限り・・・

614 名前:デフォルトの名無しさん :2005/11/04(金) 13:36:17
タスクマネージャとかで実行ファイル名の最後の一文字が表示されないのって
原因わかる人います?
〜.exになってしまう…

615 名前:デフォルトの名無しさん :2005/11/04(金) 13:37:39
614が何を言いたいのかわかる人います?

616 名前:デフォルトの名無しさん :2005/11/04(金) 13:40:54
>>614
名前の表示に長さ制限がある。

617 名前:デフォルトの名無しさん :2005/11/04(金) 13:46:15
リストビューのカラム幅が狭いだけとか言うんじゃないだろうね?

618 名前:デフォルトの名無しさん :2005/11/04(金) 14:49:06
正解

619 名前:デフォルトの名無しさん :2005/11/04(金) 14:55:27
IniファイルのSectionにItemが一つも無いことを判断できますか?

620 名前:デフォルトの名無しさん :2005/11/04(金) 14:57:30
>>619
できる

621 名前:デフォルトの名無しさん :2005/11/04(金) 15:00:10
>>620
ロジックか解説サイト教えて欲しいお。

622 名前:デフォルトの名無しさん :2005/11/04(金) 15:06:00
>>616
実行ファイルの名前リネームして一文字にしたら表示されたのでそうかも、
と一瞬思ったんですが、色々試してみると長い名前でも表示されてたりするので違うようです。

プロセス名は結構適当に登録されてるのかもしれません。

623 名前:デフォルトの名無しさん :2005/11/04(金) 15:17:20
>>621
GetPrivateProfileSectionすれば?

624 名前:デフォルトの名無しさん :2005/11/04(金) 15:59:28
プロパティシートの破壊直前に1回だけ呼びたい処理がある場合の常套手段があれば教えてください。
今は各ページ共通の WM_DESTROY でフラグを設けて1回だけ呼ばれるようにしているのですが、
どうももっとスマートな方法があるような気がするので…。

625 名前:デフォルトの名無しさん :2005/11/04(金) 16:50:34
>>622
等幅フォントじゃないから文字によって長さは変わる。

626 名前:デフォルトの名無しさん :2005/11/04(金) 18:19:10
アプリケーションから、インストールしていないTTFフォントを利用したいのですが、
よいAPIはないでしょうか?
それともインストールしなくては、使えないものでしょうか。
SDLttfのように自前で読むしかないですか?

627 名前:デフォルトの名無しさん :2005/11/04(金) 18:19:40
あげ

628 名前:デフォルトの名無しさん :2005/11/04(金) 18:36:41
AddFontResource
して、使用して、
RemoveFontResource

629 名前:デフォルトの名無しさん :2005/11/04(金) 19:51:58
そうでしたか。一体どのフォントが基準になってるんだろう…

630 名前:デフォルトの名無しさん :2005/11/04(金) 22:51:21
CreateWindow()を使ってウインドウを作るときに
タイトルバーを入れるとその分サイズが引かれてしまって描写できる範囲のサイズが小さくなってしまうのですが、
タイトルバーの大きさを計算してサイズにプラスして設定する以外にこの問題の解決方法はありませんか?

631 名前:デフォルトの名無しさん :2005/11/04(金) 22:53:45
タイトルバーじゃなくてクライアント領域の大きさで決める

632 名前:デフォルトの名無しさん :2005/11/04(金) 22:54:15
ありません
XPとその他のWinじゃ非クライアント領域のサイズが違うから、
定数で計算せずに、CreateWindowした後に外枠のサイズ出してリサイズするのが普通

633 名前:デフォルトの名無しさん :2005/11/04(金) 22:55:10
>>630
一旦不可視で作成して、GetClientRect と GetWindowRect で得られた
矩形の幅と高さの差を元に SetWindowRect で調整するという方法もあるし、
Microsoftを信用して AdjustWindowRect 使うって手もある。

634 名前:デフォルトの名無しさん :2005/11/04(金) 22:56:42
タイトルバーを出さない。

635 名前:デフォルトの名無しさん :2005/11/04(金) 23:07:31
>>630
普通はAdjustWindowRectを使う。
メニューが複数行になる場合は自分で調節が必要。

636 名前:630 :2005/11/05(土) 01:06:38
解決しました。ありがとうございます。

637 名前:デフォルトの名無しさん :2005/11/05(土) 09:12:17
CreateWindowの第三引数に相当するオプションをウインドウ生成後に変更したいのですがどうすればいいのでしょうか

638 名前:デフォルトの名無しさん :2005/11/05(土) 09:39:43
SetWindowLongを調べれ

ウィンドウのスタイルは、極力最初に指定した方がいいんだがな

639 名前:デフォルトの名無しさん :2005/11/05(土) 09:53:51
>>638
>ウィンドウのスタイルは、極力最初に指定した方がいいんだがな 

聞いたことないな。何か根拠とかあるの?

640 名前:デフォルトの名無しさん :2005/11/05(土) 09:56:25
特にボーダースタイルな

641 名前:デフォルトの名無しさん :2005/11/05(土) 10:00:28
ちょっと前にこのスレで出てたな、そういう話

642 名前:デフォルトの名無しさん :2005/11/05(土) 10:04:55
そもそも「最初」とは何時から何時までなのか定義するところから始めて貰いたい。
曖昧な表現は一切必要ないし一切認めない。

643 名前:デフォルトの名無しさん :2005/11/05(土) 10:10:25
>>642
自虐乙

644 名前:デフォルトの名無しさん :2005/11/05(土) 10:11:00
637ですが、エディットに対してES_READONLYを適用させたいのですが、
SetWindowLong(edit,GWL_STYLE,WS_CHILD|WS_VISIBLE|WS_BORDER|ES_LEFT|ES_AUTOHSCROLL|ES_READONLY);
だとうまくいきません。どこが悪かったのでしょうか

645 名前:デフォルトの名無しさん :2005/11/05(土) 10:40:46
>>644
スタイルの変更だと言うから何かと思えば、
その手のコントロールの状態変更はほとんどがSendMessageでできるぞ

手始めにSendMessage & EM_SETREADONLYを調べるがよい

646 名前:デフォルトの名無しさん :2005/11/05(土) 11:06:01
皆さんありがとうございます
質問ばかりになるのですがEM_SETREADONLYの反対に当たるメッセージは何なのでしょうか

647 名前:デフォルトの名無しさん :2005/11/05(土) 11:10:32
さすがにここまでヒント出てんだからぐぐろうよ

ttp://forums.belution.com/ja/vc/000/138/15.shtml

648 名前:デフォルトの名無しさん :2005/11/05(土) 11:17:02
>>646
EM_SETREADONLYを調べろと書いたのにその質問か・・・
EM_SETREADONLYの説明にもろ書いてあるというに・・・

649 名前:デフォルトの名無しさん :2005/11/05(土) 11:47:49
タスクマネージャのアプリケーションを列挙したいのですがどうしたらいいでしょうか?
自分なりに必死に探したのですが、プロセスを列挙する方法しかわかりませんでした。
ここを参考にしました
ttp://66.102.7.104/search?q=cache:oQM6g_R7PHUJ:ruffnex.oc.to/kenji/text/dll_inj/

650 名前:デフォルトの名無しさん :2005/11/05(土) 11:52:28
トップレベルウィンドウをEnumWindowsで列挙して
非表示のウィンドウとか所有されているウィンドウとか
WM_EX_TOOLWINDOWスタイルが設定されているウィンドウを除外する。
WM_EX_APPWINDOWスタイルが設定されているウィンドウは
所有されていても追加する。
キーワードは与えてやったからあとはぐぐって調べろ

651 名前:649 :2005/11/05(土) 14:24:35
なんとか解決しました。
ありがとうございます、とても助かりました。


652 名前:デフォルトの名無しさん :2005/11/05(土) 15:12:16
エディットコントロールやリストボックスの背景を透過させたいのですが可能でしょうか?

653 名前:デフォルトの名無しさん :2005/11/05(土) 21:43:40
>>581です
できました。
CreateDCを使ってなかったことが原因でした。
失礼しました。

654 名前:デフォルトの名無しさん :2005/11/05(土) 22:09:19
外から子ウィンドウのサイズ変更を制御したくて、WH_CBTフックをかけてみました。
ところが、トップレベルウィンドウのサイズ変更はフックできるのですが、子ウィンドウはフックできません。
Spy++で見てみると子ウィンドウにもWM_SIZEは飛んでるのですが。
どうすれば子ウィンドウのフックができるのでしょうか?

655 名前:デフォルトの名無しさん :2005/11/06(日) 11:33:52
クリティカルセクションって名前かっこいいな

656 名前:デフォルトの名無しさん :2005/11/06(日) 11:47:11
>>655
そんなことを言ってくるお前の方がかっこいいよ。

657 名前:デフォルトの名無しさん :2005/11/06(日) 13:41:21
質問です。

とある他人様のアプリケーションで、タイマーが使われており、物凄い勢いでWM_TIMERが呼ばれているようなのです。
それが原因で非常に重く(おそらくWM_TIMER無いで描画を行っている)、これを軽減したいと考えました。

はっきりいってそんなに頻繁に描画しなくても問題ないので、WM_TIMERを2回に1回無視するようにフックしようと考え、DLLを作成し
SetWindowsHookEx(WH_GETMESSAGE, (略));
を行いWM_TIMERをとるのには成功しました。

ですがWH_GETMESSAGEはWH_MOUSEと違って
「こっちでフック処理したんで、元のアプリケーションではその処理しないでね」のreturn TRUEが通用しないようなのです。

何か良い知恵はございませんでしょうか。

658 名前:デフォルトの名無しさん :2005/11/06(日) 14:00:48
>>657
製作者に聞けば?

659 名前:デフォルトの名無しさん :2005/11/06(日) 14:01:41
描画は何度も呼ばれるもので、その中のコードが分からないけど、
推測で書くけれど、一回SetTimer呼べば、あとはデーモンというかメッセージループでTimerが走り、OnTimerが呼ばれるから、
すなはち、おそらくは、描画ハンドラから呼んでやってると思うけれど、1回だけ呼ばせればいい。
おそらく一般的には、フラグをstaticで作って、例えば、フラグが0ならif内でSetTimerした後、同じif内でフラグを1にして、以後2度とOnDrawからSetTimer呼ばれないようにする、これでもTimer一個が走り続けている。
おそらくは、その状態は、Timerの実体が何個も作られて、違うタイミングでものスゴッ呼ばれている。
もし、他から、Timer呼ばれているなら、引数のTimerIDをそれぞれ変える必要がある。
見当違いだったらすみません。

660 名前:訂正 :2005/11/06(日) 14:03:03
OnDraw>描画ハンドラ
つい、MFCで書いてしまった。

661 名前:デフォルトの名無しさん :2005/11/06(日) 14:15:42
>>659-660
そりゃ自作の場合の話でねーかい?
どうやってWM_TIMERを奪い取るかという質問だと思うんだが…

662 名前:デフォルトの名無しさん :2005/11/06(日) 14:37:01
>>657
WM_NULL を返すのじゃだめ?

663 名前:デフォルトの名無しさん :2005/11/06(日) 14:46:50
お返事ありがとうございます。
>>658さん
確かに一番手っ取り早いでしょうね。でも今回は無理ということで

>>659さん
ちょっと私の求めているのとは違うようです。>>661さんのおっしゃるとおり、WM_TIMERを独占したいのです

>>662さん
returnで返す値は0、もしくはCallNextHookExの返り値と決まっているようです。
WH_MOUSEのようにWH_TIMERがあればよかったのですが…。

664 名前:デフォルトの名無しさん :2005/11/06(日) 15:01:48
>>663
662が言ってるのはメッセージをWM_NULLにすり替えろってことだろ

665 名前:デフォルトの名無しさん :2005/11/06(日) 15:28:06
>>657
ぜんぜんアプローチが違うんだけど、
こちらでもう一度SetTimer呼んでタイマー上書きするとか

666 名前:デフォルトの名無しさん :2005/11/06(日) 16:00:45
>>664さん
摩り替える、というのはどういう意味合いでしょうか。物知らずですいません。

フックしたProcでCallNextHookExする以上、フックされる側には必ずWM_TIMERが届いてしまいます。

WH_MOUSEでのフックではreturn TRUE;することでフックされる側にWM_RBUTTONDOWNなどを届かなくすることができるので、
無効にしつつSendMessageでWM_LBUTTONDOWNを送ってやることで
「右クリックしたのに左クリックの動作」
なんていうメッセージのすり替えもできたのですが…。

>>665さん
それはとてもおもしろいアプローチです。
早速試してみます。


667 名前:デフォルトの名無しさん :2005/11/06(日) 16:15:40
システムトレイに格納するにはどうすれば?
ShowWindowでそれらしき定数があると思ってましたがないようですが

668 名前:デフォルトの名無しさん :2005/11/06(日) 16:18:53
システムトイレ
まで読んだ

669 名前:662 :2005/11/06(日) 16:30:00
>>666
言葉足らずでスマソ。つまり、フックプロシージャの中で、
((LPMSG)lParam)->message = WM_NULL;
などとやってメッセージ番号を上書きするってこと。
WM_NULL のドキュメントも参照。

670 名前:デフォルトの名無しさん :2005/11/06(日) 16:31:35
>>665さん
なかなか面白いアプローチで、うまくいきました。ありがとうございました。

>>667
Shell_NotifyIcon でググってみてください。
詳しいページが上のほうに出ますよ。

671 名前:デフォルトの名無しさん :2005/11/06(日) 16:34:50
>>669さん
なんと。それもまた素晴らしいアプローチですね。
MSDNライブラリの方にWM_NULLが無かったため、自分で定義したのかと思ってしまいました。
ぐぐって見たところ、確かにそういうアプローチを発見しました。

しかしなんというか…。危険な技ですね。
WM_CREATEあたりをWM_NULLに摩り替えるようにフックしたら、まったくウインドウが作れないウイルスみたいなものですね…。


672 名前:デフォルトの名無しさん :2005/11/06(日) 16:41:29
>>671
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowmessages/wm_null.asp
ちゃんとあるぞ。英語版見たか?
日本語版は抜けてるし、たまに誤訳もあるからお勧めしない

673 名前:デフォルトの名無しさん :2005/11/06(日) 16:49:26
>>671さん
すいません、もろに日本語版(ローカルにインストールするやつ)を見てました。
考えてみればVS6.0買った時一緒にセットしたものですから、だいぶ古いですね。ついつい…。

674 名前:デフォルトの名無しさん :2005/11/06(日) 16:58:15
>>673
ローカル版のMSDNでもちゃんと引っかかるはずだが
手持ちの2003年の奴で試したが引っかかった

675 名前:デフォルトの名無しさん :2005/11/06(日) 17:04:54
質問。
ゲームを作る際、こっちのほうが楽だろうと
CreateProcessでゲーム用スレッドを作り、WinMainから始まる方はメッセージ処理だけ行わせるようにしました。

ところがゲーム用スレッドが異常にCPUパワーを食います。
原因はゲーム用スレッドの

ThreadMain(){

while(!bEnd)
{
 if(前の処理から16ミリ秒経過していなかったら){
  continue;
 }
 ゲームメイン
}
}
というポーリングでしょう。
Sleepを入れれば解決しそうですが、Sleep(1)ですら必ずしも1ミリ秒丁度待つとは限らない以上、精度的にダメです。
こういう場合どうするのが常道ですか?


676 名前:デフォルトの名無しさん :2005/11/06(日) 17:05:34
ウィンドウの右上の×ボタンを押したときに終了確認をしたくてWM_CLOSEメッセージが来た際に
case WM_CLOSE:
if (IDYES == MessageBox(hWnd, "終了?", "終了確認", MB_YESNO | MB_ICONQUESTION)) {
SendMessage(hWnd, WM_DESTROY, NULL, NULL);
}
break;
としたのですがこれだとメッセージボックスが出ている間にウィンドウを切り替えると
新しく別の終了確認メッセージボックスが出てきてしまいます。
これを防ぎたいのですが既にメッセージボックスが存在するかどうかを調べることは出来ますか?

677 名前:デフォルトの名無しさん :2005/11/06(日) 17:14:48
>>675
スリープを入れるかウェイタブルタイマ使え。

というか本当にそんな精度が必要なのか?
それならWindowsなんか使わず自前でOSから作れよ。

678 名前:デフォルトの名無しさん :2005/11/06(日) 17:16:12
>>675
while()
{
 Sleep(1);
 time = timeGetTime();
 if (time < time_before + 16)
  continue;
 time_before = time;

}

679 名前:デフォルトの名無しさん :2005/11/06(日) 17:18:40
>>676
「ウィンドウを切り替えると」の意味がよくわからないけど、
case WM_CLOSE: の直前の break; を忘れているとか。
あと、WM_DESTROY は送信しちゃだめぽ。DestroyWindow() しないと。

680 名前:デフォルトの名無しさん :2005/11/06(日) 17:24:51
>>679
あー、すみません。ウィンドウを切り替えるとってのは
ウィンドウを非アクティブにしてからもう一度アクティブにするとってことです。
WM_DESTROYは送っちゃ駄目なんですね。DestroyWindow()に直しました。
指摘ありがとうございます。

681 名前:676 :2005/11/06(日) 17:30:58
あああ、すみません。>>679の通りでした。本当に申し訳ありませんorz
解決しました。ありがとうございます。

682 名前:デフォルトの名無しさん :2005/11/06(日) 18:38:44
CreateWindowEx の"Ex"って何の略なんでしょか?
exchange, express, extra?

683 名前:デフォルトの名無しさん :2005/11/06(日) 18:39:52
全部はずれ

684 名前:デフォルトの名無しさん :2005/11/06(日) 18:50:48
そうか!extreamに違いない(゚∀゚)!
>>683 thanks!

685 名前:デフォルトの名無しさん :2005/11/06(日) 18:51:28
>>657
そのアプリが重いことがどういう弊害を起こしているのかにもよるが、
そのアプリをCreateProcess()する起動用アプリを作り、そこからSetPriorityClass()
で、そのアプリのプロセスプライオリティを下げたら?


686 名前:デフォルトの名無しさん :2005/11/06(日) 19:01:55
>>682
Extended

687 名前:デフォルトの名無しさん :2005/11/06(日) 19:37:14
>>681
普通×押した時ならWM_SYSCOMMANDでSC_CLOSEトラップするだろ

688 名前:682 :2005/11/06(日) 20:07:48
>>686
あーなるほど。
アホ質問に答えてくれてthanks!

689 名前:デフォルトの名無しさん :2005/11/06(日) 21:55:01
>>657,685
そんな動作をするフリーソフトなんかが既にありそうな気がする。

690 名前:652 :2005/11/06(日) 22:05:52
返事がない。無理なのか…。

691 名前:デフォルトの名無しさん :2005/11/06(日) 22:13:22
>>690
はっはっはっはっはっはっは

692 名前:mp3 :2005/11/07(月) 00:38:49
Win32APIのmciコマンドを使ってmp3ファイルを再生しようと思うのですが、
wavファイルと違い、上手くいきません。再生方法の詳細が分かる方はいませ
んでしょうか?MCI_OPEN_PARMS構造体のlpstrDeviceTypeの指定など、具体的な
情報が助かります。

693 名前:mp3 :2005/11/07(月) 00:39:41
Win32APIのmciコマンドを使ってmp3ファイルを再生しようと思うのですが、
wavファイルと違い、上手くいきません。再生方法の詳細が分かる方はいませ
んでしょうか?MCI_OPEN_PARMS構造体のlpstrDeviceTypeの指定など、具体的な
情報が助かります。

694 名前:mp3 :2005/11/07(月) 00:45:23
Win32APIのmciコマンドを使ってmp3ファイルを再生しようと思うのですが、
wavファイルと違い、上手くいきません。再生方法の詳細が分かる方はいませ
んでしょうか?MCI_OPEN_PARMS構造体のlpstrDeviceTypeの指定など、具体的な
情報が助かります。

695 名前:デフォルトの名無しさん :2005/11/07(月) 00:46:05
そこまで焦らなくても・・・

696 名前:デフォルトの名無しさん :2005/11/07(月) 13:18:52
Winのhookでアプリの起動捕まえて起動したり起動中止したりしたいんですが、どっかにサンプルコードないですか?


697 名前:デフォルトの名無しさん :2005/11/07(月) 19:32:05
今スタティックコントロールを使用していてどうしたらいいか不明な点があるので教えてください。
Win32オンリー非MFCです。

スタティックコントロールに文字列を表示しているのですが
CreateWindowする際のウィンドウスタイルで
SS_WHITEFRAME
SS_BLACKFRAME
SS_GRAYFRAME
SS_SUNKEN
SS_ETCHEDFRAME
のいずれかを指定すると文字列が表示されなくなっていまします。
これらを指定した状態で文字列を表示するにはどのようにしたらよいでしょうか?



698 名前:デフォルトの名無しさん :2005/11/07(月) 19:38:33
SS_SUNKENだけは同時指定出来るが?
他のはスタイルというよりスタティックの種類なので、無理。

699 名前:デフォルトの名無しさん :2005/11/07(月) 19:52:44
SS_SUNKEN | WS_VISIBLE | WS_CHILD
のみ指定して
SetWindowTextしても文字列は出ませんでした・・・。

700 名前:デフォルトの名無しさん :2005/11/07(月) 19:57:39
( ´_ゝ`)フーン

701 名前:デフォルトの名無しさん :2005/11/08(火) 01:44:49
HTMLのフレームにあたる概念ってwinapi(というかwindowsアプリ)ではなんていうの?

702 名前:デフォルトの名無しさん :2005/11/08(火) 01:46:40
ウインドウ?

703 名前:デフォルトの名無しさん :2005/11/08(火) 01:47:23
ぺいん?

704 名前:デフォルトの名無しさん :2005/11/08(火) 01:58:24
Tiled Window

705 名前:デフォルトの名無しさん :2005/11/08(火) 06:12:29
トップレベルのモードレスダイアログボックスの作成がなかなか理解できません…
リソースにCLASSで自作クラスを設定してそれを登録しているのですが、
このダイアログのプロシージャの戻り値はLRESULT型でしょうかBOOL型なのでしょうか?
また、分岐処理の最後にDefDlgProcを置くべきなのでしょうか?
その場合、WM_DESTROYを捕まえるんじゃなくて例えばWM_CLOSEでDestroyWindowなのでしょうか?
どうも通常のウィンドウプロシージャとこんがらがってしまって…

706 名前:デフォルトの名無しさん :2005/11/08(火) 08:46:03
>>705
プロシージャの戻り値はMSDNにバッチリ記載されとろうが
プロシージャ内の処理の仕方も全部書いてある

でおまいさん、WM_DESTROYでDestroyWindowはダイアログじゃなくともダメよ?

707 名前:デフォルトの名無しさん :2005/11/08(火) 10:45:09
>>705
LRESULT型
DefDlgProc() を置くのが普通
WM_CLOSE 内で DestroyWindow() が普通

708 名前:デフォルトの名無しさん :2005/11/08(火) 11:07:37
>>702-704
それに関して解説してるサイト知りませんか?
検索してもあまり出てこなかったので

709 名前:デフォルトの名無しさん :2005/11/08(火) 11:19:43
>>701
MFCのCSplitterWnd相当の機能か?
あれはライブラリレベルで実装されてる機能なんでAPIにはそんなものはない。


710 名前:デフォルトの名無しさん :2005/11/08(火) 11:26:17
すいません。分割ウインドウで検索したらたくさん出てきたので>708はスルーしてください

711 名前:デフォルトの名無しさん :2005/11/08(火) 11:37:45
>>705
モードレスダイアログなら、WM_CLOSE で不可視化だけしといて
Destroy しないというやり方もあると思う。
場合によるけど、常にウィンドウ持っておいた方が何かとラクできることもある。

712 名前:デフォルトの名無しさん :2005/11/08(火) 12:45:33
>>707
大嘘書くなよ

713 名前:デフォルトの名無しさん :2005/11/08(火) 13:36:06
>>712
どうか >>705 の2行目を穴が開くまで見つめてから出直してきてください

714 名前:デフォルトの名無しさん :2005/11/08(火) 14:52:15
で?

715 名前:705 :2005/11/08(火) 14:52:37
レス遅くなりましたが、>>706>>707>>711さん
ありがとうございます!
わたくしの脳みそではMSDNの解説に混乱してしまいまして…
ウィンドウ持っておくというのはいいですね、ちょっとやってみます!

716 名前:デフォルトの名無しさん :2005/11/08(火) 23:42:41
未使用のIDを自動生成してくれるようなAPIってなんかないですか?

717 名前:デフォルトの名無しさん :2005/11/08(火) 23:46:08
UuidCreate()とかは?

718 名前:デフォルトの名無しさん :2005/11/09(水) 00:02:26
>>717
何?その隠し関数。
つーか、英語わかんないんすよ。
つーか、プラットフォームSDK入れろよチンコって言われたですよ。
つーか、具体的にはCreateWindowExのhMenuに突っ込む値がほしいだけなんですよ。

719 名前:デフォルトの名無しさん :2005/11/09(水) 00:20:25
( ゚д゚)ポカーン

720 名前:デフォルトの名無しさん :2005/11/09(水) 00:39:15
API必要無いと思うんだが、APIじゃないと駄目なん?

721 名前:デフォルトの名無しさん :2005/11/09(水) 00:58:09
>>720
だってWindowsの内部で重複しちゃ駄目ならWindowsが管理してそうなもんじゃん。
って単純に考えただけ。
今の俺のアプリはUINTの限界でアボーンw(まあ、そんなことはないだろうけどねw)

722 名前:デフォルトの名無しさん :2005/11/09(水) 01:13:50
> Windowsの内部で重複しちゃ駄目
誰がそんなこと言ってるの?

723 名前:デフォルトの名無しさん :2005/11/09(水) 02:58:44
とりあえず、猫を1から読んでいくことをオススメする。

724 名前:デフォルトの名無しさん :2005/11/09(水) 07:08:31
>>722
ああ、同じ親をもつ子ウィンドウ同士で重複しちゃ駄目なだけって厳密なこといいたいの?
それでも面倒なレベルは変わらないんだけど・・・。

725 名前:デフォルトの名無しさん :2005/11/09(水) 07:29:40
UuidCreate()はあまりにオーバースペックでしょ

726 名前:デフォルトの名無しさん :2005/11/09(水) 07:41:52
>721
40億もウインドウ造るんか……

727 名前:デフォルトの名無しさん :2005/11/09(水) 08:01:56
x64 Editionだと1600京?
どう考えても先にリソースとかアプリケーションヒープのほうが不足しそうだが

728 名前:デフォルトの名無しさん :2005/11/09(水) 08:25:07
とりあえず、>>716=>>718=>>721=>>724がどうしようもない愚か者なのはわかった

729 名前:デフォルトの名無しさん :2005/11/09(水) 09:21:33
>>718
メニューのIDは、複数のウィンドウや他のアプリケーションと重複すると、
正常に動作しないので、IDをマイクロソフトが一元管理している。
IDを取得するには、MSDNに入会し、送付されてくるSDKに含まれている
ツールGetMenuId.exeを用いてマイクロソフトにメニューIDの交付を申請する。
MSDN の入会は
http://www.msj.co.jp/msdn/
参照。

MSDNに加入せずにメニューが使用したい場合は、CreateWindowEx()の
hMenuにはNULLを指定しておき、メニューの描画やマウスクリックの取得、
その他の操作をすべて自前で記述する必要有り。



730 名前:デフォルトの名無しさん :2005/11/09(水) 10:13:24
>>729
おまいはやさしいな。

731 名前:デフォルトの名無しさん :2005/11/09(水) 10:22:37
・・・・(゚д゚;)・・・・

732 名前:デフォルトの名無しさん :2005/11/09(水) 13:43:19
IEみたいに上部にアドレスバーを配置するにはどうすればいいのですか

733 名前:デフォルトの名無しさん :2005/11/09(水) 13:51:30
上部にエディットボックス・ラベルを配置して
そこにアドレスを書き込むようにすればいい

734 名前:デフォルトの名無しさん :2005/11/09(水) 14:06:01
>>732
Rebar

http://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/rebar/rebar.asp

735 名前:デフォルトの名無しさん :2005/11/09(水) 20:57:51
CreateDIBSectionで
BITMAPINFO bi;
BITMAPINFOHEADER& bih = bi.bmiHeader;
bih.biSize = sizeof(BITMAPINFOHEADER);
bih.biWidth = nWidth;
bih.biHeight = -1 * nHeight; //トップダウン方式
bih.biPlanes = 1;
bih.biBitCount = colorbits;
bih.biCompression = BI_RGB;

m_hbmp = ::CreateDIBSection(NULL, &bi, DIB_RGB_COLORS, (void**)&m_lpdwpixel, NULL, 0);

こんな感じでモノクロのビットマップを作成しようとしてるんですが
WINDOWS2000ではきちんと動くのにWINDOWS98では動きません 戻り値のm_hbmpがNULLになってしまいます
どうしてでしょうか?

736 名前:デフォルトの名無しさん :2005/11/09(水) 21:08:25
98がトップダウンをサポートしてないなんてことはさすがに無いとは思うが、
とりあえず、その失敗してる時にGetLastErrorとFormatMessageしてみた?
それだけでももしかしたら原因わかるかもしらんぞ?

あとそれ、biをZeroMemoryかmemsetで0初期化しといた方がいいぜ

737 名前:736 :2005/11/09(水) 21:08:46
追記:もしかしたらそのせいかも知らんしな

738 名前:デフォルトの名無しさん :2005/11/09(水) 21:09:30
>>735
ちょっと試してみると、95もできないな。
上下逆しかできない飢餓する。
bih.biHeight = nHeight;を試してみたら?

739 名前:デフォルトの名無しさん :2005/11/09(水) 21:18:33
ボトムアップって言えよ

740 名前:デフォルトの名無しさん :2005/11/09(水) 21:34:48
>>736
0で初期化したらいけました
ありがとうございました^^

741 名前:デフォルトの名無しさん :2005/11/09(水) 22:44:54
ツールバーの縦のサイズを変更するにはどうすればいいですか。

742 名前:デフォルトの名無しさん :2005/11/09(水) 23:09:44
windowsのソフトには、インストールが必要なものと、そうでないものがありますが
プログラムの追加と削除に入っているものとそうでないものでは、どういう違いがあると思いますか?

管理がし易い以外にどういう理由があるのだしょうか?


743 名前:デフォルトの名無しさん :2005/11/09(水) 23:15:02
板違い

744 名前:デフォルトの名無しさん :2005/11/09(水) 23:15:37
インストールが必要じゃないソフトなんてありませんから

745 名前:デフォルトの名無しさん :2005/11/09(水) 23:23:37
最近初めてやってみたけど、SDKってすごい面倒くさいな

746 名前:デフォルトの名無しさん :2005/11/09(水) 23:26:08
>>745
ようこそ、素晴らしきAPIワールドへ

747 名前:デフォルトの名無しさん :2005/11/09(水) 23:27:33
>>745
え?何と比べて?
MFCと比べてるなら大差ないどころかむしろこっちのが楽だと思うが。

748 名前:デフォルトの名無しさん :2005/11/09(水) 23:28:22
それはない

749 名前:デフォルトの名無しさん :2005/11/09(水) 23:28:26
USBに機器が刺されたりした時に画面にダイアログが出てきますが
あのイベントを自作のアプリで拾う事は可能でしょうか?
その場合、どういう風にやれば良いでしょうか?
(もしスレ違いでしたらどこで聞くべきですか?)

750 名前:デフォルトの名無しさん :2005/11/09(水) 23:33:02
>>748
MFCなんて呪いじゃん。
あのウンコなフレームワークのおかげで1つのソースにこんもりウンコテンコ盛り状態になってる現場って多いぞ。


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