本文整理汇总了C++中CreateWindow函数的典型用法代码示例。如果您正苦于以下问题:C++ CreateWindow函数的具体用法?C++ CreateWindow怎么用?C++ CreateWindow使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了CreateWindow函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: insert_dlg_proc
LRESULT CALLBACK insert_dlg_proc(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam)
{
static TABLE_WINDOW *win=0;
static HWND hlistview=0,hgrippy=0,hedit=0;
static HFONT hfont=0;
static WNDPROC origlistview=0;
if(FALSE)
{
static DWORD tick=0;
if((GetTickCount()-tick)>500)
printf("--\n");
if(hwnd==hlistview)
printf("-");
print_msg(msg,lparam,wparam,hwnd);
tick=GetTickCount();
}
if(origlistview!=0 && hwnd==hlistview){
if(msg==WM_GETDLGCODE){
return DLGC_WANTARROWS;
}
return CallWindowProc(origlistview,hwnd,msg,wparam,lparam);
}
switch(msg){
case WM_INITDIALOG:
if(lparam==0){
EndDialog(hwnd,0);
break;
}
hedit=0;
win=lparam;
hlistview=CreateWindow(WC_LISTVIEW,"",WS_TABSTOP|WS_CHILD|WS_CLIPSIBLINGS|WS_VISIBLE|LVS_REPORT|LVS_SHOWSELALWAYS,
0,0,
0,0,
hwnd,
IDC_LIST1,
ghinstance,
NULL);
if(hlistview!=0){
ListView_SetExtendedListViewStyle(hlistview,LVS_EX_FULLROWSELECT);
hfont=SendMessage(win->hlistview,WM_GETFONT,0,0);
if(hfont!=0)
SendMessage(hlistview,WM_SETFONT,hfont,0);
populate_insert_dlg(hwnd,hlistview,win);
ListView_SetItemState(hlistview,0,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
origlistview=SetWindowLong(hlistview,GWL_WNDPROC,(LONG)insert_dlg_proc);
}
set_title(hwnd,win);
hgrippy=create_grippy(hwnd);
resize_insert_dlg(hwnd);
break;
case WM_NOTIFY:
{
NMHDR *nmhdr=lparam;
if(nmhdr!=0){
switch(nmhdr->code){
case NM_DBLCLK:
if(hedit==0 && nmhdr->hwndFrom==hlistview)
SendMessage(hwnd,WM_COMMAND,IDOK,0);
break;
case LVN_COLUMNCLICK:
{
static sort_dir=0;
NMLISTVIEW *nmlv=lparam;
if(nmlv!=0){
sort_listview(hlistview,sort_dir,nmlv->iSubItem);
sort_dir=!sort_dir;
}
}
break;
case LVN_KEYDOWN:
if(nmhdr->hwndFrom==hlistview)
{
LV_KEYDOWN *key=lparam;
switch(key->wVKey){
case VK_DOWN:
case VK_RIGHT:
case VK_NEXT:
{
int count,row_sel;
count=ListView_GetItemCount(hlistview);
row_sel=ListView_GetSelectionMark(hlistview);
if(count>0 && row_sel==count-1)
SetFocus(GetDlgItem(hwnd,IDOK));
}
break;
case VK_DELETE:
clear_selected_items(hlistview);
break;
case VK_F5:
if(task_insert_row(win,hlistview))
SetWindowText(GetDlgItem(hwnd,IDOK),"Busy");
break;
case 'A':
if(GetKeyState(VK_CONTROL)&0x8000){
int i,count;
count=ListView_GetItemCount(hlistview);
for(i=0;i<count;i++){
ListView_SetItemState(hlistview,i,LVIS_SELECTED,LVIS_SELECTED);
}
break;
//.........这里部分代码省略.........
示例2: WinProc
LRESULT CALLBACK WinProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
{
static string in_encr, in_decr, pb_key, pr_key, key, out;
static RECT clientRect = { 0 };
static RECT textRect1;
static RECT textRect2;
static RECT textRect3;
static int xEncrypt, yEncrypt;
static int xDecrypt, yDecrypt;
static int xGenerate, yGenerate;
static HWND EncryptButton = NULL;
static HWND DecryptButton = NULL;
static HWND GenerateButton = NULL;
static HWND ChooseEncrButton = NULL;
static HWND ChooseDecrButton = NULL;
static HWND ChooseKeyButton = NULL;
static HWND HelpWindow = NULL;
static HWND EncryptTextField = NULL;
static HWND DecryptTextField = NULL;
static HWND KeyTextField = NULL;
static HDC hDCScreen = GetDC(NULL);
static int Horres = GetDeviceCaps(hDCScreen, HORZRES);
static int Vertres = GetDeviceCaps(hDCScreen, VERTRES);
HDC hdc = NULL;
PAINTSTRUCT paintStruct; // A PAINTSTRUCT structure is something we need to paint (draw) when handling the WM_PAINT message.
PAINTSTRUCT ps;
OPENFILENAME open_params = { 0 }; // This structure is used by the either the
// GetOpenFileName() function (for opening files)
// or the GetSaveFileName() function (for saving files)
// We're going to use it for opening a file -- Info about
// the file we try to open WILL be stored in this struct
char filter[BUFF_MAX] = { 0 }; // This will be filled in with a "filter", explained later :)
char file_name[BUFF_MAX] = { 0 }; // This will be used as the "default filename" for the
// dialog box
wchar_t str[BUFF_MAX];
switch (message)
{
case WM_CREATE: // This message is sent when the window is created.
// We would want to put our initialization code here...
GetClientRect(hwnd, &clientRect);
DragAcceptFiles(ChooseKeyButton, TRUE);
EncryptButton = CreateWindow("Button", "Зашифровать", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, hwnd, (HMENU)ENCRYPT_BUTTON,
((LPCREATESTRUCT)lparam)->hInstance, NULL);
DecryptButton = CreateWindow("Button", "Расшифровать", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, hwnd, (HMENU)DECRYPT_BUTTON,
((LPCREATESTRUCT)lparam)->hInstance, NULL);
GenerateButton = CreateWindow("Button", "Сгенерировать", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, hwnd, (HMENU)GENERATE_BUTTON,
((LPCREATESTRUCT)lparam)->hInstance, NULL);
ChooseEncrButton = CreateWindow("Button", "Выбрать файл", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, hwnd, (HMENU)CHOOSE_ENCR_BUTTON,
((LPCREATESTRUCT)lparam)->hInstance, NULL);
ChooseDecrButton = CreateWindow("Button", "Выбрать файл", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, hwnd, (HMENU)CHOOSE_DECR_BUTTON,
((LPCREATESTRUCT)lparam)->hInstance, NULL);
ChooseKeyButton = CreateWindowEx(WS_EX_ACCEPTFILES, "Button", "Выбрать файл", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, hwnd, (HMENU)CHOOSE_KEY_BUTTON,
((LPCREATESTRUCT)lparam)->hInstance, NULL);
EncryptTextField = CreateWindow("Edit", "", WS_BORDER | WS_CHILD | WS_VISIBLE | NULL | NULL,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, hwnd, (HMENU)TEXT_FIELD,
((LPCREATESTRUCT)lparam)->hInstance, NULL);
KeyTextField = CreateWindow("Edit", "", WS_BORDER | WS_CHILD | WS_VISIBLE | NULL | NULL,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, hwnd, (HMENU)TEXT_FIELD,
((LPCREATESTRUCT)lparam)->hInstance, NULL);
DecryptTextField = CreateWindow("Edit", "", WS_BORDER | WS_CHILD | WS_VISIBLE | NULL | NULL,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, hwnd, (HMENU)TEXT_FIELD,
((LPCREATESTRUCT)lparam)->hInstance, NULL);
break;
case WM_GETMINMAXINFO:
{
MINMAXINFO *minmax = (MINMAXINFO *)lparam;
minmax->ptMinTrackSize.x = WINDOW_WIDTH;
//.........这里部分代码省略.........
示例3: WndProc
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
int nItemCount;
int nSelected;
int *nIndexes;
BOOL bFlag;
WCHAR *pszFile;
WCHAR *handle;
WCHAR *token;
Image *imgCurrent;
Image out;
switch (iMessage)
{
case WM_CREATE:
HANDLE hToken;
viewer.changeCaption(L"Preview");
//Create Controls
hListLayer = CreateWindow(L"ListBox", NULL, WS_CHILD | WS_VISIBLE | WS_VSCROLL | LBS_EXTENDEDSEL | LBS_HASSTRINGS | LBS_NOTIFY | LBS_MULTIPLESEL | LBS_NOINTEGRALHEIGHT, 0, 80, 240, 420, hWnd, (HMENU)ID_LAYER_LIST, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
hButtonStart = CreateWindow(L"Button", L"Start", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 0, 0, 80, 40, hWnd, (HMENU)ID_START_BUTTON, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
hButtonSave = CreateWindow(L"Button", L"Save Selected in merged file", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | BS_MULTILINE, 80, 0, 80, 40, hWnd, (HMENU)ID_SAVE_BUTTON, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
hButtonSaveAll = CreateWindow(L"Button", L"Save All in individual file", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | BS_MULTILINE, 160, 0, 80, 40, hWnd, (HMENU)ID_SAVE_ALL, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
hButtonResetAll = CreateWindow(L"Button", L"Erase All", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | BS_MULTILINE, 0, 40, 80, 40, hWnd, (HMENU)ID_RESET_ALL, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
hButtonResetSelected = CreateWindow(L"Button", L"Erase Selected", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | BS_MULTILINE, 80, 40, 80, 40, hWnd, (HMENU)ID_RESET_SEL, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
hButtonResetUnselected = CreateWindow(L"Button", L"Erase Unelected", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | BS_MULTILINE, 160, 40, 80, 40, hWnd, (HMENU)ID_RESET_UNSEL, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
hFont = CreateFont(16, 0, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET, 3, 2, 1, FF_ROMAN, L"Segoe UI");
SendMessage(hListLayer, WM_SETFONT, (WPARAM)hFont, TRUE);
SendMessage(hButtonStart, WM_SETFONT, (WPARAM)hFont, TRUE);
SendMessage(hButtonSave, WM_SETFONT, (WPARAM)hFont, TRUE);
SendMessage(hButtonSaveAll, WM_SETFONT, (WPARAM)hFont, TRUE);
SendMessage(hButtonResetAll, WM_SETFONT, (WPARAM)hFont, TRUE);
SendMessage(hButtonResetSelected, WM_SETFONT, (WPARAM)hFont, TRUE);
SendMessage(hButtonResetUnselected, WM_SETFONT, (WPARAM)hFont, TRUE);
//Create Events
hAttachSucceeded = CreateEvent(NULL, TRUE, FALSE, NULL);
hDebugEnd = CreateEvent(NULL, TRUE, FALSE, NULL);
hDebugInit = CreateEvent(NULL, TRUE, FALSE, NULL);
//Adjust Privileges
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
{
if (SetPrivilege(hToken, SE_DEBUG_NAME, TRUE))
return 0;
else
MessageBox(hWnd, L"Fail to get debug privilege!!", L"Error", MB_OK | MB_ICONERROR);
}
else
MessageBox(hWnd, L"Fail to get process token!!", L"Error", MB_OK | MB_ICONERROR);
SendMessage(hWnd, WM_DESTROY, 0, 0);
return 0;
case WM_ACTIVATE:
if (wParam == WA_CLICKACTIVE)
{
viewer.foreground();
SetForegroundWindow(hWnd);
SetFocus(hListLayer);
}
return 0;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case ID_START_BUTTON:
if (!bStarted)
{
hAokanaWnd = FindAokana(&dwThreadID, &dwProcessID);
if (dwThreadID != 0)
{
hDebugThread = CreateThread(NULL, 0, DebugThread, NULL, 0, NULL);
WaitForSingleObject(hDebugInit, INFINITE);
if (WaitForSingleObject(hAttachSucceeded, 0) != WAIT_OBJECT_0)
{
SetEvent(hDebugEnd);
MessageBox(hWnd, L"Fail to attach process!!", L"Error", MB_OK | MB_ICONERROR);
break;
}
SendMessage(hButtonStart, WM_SETTEXT, 0, (LPARAM)L"Stop");
bStarted = TRUE;
}
}
else
{
SetEvent(hDebugEnd);
WaitForSingleObject(hDebugThread, INFINITE);
ResetEvent(hDebugEnd);
ResetEvent(hDebugInit);
ResetEvent(hAttachSucceeded);
CloseHandle(hDebugThread);
//.........这里部分代码省略.........
示例4: WinMain
int PASCAL
WinMain(HANDLE hInstance, HANDLE hPrevInstance, LPSTR CmdLine, int nCmdShow)
{
MSG msg; /* MSG structure to pass to windows proc */
WNDCLASS wndclass;
char *AppName; /* Name for the window */
cbErrHandling (PRINTALL, STOPALL); /* Set library's error handling */
CmdLine = NULL; /* Not used */
AppName = "WINCDEMO"; /* The name of this application */
if(!hPrevInstance)
{
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc= MainMessageHandler;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon (hInstance, AppName);
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);
wndclass.hbrBackground = GetStockObject (WHITE_BRUSH);
wndclass.lpszMenuName = AppName;
wndclass.lpszClassName = AppName;
RegisterClass (&wndclass);
}
/* create application's Main window */
hWndMain = CreateWindow (AppName, /* Window class name */
"AInScan Foreground",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, /* Use default X, Y */
CW_USEDEFAULT, /* Use default X, Y */
GetSystemMetrics(SM_CXSIZE) * 12, /* x - fit text */
GetSystemMetrics(SM_CYSIZE) * 20, /* y - fit text */
NULL, /* Parent window's handle */
NULL, /* Default to Class Menu */
hInstance, /* Instance of window */
NULL); /* Create struct for WM_CREATE */
if (hWndMain == NULL)
{
MessageBox(NULL, "Could not create window in WinMain", NULL, MB_ICONEXCLAMATION);
return (1);
}
ShowWindow(hWndMain, nCmdShow); /* Display main window */
UpdateWindow(hWndMain);
/* Start a 500ms timer to update display */
// if(!SetTimer(hWndMain, TIMER_NUM, 500, NULL))
// {
// MessageBox(NULL, "Error starting Windows timer", NULL, MB_OK |
// MB_ICONEXCLAMATION);
// return (1);
// }
while(GetMessage(&msg, NULL, 0, 0)) /* Main message loop */
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
UnregisterClass (AppName, hInstance);
return (msg.wParam);
}
示例5: InitializeApp
BOOL InitializeApp(LPSTR lpszCommandLine)
{
WNDCLASS wc;
int cyExecStart, cxExecStart;
USHORT TitleLen, cbCopy;
HWND hwndFax;
// Remove Real Mode Segment Address
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hAppInstance;
wc.hIcon = LoadIcon(hAppInstance, MAKEINTRESOURCE(ID_WOWEXEC_ICON));
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = GetStockObject(WHITE_BRUSH);
wc.lpszClassName = "WOWExecClass";
#ifdef DEBUG
wc.lpszMenuName = "MainMenu";
#else
wc.lpszMenuName = NULL;
#endif
if (!RegisterClass(&wc)) {
OutputDebugString("WOWEXEC: RegisterClass failed\n");
return FALSE;
}
/*
* Guess size for now.
*/
cyExecStart = GetSystemMetrics(SM_CYMENU) * 6;
cxExecStart = GetSystemMetrics(SM_CXSCREEN) / 2;
/* Load these strings now. If we need them later, we won't be able to load
* them at that time.
*/
LoadString(hAppInstance, IDS_OOMEXITTITLE, szOOMExitTitle, sizeof(szOOMExitTitle));
LoadString(hAppInstance, IDS_OOMEXITMSG, szOOMExitMsg, sizeof(szOOMExitMsg));
LoadString(hAppInstance, IDS_APPTITLE, szAppTitleBuffer, sizeof(szAppTitleBuffer));
ghwndMain = CreateWindow("WOWExecClass", lpszAppTitle,
WS_OVERLAPPED | WS_CAPTION | WS_BORDER | WS_THICKFRAME |
WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_CLIPCHILDREN |
WS_SYSMENU,
30, 30, cxExecStart, cyExecStart,
NULL, NULL, hAppInstance, NULL);
if (ghwndMain == NULL ) {
#ifdef DEBUG
OutputDebugString("WOWEXEC: ghwndMain Null\n");
#endif
return FALSE;
}
hwndFax = FaxInit(hAppInstance);
//
// Give our window handle to BaseSrv, which will post WM_WOWEXECSTARTAPP
// messages when we have commands to pick up. The return value tells
// us if we are the shared WOW VDM or not (a seperate WOW VDM).
// We also pick up the ShowWindow parameter (SW_SHOW, SW_MINIMIZED, etc)
// for the first WOW app here. Subsequent ones we get from BaseSrv.
//
//
// gwFirstCmdShow is no longer used, and is available.
//
gfSharedWOW = WOWRegisterShellWindowHandle(ghwndMain,
&gwFirstCmdShow,
hwndFax
);
//
// If this isn't the shared WOW, tell the kernel to exit when the
// last app (except WowExec) exits.
//
if (!gfSharedWOW) {
WowSetExitOnLastApp(TRUE);
}
/* Remember the original directory. */
GetCurrentDirectory(NULL, szOriginalDirectory);
GetWindowsDirectory(szWindowsDirectory, MAXITEMPATHLEN+1);
#ifdef DEBUG
ShowWindow(ghwndMain, SW_MINIMIZE);
//
// If this is the shared WOW, change the app title string to
// reflect this and change the window title.
//
//.........这里部分代码省略.........
示例6: WinMain
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow) {
WNDCLASSEX wcex;
HMENU menu, popupMenu;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
wcex.hCursor = LoadCursor(hInstance, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
if (!RegisterClassEx(&wcex))
{
MessageBox(NULL,
_T("Call to RegisterClassEx failed!"),
_T("Win32 Guided Tour"),
NULL);
return 1;
}
hInst = hInstance; // Store instance handle in our global variable
// The parameters to CreateWindow explained:
// szWindowClass: the name of the application
// szTitle: the text that appears in the title bar
// WS_SYSMENU: the type of window to create
// CW_USEDEFAULT, CW_USEDEFAULT: initial position (x, y)
// 500, 100: initial size (width, length)
// NULL: the parent of this window
// TODO: // NULL: this application does not have a menu bar
// hInstance: the first parameter from WinMain
// NULL: not used in this application
hWnd = CreateWindow(
szWindowClass,
szTitle,
WS_SYSMENU,
CW_USEDEFAULT, CW_USEDEFAULT,
WindowWidth, WindowHeight,
NULL,
NULL,
hInstance,
NULL
);
if (!hWnd)
{
MessageBox(NULL,
_T("Call to CreateWindow failed!"),
_T("Win32 Guided Tour"),
NULL);
return 1;
}
hButtonRefresh = CreateWindow(L"button", NULL, WS_CHILD | WS_VISIBLE | BS_OWNERDRAW, 0, 0, 32, 32, hWnd, (HMENU)IDC_BUTTON_REFRESH, hInst, NULL);
hButtonClear = CreateWindow(L"button", NULL, WS_CHILD | WS_VISIBLE | BS_OWNERDRAW, 0, 32, 32, 32, hWnd, (HMENU)IDC_BUTTON_CLEAR, hInst, NULL);
// The parameters to ShowWindow explained:
// hWnd: the value returned from CreateWindow
// nCmdShow: the fourth parameter from WinMain
ShowWindow(hWnd,
nCmdShow);
UpdateWindow(hWnd);
// Main message loop:
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
示例7: _tWinMain
// エントリポイント
int WINAPI _tWinMain( HINSTANCE hInst, HINSTANCE, LPTSTR, int )
{
LARGE_INTEGER nNowTime, nLastTime; // 現在とひとつ前の時刻
LARGE_INTEGER nTimeFreq; // 時間単位
// 画面サイズ
g_nClientWidth = VIEW_WIDTH; // 幅
g_nClientHeight = VIEW_HEIGHT; // 高さ
// Register the window class
WNDCLASSEX wc = { sizeof( WNDCLASSEX ), CS_CLASSDC, MsgProc, 0L, 0L,
GetModuleHandle( NULL ), NULL, NULL, NULL, NULL,
_T( "D3D Sample" ), NULL };
RegisterClassEx( &wc );
RECT rcRect;
SetRect( &rcRect, 0, 0, g_nClientWidth, g_nClientHeight );
AdjustWindowRect( &rcRect, WS_OVERLAPPEDWINDOW, FALSE );
g_hWnd = CreateWindow( _T( "D3D Sample" ), _T( "Movement_1_1b" ),
WS_OVERLAPPEDWINDOW, 100, 20, rcRect.right - rcRect.left, rcRect.bottom - rcRect.top,
GetDesktopWindow(), NULL, wc.hInstance, NULL );
// Initialize Direct3D
if( SUCCEEDED( InitD3D() ) && SUCCEEDED( MakeShaders() ) )
{
// Create the shaders
if( SUCCEEDED( InitDrawModes() ) )
{
if ( SUCCEEDED( InitGeometry() ) ) { // ジオメトリ作成
// Show the window
ShowWindow( g_hWnd, SW_SHOWDEFAULT );
UpdateWindow( g_hWnd );
InitCharacter(); // キャラクタ初期化
QueryPerformanceFrequency( &nTimeFreq ); // 時間単位
QueryPerformanceCounter( &nLastTime ); // 1フレーム前時刻初期化
// Enter the message loop
MSG msg;
ZeroMemory( &msg, sizeof( msg ) );
while( msg.message != WM_QUIT )
{
Render();
MoveCharacter();
do {
if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
QueryPerformanceCounter( &nNowTime );
} while( ( ( nNowTime.QuadPart - nLastTime.QuadPart ) < ( nTimeFreq.QuadPart / 90 ) ) &&
( msg.message != WM_QUIT ) );
while( ( ( nNowTime.QuadPart - nLastTime.QuadPart ) < ( nTimeFreq.QuadPart / 60 ) ) &&
( msg.message != WM_QUIT ) )
{
QueryPerformanceCounter( &nNowTime );
}
nLastTime = nNowTime;
g_pSwapChain->Present( 0, 0 ); // 表示
}
}
}
}
// Clean up everything and exit the app
Cleanup();
UnregisterClass( _T( "D3D Sample" ), wc.hInstance );
return 0;
}
示例8: WinMain
int WINAPI WinMain( HINSTANCE hinstance,
HINSTANCE hprevinstance,
LPSTR lpcmdline,
int ncmdshow)
{
// this is the winmain function
WNDCLASS winclass; // this will hold the class we create
HWND hwnd; // generic window handle
MSG msg; // generic message
//HDC hdc; // generic dc
//PAINTSTRUCT ps; // generic paintstruct
// first fill in the window class stucture
winclass.style = CS_DBLCLKS | CS_OWNDC |
CS_HREDRAW | CS_VREDRAW;
winclass.lpfnWndProc = WindowProc;
winclass.cbClsExtra = 0;
winclass.cbWndExtra = 0;
winclass.hInstance = hinstance;
winclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
winclass.hCursor = LoadCursor(NULL, IDC_ARROW);
winclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
winclass.lpszMenuName = NULL;
winclass.lpszClassName = WINDOW_CLASS_NAME;
// register the window class
if (!RegisterClass(&winclass))
return(0);
// create the window, note the test to see if WINDOWED_APP is
// true to select the appropriate window flags
if (!(hwnd = CreateWindow(WINDOW_CLASS_NAME, // class
WINDOW_TITLE, // title
(WINDOWED_APP ? (WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION) : (WS_POPUP | WS_VISIBLE)),
0,0, // x,y
WINDOW_WIDTH, // width
WINDOW_HEIGHT, // height
NULL, // handle to parent
NULL, // handle to menu
hinstance,// instance
NULL))) // creation parms
return(0);
// save the window handle and instance in a global
main_window_handle = hwnd;
main_instance = hinstance;
// resize the window so that client is really width x height
if (WINDOWED_APP)
{
// now resize the window, so the client area is the actual size requested
// since there may be borders and controls if this is going to be a windowed app
// if the app is not windowed then it won't matter
RECT window_rect = {0,0,WINDOW_WIDTH-1,WINDOW_HEIGHT-1};
// make the call to adjust window_rect
AdjustWindowRectEx(&window_rect,
GetWindowStyle(main_window_handle),
GetMenu(main_window_handle) != NULL,
GetWindowExStyle(main_window_handle));
// save the global client offsets, they are needed in DDraw_Flip()
window_client_x0 = -window_rect.left;
window_client_y0 = -window_rect.top;
// now resize the window with a call to MoveWindow()
MoveWindow(main_window_handle,
0, // x position
0, // y position
window_rect.right - window_rect.left, // width
window_rect.bottom - window_rect.top, // height
FALSE);
// show the window, so there's no garbage on first render
ShowWindow(main_window_handle, SW_SHOW);
} // end if windowed
// perform all game console specific initialization
Game_Init();
// disable CTRL-ALT_DEL, ALT_TAB, comment this line out
// if it causes your system to crash
SystemParametersInfo(SPI_SCREENSAVERRUNNING, TRUE, NULL, 0);
// enter main event loop
while(1)
{
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
// test if this is a quit
if (msg.message == WM_QUIT)
break;
// translate any accelerator keys
TranslateMessage(&msg);
// send the message to the window proc
DispatchMessage(&msg);
} // end if
//.........这里部分代码省略.........
示例9: CreateCancelDialog
HWND CreateCancelDialog(void)
{
HWND hwndButton,dlgHdl;
WORD *p, *pdlgtemplate,baseunitX,baseunitY;
int nchar;
int scrnWidth,scrnHeight;
int buttonX, buttonY, buttonWidth, buttonHeight;
int textX, textY, textWidth, textHeight;
DWORD lStyle,baseunits;
HDC screen;
LOGFONT lf;
/* allocate some memory to play with */
pdlgtemplate = p = (PWORD) rmalloc (1000);
screen = CreateDC ("DISPLAY", NULL, NULL, NULL);
scrnWidth = GetDeviceCaps (screen, HORZRES);
scrnHeight = GetDeviceCaps (screen, VERTRES);
DeleteDC (screen);
baseunits = GetDialogBaseUnits();
/* start to fill in the dlgtemplate information. addressing by WORDs */
lStyle = WS_CAPTION | DS_MODALFRAME | WS_SYSMENU;
baseunitX=LOWORD(baseunits);
baseunitY=HIWORD(baseunits);
*p++ = LOWORD (lStyle);
*p++ = HIWORD (lStyle);
*p++ = 0; /* LOWORD (lExtendedStyle) */
*p++ = 0; /* HIWORD (lExtendedStyle) */
*p++ = 0; /* NumberOfItems */
*p++ = ((scrnWidth*4)/3)/baseunitX; // x
*p++ = ((scrnHeight*8)/3)/baseunitY; // y
*p++ = DIALOG_WIDTH; /* cx */
*p++ = DIALOG_HEIGHT; /* cy */
*p++ = 0; /* Menu */
*p++ = 0; /* Class */
/* copy the title of the dialog */
nchar = nCopyAnsiToWideChar (p, (char *) "Printing in Progress");
p += nchar;
dlgHdl = CreateDialogIndirectParam (ghInst, (LPDLGTEMPLATE) pdlgtemplate, ghMainWindow,
(DLGPROC) PrintDlgProc, (LPARAM) 0);
rfree(pdlgtemplate);
// Add a text field
textWidth = 19*baseunitX;
textHeight = baseunitY;
textX = (((DIALOG_WIDTH*baseunitX)/4) - textWidth)
/ 2;
textY = (((DIALOG_HEIGHT*baseunitY)/8) - textHeight)
/ 4;
hwndText = CreateWindow ("static", "",WS_VISIBLE | WS_CHILD | SS_CENTER,
textX, textY, textWidth, textHeight,
dlgHdl, (HMENU) 0, ghInst, 0);
// Add a Cancel button:
buttonWidth = 10*baseunitX;
buttonHeight = (3*baseunitY)/2;
buttonX = (((DIALOG_WIDTH*baseunitX)/4) - buttonWidth)
/ 2;
buttonY = (3 * (((DIALOG_HEIGHT*baseunitY)/8) - buttonHeight))
/ 5;
hwndButton = CreateWindow ("button", "Cancel", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
buttonX, buttonY, buttonWidth, buttonHeight,
dlgHdl, (HMENU) 0, ghInst, 0);
SetLogFontData (&lf,"MS Sans Serif",0,8);
SendMessage(hwndButton,WM_SETFONT,(WPARAM)CreateFontIndirect (&lf),MAKELPARAM (TRUE,0));
SendMessage(hwndText,WM_SETFONT,(WPARAM)CreateFontIndirect (&lf),MAKELPARAM (TRUE,0));
ShowWindow (dlgHdl,SW_SHOWNORMAL);
return dlgHdl;
}
示例10: Sys_CreateConsole
/*
** Sys_CreateConsole
*/
void Sys_CreateConsole( void )
{
HDC hDC;
WNDCLASS wc;
RECT rect;
const char *DEDCLASS = "Q3 WinConsole";
int nHeight;
int swidth, sheight;
int DEDSTYLE = WS_POPUPWINDOW | WS_CAPTION | WS_MINIMIZEBOX;
memset( &wc, 0, sizeof( wc ) );
wc.style = 0;
wc.lpfnWndProc = (WNDPROC) ConWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = g_wv.hInstance;
wc.hIcon = LoadIcon( g_wv.hInstance, MAKEINTRESOURCE(IDI_ICON1));
wc.hCursor = LoadCursor (NULL,IDC_ARROW);
wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
wc.lpszMenuName = 0;
wc.lpszClassName = DEDCLASS;
if ( !RegisterClass (&wc) )
return;
rect.left = 0;
rect.right = 540;
rect.top = 0;
rect.bottom = 450;
AdjustWindowRect( &rect, DEDSTYLE, FALSE );
hDC = GetDC( GetDesktopWindow() );
swidth = GetDeviceCaps( hDC, HORZRES );
sheight = GetDeviceCaps( hDC, VERTRES );
ReleaseDC( GetDesktopWindow(), hDC );
s_wcd.windowWidth = rect.right - rect.left + 1;
s_wcd.windowHeight = rect.bottom - rect.top + 1;
s_wcd.hWnd = CreateWindowEx( 0,
DEDCLASS,
CONSOLE_WINDOW_TITLE,
DEDSTYLE,
( swidth - 600 ) / 2, ( sheight - 450 ) / 2 , rect.right - rect.left + 1, rect.bottom - rect.top + 1,
NULL,
NULL,
g_wv.hInstance,
NULL );
if ( s_wcd.hWnd == NULL )
{
return;
}
//
// create fonts
//
hDC = GetDC( s_wcd.hWnd );
nHeight = -MulDiv( 8, GetDeviceCaps( hDC, LOGPIXELSY), 72);
s_wcd.hfBufferFont = CreateFont( nHeight,
0,
0,
0,
FW_LIGHT,
0,
0,
0,
DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
FF_MODERN | FIXED_PITCH,
"Courier New" );
ReleaseDC( s_wcd.hWnd, hDC );
//
// create the input line
//
s_wcd.hwndInputLine = CreateWindow( "edit", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER |
ES_LEFT | ES_AUTOHSCROLL,
6, 400, 528, 20,
s_wcd.hWnd,
( HMENU ) INPUT_ID, // child window ID
g_wv.hInstance, NULL );
//
// create the buttons
//
s_wcd.hwndButtonCopy = CreateWindow( "button", NULL, BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
5, 425, 72, 24,
s_wcd.hWnd,
( HMENU ) COPY_ID, // child window ID
g_wv.hInstance, NULL );
SendMessage( s_wcd.hwndButtonCopy, WM_SETTEXT, 0, ( LPARAM ) "copy" );
//.........这里部分代码省略.........
示例11: _tWinMain
//==============================================================================
// エントリーポイント
//==============================================================================
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
HWND hwnd;
MSG msg;
WNDCLASS winc;
winc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
winc.lpfnWndProc = WndProc; // ウィンドウプロシージャ
winc.cbClsExtra = 0;
winc.cbWndExtra = 0;
winc.hInstance = hInstance;
winc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
winc.hCursor = LoadCursor(NULL, IDC_ARROW);
winc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
winc.lpszMenuName = NULL;
winc.lpszClassName = CLASS_NAME;
// ウィンドウクラス登録
if(RegisterClass(&winc) == false)
{
return 1;
}
// ウィンドウ作成
hwnd = CreateWindow(
CLASS_NAME,
CLASS_NAME,
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
0, 0,
SCREEN_WIDTH + GetSystemMetrics(SM_CXFRAME) * 2,
SCREEN_HEIGHT + GetSystemMetrics(SM_CYFRAME) * 2 + GetSystemMetrics(SM_CYCAPTION),
NULL,
NULL,
hInstance,
NULL);
if(hwnd == NULL)
{
return 1;
}
// Vulkan初期化
if(initVulkan(hInstance, hwnd) == false)
{
return 1;
}
// ウィンドウ表示
ShowWindow(hwnd, nCmdShow);
FPSCounter fpsCounter; // FPSカウンター
// メッセージループ
do {
fpsCounter.beginCount();
if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
// メイン
Render();
}
fpsCounter.endCount();
std::string windowTitle = std::string(APPLICATION_NAME) + " - " + std::to_string(fpsCounter.getLastFPS()) + " FPS";
SetWindowText(hwnd, windowTitle.c_str());
} while(msg.message != WM_QUIT);
// Vulkan破棄
destroyVulkan();
// 登録したクラスを解除
UnregisterClass(CLASS_NAME, hInstance);
return 0;
}
示例12: InitInstance
//
// FUNCTION: InitInstance(HINSTANCE, int)
//
// PURPOSE: Saves instance handle and creates main window
//
// COMMENTS:
//
// In this function, we save the instance handle in a global variable and
// create and display the main program window.
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;
TCHAR szTitle[MAX_LOADSTRING]; // title bar text
TCHAR szWindowClass[MAX_LOADSTRING]; // main window class name
g_hInst = hInstance; // Store instance handle in our global variable
LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
LoadString(hInstance, IDC_WEMAP, szWindowClass, MAX_LOADSTRING);
if (!MyRegisterClass(hInstance, szWindowClass))
{
return FALSE;
}
EnumWindows( enum_proc, (LPARAM)"Ѕлокнот" );
if (!hWnd_navitel)
{
FILE * pFileTXT;
SYSTEMTIME st;
GetLocalTime(&st);
pFileTXT = fopen (fname,"a");
fprintf(pFileTXT, "---> Date: [%02d, %02d, %d] Time: [%02d:%02d:%02d] " ,st.wDay, st.wMonth, st.wYear, st.wHour, st.wMinute, st.wSecond);
fprintf (pFileTXT, " navitel not running - ");
STARTUPINFO cif;
ZeroMemory(&cif,sizeof(STARTUPINFO));
/*LPSHELLEXECUTEINFO lpExecInfo;
ZeroMemory(&SHExecInfo, sizeof(SHExecInfo));
SHExecInfo.cbSize = sizeof(SHExecInfo);
SHExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
SHExecInfo.nShow = SW_SHOWNORMAL;
SHExecInfo.lpFile = "\\Storage Card\\navi\\navitel.exe";
if(!ShellExecuteEx(&SHExecInfo)) {
*/
if (CreateProcess(L"\\Doc Disk\\igo8\\igo8.exe",NULL,NULL,NULL,FALSE,NULL,NULL,NULL,&cif,&pi_navitel)==TRUE)
{
fprintf (pFileTXT, " navitel runned.\n");
} else
fprintf (pFileTXT, " navitel run faied.\n");
fclose (pFileTXT);
}
hWnd = CreateWindow(szWindowClass, szTitle, WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
if (!hWnd)
{
return FALSE;
}
hWnd_self = hWnd;
/*
RegisterHotKey(hWnd, 10001, MOD_KEYUP, VK_APP1);
RegisterHotKey(hWnd, 10002, MOD_KEYUP, VK_APP2);
RegisterHotKey(hWnd, 10003, MOD_KEYUP, VK_APP3);
RegisterHotKey(hWnd, 10004, MOD_KEYUP, VK_APP4);
RegisterHotKey(hWnd, 10005, MOD_KEYUP, VK_APP5);
RegisterHotKey(hWnd, 10006, MOD_KEYUP, VK_APP6);
*/
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
if (g_hWndCommandBar)
{
CommandBar_Show(g_hWndCommandBar, TRUE);
}
return TRUE;
}
示例13: WinMain
int APIENTRY WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR command_line, int nCmdShow)
{
MSG msg;
WNDCLASS wndclass;
HANDLE hAccel;
# ifdef THREAD_LOCAL_ALLOC
GC_INIT(); /* Required if GC is built with THREAD_LOCAL_ALLOC */
/* Always safe, but this is used as a GC test. */
# endif
if (!hPrevInstance)
{
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = DLGWINDOWEXTRA;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon (hInstance, szAppName);
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);
wndclass.hbrBackground = GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = TEXT("DE");
wndclass.lpszClassName = szAppName;
if (RegisterClass (&wndclass) == 0) {
char buf[50];
sprintf(buf, "RegisterClass: error code: 0x%X",
(unsigned)GetLastError());
de_error(buf);
return(0);
}
}
/* Empirically, the command line does not include the command name ...
if (command_line != 0) {
while (isspace(*command_line)) command_line++;
while (*command_line != 0 && !isspace(*command_line)) command_line++;
while (isspace(*command_line)) command_line++;
} */
if (command_line == 0 || *command_line == 0) {
de_error("File name argument required");
return( 0 );
} else {
char *p = command_line;
while (*p != 0 && !isspace(*(unsigned char *)p))
p++;
arg_file_name = CORD_to_char_star(
CORD_substr(command_line, 0, p - command_line));
}
hwnd = CreateWindow (szAppName,
TEXT("Demonstration Editor"),
WS_OVERLAPPEDWINDOW | WS_CAPTION, /* Window style */
CW_USEDEFAULT, 0, /* default pos. */
CW_USEDEFAULT, 0, /* default width, height */
NULL, /* No parent */
NULL, /* Window class menu */
hInstance, NULL);
if (hwnd == NULL) {
char buf[50];
sprintf(buf, "CreateWindow: error code: 0x%X",
(unsigned)GetLastError());
de_error(buf);
return(0);
}
ShowWindow (hwnd, nCmdShow);
hAccel = LoadAccelerators( hInstance, szAppName );
while (GetMessage (&msg, NULL, 0, 0))
{
if( !TranslateAccelerator( hwnd, hAccel, &msg ) )
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
}
return msg.wParam;
}
示例14: DoSetup
bool wxGLCanvas::Create(wxWindow *parent,
wxWindowID id,
const wxPoint& pos,
const wxSize& size,
long style,
const wxString& name,
const int *attribList,
const wxPalette& palette)
{
// Create the window first: we will either use it as is or use it to query
// for multisampling support and recreate it later with another pixel format
if ( !CreateWindow(parent, id, pos, size, style, name) )
return false;
PIXELFORMATDESCRIPTOR pfd;
const int setupVal = DoSetup(pfd, attribList);
if ( setupVal == 0 ) // PixelFormat error
return false;
if ( setupVal == -1 ) // FSAA requested
{
// now that we have a valid OpenGL window, query it for FSAA support
int pixelFormat;
{
wxGLContext ctx(this);
ctx.SetCurrent(*this);
pixelFormat = ::ChoosePixelFormatARB(m_hDC, attribList);
}
if ( pixelFormat > 0 )
{
// from http://msdn.microsoft.com/en-us/library/ms537559(VS.85).aspx:
//
// Setting the pixel format of a window more than once can
// lead to significant complications for the Window Manager
// and for multithread applications, so it is not allowed. An
// application can only set the pixel format of a window one
// time. Once a window's pixel format is set, it cannot be
// changed.
//
// so we need to delete the old window and create the new one
// destroy Window
::ReleaseDC(GetHwnd(), m_hDC);
m_hDC = 0;
parent->RemoveChild(this);
const HWND hwnd = GetHwnd();
DissociateHandle(); // will do SetHWND(0);
::DestroyWindow(hwnd);
// now recreate with FSAA pixelFormat
if ( !CreateWindow(parent, id, pos, size, style, name) )
return false;
if ( !::SetPixelFormat(m_hDC, pixelFormat, &pfd) )
{
wxLogLastError(wxT("SetPixelFormat"));
return false;
}
}
}
#if wxUSE_PALETTE
if ( !SetupPalette(palette) )
return false;
#else // !wxUSE_PALETTE
wxUnusedVar(palette);
#endif // wxUSE_PALETTE/!wxUSE_PALETTE
return true;
}
示例15: CreateOpenGLWindow
HWND
CreateOpenGLWindow(char* title, int x, int y, int width, int height,
BYTE type, DWORD flags)
{
int pf;
HDC hDC;
HWND hWnd;
WNDCLASS wc;
PIXELFORMATDESCRIPTOR pfd;
static HINSTANCE hInstance = 0;
/* only register the window class once - use hInstance as a flag. */
if (!hInstance) {
hInstance = GetModuleHandle(NULL);
wc.style = CS_OWNDC;
wc.lpfnWndProc = (WNDPROC)WindowProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_WINLOGO);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = NULL;
wc.lpszMenuName = NULL;
wc.lpszClassName = "OpenGL";
if (!RegisterClass(&wc)) {
MessageBox(NULL, "RegisterClass() failed: "
"Cannot register window class.", "Error", MB_OK);
return NULL;
}
}
hWnd = CreateWindow("OpenGL", title, WS_OVERLAPPEDWINDOW |
WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
x, y, width, height, NULL, NULL, hInstance, NULL);
if (hWnd == NULL) {
MessageBox(NULL, "CreateWindow() failed: Cannot create a window.",
"Error", MB_OK);
return NULL;
}
hDC = GetDC(hWnd);
/* there is no guarantee that the contents of the stack that become
the pfd are zeroed, therefore _make sure_ to clear these bits. */
memset(&pfd, 0, sizeof(pfd));
pfd.nSize = sizeof(pfd);
pfd.nVersion = 1;
pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | flags;
pfd.iPixelType = type;
pfd.cColorBits = 32;
pf = ChoosePixelFormat(hDC, &pfd);
if (pf == 0) {
MessageBox(NULL, "ChoosePixelFormat() failed: "
"Cannot find a suitable pixel format.", "Error", MB_OK);
return 0;
}
if (SetPixelFormat(hDC, pf, &pfd) == FALSE) {
MessageBox(NULL, "SetPixelFormat() failed: "
"Cannot set format specified.", "Error", MB_OK);
return 0;
}
DescribePixelFormat(hDC, pf, sizeof(PIXELFORMATDESCRIPTOR), &pfd);
ReleaseDC(hWnd, hDC);
return hWnd;
}