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;
}