當前位置:編程學習大全網 - 編程語言 - VC++MFC 怎麽設置初始化窗體的位置?

VC++MFC 怎麽設置初始化窗體的位置?

1、簡單的說可以在OnInitDialog()函數裏加上壹句:

RECT rect;

GetClientRect(&rect);

MoveWindow(1024-rect.right,0,rect.right,rect.bottom);

以上MoveWindow中的前兩個參數就是窗體顯示時的左上角坐標,

假設妳的屏幕分辨率為1024*768,所以其橫坐標為1024-rect.right;

2、例程:

#include?<windows.h>

HWND?HMainwnd?=?NULL;?//窗體句柄

int?run();?//消息循環函數

bool?InitWindowsApp(HINSTANCE?instanceHandle,?int?show);?//窗體初始化函數

LRESULT?CALLBACK?WndProc(HWND?wnd,?UINT?msg,?WPARAM?wp,?LPARAM?lp);//窗體處理回調函數

//main函數

int?WINAPI?WinMain(?HINSTANCE?hInstance,?HINSTANCE?hPrevInstance,?LPSTR?lpCmdLine,?int?nShowCmd?)

{

if(!InitWindowsApp(hInstance,?nShowCmd))//判斷窗體初始化是否成功

{

return?0;

}

run();?//初始化成功後循環接收消息

return?0;

}

bool?InitWindowsApp(HINSTANCE?stanceHandle,?int?show)

{

WNDCLASS?wc;?//窗體類結構體

wc.style?=?CS_HREDRAW?|?CS_VREDRAW;?//窗體風格

wc.lpfnWndProc?=?WndProc;?//窗體處理函數

wc.cbClsExtra?=?0;?//窗體類是否由擴展

wc.cbWndExtra?=?0;?//窗體實例是否由擴展

wc.hInstance?=?stanceHandle;?//窗體句柄

wc.hIcon?=?LoadIcon(0,?IDI_APPLICATION);?//窗體圖標

wc.hCursor?=?LoadCursor(NULL,?IDC_ARROW);?//窗體鼠標樣式

wc.hbrBackground?=?(HBRUSH)GetStockObject(WHITE_BRUSH);?//窗體背景顏色

wc.lpszMenuName?=?NULL;?//窗體菜單

wc.lpszClassName?=?"BaseWndClass";?//窗體類名

if(!RegisterClass(&wc))?//判斷窗體是否註冊成功

{

MessageBox(0,?"註冊失敗",?0,?0);

return?false;

}

//創建窗體

HMainwnd?=?CreateWindow("BaseWndClass",?//窗體類名

"MyFrom",?//窗體標題名

WS_OVERLAPPEDWINDOW,?//窗體風格

CW_USEDEFAULT,

CW_USEDEFAULT,?//窗體坐標

CW_USEDEFAULT,

CW_USEDEFAULT,?//窗體坐標

NULL,?//窗體的父窗體

NULL,?//窗體的子菜單

stanceHandle,?//窗體句柄

NULL);?//?如果函數成功,返回值為新窗口的句柄:如果函數失敗,返回值為NULL

if(HMainwnd?==?0)//判斷創建窗體是否成功

{

MessageBox(0,?"創建窗體失敗",?0,?0);

return?false;

}

ShowWindow(HMainwnd,?SW_SHOW);?//顯示窗體

UpdateWindow(HMainwnd);?//繪制窗體;

return?true;

}

LRESULT?CALLBACK?WndProc(HWND?wnd,?UINT?msg,?WPARAM?wp,?LPARAM?lp)

{

switch(msg)//判斷消息的種類

{

case?WM_LBUTTONDOWN:?//左鍵單擊

MessageBox(0,?"Hello?World",?"myMbox",?MB_OK);

return?0;

case?WM_KEYDOWN:?//鍵盤消息

if(wp?==?VK_ESCAPE)?//ESC鍵

DestroyWindow(HMainwnd);?//銷毀窗體

return?0;

case?WM_DESTROY:

PostQuitMessage(0);?//終止消息

return?0;

}

return?DefWindowProc(wnd,?msg,?wp,?lp);?//返回缺省消息函數

}

int?run()

{

MSG?msg?=?{0};?//消息結構

BOOL?bRet?=?1;?//獲取消息

while(?(bRet?=?GetMessage(&msg,?0,?0,?0))?!=?0)//消息循環

{

if(bRet?==?-1)//判斷消息是否接收失敗

{

MessageBox(0,?"接受消息失敗",?0,?0);

break;

}

else

{

TranslateMessage(&msg);?//轉換消息為字符消息

DispatchMessage(&msg);?//發送消息給窗口

}

}

return?(int)msg.wParam;

}

  • 上一篇:在白色背景上顯示細節好還是在JD中顯示場景好?COM?
  • 下一篇:編程超模
  • copyright 2024編程學習大全網