ダウンロードffxii2mov.zip
ウィンドウのちらつきを抑える拡張スタイル
まず宣言します。
#define WS_EX_COMPOSITED 0x2000000
CreateWindowEx時に拡張ウィンドウスタイルに加えるだけです。
CreateWindowEx( WS_EX_COMPOSITED,0,0,WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT, 0,0,0,0);
これでちらつきを無くせる場合があります。
BCC exeサイズを小さくするには
まずCW32TINY.zipをダウンロードします。
コンパイルしたいソースファイルのある同じフォルダにダウンロードして落としてきた3つのファイルをコピーします。後は、
bcc32 /c -x- (名前).c ilink32 /aa c032win.obj (名前).obj, (名前).exe,,cw32tiny.lib import32.lib
でコンパイルするとexeファイルが小さくなります。
例外処理を使用したい場合は-x-オプションを省いてください。
VC++(2013)でGDI+のHBITMAP画像読込
ファイルパス名からマルチバイト文字をワイド文字に変更し、画像を読込んだ後、HBITMAPハンドルを取得する関数です。この関数ではファイル名のみを指定した場合、VC++2013から直接デバッグ実行は出来ません。
HBITMAP img(char*s) { HBITMAP b = 0; WCHAR t[256] = { 0 }; MultiByteToWideChar(CP_THREAD_ACP, MB_PRECOMPOSED, s,-1,t,sizeof(t)); Gdiplus::Bitmap m(t); m.GetHBITMAP(0, &b); return b; }
exeを実行するには、エクスプローラから
[ドキュメント]→[Visual Studio 2013]→[Projects]→[(プロジェクト名)]→[Debug]or[Release]の(プロジェクト名).exeがある同じフォルダに画像ファイル等を置けば、ビルド後、[Debug]or[Release]フォルダの(プロジェクト名).exeをクリックすれば、実行し、ちゃんと画像ファイル等を読込んでくれます。
VC++ unicodeをマルチ文字セットに設定
VC++2013で(LPCSTR)や(LPCWSTR)や(LPWSTR)を使うのが面倒臭いので、VC++2013のメニューから
[プロジェクト]→[(名前)のプロパティ]→[構成プロパティ]→[全般]→[文字セット]→[マルチ バイト文字セットを使用する]→[適用]
で変更すると、いちいち文字列型型名を宣言せずに、マルチバイト文字セットでビルドやコンパイルができます。
C言語で指定範囲に納まるように画像を均等倍コピー
指定された大きさに納まるように、元デバイスコンテキストから均等倍して画像を縮小コピーする関数です。
void stc(HDC d,int w,int h,HDC f) { BITMAP b; float x,y,i; GetObject((HBITMAP)GetCurrentObject(f,OBJ_BITMAP),sizeof(BITMAP),&b); x=b.bmWidth; y=b.bmHeight; if(x>w){ i=w/(x/100); x=(x/100)*i; y=(y/100)*i; } if(y>h){ i=h/(y/100); x=(x/100)*i; y=(y/100)*i; } SetStretchBltMode(d,COLORONCOLOR); StretchBlt(d,0,0,x,y,f,0,0,b.bmWidth,b.bmHeight,SRCCOPY); }
CreateDIBSectionの作り方
DIBセクション作成関数です。
BYTE*dib(HDC d,int x,int y) { HBITMAP b; LPBITMAPINFO o; BYTE*e; x=((x>>2)+((x&3)>0))<<2; o=(LPBITMAPINFO)LocalAlloc(LPTR,sizeof(BITMAPINFO)); o->bmiHeader.biSize=sizeof(BITMAPINFOHEADER); o->bmiHeader.biWidth=x; o->bmiHeader.biHeight=-y; o->bmiHeader.biPlanes=1; o->bmiHeader.biBitCount=32; SelectObject(d,b=CreateDIBSection(0,o,DIB_RGB_COLORS,(void**)&e,0,0)); DeleteObject(b); LocalFree(o); return e; }
Qdmail ファイル添付 日本語対応
ファイル添付時、ファイルの文字化けをなくすには
$mail -> attach(mb_convert_encoding($file,"SJIS","AUTO"));
とします。
C言語 音楽ループ再生
まずヘッダファイルをインクルードして
#include<digitalv.h>
デバイスのタイプを指定します。
openParam.lpstrDeviceType = TEXT("MPEGVideo");
MCI_PLAY時にmciSendCommandの3番目の引数にMCI_DGV_PLAY_REPEATを加えるだけです。
mciSendCommand( openParam.wDeviceID, MCI_PLAY, MCI_DGV_PLAY_REPEAT, (DWORD_PTR)&playParam );
VC++の場合
#define MCI_DGV_PLAY_REPEAT 0x10000
で設定できます。
C言語Win32APIだけで乱数
DWORD rnd(DWORD n) { HCRYPTPROV p; DWORD r; //乱数初期化 CryptAcquireContext(&p, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT); //乱数生成 CryptGenRandom(p, sizeof(r), (BYTE*)&r); //解放 CryptReleaseContext(p, NULL); return r%n; }