トップページ⇒tech
1001コメント311KB

Win32API 質問箱 Build5

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんたちが答えてくれるかも。
でも、最低限Web検索ぐらいはしてね。

前スレ
Win32API 質問箱
http://pc.2ch.net/tech/kako/991/991576947.html

Win32API【2】
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html

Win32API 質問箱 Build3
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html

Win32API 質問箱 Build4
http://pc3.2ch.net/test/read.cgi/tech/1023361418/

参考
MSDN Online
http://www.microsoft.com/japan/msdn/default.asp

猫でもわかるプログラミング
ttp://www.kumei.ne.jp/c_lang/index.html
0412デフォルトの名無しさんNGNG
>>408
DLLなら保存しないとダメれすよ
0413377NGNG
ツールバーはRebarですか、どうも。
試してみます。
0414デフォルトの名無しさんNGNG
VBで使用するOCXを、VCで作っているんですけど
そのOCXでエラーが発生した場合、VB側のOn Errorでそのエラーを捕まえたいんです。

その場合、OCX側でどのようなコードを書けば良いのでしょうか?
0415デフォルトの名無しさんNGNG
>>414
throws Throuwable
0416デフォルトの名無しさんNGNG
COMの境界をまたがって例外を投げてはいけない、と
COMの偉い人がいってますた。
0417414NGNG
レスどーもです。
VB側のOnErrorで取れました。
が、
>416サソの「COMの境界を〜」って、如何いう意味なんですか?
いまいち意味が判らんのですが...出来ましたら、解説をお願いします。
0418デフォルトの名無しさんNGNG
>>411
ライセンスを日本海ウェアか竹島ウェアに変更しる。
if(IDNO==MessageBox(,"竹島は日本の領土?",,MB_YESNO)) exit(-1);
0419デフォルトの名無しさんNGNG
>>416 C++の例外とCOMの例外を区別してないと思われ(先生はわかっていると思われ)
くそMFCだとそのあたりが隠蔽されているから、わからないと思われ。
つーか、S_OKとS_FALSE以外のHRESULT直接返せ。
0420デフォルトの名無しさんNGNG
>>411
ちょっと前にロケール識別子でFA出てる。
レジストリ変えられたらおしまいだから、色々複合してみるのもいいかもしれん。
0421デフォルトの名無しさんNGNG
>>420 すみません、FAとはなんでしょう?
0422デフォルトの名無しさんNGNG
>>421
話の流れからして Final Answer かな。
しかしFAなんて略すなや。
0423デフォルトの名無しさんNGNG
AFならAnal Fuckだったのに。
0424デフォルトの名無しさんNGNG
フラットツールバーの途中にコンボボックスを設置したいのですが、
どうやればいいのか教えてください。

現在、セパレータの幅を指定して挿入しているのですが、
フラットスタイルにすると真ん中に縦線がに入ってしまい、
上下に線が見えてしまいます。

コンボボックスを大きくすれば解決するのですが、
見栄えが悪くなるのでどうしたらいいか悩んでいます。
バイナリエディタのBzが綺麗にやっているのですが、
どうやったら良いのでしょうか。
0425デフォルトの名無しさんNGNG
FA:深キョン アナルファック
0426421NGNG
>> 425 thanks なわけねーだろ、thanks > 422
0427デフォルトの名無しさんNGNG
初歩的な質問なんですが、テキストファイルを読み込むとき、
一行ずつ読みたいのですがみなさんどうやっていますか?
一行ずつ読むAPIはありませんよね?というわけで
1.Cライブラリ関数を使う
2.ReadFileで全部メモリに読んでから一行ずつ抜く
3.ReadFileで一文字ずつ読んで改行を見つける
のどれかになるのかなと思ったのですが、ライブラリ関数は使いたくない
ということと、3.では遅くなるということを考えた場合、2しかないですか?
0428デフォルトの名無しさんNGNG
>>427
2.5 ReadFileで少しずつ読んで改行までを使う

っていうかどうしてライブラリが使いたくない?
0429デフォルトの名無しさんNGNG
>>427
なぜfgetsを使いたくない?
0430デフォルトの名無しさんNGNG
>>429
一行の長さがわかんないんで。。。
0431デフォルトの名無しさんNGNG
>>430
分からないんなら、どこのメモリに読み込むの?
0432デフォルトの名無しさんNGNG
俺は最大行の長さを調べてからmallocして読み込んでいる。
ファイルサイズ分バッファを獲得してもいいけど、無駄といえば無駄だから。
0433デフォルトの名無しさんNGNG
>>430
Perl使え。
0434デフォルトの名無しさんNGNG
がいしゅつだと思いますが、
SetDIBitsToDeviceでJPEGをディスプレイに表示させようと思っています。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_6145.asp
↑を参考に書いてみましたが、描画されませんでした。
自力でJPEG展開は出来ましたが、気になって仕方がありません。
どなたかご存知の方、手順を教えてください。
0435434NGNG
sageてしまったのでアゲ
0436デフォルトの名無しさんNGNG
そのサイトに書いてある手順でOK
出来ないのならあんたに問題有り
0437デフォルトの名無しさんNGNG
描画ってもしかしてディスプレイか?
それなら不可能。プリンタのDCへStretchDIBits汁
0438壁紙がかわらんNGNG

#include "stdafx.h"
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
{
SystemParametersInfo( SPI_SETDESKWALLPAPER, 0, "C:\\sample.bmp", SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE );

return 0;
}
全く変化しません.(?_?) win98se + VC6
0439デフォルトの名無しさんNGNG
「Delphi」
これが読めなくて
そろそろ一年。。
これはなんと発音すればいいのでしょう?
デルピ??
0440439NGNG
↑
すみません、すれ違いとは思ったのですが、
どこで聞いてもすれ違いっぽいので書き込みました。
申し訳ない。
0441デフォルトの名無しさんNGNG
「でるふぃ」です
0442439NGNG
>441
おかげ様で人前で
「でるぴ」
などと発言し、恥をかかなくてすみました。
ありがとうございます。
0443デフォルトの名無しさんNGNG
実際の発音はde'lfaiで、カタカナ表記ではデルフォイ、デルポイと言うらしい。
0444439NGNG
>443
そうなんですか、
とりあえず
「でるふぃ」でいきますねw
ありがとうございました。
0445デフォルトの名無しさんNGNG
>>439
http://www.borland.co.jp/news/delphi7j.html
0446439NGNG
>445
あっ。。
デルファイ
って書いてあるw
情報ありがとうございます。
でも自分で言うのもなんですが、
低レベルな質問ですねぇ。
0447デフォルトの名無しさんNGNG
>>437
ディスプレイには使えないのですか?
言われてみると、そんな気もします・・・。
サンクス。
0448デフォルトの名無しさんNGNG
SetWindowRgnでリージョンセットして、
そのあとさらにSetWindowRgnであっさり新しいリージョンに置き換わると思ったら
置き換わらないYO!

これってウィンドウ破棄してリージョンセットしなきゃ無理でつかね?
0449魔王ハルトンNGNG
>>448
んなこたないよ、何回リージョン変えても併記だよ。
何かエラー出てるんじゃないの。
0450デフォルトの名無しさんNGNG
リージョン破棄とかもせずSetWindowRgnでよいのか?
それでいいなら漏れのPCもうだめぽ(´д⊂
0451デフォルトの名無しさんNGNG
//DIB をファイルへセーブ
hfile = CreateFile("aa.bmp", GENERIC_WRITE, FILE_SHARE_WRITE,
NULL,CREATE_ALWAYS, 0, NULL);

とすると aa.bmp が全く指定した覚えのないディレクトリ内に作成されてしまう
んですが,原因はなんでしょうか.
途中で PaintDesktop() とかしてるんでカレントが変わってしまってるってこと?
0452デフォルトの名無しさんNGNG
GetCurrentDirectoryで確認してみれば?
0453デフォルトの名無しさんNGNG
↑お,了解.
0454デフォルトの名無しさんNGNG
GetOpenfileNameで

ofn.lpstrFilter = "BMP files(*.bmp)\0*.bmp\0\0";

同時に jpg も表示するにはどう書けばええんですか?
(*.bmp,*.jpg) とか色々試したがだめや
0455デフォルトの名無しさんNGNG
"All image files (*.bmp,*.jpg,*.pcx)\0*.BMP;*.JPG;*.PCX\0"
0456デフォルトの名無しさんNGNG
自己解決でした↑
0457デフォルトの名無しさんNGNG
>>456オメ
0458デフォルトの名無しさんNGNG
#define STRICT
#include<windows.h>
LRESULT CALLBACK WindowProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR CmdLine,int CmdShow)
{HWND hwnd;MSG msg;WNDCLASS wc;
wc.style=0;wc.lpfnWndProc=WindowProc;wc.cbClsExtra=0;wc.cbWndExtra=0;
wc.hInstance=hInstance;wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName=NULL;wc.lpszClassName="Hello";
if(RegisterClass(&wc)==0)return 0;
hwnd=CreateWindow("Hello","Hello World",WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,NULL,(HMENU)NULL,hInstance,0);
if(hwnd==NULL)return 0;ShowWindow(hwnd,CmdShow);UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}
return msg.wParam;}
LRESULT CALLBACK WindowProc(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam)
{switch(message){case WM_DESTROY:PostQuitMessage(0);return 0;}
return DefWindowProc(hwnd,message,wparam,lparam);}

こんな俺はセンス内でしょうか
0459デフォルトの名無しさんNGNG
何回も聞いて申しわけないんですが以下で壁紙が変化しないのはどういう
原因がありえますかね.SystemParametersInfo の返り値は毎回0です.エラー

#include "stdafx.h"
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow )
{SystemParametersInfo( SPI_SETDESKWALLPAPER, 0, "森.bmp", SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE );
return 0;}
0460デフォルトの名無しさんNGNG
ちなみに壁紙チェンジャの類はちゃんと動く.
アクティブディスクトップを設定しても解除しても
上のプログラムは駄目.
0461デフォルトの名無しさんNGNG
森.bmp が見つからないとか?
0462デフォルトの名無しさんNGNG
質問です。
画像を表示させるにはどうやればよいですか?
0463デフォルトの名無しさんNGNG
展開->描画
0464デフォルトの名無しさんNGNG
>>462
ネタうざい
0465壁紙変わらんNGNG
char s[]="森.bmp";
SystemParametersInfo( SPI_SETDESKWALLPAPER, 0,s , SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE );

としたら成功でした.
lpszFileName,ってのは即文字列じゃだめなのか.
0466 NGNG
>>427
CreateFileMapping + MapViewOfFile でメモリにマッピングして
自力の loop で改行探せば?
0467デフォルトの名無しさんNGNG
WM_MOUSEWHEELが定義されていないってでるんですが
このメッセージは16進数でいうといくつですか?
教えてください。
0468デフォルトの名無しさんNGNG
winuser.hより0x020A
0469デフォルトの名無しさんNGNG
ありがとうございます。
なぜかwinuser.hをインクルードしても定義されていませんってでるんですよね。

windows.hをインクルードしてもたしか自動的にインクルードされるような
気もするんですが。
気のせいだったらすみません。
とりあえず自分でdefineしてみることにします。
0470デフォルトの名無しさんNGNG
WM_MOUSEWHEELはwin98以降の定数だから、なんかdefineしないと定義されないのでは?
0471デフォルトの名無しさんNGNG
DISKTOPのHARDCOPYを取得するプログラムを書いているのですが、
OFFICEアシスタントだけ、キャプチャーできません。
CreateCompatibleBitmapとBitBltを使用しています。

どなたか、お知恵をお貸しください。

環境はVC 6.0、Windows2000です。

0472467NGNG
>>470
あ、そうですね。
_WIN32_WINDOWSの大きさを0x400以上に定義してみようかと思います。
ありがとうございました。
0473デフォルトの名無しさんNGNG
>>450
セットするほうのリージョンは毎回新しいの生成してる?
0474デフォルトの名無しさんNGNG
もしかしてリージョン毎回生成しないと無理でつか?

最初に作って使いまわしてる・・・(;´Д`)
0475デフォルトの名無しさんNGNG
>>471
そこらへんにころがっているフリーのキャプチャソフトでもとれないし。

もしかしてマウスカーソル?
0476デフォルトの名無しさんNGNG
隠しAPI(の一部であろう(藁)が公開されますた。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnapiover/html/api-overview.asp

ZDNet(http://www.zdnet.co.jp/news/0208/29/ne00_msapi.html)によると、
>WindowsがWindows Server製品と連係する際に使用する113種の通信プロトコル
らすぃ。
ぱっと見たところ、Shell Functionsが一番数が多いみたいだ。

なんか面白そうな奴見つけたら紹介して( ゚д゚)ホスィ…
0477デフォルトの名無しさんNGNG
あ、ミスったよ。
>WindowsがWindows Server製品と連係する際に使用する113種の通信プロトコル
とは別物だな。
0478デフォルトの名無しさんNGNG
シェル関係のAPIを見てみたけどは2000/XP用のが多いね
0479デフォルトの名無しさんNGNG
SHCreateDirectoryってMakeSureDirectoryPathExistsと同じかね?
0480デフォルトの名無しさんNGNG
http://www.microsoft.com/JAPAN/developer/library/jpntwkpf/_win32_netjoindomain.htm
このAPIでワークグループを変更できるみたいなんですが
使い方がさっぱりです。

できればVB用の使い方を教えてください。
0481デフォルトの名無しさんNGNG
DirectX関係もかくしてたのですか、MSは。
0482480NGNG
自己解決しました。
Private Declare Function NetJoinDomain Lib "netapi32.dll"_
(ByVal lpServer As String,_
ByVal lpDomain As String_
ByVal lpAccountOU As String,_
ByVal lpAccount As String,_
ByVal lpPassword As String,_
ByVal fJoinOptions As Long_
) As String

こうやったんですが、原文はOPTIONALな部分も
VBではoptionalを指定しちゃうとその後ろの引数を全部optionalに
しなきゃいけないのでoptionalは外しました。
0483デフォルトの名無しさんNGNG
見たことあるAPIも含まれているようなんだけど、
どれが隠しだったの?
0484デフォルトの名無しさんNGNG
今までSHCreateDirectoryExは公開してたが、
今回は隠しAPIであるSHCreateDirectoryを新たに公開した。
・・・ってあんまり得した気がしない。
0485デフォルトの名無しさんNGNG
今回オープンになったので役に立ちそうなのってある?
あんまり見当たらない・・・
0486デフォルトの名無しさんNGNG
IsUserAnAdminが簡単でよい
0487デフォルトの名無しさんNGNG
jpgをビットマップファイルに取り込むためにOleLoadPictureを
使ってみたんですけれど、取り込んだデータ色数はディスプレ
イの設定に依存してしまいます。
get_HandleからDIBSECTIONを参照する方法と、Renderを用いる
方法の2とおり試してみましたが、ダメでした。
やはりライブラリですか?
何か良い方法がありましたら教えてください。
0488デフォルトの名無しさんNGNG
Susie Plug-In
0489デフォルトの名無しさんNGNG
>>488
そういう方法も面白そうです、できればWindows APIで…
0490デフォルトの名無しさんNGNG
XPでユーザが切り替わったのを検知する方法ってあります?
WM_USERCHANGED なんてあれば楽なんですが。
0491デフォルトの名無しさんNGNG
>>487
質問するときは、あげてもいいんじゃない?
というわけで、代わりにage
0492デフォルトの名無しさんNGNG
>>487
DirectShow
0493デフォルトの名無しさんNGNG
ウィンドウのメニューは普通、左側から並んでいますが、
たまぁに右側に一個だけ離れているソフトがありますけど、
あれはどうやっているのでしょうか?
0494デフォルトの名無しさんNGNG
urawaza
0495493NGNG
>>493
自己解決しました。
ヘルプってか〜。
0496デフォルトの名無しさんNGNG
>>487
>>12
0497487NGNG
>>492
DirectShowですか。情報不足なので調べてみます。

>>496
GifもJpegもやっかいなことになってしまいましたねぇ。
今回は個人用ということで、見逃してください…。
0498デフォルトの名無しさんNGNG
LoadLibraryでtxtなどのファイルを渡すと「不正なイメージ」という
エラーダイアログが表示されます。
LoadLibraryが失敗したときにはNULLが返ってくるだけで良いので、
このダイアログを表示させないようにするにはどうすればよいのでしょうか?
0499デフォルトの名無しさんNGNG
seterrormode
0500デフォルトの名無しさんNGNG
>>499
arigatou
0501デフォルトの名無しさんNGNG
>>471
CAPTUREBLT
0502デフォルトの名無しさんNGNG
>>485
プロキシの設定だけはIEを参照して実際の接続はWinsockで
やるような場合、今までは自動構成スクリプトに対応するのが
面倒だったけどWinInetの新たに公開された関数で楽になった。
あとSwitchToThisWindow使うとフォアグラウンドロックを回避
できるのかな? (未確認)
0503デフォルトの名無しさんNGNG
>>502
どの関数?
0504デフォルトの名無しさんNGNG
隠しAPIリストのWindows FunctionsのFindWindow
(に限らず他にもあるかもしれないけど未確認)は、
API自体は既出なわけだけど、それはAPIに隠し機能があったとか
ドキュメントに隠し事項があったとかそういうことけ?
0505デフォルトの名無しさんNGNG
>>503
該当ページをWinInetで検索すればすぐ見つかるだろ…
まあいいや
DetectAutoProxyUrl
InternetGetProxyInfo
公開前からDependency WalkerでWININET.DLLを覗いて
「MSずるいよなー」とか思ってたから漏れ的には一番うれしい
0506デフォルトの名無しさんNGNG
>>504
FreeResourceとかFillMemoryに至っては何が新しいのか
さっぱり分からないです。
あとMultimediaのところにSndPlaySound(大文字)ってあるけど
これはsndPlaySound(小文字)とは違うの? なんかクリックすると
sndPlaySound(小文字)の説明が出てくるんだけど。
0507デフォルトの名無しさんNGNG
>>505
SDKは有償でなかった?
0508デフォルトの名無しさんNGNG
>>507
過去ログ見てないんか>>476
0509デフォルトの名無しさんNGNG
それにしても解説が手抜きだねえ
はじめて公開した関数はほとんどパラメータの説明しかないし
FreeResourceは現在return 0;だけの実装なのにいかにも
いろいろやってそうな説明してるし(たぶん昔のSDKの解説切り
貼りしたんだろう)NtCreateFileに至ってはZwCreateFileの
置換し忘れがあるし(w
0510デフォルトの名無しさんNGNG
MS「はいはい公開すりゃいーんでしょ、公開すりゃ。ったく、たりーなぁー」

きっとこんな感じでリスト作ったはず。
0511デフォルトの名無しさんNGNG
Deprecated なものや、既存の公開APIの組み合わせで実現可能なもの、
将来無くなるかもしれんと断りのあるもの、明らかに単なる計算ルーチンなもの
も結構あってなんだかつまらんです
■ このスレッドは過去ログ倉庫に格納されています