flagflag  If you want to see English page, please click "English" Button at Left.
6: 2011-05-07 (土) 20:15:27 s10037 ソース 7: 2012-02-18 (土) 21:30:04 s10037 ソース
Line 78: Line 78:
ヘッダーファイルはbullet-2.xx → srcに入っている~ ヘッダーファイルはbullet-2.xx → srcに入っている~
-**win32API [#xd9a6814+**アラインメント [#nc3a80e9
-***ウィンドウ生成 [#t07e989f+***構造体に関して [#pfeed50a
-#include<windows.h>~ +たとえば 
-LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);~ +typedef struct Hoge 
-ATOM InitApp(HINSTANCE);~ +
-BOOL InitInstance(HINSTANCE, int);~+    int int1; 
 +   double double1
 +   char char1
 +   double double2
 +}Hoge;
-LPCTSTR lpszClassName = TEXT("win01.cpp");~+があったとして 
 +サイズがいくつになるか 
 +[obara@TandemMirror arainmento]$ ./a.out 
 +24 
 +stHoge  0xbfde0e2c 
 +int1      0xbfde0e2c 
 +double1  0xbfde0e30 
 +char1    0xbfde0e38 
 +double2  0xbfde0e3c
-int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst,LPSTR lpsCmdLine, int nCmdShow)~+ってな感じになりchar1とdouble2の間に隙間が出来た 
 +これはコンパイラが勝手に境界調整(アラインメント)して適当に詰め物(パディングというらしい)を入れた 
 +CPUによってパディングのやり方が違うらしい
-{~ +パディングには下手に触ってはいけないらしい
-    MSG msg;~ +
-    BOOL bRet;~+
-    if(!InitApp(hCurInst))~ +**malloc calloc realloc [#mae99393] 
-     return FALSE;~ +***malloc [#o77c9597] 
-    if(!InitInstance(hCurInst, nCmdShow))~ +voidのポインタ返ってくる 
-     return FALSE;~ +いじょ 
-    while ((bRet = GetMessage(&msg, NULL, 0,0)) != 0)~ +***calloc [#g4e06f23] 
-    {~ +voidのポインタが返ってくる 
-     if (bRet == -1)~ +んで中のビットが全部0になっているらしい 
-     {~ +いじょ 
-     break;~ +***realloc [#ycfe0152] 
-     }~ +void realloc(変更したいポインタ,どんくらいヒープするかのサイズ
-     else~ +あんまり頻繁に使わない方がよさげ
-     {~ +
-     TranslateMessage(&msg);~ +
-     DispatchMessage(&msg);~ +
-     }~ +
-    }~ +
-    return (int)msg.wParam;~ +
-}~ +
-//ウィンドウクラス登録~ +
-ATOM InitApp(HINSTANCE hInst)~ +
-{~ +
-    WNDCLASSEX wc;~ +
-    wc.cbSize = sizeof(WNDCLASSEX);~ +
-    wc.style = CS_HREDRAW | CS_VREDRAW;~ +
-    wc.lpfnWndProc = WndProc;~ +
-    wc.cbClsExtra = 0;~ +
-    wc.cbWndExtra = 0;~ +
-    wc.hInstance = hInst;~ +
-    wc.hIcon = (HICON)LoadImage(NULL, MAKEINTRESOURCE(IDI_APPLICATION), +
-     IMAGE_ICON, 0,0, LR_DEFAULTSIZE | LR_SHARED);~ +
-    wc.hCursor = (HCURSOR)LoadImage(NULL, MAKEINTRESOURCE(IDC_ARROW), +
-    IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE | LR_SHARED);~ +
-    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);~ +
-    wc.lpszMenuName = NULL;~ +
-    wc.lpszClassName = lpszClassName;~ +
-    wc.hIconSm = (HICON)LoadImage(~ +
-     NULL,MAKEINTRESOURCE(IDI_APPLICATION), IMAGE_ICON, +
-     0, 0, LR_DEFAULTSIZE | LR_SHARED);~+
-    return (RegisterClassEx(&wc));~ +頻繁に巨大な領域をreallocで伸ばすと時間もかかりヒープの中につかえない巨大な空き領域がどんどんできてしまうらしい
-}~ +
-//ウインドウの生成~ +
-BOOL InitInstance(HINSTANCE hInst, int nCmdShow)~ +
-{~ +
-    HWND hWnd;~+
-    hWnd = CreateWindow(lpszClassName,~ +***フラグメンテーション [#c0558cda] 
-     TEXT("クソゲー"),~ +てきとーにメモリの確保、開放を繰り返すとメモリが分断されていき使用できない細かい空きブロックができる 
-     WS_OVERLAPPEDWINDOW,~ +この現象をフラグメンテーションというらしい
-     CW_USEDEFAULT,~ +
-     CW_USEDEFAULT,~ +
-     CW_USEDEFAULT,~ +
-     CW_USEDEFAULT,~ +
-     NULL,~ +
-     NULL,~ +
-     hInst,~ +
-     NULL);~ +
-    if(!hWnd)~ +
-     return FALSE;~ +
-    ShowWindow(hWnd, nCmdShow);~ +
-    UpdateWindow(hWnd);~ +
-    return TRUE;~ +
-}~+
-//ウインドウプロシージャ~ +(メモリはいっぱいあるぜ 気にするこたぁねぇw) 
-LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)~ + 
-{~ +**インクルード!ガーーーードッ!! [#ueddc470] 
-    switch (msg)~ +***再定義防止、無駄なプリコンパイルを減らす [#qad655c3] 
-    {~ +ヘッダーに 
-    case WM_DESTROY:~ +#ifndef OBARA_H 
-     PostQuitMessage(0);~ +#define OBARA_H 
-     break;~ + 
-    default:~ +~~ 
-     return(DefWindowProc(hWnd, msg, wp, lp));+ 
-    }~ +#endif 
-    return 0;~ +と最初と最後に書いて置くだけで再定義防止、とビルド時間を短縮できる 
-}~+ 
 +ifndef とは逆にifdefというのももある 
 +ifndefとは逆で、ifdefは定義されていればendifまでを実行するらしい


トップ   新規 ページ一覧 単語検索 最終更新   ヘルプ   最終更新のRSS 1.0 最終更新のRSS 2.0 最終更新のRSS Atom

サイト内 検索

ログイン

ユーザー名:

パスワード:


パスワード紛失
新規登録

サブ メニュー

ミニカレンダー

前月2024年 5月翌月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
<今日>

オンライン状況

99 人のユーザが現在オンラインです。 (24 人のユーザが xpwiki を参照しています。)

登録ユーザ: 0
ゲスト: 99

もっと...

アクセスカウンタ

今日 : 1884188418841884
昨日 : 1412914129141291412914129
総計 : 2344749423447494234474942344749423447494234474942344749423447494
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Design by XoopsDesign.com