
为什么无法用MoveWindow()改变窗口大小?
我编写一个程序,主要是建立一个主窗口(hMainWnd),再在主窗口的窗户区建立一个子窗口(hDocWnd)。可是当我希望子窗口随着主窗口的大小变化而变化的时候,就在主窗口过程的WM_SIZE消息处理中,加了一条语句,用MoveWindow()来改变子窗口的大小。movewindow可是奇怪的很,竟然不起作用。不管如何修改,这个MoveWindow()函数就是不起作用。子窗口还是原来的大小。
我不得已,在WM_SIZE消息中插了一条语句,发现每当主窗口大小改变时,这条语句是执行的,也就是说MoveWindow语句还是执行了,但就是不起作用。
我又试着把这条MoveWindow语句插入到WM_CREATE消息处理流程中(就是下列代码中“************”的上一行),直接放在建立子窗口的语句后面,也就是说子窗口刚建立,立即用MoveWindow()来改变它的大小。发现这回起作用了。
奇怪了,为什么放在WM_CREATE消息处理流程中,就起作用,而放在WM_SIZE消息处理流程中, 就不起作用呢?
请高手指点!
附代码:(环境为VC++6.0)
#include <Windows.h>
LRESULT CALLBACK MainWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
LRESULT CALLBACK DocWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
HINSTANCE hIn;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT("editc");
static TCHAR szMainWnd[] = TEXT("MainWnd");
HWND hMainWnd;
MSG msg;
WNDCLASSEX wndclas;
hIn=hInstance;
wndclas.cbSize = sizeof (WNDCLASSEX);
wndclas.style = CS_HREDRAW | CS_VREDRAW;
wndclas.lpfnWndProc = MainWndProc;
wndclas.cbClsExtra = 0;
wndclas.cbWndExtra = 0;
wndclas.hInstance = hInstance;
wndclas.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndclas.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclas.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);
wndclas.lpszMenuName = NULL;
wndclas.lpszClassName = szMainWnd;
wndclas.hIconSm =0;
if (!RegisterClassEx(&wndclas))
{
MessageBox(NULL, TEXT("程序需要Windows NT!!"), szAppName, MB_ICONERROR);
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-25210-1.html
请多提宝贵意见
一个月3g分两个月送吗