让我从头说起,问题是这样的。
我从其他程序中导出了一个对话框文件,是二进制格式。然后用GreateDialogIndirectParam
将其显示出来。不过这个对话框不是可见的,我又用SetWindowLong给它加上了WS_VISIBLE风格。
现在问题来了,对话框是能够显示出来,可是在显示出来的时候不会刷新,样子很难看。
并且无论我用SendMessage,ShowWindow,UpdateWindow等都不好使,只有用别的程序将它覆盖掉,或者把程序最小化再还原,它才能够正常起来。
另外我传递的窗口函数只是处理了WM_CLOSE,并且无论我处理WM_PAINT与否它都没有什么反应。
希望大家给点帮助。窗口过程如下:
var
    ps : TPaintStruct;
begin
    if uMsg = WM_PAINT then
    begin
        BeginPaint(h,ps);
        EndPaint(h,ps);
        Result := true;
    end
    else
    if uMsg = WM_CLOSE then
    begin
        DestroyWindow(h);
        Result := true;
    end else
    begin
        DefWindowProc(h,uMsg,wParam,lParam);
        Result := false;
    end;
end;