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


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

Win32API質問箱 Build21
751 名前:デフォルトの名無しさん :04/08/10 20:31
2ピクセルずらせばいいやん

752 名前:デフォルトの名無しさん :04/08/10 20:35
うわぁ〜〜

753 名前:デフォルトの名無しさん :04/08/10 21:00
>>750
クライアント RECT ではなくウィンドウ RECT でアレコレしている、に1票。
ちゃんと動くサンプルって、Google とかで探せるとこになかったっけ。

754 名前:デフォルトの名無しさん :04/08/10 21:07
CreateFileでFILE_FLAG_OVERLAPPEDを指定して開いたファイルは
LPOVERLAPPEDでアクセスする位置を指定するので
SetFilePointerは機能しませんよね?
でもSetEndOfFileを使う場合にはSetFilePointerが必要ですよね?

FILE_FLAG_OVERLAPPEDを使った場合SetEndOfFileは使えないのでしょうか?


755 名前:一星 ◆Cppn/.YI3. :04/08/10 21:10
>>753
その問題は以前さんざん悩んだことがあるので、
大丈夫だとは思うんだが……。
コードを載せておく。

HDC CreateDoubleBuffer(HWND hWnd,COLORREF color,int width,int height){
HDC hDC,hMemDC; BITMAPINFO *lpBMI; HPEN hpnRect; HBRUSH hbrRect;
HBITMAP hBitmap; LPBITMAP lpBMP;
hDC=GetDC(hWnd);
lpBMI=(LPBITMAPINFO)GlobalAlloc(GPTR,sizeof*lpBMI);
ZeroMemory(&lpBMI->bmiHeader,sizeof lpBMI->bmiHeader);
lpBMI->bmiHeader.biSize = sizeof lpBMI->bmiHeader;
lpBMI->bmiHeader.biWidth = width;
lpBMI->bmiHeader.biHeight = height;
lpBMI->bmiHeader.biPlanes = 1;
lpBMI->bmiHeader.biBitCount = 24;
lpBMI->bmiHeader.biCompression = BI_RGB;
lpBMI->bmiHeader.biSizeImage = 0;
lpBMI->bmiHeader.biXPelsPerMeter = 0;
lpBMI->bmiHeader.biYPelsPerMeter = 0;
lpBMI->bmiHeader.biClrUsed = 0;
lpBMI->bmiHeader.biClrImportant = 0;
hBitmap=CreateDIBSection(hDC,lpBMI,DIB_RGB_COLORS,(void**)&lpBMP,NULL,0);
hMemDC=CreateCompatibleDC(hDC);
SelectObject(hMemDC,hBitmap);

756 名前:一星 ◆Cppn/.YI3. :04/08/10 21:11
続き。

hpnRect=CreatePen(PS_SOLID,1,color);
hbrRect=CreateSolidBrush(color);
SelectObject(hMemDC,hpnRect);
SelectObject(hMemDC,hbrRect);
Rectangle(hMemDC,0,0,width,height);
DeleteObject(hpnRect);
DeleteObject(hbrRect);

ReleaseDC(hWnd,hDC);
return hMemDC;
}

757 名前:デフォルトの名無しさん :04/08/10 21:25
>>756
WM_PAINT での処理は?

758 名前:デフォルトの名無しさん :04/08/10 21:29
>>746
"\\\\\\test\\\\\\command\\\\\\\\\\1\\\\"
こんなのも可能(ただし保証なし)
MSDNで名前規則について調べろ

759 名前:一星 ◆Cppn/.YI3. :04/08/10 21:31
よくわからないことになった。
ウィンドウスタイルをWS_OVERLAPPEDWINDOWにするとうまくいった。
俺は、サイズ固定ウィンドウにするために、
それをWS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOXと
指定していたんだが、恐らくこれがおかしいのだと思われる。

>>757
case WM_PAINT:
{
/* ClSizeX・ClSizeY:クライアントエリアの大きさ
hMemDC:CreateDoubleBufferで受け取ったメモリーデバイスコンテキスト
*/
HDC hDC; PAINTSTRUCT ps;
hDC=BeginPaint(hWnd,&ps);
BitBlt(hDC,0,0,ClSizeX,ClSizeY,hMemDC,0,0,SRCCOPY);
EndPaint(hWnd,&ps);
break;
}

760 名前:デフォルトの名無しさん :04/08/10 21:34
>>759
ClSizeX と ClSizeY はそれぞれ GetClientRect した RECT の幅と高さ、ですよね。


761 名前:一星 ◆Cppn/.YI3. :04/08/10 21:48
しまった。
AdjustWindowRectのところを見たら、
ウィンドウスタイルの引数が「WS_OVERLAPPEDWINDOW」のままだった……。
>>760の予想する問題点は、この関数を使って修正する様にしているから
大丈夫だと思っていたが、引数をよく見たら誤っていたというわけだ……。

わざわざ考えてくださって、みなさんありがとうございました。

762 名前:デフォルトの名無しさん :04/08/10 21:58
猿山にカエレ!!(・∀・)

763 名前:デフォルトの名無しさん :04/08/10 22:46
質問なのに独白調で面白いですね。と思った

764 名前:デフォルトの名無しさん :04/08/10 22:48
age厨うぜぇ

765 名前:デフォルトの名無しさん :04/08/10 22:53
>>763
ドクハク!

766 名前:デフォルトの名無しさん :04/08/10 23:19
D&Dされたものがフォルダかファイルかを判断するにはどうすればいいですか?
また、フォルダの場合そのフォルダの中のファイルを操作するにはどのようにすればいいんですか?

767 名前:デフォルトの名無しさん :04/08/10 23:31
GetFileAttributes
FindFirstFile

768 名前:デフォルトの名無しさん :04/08/10 23:34
PathIsDirectory()という、そのまんまなモノがある

769 名前:デフォルトの名無しさん :04/08/10 23:52
他のアプリケーションを終了させるのはどうやったらいいんですか?


770 名前:デフォルトの名無しさん :04/08/10 23:54
ウィンドウタイトルやウィンドウクラスからウィンドウハンドルを取得、ウィンドウハンドルからスレッドハンドルを取得、スレッドハンドルからプロセスハンドルを取得してTerminateProcess()

で、出来ない?

771 名前:デフォルトの名無しさん :04/08/11 00:02
>>769
対象アプリケーションに終了させる仕組みが用意されてなければ
メインウィンドウにWM_CLOSE、TerminateProcess()など…
ただし、正常に終了できるとは限らない。

772 名前:デフォルトの名無しさん :04/08/11 00:03
>>769-770
ExitProcess()でダメならSendMessage()、
それでもダメならTerminateProcess()かなぁ


773 名前:デフォルトの名無しさん :04/08/11 00:07
>>770-772

ありがとうございます。強制終了ではなくて、終了の指示を出すわけですね。試してみます。


774 名前:770 :04/08/11 00:22
DWORD ProcID;
HANDLE hProcess;
BOOL fResult = FALSE;
HWND hwnd;


hwnd=FindWindow(0,winname);
GetWindowThreadProcessId(hwnd, &ProcID);
hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcID);
if(hProcess != NULL){
fResult = TerminateProcess(hProcess, 0);
WaitForSingleObject(hProcess, 500);
CloseHandle(hProcess);
}

てな感じで無事、殺せました。ありがとうございました。


775 名前:デフォルトの名無しさん :04/08/11 01:48
RegOpenKeyExのsamDesiredで
KEY_CREATE_SUB_KEYを指定していない(KEY_READ指定)のに、
サブキーを作る事が出来ているのですが、私のプログラムのバグでしょうか?

以下のコードでassertに掛かって欲しいんですけど。
{
HKEY key1, key2;
LONG result;
result = ::RegOpenKeyEx(HKEY_CURRENT_USER, "Software", 0, KEY_READ, &key1);
assert(result == ERROR_SUCCESS);
result = ::RegCreateKeyEx(key1, "TEST", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_READ, NULL, &key2, NULL);
assert(result == ERROR_SUCCESS);
::RegCloseKey(key2);
::RegCloseKey(key1);
}


776 名前:デフォルトの名無しさん :04/08/11 01:57
画面のプロパティで設定したフォントを、
自分で作ったウィンドウの中の文字に適用したいんですが、
なにもしないと適用してくれません。
何か設定しないといけないんでしょうか?

ちなみに、

エクスプローラでは、左のフォルダにも右のファイル表示にも
アドレスバーにも適用されてます。

かちゅでは、ステータスバーには適用されてるんですが、
メインの3つのビュー、バーにはどれも適用されてません。

というところを見ると、
子ウィンドウ毎にも設定があるんでしょうか・・・

777 名前:デフォルトの名無しさん :04/08/11 02:06
自分で作ったウィンドウのフォントなんか、システムが面倒見てくれるわけもなく。
逆にシステム設定を読んで、そのフォントで描画すればよし。
かちゅーしゃは知らんけど、好みのフォント設定できるようになってるだけじゃないの?

778 名前:776 :04/08/11 03:03
>かちゅーしゃは知らんけど、好みのフォント設定できるようになってるだけじゃないの?

かちゅの設定に、ステータスバーのフォントなどという項目はなかったと思います。


以前、ある自作アプリのプログラムを変更中に、何かの拍子で
そのアプリに画面のプロパティのフォントが適用されたされたことがあるんです。
どこが影響したのか上手く特定できず、
開発を続けるうちになぜか元に戻ってしまいました。

なので、いちいちウィンドウ毎にフォントを設定しなくても、
画面のフォントを適用させる何かしらの設定があるんじゃないかと思うんですが・・・。

779 名前:デフォルトの名無しさん :04/08/11 03:28
CopyIconの使いどころが分かりません。
特定のモジュールからLoadIconでアイコンをロードした後、FreeLibraryする前にCopyすればいいのですか?
また、LoadImageの場合も必要になりますか?

LoadLibrary>LoadIcon>FreeLibraryだけでも(見た目正しく)ロードできているので、
どこで使うのか調べきれませんでした。

780 名前:デフォルトの名無しさん :04/08/11 04:09
>>774
TerminateProcess()は危険な香り

781 名前:デフォルトの名無しさん :04/08/11 09:44
>>778
Delphi ですか?
Delphi なら TControl.DesktopFont というプロパティがあります。
ただし TCustomStatusBar と THintWindow は別の方法でシステムの
フォントを使っています。

782 名前:デフォルトの名無しさん :04/08/11 13:44
>>774
QUERY_END_SESSIONとかそのへんのメッセージ投げるもアリ。
対象アプリの作りによるが

783 名前:デフォルトの名無しさん :04/08/11 13:50
>>775
テストした OS は?


784 名前:デフォルトの名無しさん :04/08/11 14:29
VBLANKのタイミングを取得できるAPIはありますか?

785 名前:デフォルトの名無しさん :04/08/11 14:32
>>783
2000です

786 名前:デフォルトの名無しさん :04/08/11 15:59
すみません。教えてください。

エクスプローラーみたいに、右ドラッグ時に
コンテキストメニューを表示したいのですが、
どのようにすれば良いでしょうか?

現在、IDropTarget::DropでIDataObjectまでは取得できています。

787 名前:766 :04/08/11 16:00
>>767-768
無事解決できそうです。ありがとうございました。

788 名前:776 :04/08/11 18:20
>>781
すみません、DelphiじゃなくてVC++です

789 名前:デフォルトの名無しさん :04/08/11 19:00
GDIでダブルバッファリングと画面を60分の一秒ごとに高速に書き換える手法を教えてください

790 名前:デフォルトの名無しさん :04/08/11 19:24
>>789
とても速いCPUと、とても速いビデオカードを買う。

791 名前:デフォルトの名無しさん :04/08/11 19:33
while (1) {
 SetPixel(hdc, 0, 0, rnd());
 Sleep(1000/60);
}

792 名前:デフォルトの名無しさん :04/08/11 19:43
そんなエサで俺様がクマー(AA略

793 名前:デフォルトの名無しさん :04/08/11 20:40
>>786
右ドラッグを受けたいの?
それとも、エクスプローラに送りたいの?

794 名前:デフォルトの名無しさん :04/08/11 20:43
WM_PAINTを始め、メッセージはメッセージキューに蓄積していくのでしょうか?

例えばWM_PAINTの処理を行っている最中にWM_PAINTのメッセージが何度送られても
次のメッセージが実行されるのは処理を全て終えてから、ということでしょうか?

795 名前:デフォルトの名無しさん :04/08/11 20:56
>>794
基本的にメッセージはキューに蓄積されます。
WM_PAINT は違うけど。

796 名前:デフォルトの名無しさん :04/08/11 21:01
>>795
WM_PAINTが違う、とはどういうことでしょうか?
もう少し詳しくお聞かせ願えませんか?

797 名前:デフォルトの名無しさん :04/08/11 21:08
>>796
MSDN読め

798 名前:796 :04/08/11 21:13
>>797
MSDNってどこのプロバイダですか?

799 名前:デフォルトの名無しさん :04/08/11 21:24
>>796
WM_PAINT は、
・メッセージキューに他のメッセージがない場合のみ GetMessage で取得される。
・同一のウィンドウにたいして、複数の WM_PAINT があった場合(←妙な表現だが、
 例えば InvalidateRect() で2箇所の領域を無効化した場合)、それらは一つの
 WM_PAINT にまとめられてキューから取り出される(無効領域も合算される)。


800 名前:デフォルトの名無しさん :04/08/11 21:27
>>799
ご丁寧にありがとうございました。


801 名前:デフォルトの名無しさん :04/08/11 21:29
WM_PAINT と WM_MOUSEMOVE だけ特別扱いなんだっけ?
ユーザーメッセージで、同様に優先度の低いメッセージってできますか?

802 名前:デフォルトの名無しさん :04/08/11 21:33
>>801
WM_TIMER も。ユーザには出来ないんじゃない?


803 名前:デフォルトの名無しさん :04/08/11 21:36
ZIPでファイルを圧縮する方法について教えてください。
LZHの方法は猫でもで発見しましたがZIPの方法が載ってなかったので。

804 名前:デフォルトの名無しさん :04/08/11 21:46
pkzip e filename

じゃなかったっけ

805 名前:デフォルトの名無しさん :04/08/11 22:22
フォーマットの話だろ?

806 名前:デフォルトの名無しさん :04/08/11 22:30
>>788
じゃあ自分で実装するしかないんじゃないか?

SystemParametersInfo の SPI_GETICONTITLELOGFONT で取得した
LOGFONT から CreateFontIndirect でフォントを作成して
WM_SETFONT で送る。オーナードローの部分もそのフォントを使う。

ユーザーが設定を変更した場合はトップレベルウィンドウに
WM_WININICHANGE で SPI_GETICONTITLELOGFONT が通知されるので、
これを受け取ったらフォントの設定を最初からやりなおす。

807 名前:デフォルトの名無しさん :04/08/12 00:35
>>803
zlibを使って下さい。

808 名前:デフォルトの名無しさん :04/08/12 01:01
>>786
右ドラッグを受けたいです。

809 名前:デフォルトの名無しさん :04/08/12 01:07
                      ''';;';';;'';;;,.,                  ザッ
                       ''';;';'';';''';;'';;;,.,   ザッ
          ザッ            ;;''';;';'';';';;;'';;'';;;
                        ;;'';';';;'';;';'';';';;;'';;'';;;
                        vymyvwymyvymyvy     ザッ
               ザッ     MVvvMvyvMVvvMvyvMVvv、
                   Λ_ヘ^−^Λ_ヘ^−^Λ_ヘ^Λ_ヘ
     ザッ            ヘ__Λ ヘ__Λ ヘ__Λ ヘ__Λ
                __,/ヽ_ /ヽ__,.ヘ /ヽ__,.ヘ _,.ヘ ,.ヘ    ザッ
    /\___/ヽ   /\___ /\___/ヽ _/ヽ /\___/ヽ
   /''''''   '''''':::::::\/''''''   '''/''''''   '''''':::::::\   /''''''   '''''':::::::\
  . |(●),   、(●)、.:|(●),    |(●),   、(●)、.:|、( |(●),   、(●)、.:|
  |   ,,ノ(、_, )ヽ、,, .::::|   ,,ノ(、_, )|   ,,ノ(、_, )ヽ、,, .::::|_, )|   ,,ノ(、_, )ヽ、,, .::::|  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
.   |   `-=ニ=- ' .:::::::|   `-=ニ= |   `-=ニ=- ' .:::::::|ニ=|   `-=ニ=- ' .:::::::| < ageますよ
   \  `ニニ´  .:::::/\  `ニニ \  `ニニ´  .:::::/ニ´ \  `ニニ´  .:::::/   \__________________
   /`ー‐--‐‐―´\ /`ー‐-  /`ー‐--‐‐―´\-‐‐ /`ー‐--‐‐―´\

810 名前:デフォルトの名無しさん :04/08/12 04:34
>>809
幅広すぎ。崩れまくり。

811 名前:デフォルトの名無しさん :04/08/12 04:50
>>808
APIとかの標準的な方法では提供されていない。
shellexからレジストリをたどって自分で構築するしかない。

812 名前:776 :04/08/12 05:03
Λ_ヘ^−^Λ_ヘ^−^Λ_ヘ^Λ_ヘ


813 名前:デフォルトの名無しさん :04/08/12 08:09
>>808
エクスプローラのコンテキストメニューそのものを表示したいのならば、
IShellFolder.GetUIObjectOf( IID_IDropTarget ) を取得して、
自分で実装した IDropTarget の引数をそのまま転送してやればよい。

814 名前:デフォルトの名無しさん :04/08/12 08:48
>>803
UnZip32.dllを探せ。LHZと大して手順は変わらん。


815 名前:デフォルトの名無しさん :04/08/12 08:59
UnZip32.dllは有料ですよ

816 名前:デフォルトの名無しさん :04/08/12 09:13
>>815
まあまあ

817 名前:デフォルトの名無しさん :04/08/12 09:23
UnZip32.dll互換dllを作る

818 名前:デフォルトの名無しさん :04/08/12 09:30
商用以外ならカンパウェア扱いだろ。

819 名前:デフォルトの名無しさん :04/08/12 09:54
コレ使うといいよ。
こっちはフリーだから
http://www31.ocn.ne.jp/~heropa/funzip32dll.htm

820 名前:デフォルトの名無しさん :04/08/12 11:47
>>810
ショボイ画面で見てんじゃねーよ

821 名前:デフォルトの名無しさん :04/08/12 11:48
>>814 >>817 >>819
怪しいDLLは使いたくありません。

822 名前:デフォルトの名無しさん :04/08/12 11:49
>>823-1000
怪しいzlibは使いたくありません

823 名前:デフォルトの名無しさん :04/08/12 12:03
怪しいzipは使いたくありません

824 名前:デフォルトの名無しさん :04/08/12 12:07
怪しいWIN32APIは使いたくありません

825 名前:デフォルトの名無しさん :04/08/12 12:07
怪しいサイト=2chで質問することは、なんともないらしい。

826 名前:デフォルトの名無しさん :04/08/12 12:10
怪しい>>825を放置することは、何ともない

827 名前:デフォルトの名無しさん :04/08/12 13:42
>>813
できました。
ありがとうございました。

828 名前:デフォルトの名無しさん :04/08/12 13:46
ListBoxで教えて下され
ListBoxのウィンドウをLBS_NOTIFYを付けて作成し、親ウィンドウでLBN_DBLCLKを
拾ってるんですが、その時に渡されるWPARAMの下位ワードが常に0になってしまいます。

ヘルプを見るとLOWORD(wParam)の説明はidentifier of listboxとなっており
てっきりダブルクリックした項目の番号が渡されるものだと思ったのですが…
実際には何番目の項目をダブルクリックしようがLOWORD(wParam)は0のままです。
このidentifier of listboxは何を意味するのか教えて下さい。
オナガイシマス orz

829 名前:デフォルトの名無しさん :04/08/12 13:56
メインプログラムのほかは一つしかスレッドが無いという仮定の元で、
スレッド内で以下のような感じでキー入力を受けつけることはできますか?

_beginthread(Threadmain);

ThreadMain()
{
c = getchar();
}

830 名前:デフォルトの名無しさん :04/08/12 14:05
>>829
出来る

831 名前:デフォルトの名無しさん :04/08/12 14:12
>>828
identifier of listbox = リストボックスの識別子

つまり、どのリストボックスかを識別する。
LOWORD(wParam)が0なら、CreateWindow() したときの
子ウィンドウIDが0のリストボックスということ


832 名前:デフォルトの名無しさん :04/08/12 14:16
>>821
猫のサンプルで使っているUnLha32.dllの兄弟だってば。
http://archiver.wakusei.ne.jp/lib/main.html

833 名前:デフォルトの名無しさん :04/08/12 14:52
>>831
成程、Windowのidでしたか。納得。
やりたい事はLBN_DBLCLKを拾ってLB_GETCARETINDEXを送ることで出来ますた
マリガトン

834 名前:デフォルトの名無しさん :04/08/12 15:36
>>832
DLL Hell に悩まされるのはイヤンです

835 名前:デフォルトの名無しさん :04/08/12 16:04
>>834
UnLhaが良くてなぜUnZipはだめなのか?

836 名前:デフォルトの名無しさん :04/08/12 16:48
メッセージループでアプリケーションに送られたメッセージを取得するにはどうしたらいいのでしょうか?
当初PeekMessage()で処理したMSG構造体に全てのメッセージが格納されていると思っていたんですが、
どうやらSendMessage()などで送られたメッセージ限定だそうで一部のメッセージしか取得出来ません。
ウィンドウプロシージャ以外の場所で全てのメッセージを取得する方法がありましたら教えてください。

837 名前:デフォルトの名無しさん :04/08/12 16:55
>>836
ピークメッセージのループはどういうときに使うといいですか?

838 名前:デフォルトの名無しさん :04/08/12 16:57
>>813
それは「表示するだけ」

839 名前:836 :04/08/12 17:07
>>837
GetMessage()はメッセージが来るまで制御を返さないので
メッセージが来てない時に(アイドル時)に何か処理したい場合に使ってます。


840 名前:デフォルトの名無しさん :04/08/12 17:31
>>839
PeekMessage()の戻り値を見ましょう

841 名前:デフォルトの名無しさん :04/08/12 17:40
>>839
GetQueueStatusでメッセージがあるかどうか調べて、GetMessageとアイドル時の処理とを振り分けてみたら

842 名前:デフォルトの名無しさん :04/08/12 17:50
>>836
PostMessageで送られてきたメッセージ限定だ。
ついでに言うなら、GetMessageでもそれは同じ。

843 名前:803 :04/08/12 17:51
皆さんレスありがとうございました。だいたいのするべきことが分かってきました。
ちなみに途中に出てきた間際らしい人は自分ではありませんので。

844 名前:デフォルトの名無しさん :04/08/12 17:53
まぎわらしい(←なぜか変換できない)

845 名前:836 :04/08/12 17:57
>>840
現状ではPeekMessage()して戻り値がTRUEならGetMessage()でメッセージを取得しています。
PeekMessage()の戻り値がFALSEならアイドルループを回しています。
そこまではいいんですが、GetMessage()でも完全に全てのメッセージが取得出来ません。

先ほどSetWindowsHookEx()を使ってメッセージをローカルフックしてみましたが
上記と同じ状態でハマッテます。

>>841
やってみましたが上記の方法と結果は同じでした。

そもそもメッセージループではウィンドウなどに送られたメッセージはトラップ出来ないんでしょうか?
でもウィンドウにメッセージを送ってるのはメッセージループ内のDispatchMessage()ですよね・・・。
うーん。

846 名前:836 :04/08/12 18:02
>>842
やっぱりそうですか。

if (msg.message == WM_MOVE)
 // 自分所有のどれかのウィンドウが動いた
このような事をしたいんですが。

>>844
まぎらわしい


847 名前:デフォルトの名無しさん :04/08/12 18:09
同一スレッドからSendMessageされたメッセージは直接(Get/PeekMessageやDispatchMessageを介さず)
ウィンドウプロシージャに渡される。

848 名前:デフォルトの名無しさん :04/08/12 18:12
コンソールアプリの文字出力でunicode文字の記号(ハートマークとか)を
表示したいのですが出ません。

ハートマークは、ファイル名につけて、dir表示は出来るのに、
どうしてwprintfでは表示されないのでしょうか。

表示する方法があったら教えてください。

849 名前:一星 ◆Cppn/.YI3. :04/08/12 18:12
ダブルバッファーを作った後にクライアントエリアが真っ黒になるのは
し方ないことなのか?

850 名前:836 :04/08/12 18:15
>>847
はー、と言う事はメッセージキューにも入らないんですね。
通りでSetWindowsHookEx()でもダメなはずだ。

とい言う事は
SetWindowsHookEx(WH_CALLWNDPROC, ...);
こんな感じで保持している全ウィンドウに対してフック掛ければいけるのかな?
でももっと簡単な方法ないのかなぁ。

851 名前:836 :04/08/12 18:32
SetWindowsHookEx(WH_CALLWNDPROC,...)
これはウィンドウハンドルなどの指定はないんですね。
これ1つで所有ウィンドウのメッセージをトラップ出来ました。

SetWindowsHookEx(WH_GETMESSAGE...)
これと合わせて使えばほぼ全てのメッセージが取得できそうな感じです。

みなさんご指摘ありがとうございました。

852 名前:デフォルトの名無しさん :04/08/12 18:38
>>848
wprintfW

853 名前:デフォルトの名無しさん :04/08/12 18:42
>>849
WM_ERASEBKGNDを処理してるから?

854 名前:一星 ◆Cppn/.YI3. :04/08/12 18:48
>>853
いや、そんなものはいじっていないが……。

855 名前:デフォルトの名無しさん :04/08/12 18:48
CreateCompatibleBitmapで作った裏画面の色が黒だからだろ

856 名前:一星 ◆Cppn/.YI3. :04/08/12 18:55
>>855
あとから背景にしたいものを描画するしかないということ?

857 名前:デフォルトの名無しさん :04/08/12 18:57
>>854
WM_ERASEBKGNDをWindowsが処理してるから?

858 名前:デフォルトの名無しさん :04/08/12 18:59
E.YAZAWAが「黒く塗りつぶせ」って言ったから。

859 名前:デフォルトの名無しさん :04/08/12 19:02
>>852
そういう関数は無いみたいです。

860 名前:デフォルトの名無しさん :04/08/12 19:06
>>856
あたりまえだ、何も描いてないのに意図した絵が出ると考えるのはアホだ。

861 名前:デフォルトの名無しさん :04/08/12 19:06
SetWindowsHookEx()の第3引数はローカルフックの場合NULLを渡しますが、
システムフックの場合、ここにDLLのインスタンスハンドルを渡す必要があります。


862 名前:デフォルトの名無しさん :04/08/12 19:07
>>859
setlocaleしないとだめとか

863 名前:829 :04/08/12 19:11
>>836
ヒントありがと

864 名前:デフォルトの名無しさん :04/08/12 19:20
CRTに頼らず、 WriteConsoleWで出力しないとダメ。

865 名前:デフォルトの名無しさん :04/08/12 19:35
>>848
swprintfでバッファに書いてからWriteConsoleで出力すれば出せる。


866 名前:デフォルトの名無しさん :04/08/12 19:42
>>859
ある。ヘッダ見てみろ。

867 名前:デフォルトの名無しさん :04/08/12 19:56
printf <=> wprintf (CRT)
sprintf <=> swprintf (CRT)
wsprintf <=> wsprintfW (API)

868 名前:デフォルトの名無しさん :04/08/12 20:11
>>867 こうだろ
   printf ← _tprintf → wprintf   (CRT)
  sprintf ← _stprintf → swprintf  (CRT)
wsprintfA ← wsprintf → wsprintfW (API)

869 名前:デフォルトの名無しさん :04/08/12 20:16
>>862
してる。
setlocale(LC_ALL, "");
setlocaleをしないと、普通のSJIS文字もでなくなる。

>>864-865
上手くいき、文字がでました!ありがとう!

>>866
検索したのですが.NET2003の中のヘッダには存在しないみたい。


870 名前:デフォルトの名無しさん :04/08/12 21:05
_tprintfはMS限定拡張だからなぁ。

871 名前:デフォルトの名無しさん :04/08/12 21:30
>>848
wprintfってAPIじゃないだろ
WriteConsoleWで直接書く
>>870
_tprintfは_UNICODEのときwprintfに#defineるだけだから
wprintfでダメならダメだろ

872 名前:デフォルトの名無しさん :04/08/12 21:31
APIじゃないんだからwprintfWも当然ない

873 名前:デフォルトの名無しさん :04/08/12 22:18
#define HOGE = 100
こう定義されてる時、

int iValue = HOGE;
これでiValueに100って値が入りますよね。

けど、"HOGE_"はini ファイルとかtextファイルから読み込みたいんです。

例えばテキストファイルに"HOGE"とだけ書かれていて、
まずそれを読み込んで
CString cs =_T("HOGE");
こう云う状態になるとしますよね。

この後iValueに同様に値をセットするにはどうすればいいんでしょ。
何か言葉がうまくでてこなくて、解りズラ買ったらすんません。


874 名前:デフォルトの名無しさん :04/08/12 22:22
マジでぜんぜん意味が分からん
超能力者щ(゚Д゚щ)カモーン

875 名前:デフォルトの名無しさん :04/08/12 22:24
なんかよくわからんが、たぶん無理なことをしようとしている。

876 名前:デフォルトの名無しさん :04/08/12 22:26
>>873
INIファイルを扱いたいならGetPrivateProfileStringもしくはGetPrivateProfileInt
テキストファイルで扱いたいなら自分で読み込むルーチンを作れ

こういうことでいいんだろうか?


877 名前:デフォルトの名無しさん :04/08/12 22:30
INIファイルを扱いたいなら
INIファイルの内容が以下のようだとして
----hoge.ini-----
[Section]
Key = 100
------------------
コードが以下
int iValue = GetPrivateProfileInt("Section", "Key", 0, "hoge.ini");


878 名前:超プログラマー :04/08/12 22:33
>>873
typedef std::map<CString, int> map_type;

map_type valMap;
valMap[_T("HOGE")] = 100;
valMap[_T("HAGE")] = 200;

とか、やっといて

CString cs = _T("HOGE");
int iValue = valMap[cs]; //これでiValueに100が代入される

879 名前:873 :04/08/12 22:34
こんな感じなんですが・・・

<aaa.h>
HOGE = 100

<bbb.txt>
HOGE

<ccc.cpp>
CString str;
(bbb.txtから1行読み込んで、strには"HOGE"と入っている)

880 名前:873 :04/08/12 22:35
ぬお!!! 説明考えてる間に、878さんありがと!
多分それだと思います。

しかしSTL勉強してないのだった。勉強してみます。

881 名前:873 :04/08/12 22:36
連続すんません、訳解らん話に付き合っていただいた
他の方々も、本当にありがとうです。

882 名前:デフォルトの名無しさん :04/08/12 23:37
しょぼい質問で申し訳ないのですが、
ウインドウプロシージャの中で、WM_PAINTを受け取った際の処理で
BeginPaint()とEndPaint()を2回実行して、
一回目は線を描いて、2回目は文字を書いたのですが、
線しか表示されないのはどうしてでしょう?
解決策などあったら教えてください。

883 名前:デフォルトの名無しさん :04/08/12 23:40
二回実行しない

884 名前:デフォルトの名無しさん :04/08/12 23:41
一回目のBeginPaintでアップデートリージョンが吹っ飛ぶから。
二回目はGetDCにしとけ。

885 名前:デフォルトの名無しさん :04/08/12 23:50
もしこうしてるのなら
paint1(); //この中でBeginPaintとEndPaint
paint2(); //この中でBeginPaintとEndPaint

こう変えろ
dc = BeginPaint(hwnd, &paintstruct);
paint1(dc);
paint2(dc);
EndPaint(hwnd, &paintstruct);

886 名前:デフォルトの名無しさん :04/08/12 23:51
>>882
WM_PAINTで描画できるのは、"無効リージョン(更新リージョン)"の部分だけ。
最初のBeginPaint(),EndPaint()で、無効リージョンはすべて有効化されるので、それ以上は描画できない。
デバイスコンテキストを引数にもつ、"線を引く関数"と"文字を書く関数"を作れ。
BeginPaint(),EndPaint()は1回で済む。





887 名前:882 :04/08/12 23:55
みなさん、丁寧にありがとうございます。
やはり、2回呼び出したのが間違いだったのですね。
>>885さん >>886さん
わかりにくい文章を解読してくれてありがとうございます。
今度は引数渡しでやってみます。


888 名前:デフォルトの名無しさん :04/08/13 00:23
マウスカーソルが、あるコントロールの上にある時だけ
フラグを立てておきたいのですが、良い方法はないでしょうか?

特にカーソルがコントロールのウィンドウ外に出るときの
イベントが分からず、困っています。

889 名前:デフォルトの名無しさん :04/08/13 00:27
マウスをキャプチャして、MOUSEMOVEが定石か。
まあ、TIMERでGetCursorPos+HitTestを使っても良いけど

890 名前:デフォルトの名無しさん :04/08/13 00:29
定期的にGetCursorPosを呼び出す
とか一応考えられるけど、本当にそんなフラグ立ての必要があるのか、仕様を考え直した方がいいな。

891 名前:デフォルトの名無しさん :04/08/13 00:37
>>888
フラグを立てずに、判定が必要になったときに毎回調べては。
コントロールのRECTとマウスのPOINTをPtInRect()に渡して。
ScreenToClient()やClientToScreen()なども使うかも。


892 名前:デフォルトの名無しさん :04/08/13 00:41
>>888
889の前者に一票だな。

893 名前:デフォルトの名無しさん :04/08/13 00:43
意味もなくマウスキャプチャすんなよ…

894 名前:デフォルトの名無しさん :04/08/13 00:43
>>891
WindowFromPointで一発じゃ

895 名前:デフォルトの名無しさん :04/08/13 00:43
(・∀・)ニヤニヤ

896 名前:888 :04/08/13 00:50
>>889-894
皆さんレスありがとうございました。
キャプチャしてPtInRect、またはChildWindowFromPointで判定が良さそうですね。
そのものずばりのやり方が無いようなので、逆に安心しました。

897 名前:891 :04/08/13 00:51
891はウィンドウが下に隠れてるときが考慮されてないのでダメだな。
894が賢い。


898 名前:デフォルトの名無しさん :04/08/13 00:55
_TrackMouseEvent使ってWM_MOUSELEAVEでフラグを消すじゃ
だめなのか?

899 名前:888 :04/08/13 01:09
>>898
ありがとうございます!こんな物があったとは。使ってみましたが良好です。

実はコントロールの場合だと、何もしなくてもドラッグしたとき
キャプチャー状態になっちゃうんですよね。

ですので自前でキャプチャーするとその辺の兼ね合いが面倒だったもので…。
このやり方なら、かぶらずにできそうです。

900 名前:一星 ◆Cppn/.YI3. :04/08/13 11:01
『WPARAM』と『LPARAM』の頭文字はどんな意味?

901 名前:デフォルトの名無しさん :04/08/13 11:05
WORD LONG


902 名前:デフォルトの名無しさん :04/08/13 11:07
Woman
Lady

903 名前:デフォルトの名無しさん :04/08/13 11:08
Winner Looser

904 名前:デフォルトの名無しさん :04/08/13 11:27
Windows Linux

905 名前:デフォルトの名無しさん :04/08/13 11:30
Wgowgo Luga

906 名前:デフォルトの名無しさん :04/08/13 11:43
書くなよ。自分でツマランってわかってるだろ。

907 名前:デフォルトの名無しさん :04/08/13 11:59
オモシレー

908 名前:デフォルトの名無しさん :04/08/13 12:44
16ビットWindowsでは>>901の通りで、WPARAMはWORDと同じ、LPARAMはLONGと同じサイズだった。
(つまりLONG WndProc(HWND hwnd, UINT uMsg, WORD wParam, LONG lParam);って宣言でも良かった。キャストも甘かったし)
ちなみに今のWPARAMはUINT_PTR、LPARAMはLONG_PTRからtypedefされている。

909 名前:デフォルトの名無しさん :04/08/13 13:14
APIというかアーキテクチャの話なんですけど

マルチプロセッサ環境で、スレッドが走るCPUはどう決められるのでしょうか?
スレッドを作ったときに割り当てられたCPUでずっと走るのか
それともコンテキスト切り替えが発生するたびに動的に変化するのでしょうか?

910 名前:デフォルトの名無しさん :04/08/13 13:34
サービスプログラムを作成しています。
ローカルシステムアカウントで動作しているサービスから、IEを起動したいのですがウィンドウが表示されません。
CreateProcessでIEを起動しているのですが、そのパラメータ(STARTUPINFO等)の問題でしょうか。
何か情報をお持ちでしたらご教授ください。
よろしくお願いします。

911 名前:デフォルトの名無しさん :04/08/13 13:38
素朴な疑問です
次期OSロングホーンになると
Win32SDKはWin64SDKになるんでしょうか?
また、メッセージループ構造にウィンドウプロシージャという
構造は変化しませんか?

912 名前:デフォルトの名無しさん :04/08/13 13:41
>>911
変化しないと思う。
ただ、ミドルウェアやライブラリに隠蔽された別スタイルでのやりかたが増えてくるかもしんない。

913 名前:デフォルトの名無しさん :04/08/13 13:44
質問です。Mutexオブジェクトは、開いているハンドルが全て閉じたときに破棄されますが、
それ以外に無理やりオブジェクトそのものを破棄してしまうことは出来ませんでしょうか?

914 名前:デフォルトの名無しさん :04/08/13 13:47
ExitWindowEx

915 名前:デフォルトの名無しさん :04/08/13 13:48
ExitWindowsEx
         ~

916 名前:913 :04/08/13 13:52
>>914-915
いや、あの、たしかにオブジェクトは破棄されるだろうけど…
Windowsも終了しちゃうじゃん (;´Д`)

917 名前:911 :04/08/13 13:55
>>912

>変化しないと思う。
覚え始めなので変化したらどうしようかと考えていました

>ミドルウェアやライブラリに隠蔽された別スタイルでのやりかたが増えてくる
APIをラップしたライブラリを使ったりするんでしょうか・・・・
数年先のことですので、お楽しみにしておきます。


918 名前:デフォルトの名無しさん :04/08/13 15:04
Win32APIが.NETをラップしたものになるんじゃなかったのか?

919 名前:デフォルトの名無しさん :04/08/13 15:30
>>909
うーん、どうなんだろうね?

今の Windows の実装がどうなってるか知らないけど、今後出てくる
Intel のマルチコア CPU では「暇なときは一部のコアの電源を落とす」
ということをやるそうだから、あるスレッドが特定のコアで動き続ける
という保証はなくなるはずだよね。


920 名前:デフォルトの名無しさん :04/08/13 15:53
>>909
動的に変化するし、固定することも出来る。


921 名前:デフォルトの名無しさん :04/08/13 16:01
TrackbarをAPIで作る方法を教えてください(CreateWindow)
UpDownなどはうまくいくのですがTrackbarだけうまくいきません。"msctls_trackbar32"

922 名前:デフォルトの名無しさん :04/08/13 16:09
>>921
ttp://homepage2.nifty.com/Mr_XRAY/Halbow/Chap26.html

検索したのか世

923 名前:デフォルトの名無しさん :04/08/13 17:24
自己解決しました

924 名前:デフォルトの名無しさん :04/08/13 17:24
>>911
Longhorn Development Kit(LDK)

925 名前:デフォルトの名無しさん :04/08/13 17:43
>>924
嫌だなあ、また新しいこと憶えなきゃなんねえのかよ……。

926 名前:デフォルトの名無しさん :04/08/13 17:49
>>919
「暇なときに」コアの電源落とすのなら、スレッドが動いている間は
特定のコアで動き続けるんじゃないか?


927 名前:911 :04/08/13 18:00
>Kit(LDK)
そのLDKでつくったものは、ユーザモードによっては
動かないという情報を耳にしたのですが、不便ではないですか?

928 名前:デフォルトの名無しさん :04/08/13 18:05
なにLDKって。LonghornSDKでしょ。

929 名前:デフォルトの名無しさん :04/08/13 18:10
メッセージループを書くとき if (PeekMessage(..., TRUE)) {} とぜずに
if (PeekMessage(..., FALSE) { if (GetMessage(...)) } とするケースを良くみますが、
どうしてわざわざGetMessageを呼び出しているのでしょうか?

930 名前:デフォルトの名無しさん :04/08/13 18:15
TRUE/FALSEじゃなくてPM_REMOVE/PM_NOREMOVEでした

931 名前:デフォルトの名無しさん :04/08/13 18:32
>>929
ソースの見易さを優先してんじゃないのかな?
パフォーマンスの差なんてほとんど無いだろうし。

932 名前:デフォルトの名無しさん :04/08/13 18:35
MSがそうしているからじゃないかな

933 名前:デフォルトの名無しさん :04/08/13 18:40
PeekMessage/hWnd=NULLではPostThreadMessageで投入されたメッセージを受ける事は出来ない。
PeekMessage/hWnd=-1なら受けられるけど、今度はウインドウメッセージが取れないから二度手間になる。
GetMessage/hWnd=NULLなら両方受け取れる。

934 名前:デフォルトの名無しさん :04/08/13 19:12
>>910
「サービスにデスクトップとの対話を許可する」を「ON」にする

935 名前:デフォルトの名無しさん :04/08/13 20:18
>>910
そもそも、サービスからUIプログラムを起動すんな。

936 名前:デフォルトの名無しさん :04/08/13 20:56
>>935
(°Д°)ハァ? お前何様?

937 名前:デフォルトの名無しさん :04/08/13 22:57
>>936
( ´,_ゝ`)プッ まあ、もちつけ。

938 名前:デフォルトの名無しさん :04/08/14 01:57
Winsock2の各APIのエントリー番号が知りたいのですがわかる人いますか?
DISWINでdiswin.apiを作ったのですが、WinsockのAPIが登録できていないので知りたいです。


939 名前:デフォルトの名無しさん :04/08/14 02:17
>938
ttp://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx
このへん見てガンガレ。

940 名前:デフォルトの名無しさん :04/08/14 02:23
>>938
Dependencywalkerで見れる

941 名前:デフォルトの名無しさん :04/08/14 10:08
939&940サンクス。わかりました。

942 名前:デフォルトの名無しさん :04/08/14 15:26
ピークメッセージでメッセージをおくったウインドープロシジャーと
ピークメッセージのあるループはマルチスレッドですか?

943 名前:デフォルトの名無しさん :04/08/14 15:40
>>942
ピークメッセージでメッセージは送れない。

944 名前:デフォルトの名無しさん :04/08/14 15:57
>>943
送る関数のなまえわすれたので それでお願いします

945 名前:デフォルトの名無しさん :04/08/14 17:07
シングルスレッドです

946 名前:デフォルトの名無しさん :04/08/14 17:48
デスパッチメッセージでループの処理が止まるということですね?

947 名前:デフォルトの名無しさん :04/08/14 19:11
ACCEL構造体のfVirtに指定するフラグFNOINVERTはメニュー項目を反転させないとあるのですが、
具体的にはどういう効果があるのでしょうか?
普通に{ FALT|FVIRTKEY, 'A', 1 }とかを指定しても、メニューが反転する様子は見られないんですけど。

948 名前:デフォルトの名無しさん :04/08/14 19:23
ウインドウ・プロシージャ内で、インクリメント(デクリメント)するにはどうすればいいのさ?

949 名前:デフォルトの名無しさん :04/08/14 19:34
i++(i--)

950 名前:デフォルトの名無しさん :04/08/14 22:05
プロセスで使ってるウインドウの一覧はどうやって取得するのでそ?

951 名前:デフォルトの名無しさん :04/08/14 22:10
>>950
EnumWindows()
EnumChildWindows()
GetWindowThreadProcessId()

952 名前:デフォルトの名無しさん :04/08/14 22:39
EnumThreadWindow は?

953 名前:デフォルトの名無しさん :04/08/14 22:50
>>952
まずプロセスに所属するスレッドのIDを列挙しないとね

954 名前:デフォルトの名無しさん :04/08/14 23:22
RegisterClassでウインドウクラスを登録するとATOMが帰ってきますよね?
後からこのATOMを使ってクラスのデータを取り出せると思うのですが、
*AddAtomとかを見ても文字列を登録するだけで、任意のデータ(WNDCLASSとか)を
登録する方法がわかりません。どうすればいいのでしょうか?

955 名前:950 :04/08/14 23:30
>>951-953
アリガd

956 名前:デフォルトの名無しさん :04/08/15 00:18
>>954
ウィンドウクラスの"名前"が登録されてるだけじゃね?
ふつうウィンドウクラスの情報がほしいときはGetClassInfoExだと思う。


957 名前:デフォルトの名無しさん :04/08/15 13:54
タスクバーのマウス右クリックメニューでシステムメニュー以外の独自のポップアップメニューを
追加しているアプリがありますがどんなAPIを使ったら実現できるのでしょう?


958 名前:デフォルトの名無しさん :04/08/15 14:22
GetSystemMenuとInsertMenuItem

959 名前:デフォルトの名無しさん :04/08/15 15:31
>>957
単純なものならリソース作っといて、
ウィンドウクラス登録するときにlpszMenuNameにセットする。

960 名前:デフォルトの名無しさん :04/08/15 16:06
>>958
>>959
違うよ。タスクバー上でのコンテキストメニューの話だよ。
[重ねて表示]とか[上下に並べて表示]とかあるやつ。

961 名前:デフォルトの名無しさん :04/08/15 19:01
960 デフォルトの名無しさん sage New! 04/08/15 16:06
>>958
>>959
違うよ。タスクバー上でのコンテキストメニューの話だよ。
[重ねて表示]とか[上下に並べて表示]とかあるやつ。

962 名前:デフォルトの名無しさん :04/08/15 20:13
>>960
それはシステムメニューとは言わない

963 名前:デフォルトの名無しさん :04/08/15 20:54
>>962
システムメニューとは言わなくてもいいんで、教えて下さい。

964 名前:デフォルトの名無しさん :04/08/15 20:59
>>963
画像をメニューの起きたい場所に貼り付けそこをマウスでクリックするとウインドーが出るようにする

965 名前:デフォルトの名無しさん :04/08/15 21:09
>>963
フックや他の何らかの方法でプロセスに進入し
InsertMenuItem

966 名前:デフォルトの名無しさん :04/08/15 21:39
>>964
>>965
頓珍漢な回答はいりません

967 名前:957 :04/08/15 21:39
>>958-959
そう、それです。有難う御座いました。

>>960-961, 963
あんた誰? w

968 名前:959 :04/08/16 00:46
>>967
あんたの質問そのものが的外れだからだよ
漏れもあとから見返して自分の回答があんたの質問と食い違ってると思ったぞ。

969 名前:デフォルトの名無しさん :04/08/16 01:41
ウィンドウをタスクバーよりも手前に常に表示するにはどうすれば
よいのでしょうか?
普通にSetWindowPos(hWnd, HWND_TOPMOST, ...)ではタスク
バーがアクティブになった際に裏に回ってしまいます。
試行錯誤の末、WM_WINDOWPOSCHANGINGがきたときに
((WINDOWPOS)lParam).hwndInsertAfterにHWND_TOPMOST
を指定する方法を見つけましたが、これだとスタートメニューを開
いた時に裏に回ってしまいます。

お手数をおかけしますが、どうかご教授願います。


970 名前:デフォルトの名無しさん :04/08/16 04:34
タスクバーのプロパティの「常に手前に表示」のチェックをはずす

971 名前:デフォルトの名無しさん :04/08/16 05:46
タスクバーをOwnerに指定してウィンドウを作れば

972 名前:デフォルトの名無しさん :04/08/16 07:21
>>969
君のプログラムがそうやって最前面にしたように
スタートメニューもそうやって最前面にしてるのでしょうがない。


973 名前:デフォルトの名無しさん :04/08/16 07:39
>>971
普段は親ウィンドウ指定で大丈夫だけど、
別アプリ(WMPなど)をフルスクリーンにして元に戻すと、
タスクバーの裏にいってしまうんだよなぁ、これ。

974 名前:デフォルトの名無しさん :04/08/16 10:34
>>971
タスクバーを自動的に隠すようにしてるとどうなるんだろ?


975 名前:デフォルトの名無しさん :04/08/16 12:04
リストビューで、特定の項目がクリック(ダブルクリック)されたイベントをキャッチするには
どうすれば良いのでしょうか。

976 名前:デフォルトの名無しさん :04/08/16 12:10
>>975
NM_DBLCLK

977 名前:デフォルトの名無しさん :04/08/16 12:26
>>976
何も起こりません・・・。

978 名前:デフォルトの名無しさん :04/08/16 12:26
>>970-973
回答ありがとうございました。
最初は>>972と同じことを思っていたのですが、親ウィンドウにタスクバー
を指定することで取りあえずはなんとかなるようですね。
本当にありがとうございました。


979 名前:デフォルトの名無しさん :04/08/16 12:42
ウィンドウモードとフルスクリーンモードの切り替えを行いたいのですが
関数は何を使えば?

980 名前:デフォルトの名無しさん :04/08/16 12:45
>>977
spy++とか使って確認してみろよ

981 名前:デフォルトの名無しさん :04/08/16 12:47
>>979
ChangeDisplaySettings()


982 名前:デフォルトの名無しさん :04/08/16 12:50
>>979
ShowWindow

983 名前: ◆AGE9iuhArk :04/08/16 13:05
>>980
すみません、出来ました。ありがとうございました。

984 名前:デフォルトの名無しさん :04/08/16 15:55
ダイアログウィンドウに、リソーススクリプトを使わずにコントロールを配置することは出来ますか?

985 名前:デフォルトの名無しさん :04/08/16 16:02
出来ます

986 名前:デフォルトの名無しさん :04/08/16 16:41
CreateFile() で指定するファイル名に環境変数を含める方法はありますか?
例えば "%APPDATA%\appname\hoge.ini" みたいにダイアログに入力されたら
APPDATA の部分を展開して欲しいのですが…

987 名前:デフォルトの名無しさん :04/08/16 16:47
>>986
ないと思う、というか横着しすぎです。


988 名前:デフォルトの名無しさん :04/08/16 16:48
あると思う

989 名前:デフォルトの名無しさん :04/08/16 17:04
>>986
自分で環境変数取得して置換するか、
それっぽいライブラリ(あるかどうかしらんけど)を使うかしなきゃだめ。
一発でできるって方法は用意されていないはず。

990 名前:デフォルトの名無しさん :04/08/16 17:08
System("echo %APPDATA%\appname\hoge.ini")
の出力をいただく

991 名前:デフォルトの名無しさん :04/08/16 17:20
>>986
ExpandEnvironmentStrings で環境変数を展開したあとに CreateFile するべし。

992 名前:デフォルトの名無しさん :04/08/16 17:23
>>987>>989を晒しsage次スレ誘導

Win32API質問箱 Build22
http://pc5.2ch.net/test/read.cgi/tech/1092524669/

993 名前:デフォルトの名無しさん :04/08/16 17:29
ではカウントダウンの時間です


994 名前:デフォルトの名無しさん :04/08/16 17:30
夏だね。シッタカ君が多いな。

995 名前:デフォルトの名無しさん :04/08/16 17:35
>>992
イッパツじゃ無理じゃん

996 名前:デフォルトの名無しさん :04/08/16 17:37
>>995
痛い

997 名前:デフォルトの名無しさん :04/08/16 17:48
997

998 名前:デフォルトの名無しさん :04/08/16 17:50
>>992
>>989 は何も間違ったことは言ってないぞ


999 名前:989 :04/08/16 17:53
>>998
いや、私は知ったかぶりしてしまってると思う。
よく調べもせずに書いてスマソ

1000 名前:デフォルトの名無しさん :04/08/16 17:54
間違ったことは言ってないが、回答としてはクズ。


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